diff --git a/SOURCES/glibc-rh1027348-1.patch b/SOURCES/glibc-rh1027348-1.patch
new file mode 100644
index 0000000..363a3af
--- /dev/null
+++ b/SOURCES/glibc-rh1027348-1.patch
@@ -0,0 +1,280 @@
+Backporting the C11 atomic support will allow future algorithms
+to be more easily backported to RHEL7. This is initially backported
+to support the new semaphore algorithm which is now in RHEL7
+(rhbz#1027348).
+
+commit 1ea339b69725cb2f30b5a84cb7ca96111c9a637b
+Author: Torvald Riegel <triegel@redhat.com>
+Date:   Sat Oct 18 01:02:59 2014 +0200
+
+    Add arch-specific configuration for C11 atomics support.
+    
+    This sets __HAVE_64B_ATOMICS if provided.  It also sets
+    USE_ATOMIC_COMPILER_BUILTINS to true if the existing atomic ops use the
+    __atomic* builtins (aarch64, mips partially) or if this has been
+    tested (x86_64); otherwise, this is set to false so that C11 atomics will
+    be based on the existing atomic operations.
+
+Index: glibc-2.17-c758a686/ports/sysdeps/aarch64/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/aarch64/bits/atomic.h
++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/bits/atomic.h
+@@ -36,6 +36,8 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define __HAVE_64B_ATOMICS 1
++#define USE_ATOMIC_COMPILER_BUILTINS 1
+ 
+ /* Compare and exchange.
+    For all "bool" routines, we return FALSE if exchange succesful.  */
+Index: glibc-2.17-c758a686/ports/sysdeps/alpha/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/alpha/bits/atomic.h
++++ glibc-2.17-c758a686/ports/sysdeps/alpha/bits/atomic.h
+@@ -42,6 +42,9 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define __HAVE_64B_ATOMICS 1
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ 
+ #ifdef UP
+ # define __MB		/* nothing */
+Index: glibc-2.17-c758a686/ports/sysdeps/arm/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/arm/bits/atomic.h
++++ glibc-2.17-c758a686/ports/sysdeps/arm/bits/atomic.h
+@@ -33,6 +33,9 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define __HAVE_64B_ATOMICS 0
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ void __arm_link_error (void);
+ 
+ /* Use the atomic builtins provided by GCC in case the backend provides
+Index: glibc-2.17-c758a686/sysdeps/i386/i486/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i486/bits/atomic.h
++++ glibc-2.17-c758a686/sysdeps/i386/i486/bits/atomic.h
+@@ -54,6 +54,9 @@ typedef uintmax_t uatomic_max_t;
+ # endif
+ #endif
+ 
++#define __HAVE_64B_ATOMICS 0
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ 
+ #define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
+   __sync_val_compare_and_swap (mem, oldval, newval)
+Index: glibc-2.17-c758a686/ports/sysdeps/ia64/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/ia64/bits/atomic.h
++++ glibc-2.17-c758a686/ports/sysdeps/ia64/bits/atomic.h
+@@ -43,6 +43,9 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define __HAVE_64B_ATOMICS 1
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ 
+ #define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
+   (abort (), 0)
+Index: glibc-2.17-c758a686/ports/sysdeps/m68k/coldfire/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/m68k/coldfire/bits/atomic.h
++++ glibc-2.17-c758a686/ports/sysdeps/m68k/coldfire/bits/atomic.h
+@@ -49,6 +49,10 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++/* If we have just non-atomic operations, we can as well make them wide.  */
++#define __HAVE_64B_ATOMICS 1
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ /* The only basic operation needed is compare and exchange.  */
+ #define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
+   ({ __typeof (mem) __gmemp = (mem);				      \
+Index: glibc-2.17-c758a686/ports/sysdeps/m68k/m680x0/m68020/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/m68k/m680x0/m68020/bits/atomic.h
++++ glibc-2.17-c758a686/ports/sysdeps/m68k/m680x0/m68020/bits/atomic.h
+@@ -44,6 +44,9 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define __HAVE_64B_ATOMICS 1
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ #define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
+   ({ __typeof (*(mem)) __ret;						      \
+      __asm __volatile ("cas%.b %0,%2,%1"				      \
+Index: glibc-2.17-c758a686/ports/sysdeps/mips/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/mips/bits/atomic.h
++++ glibc-2.17-c758a686/ports/sysdeps/mips/bits/atomic.h
+@@ -43,6 +43,12 @@ typedef uintmax_t uatomic_max_t;
+ #define MIPS_PUSH_MIPS2
+ #endif
+ 
++#if _MIPS_SIM == _ABIO32
++#define __HAVE_64B_ATOMICS 0
++#else
++#define __HAVE_64B_ATOMICS 1
++#endif
++
+ /* See the comments in <sys/asm.h> about the use of the sync instruction.  */
+ #ifndef MIPS_SYNC
+ # define MIPS_SYNC	sync
+@@ -82,6 +88,8 @@ typedef uintmax_t uatomic_max_t;
+ /* The __atomic_* builtins are available in GCC 4.7 and later, but MIPS
+    support for their efficient implementation was added only in GCC 4.8.  */
+ 
++#define USE_ATOMIC_COMPILER_BUILTINS 1
++
+ /* Compare and exchange.
+    For all "bool" routines, we return FALSE if exchange succesful.  */
+ 
+@@ -204,6 +212,8 @@ typedef uintmax_t uatomic_max_t;
+ /* This implementation using inline assembly will be removed once glibc
+    requires GCC 4.8 or later to build.  */
+ 
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ /* Compare and exchange.  For all of the "xxx" routines, we expect a
+    "__prev" and a "__cmp" variable to be provided by the enclosing scope,
+    in which values are returned.  */
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/bits/atomic.h
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bits/atomic.h
+@@ -33,6 +33,9 @@
+ # define MUTEX_HINT_REL
+ #endif
+ 
++#define __HAVE_64B_ATOMICS 0
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ /*
+  * The 32-bit exchange_bool is different on powerpc64 because the subf
+  * does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/bits/atomic.h
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/bits/atomic.h
+@@ -33,6 +33,9 @@
+ # define MUTEX_HINT_REL
+ #endif
+ 
++#define __HAVE_64B_ATOMICS 1
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ /* The 32-bit exchange_bool is different on powerpc64 because the subf
+    does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
+    (a load word and zero (high 32) form) load.
+Index: glibc-2.17-c758a686/sysdeps/s390/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/bits/atomic.h
++++ glibc-2.17-c758a686/sysdeps/s390/bits/atomic.h
+@@ -43,6 +43,8 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ 
+ #define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
+   (abort (), (__typeof (*mem)) 0)
+@@ -59,6 +61,7 @@ typedef uintmax_t uatomic_max_t;
+      __archold; })
+ 
+ #ifdef __s390x__
++# define __HAVE_64B_ATOMICS 1
+ # define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
+   ({ __typeof (mem) __archmem = (mem);					      \
+      __typeof (*mem) __archold = (oldval);				      \
+@@ -67,6 +70,7 @@ typedef uintmax_t uatomic_max_t;
+ 		       : "d" ((long) (newval)), "m" (*__archmem) : "cc", "memory" );    \
+      __archold; })
+ #else
++# define __HAVE_64B_ATOMICS 0
+ /* For 31 bit we do not really need 64-bit compare-and-exchange. We can
+    implement them by use of the csd instruction. The straightforward
+    implementation causes warnings so we skip the definition for now.  */
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc32/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc32/bits/atomic.h
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc32/bits/atomic.h
+@@ -47,6 +47,9 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define __HAVE_64B_ATOMICS 0
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ 
+ /* We have no compare and swap, just test and set.
+    The following implementation contends on 64 global locks
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h
+@@ -44,6 +44,9 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define __HAVE_64B_ATOMICS 0
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ 
+ #define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
+   (abort (), (__typeof (*mem)) 0)
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc64/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc64/bits/atomic.h
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/bits/atomic.h
+@@ -44,6 +44,9 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define __HAVE_64B_ATOMICS 1
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ 
+ #define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
+   (abort (), (__typeof (*mem)) 0)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/bits/atomic.h
+@@ -44,6 +44,9 @@ typedef uintptr_t uatomicptr_t;
+ typedef intmax_t atomic_max_t;
+ typedef uintmax_t uatomic_max_t;
+ 
++#define __HAVE_64B_ATOMICS 0
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++
+ /* prev = *addr;
+    if (prev == old)
+      *addr = new;
+Index: glibc-2.17-c758a686/sysdeps/x86_64/bits/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/bits/atomic.h
++++ glibc-2.17-c758a686/sysdeps/x86_64/bits/atomic.h
+@@ -55,6 +55,12 @@ typedef uintmax_t uatomic_max_t;
+ # endif
+ #endif
+ 
++#define __HAVE_64B_ATOMICS 1
++#if __GNUC_PREREQ (4, 7)
++#define USE_ATOMIC_COMPILER_BUILTINS 1
++#else
++#define USE_ATOMIC_COMPILER_BUILTINS 0
++#endif
+ 
+ #define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
+   __sync_val_compare_and_swap (mem, oldval, newval)
diff --git a/SOURCES/glibc-rh1027348-2.patch b/SOURCES/glibc-rh1027348-2.patch
new file mode 100644
index 0000000..ca54870
--- /dev/null
+++ b/SOURCES/glibc-rh1027348-2.patch
@@ -0,0 +1,229 @@
+commit ff8714269c9312d9164456279a56b6f6c47e2771
+Author: Torvald Riegel <triegel@redhat.com>
+Date:   Sun Sep 14 20:04:54 2014 +0200
+
+    Add atomic operations similar to those provided by C11.
+
+Index: glibc-2.17-c758a686/include/atomic.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/atomic.h
++++ glibc-2.17-c758a686/include/atomic.h
+@@ -542,6 +542,218 @@
+   ({ __typeof (x) __x; __asm ("" : "=r" (__x) : "0" (x)); __x; })
+ #endif
+ 
++/* This is equal to 1 iff the architecture supports 64b atomic operations.  */
++#ifndef __HAVE_64B_ATOMICS
++#error Unable to determine if 64-bit atomics are present.
++#endif
++
++/* The following functions are a subset of the atomic operations provided by
++   C11.  Usually, a function named atomic_OP_MO(args) is equivalent to C11's
++   atomic_OP_explicit(args, memory_order_MO); exceptions noted below.  */
++
++/* Each arch can request to use compiler built-ins for C11 atomics.  If it
++   does, all atomics will be based on these.  */
++#if USE_ATOMIC_COMPILER_BUILTINS
++
++/* We require 32b atomic operations; some archs also support 64b atomic
++   operations.  */
++void __atomic_link_error (void);
++# if __HAVE_64B_ATOMICS == 1
++#  define __atomic_check_size(mem) \
++   if ((sizeof (*mem) != 4) && (sizeof (*mem) != 8))			      \
++     __atomic_link_error ();
++# else
++#  define __atomic_check_size(mem) \
++   if (sizeof (*mem) != 4)						      \
++     __atomic_link_error ();
++# endif
++
++# define atomic_thread_fence_acquire() \
++  __atomic_thread_fence (__ATOMIC_ACQUIRE)
++# define atomic_thread_fence_release() \
++  __atomic_thread_fence (__ATOMIC_RELEASE)
++# define atomic_thread_fence_seq_cst() \
++  __atomic_thread_fence (__ATOMIC_SEQ_CST)
++
++# define atomic_load_relaxed(mem) \
++  ({ __atomic_check_size((mem)); __atomic_load_n ((mem), __ATOMIC_RELAXED); })
++# define atomic_load_acquire(mem) \
++  ({ __atomic_check_size((mem)); __atomic_load_n ((mem), __ATOMIC_ACQUIRE); })
++
++# define atomic_store_relaxed(mem, val) \
++  do {									      \
++    __atomic_check_size((mem));						      \
++    __atomic_store_n ((mem), (val), __ATOMIC_RELAXED);			      \
++  } while (0)
++# define atomic_store_release(mem, val) \
++  do {									      \
++    __atomic_check_size((mem));						      \
++    __atomic_store_n ((mem), (val), __ATOMIC_RELEASE);			      \
++  } while (0)
++
++/* On failure, this CAS has memory_order_relaxed semantics.  */
++# define atomic_compare_exchange_weak_relaxed(mem, expected, desired) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_compare_exchange_n ((mem), (expected), (desired), 1,		      \
++    __ATOMIC_RELAXED, __ATOMIC_RELAXED); })
++# define atomic_compare_exchange_weak_acquire(mem, expected, desired) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_compare_exchange_n ((mem), (expected), (desired), 1,		      \
++    __ATOMIC_ACQUIRE, __ATOMIC_RELAXED); })
++# define atomic_compare_exchange_weak_release(mem, expected, desired) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_compare_exchange_n ((mem), (expected), (desired), 1,		      \
++    __ATOMIC_RELEASE, __ATOMIC_RELAXED); })
++
++# define atomic_exchange_acquire(mem, desired) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_exchange_n ((mem), (desired), __ATOMIC_ACQUIRE); })
++# define atomic_exchange_release(mem, desired) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_exchange_n ((mem), (desired), __ATOMIC_RELEASE); })
++
++# define atomic_fetch_add_relaxed(mem, operand) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_fetch_add ((mem), (operand), __ATOMIC_RELAXED); })
++# define atomic_fetch_add_acquire(mem, operand) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_fetch_add ((mem), (operand), __ATOMIC_ACQUIRE); })
++# define atomic_fetch_add_release(mem, operand) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_fetch_add ((mem), (operand), __ATOMIC_RELEASE); })
++# define atomic_fetch_add_acq_rel(mem, operand) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_fetch_add ((mem), (operand), __ATOMIC_ACQ_REL); })
++
++# define atomic_fetch_and_acquire(mem, operand) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_fetch_and ((mem), (operand), __ATOMIC_ACQUIRE); })
++
++# define atomic_fetch_or_relaxed(mem, operand) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_fetch_or ((mem), (operand), __ATOMIC_RELAXED); })
++# define atomic_fetch_or_acquire(mem, operand) \
++  ({ __atomic_check_size((mem));					      \
++  __atomic_fetch_or ((mem), (operand), __ATOMIC_ACQUIRE); })
++
++#else /* !USE_ATOMIC_COMPILER_BUILTINS  */
++
++/* By default, we assume that read, write, and full barriers are equivalent
++   to acquire, release, and seq_cst barriers.  Archs for which this does not
++   hold have to provide custom definitions of the fences.  */
++# ifndef atomic_thread_fence_acquire
++#  define atomic_thread_fence_acquire() atomic_read_barrier ()
++# endif
++# ifndef atomic_thread_fence_release
++#  define atomic_thread_fence_release() atomic_write_barrier ()
++# endif
++# ifndef atomic_thread_fence_seq_cst
++#  define atomic_thread_fence_seq_cst() atomic_full_barrier ()
++# endif
++
++# ifndef atomic_load_relaxed
++#  define atomic_load_relaxed(mem) \
++   ({ __typeof (*(mem)) __atg100_val;					      \
++   __asm ("" : "=r" (__atg100_val) : "0" (*(mem)));			      \
++   __atg100_val; })
++# endif
++# ifndef atomic_load_acquire
++#  define atomic_load_acquire(mem) \
++   ({ __typeof (*(mem)) __atg101_val = atomic_load_relaxed (mem);	      \
++   atomic_thread_fence_acquire ();					      \
++   __atg101_val; })
++# endif
++
++# ifndef atomic_store_relaxed
++/* XXX Use inline asm here?  */
++#  define atomic_store_relaxed(mem, val) do { *(mem) = (val); } while (0)
++# endif
++# ifndef atomic_store_release
++#  define atomic_store_release(mem, val) \
++   do {									      \
++     atomic_thread_fence_release ();					      \
++     atomic_store_relaxed ((mem), (val));				      \
++   } while (0)
++# endif
++
++/* On failure, this CAS has memory_order_relaxed semantics.  */
++/* XXX This potentially has one branch more than necessary, but archs
++   currently do not define a CAS that returns both the previous value and
++   the success flag.  */
++# ifndef atomic_compare_exchange_weak_acquire
++#  define atomic_compare_exchange_weak_acquire(mem, expected, desired) \
++   ({ typeof (*(expected)) __atg102_expected = *(expected);		      \
++   *(expected) =							      \
++     atomic_compare_and_exchange_val_acq ((mem), (desired), *(expected));     \
++   *(expected) == __atg102_expected; })
++# endif
++# ifndef atomic_compare_exchange_weak_relaxed
++/* XXX Fall back to CAS with acquire MO because archs do not define a weaker
++   CAS.  */
++#  define atomic_compare_exchange_weak_relaxed(mem, expected, desired) \
++   atomic_compare_exchange_weak_acquire ((mem), (expected), (desired))
++# endif
++# ifndef atomic_compare_exchange_weak_release
++#  define atomic_compare_exchange_weak_release(mem, expected, desired) \
++   ({ typeof (*(expected)) __atg103_expected = *(expected);		      \
++   *(expected) =							      \
++     atomic_compare_and_exchange_val_rel ((mem), (desired), *(expected));     \
++   *(expected) == __atg103_expected; })
++# endif
++
++# ifndef atomic_exchange_acquire
++#  define atomic_exchange_acquire(mem, val) \
++   atomic_exchange_acq ((mem), (val))
++# endif
++# ifndef atomic_exchange_release
++#  define atomic_exchange_release(mem, val) \
++   atomic_exchange_rel ((mem), (val))
++# endif
++
++# ifndef atomic_fetch_add_acquire
++#  define atomic_fetch_add_acquire(mem, operand) \
++   atomic_exchange_and_add_acq ((mem), (operand))
++# endif
++# ifndef atomic_fetch_add_relaxed
++/* XXX Fall back to acquire MO because the MO semantics of
++   atomic_exchange_and_add are not documented; the generic version falls back
++   to atomic_exchange_and_add_acq if atomic_exchange_and_add is not defined,
++   and vice versa.  */
++#  define atomic_fetch_add_relaxed(mem, operand) \
++   atomic_fetch_add_acquire ((mem), (operand))
++# endif
++# ifndef atomic_fetch_add_release
++#  define atomic_fetch_add_release(mem, operand) \
++   atomic_exchange_and_add_rel ((mem), (operand))
++# endif
++# ifndef atomic_fetch_add_acq_rel
++#  define atomic_fetch_add_acq_rel(mem, operand) \
++   ({ atomic_thread_fence_release ();					      \
++   atomic_exchange_and_add_acq ((mem), (operand)); })
++# endif
++
++/* XXX The default for atomic_and_val has acquire semantics, but this is not
++   documented.  */
++# ifndef atomic_fetch_and_acquire
++#  define atomic_fetch_and_acquire(mem, operand) \
++   atomic_and_val ((mem), (operand))
++# endif
++
++/* XXX The default for atomic_or_val has acquire semantics, but this is not
++   documented.  */
++# ifndef atomic_fetch_or_acquire
++#  define atomic_fetch_or_acquire(mem, operand) \
++   atomic_or_val ((mem), (operand))
++# endif
++/* XXX Fall back to acquire MO because archs do not define a weaker
++   atomic_or_val.  */
++# ifndef atomic_fetch_or_relaxed
++#  define atomic_fetch_or_relaxed(mem, operand) \
++   atomic_fetch_or_acquire ((mem), (operand))
++# endif
++
++#endif /* !USE_ATOMIC_COMPILER_BUILTINS  */
++
+ 
+ #ifndef atomic_delay
+ # define atomic_delay() do { /* nothing */ } while (0)
diff --git a/SOURCES/glibc-rh1027348-3.patch b/SOURCES/glibc-rh1027348-3.patch
new file mode 100644
index 0000000..b2040fe
--- /dev/null
+++ b/SOURCES/glibc-rh1027348-3.patch
@@ -0,0 +1,144 @@
+commit 88ed594f5d431d855256edbe7e886c8cf4b575dc
+Author: Roland McGrath <roland@hack.frob.com>
+Date:   Tue May 19 15:04:41 2015 -0700
+
+    BZ#18434: Fix sem_post EOVERFLOW check for [!__HAVE_64B_ATOMICS].
+
+Index: glibc-2.17-c758a686/nptl/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/Makefile
++++ glibc-2.17-c758a686/nptl/Makefile
+@@ -224,6 +224,7 @@ tests = tst-typesizes \
+ 	tst-key1 tst-key2 tst-key3 tst-key4 \
+ 	tst-sem1 tst-sem2 tst-sem3 tst-sem4 tst-sem5 tst-sem6 tst-sem7 \
+ 	tst-sem8 tst-sem9 tst-sem10 tst-sem11 tst-sem12 tst-sem13 tst-sem14 \
++	tst-sem15 \
+ 	tst-barrier1 tst-barrier2 tst-barrier3 tst-barrier4 \
+ 	tst-align tst-align2 tst-align3 \
+ 	tst-basic1 tst-basic2 tst-basic3 tst-basic4 tst-basic5 tst-basic6 \
+Index: glibc-2.17-c758a686/nptl/tst-sem15.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/nptl/tst-sem15.c
+@@ -0,0 +1,99 @@
++/* Test for SEM_VALUE_MAX overflow detection: BZ #18434.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <errno.h>
++#include <limits.h>
++#include <semaphore.h>
++#include <stdio.h>
++#include <string.h>
++#include <unistd.h>
++
++
++static int
++do_test (void)
++{
++  sem_t s;
++
++  if (sem_init (&s, 0, SEM_VALUE_MAX))
++    {
++      printf ("sem_init: %m\n");
++      return 1;
++    }
++
++  int result = 0;
++
++  int value = 0xdeadbeef;
++  if (sem_getvalue (&s, &value))
++    {
++      printf ("sem_getvalue: %m\n");
++      result = 1;
++    }
++  else
++    {
++      printf ("sem_getvalue after init: %d\n", value);
++      if (value != SEM_VALUE_MAX)
++	{
++	  printf ("\tshould be %d\n", SEM_VALUE_MAX);
++	  result = 1;
++	}
++    }
++
++  errno = 0;
++  if (sem_post(&s) == 0)
++    {
++      puts ("sem_post at SEM_VALUE_MAX succeeded!");
++      result = 1;
++    }
++  else
++    {
++      printf ("sem_post at SEM_VALUE_MAX: %m (%d)\n", errno);
++      if (errno != EOVERFLOW)
++	{
++	  printf ("\tshould be %s (EOVERFLOW = %d)\n",
++		  strerror (EOVERFLOW), EOVERFLOW);
++	  result = 1;
++	}
++    }
++
++  value = 0xbad1d00d;
++  if (sem_getvalue (&s, &value))
++    {
++      printf ("sem_getvalue: %m\n");
++      result = 1;
++    }
++  else
++    {
++      printf ("sem_getvalue after post: %d\n", value);
++      if (value != SEM_VALUE_MAX)
++	{
++	  printf ("\tshould be %d\n", SEM_VALUE_MAX);
++	  result = 1;
++	}
++    }
++
++  if (sem_destroy (&s))
++    {
++      printf ("sem_destroy: %m\n");
++      result = 1;
++    }
++
++  return result;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_post.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sem_post.c
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_post.c
+@@ -83,14 +83,14 @@ __new_sem_post (sem_t *sem)
+   unsigned int v = atomic_load_relaxed (&isem->value);
+   do
+     {
+-      if ((v << SEM_VALUE_SHIFT) == SEM_VALUE_MAX)
++      if ((v >> SEM_VALUE_SHIFT) == SEM_VALUE_MAX)
+ 	{
+ 	  __set_errno (EOVERFLOW);
+ 	  return -1;
+ 	}
+     }
+-  while (!atomic_compare_exchange_weak_release (&isem->value,
+-      &v, v + (1 << SEM_VALUE_SHIFT)));
++  while (!atomic_compare_exchange_weak_release
++	 (&isem->value, &v, v + (1 << SEM_VALUE_SHIFT)));
+ 
+   /* If there is any potentially blocked waiter, wake one of them.  */
+   if ((v & SEM_NWAITERS_MASK) != 0)
diff --git a/SOURCES/glibc-rh1027348-4.patch b/SOURCES/glibc-rh1027348-4.patch
new file mode 100644
index 0000000..27f6115
--- /dev/null
+++ b/SOURCES/glibc-rh1027348-4.patch
@@ -0,0 +1,105 @@
+commit c2f5813ae0a68f6c6d69e66dac2da6e46b9df034
+Author: Joseph Myers <joseph@codesourcery.com>
+Date:   Wed Mar 18 17:05:38 2015 +0000
+
+    Make sem_timedwait use FUTEX_CLOCK_REALTIME (bug 18138).
+    
+    sem_timedwait converts absolute timeouts to relative to pass them to
+    the futex syscall.  (Before the recent reimplementation, on x86_64 it
+    used FUTEX_CLOCK_REALTIME, but not on other architectures.)
+    
+    Correctly implementing POSIX requirements, however, requires use of
+    FUTEX_CLOCK_REALTIME; passing a relative timeout to the kernel does
+    not conform to POSIX.  The POSIX specification for sem_timedwait says
+    "The timeout shall be based on the CLOCK_REALTIME clock.".  The POSIX
+    specification for clock_settime says "If the value of the
+    CLOCK_REALTIME clock is set via clock_settime(), the new value of the
+    clock shall be used to determine the time of expiration for absolute
+    time services based upon the CLOCK_REALTIME clock. This applies to the
+    time at which armed absolute timers expire. If the absolute time
+    requested at the invocation of such a time service is before the new
+    value of the clock, the time service shall expire immediately as if
+    the clock had reached the requested time normally.".  If a relative
+    timeout is passed to the kernel, it is interpreted according to the
+    CLOCK_MONOTONIC clock, and so fails to meet that POSIX requirement in
+    the event of clock changes.
+    
+    This patch makes sem_timedwait use lll_futex_timed_wait_bitset with
+    FUTEX_CLOCK_REALTIME when possible, as done in some other places in
+    NPTL.  FUTEX_CLOCK_REALTIME is always available for supported Linux
+    kernel versions; unavailability of lll_futex_timed_wait_bitset is only
+    an issue for hppa (an issue noted in
+    <https://sourceware.org/glibc/wiki/PortStatus>, and fixed by the
+    unreviewed
+    <https://sourceware.org/ml/libc-alpha/2014-12/msg00655.html> that
+    removes the hppa lowlevellock.h completely).
+    
+    In the FUTEX_CLOCK_REALTIME case, the glibc code still needs to check
+    for negative tv_sec and handle that as timeout, because the Linux
+    kernel returns EINVAL not ETIMEDOUT for that case, so resulting in
+    failures of nptl/tst-abstime and nptl/tst-sem13 in the absence of that
+    check.  If we're trying to distinguish between Linux-specific and
+    generic-futex NPTL code, I suppose having this in an nptl/ file isn't
+    ideal, but there doesn't seem to be any better place at present.
+    
+    It's not possible to add a testcase for this issue to the testsuite
+    because of the requirement to change the system clock as part of a
+    test (this is a case where testing would require some form of
+    container, with root in that container, and one whose CLOCK_REALTIME
+    is isolated from that of the host; I'm not sure what forms of
+    containers, short of a full virtual machine, provide that clock
+    isolation).
+    
+    Tested for x86_64.  Also tested for powerpc with the testcase included
+    in the bug.
+    
+        [BZ #18138]
+        * nptl/sem_waitcommon.c: Include <kernel-features.h>.
+        (futex_abstimed_wait)
+        [__ASSUME_FUTEX_CLOCK_REALTIME && lll_futex_timed_wait_bitset]:
+        Use lll_futex_timed_wait_bitset with FUTEX_CLOCK_REALTIME instead
+        of lll_futex_timed_wait.
+
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_waitcommon.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sem_waitcommon.c
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_waitcommon.c
+@@ -17,6 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#include <kernel-features.h>
+ #include <errno.h>
+ #include <sysdep.h>
+ #include <lowlevellock.h>
+@@ -45,6 +46,13 @@ futex_abstimed_wait (unsigned int* futex
+     }
+   else
+     {
++#if (defined __ASSUME_FUTEX_CLOCK_REALTIME	\
++     && defined lll_futex_timed_wait_bitset)
++      /* The Linux kernel returns EINVAL for this, but in userspace
++	 such a value is valid.  */
++      if (abstime->tv_sec < 0)
++	return ETIMEDOUT;
++#else
+       struct timeval tv;
+       struct timespec rt;
+       int sec, nsec;
+@@ -68,9 +76,16 @@ futex_abstimed_wait (unsigned int* futex
+       /* Do wait.  */
+       rt.tv_sec = sec;
+       rt.tv_nsec = nsec;
++#endif
+       if (cancel)
+ 	oldtype = __pthread_enable_asynccancel ();
++#if (defined __ASSUME_FUTEX_CLOCK_REALTIME	\
++     && defined lll_futex_timed_wait_bitset)
++      err = lll_futex_timed_wait_bitset (futex, expected, abstime,
++					 FUTEX_CLOCK_REALTIME, private);
++#else
+       err = lll_futex_timed_wait (futex, expected, &rt, private);
++#endif
+       if (cancel)
+ 	__pthread_disable_asynccancel (oldtype);
+     }
diff --git a/SOURCES/glibc-rh1027348.patch b/SOURCES/glibc-rh1027348.patch
new file mode 100644
index 0000000..4aca8a2
--- /dev/null
+++ b/SOURCES/glibc-rh1027348.patch
@@ -0,0 +1,3917 @@
+Torvald Riegel's semaphore reimplemenation to fix upstream swbz#12674.
+
+commit 042e1521c794a945edc43b5bfa7e69ad70420524
+Author: Carlos O'Donell <carlos@systemhalted.org>
+Date:   Wed Jan 21 00:46:16 2015 -0500
+
+    Fix semaphore destruction (bug 12674).
+    
+    This commit fixes semaphore destruction by either using 64b atomic
+    operations (where available), or by using two separate fields when only
+    32b atomic operations are available.  In the latter case, we keep a
+    conservative estimate of whether there are any waiting threads in one
+    bit of the field that counts the number of available tokens, thus
+    allowing sem_post to atomically both add a token and determine whether
+    it needs to call futex_wake.
+    
+    See:
+    https://sourceware.org/ml/libc-alpha/2014-12/msg00155.html 
+
+Notes:
+* For x86_64 and i686, rather than movign to the generic lll_futex_wake
+  we fix the existing versions to return the syscall result and to be
+  usable as an R-value.
+* We also backport fixes for swbz#18434, and swbz#18138.
+* We ignore swbz#17870 because it applies only to x32.
+
+Index: glibc-2.17-c758a686/nptl/DESIGN-sem.txt
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/DESIGN-sem.txt
++++ /dev/null
+@@ -1,46 +0,0 @@
+-Semaphores pseudocode
+-==============================
+-
+-       int sem_wait(sem_t * sem);
+-       int sem_trywait(sem_t * sem);
+-       int sem_post(sem_t * sem);
+-       int sem_getvalue(sem_t * sem, int * sval);
+-
+-struct sem_t {
+-
+-   unsigned int count;
+-         - current semaphore count, also used as a futex
+-}
+-
+-sem_wait(sem_t *sem)
+-{
+-  for (;;) {
+-
+-    if (atomic_decrement_if_positive(sem->count))
+-      break;
+-
+-    futex_wait(&sem->count, 0)
+-  }
+-}
+-
+-sem_post(sem_t *sem)
+-{
+-  n = atomic_increment(sem->count);
+-  // Pass the new value of sem->count
+-  futex_wake(&sem->count, n + 1);
+-}
+-
+-sem_trywait(sem_t *sem)
+-{
+-  if (atomic_decrement_if_positive(sem->count)) {
+-    return 0;
+-  } else {
+-    return EAGAIN;
+-  }
+-}
+-
+-sem_getvalue(sem_t *sem, int *sval)
+-{
+-  *sval = sem->count;
+-  read_barrier();
+-}
+Index: glibc-2.17-c758a686/nptl/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/Makefile
++++ glibc-2.17-c758a686/nptl/Makefile
+@@ -95,7 +95,7 @@ libpthread-routines = nptl-init vars eve
+ 		      sem_init sem_destroy \
+ 		      sem_open sem_close sem_unlink \
+ 		      sem_getvalue \
+-		      sem_wait sem_trywait sem_timedwait sem_post \
++		      sem_wait sem_timedwait sem_post \
+ 		      cleanup cleanup_defer cleanup_compat \
+ 		      cleanup_defer_compat unwind \
+ 		      pt-longjmp pt-cleanup\
+Index: glibc-2.17-c758a686/nptl/sem_getvalue.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sem_getvalue.c
++++ glibc-2.17-c758a686/nptl/sem_getvalue.c
+@@ -19,23 +19,37 @@
+ #include <semaphore.h>
+ #include <shlib-compat.h>
+ #include "semaphoreP.h"
++#include <atomic.h>
+ 
+ 
+ int
+-__new_sem_getvalue (sem, sval)
+-     sem_t *sem;
+-     int *sval;
++__new_sem_getvalue (sem_t *sem, int *sval)
+ {
+   struct new_sem *isem = (struct new_sem *) sem;
+ 
+   /* XXX Check for valid SEM parameter.  */
++  /* FIXME This uses relaxed MO, even though POSIX specifies that this function
++     should be linearizable.  However, its debatable whether linearizability
++     is the right requirement.  We need to follow up with POSIX and, if
++     necessary, use a stronger MO here and elsewhere (e.g., potentially
++     release MO in all places where we consume a token).  */
+ 
+-  *sval = isem->value;
++#if __HAVE_64B_ATOMICS
++  *sval = atomic_load_relaxed (&isem->data) & SEM_VALUE_MASK;
++#else
++  *sval = atomic_load_relaxed (&isem->value) >> SEM_VALUE_SHIFT;
++#endif
+ 
+   return 0;
+ }
+ versioned_symbol (libpthread, __new_sem_getvalue, sem_getvalue, GLIBC_2_1);
+ #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
+-strong_alias (__new_sem_getvalue, __old_sem_getvalue)
++int
++__old_sem_getvalue (sem_t *sem, int *sval)
++{
++  struct old_sem *isem = (struct old_sem *) sem;
++  *sval = isem->value;
++  return 0;
++}
+ compat_symbol (libpthread, __old_sem_getvalue, sem_getvalue, GLIBC_2_0);
+ #endif
+Index: glibc-2.17-c758a686/nptl/sem_init.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sem_init.c
++++ glibc-2.17-c758a686/nptl/sem_init.c
+@@ -18,17 +18,28 @@
+ 
+ #include <errno.h>
+ #include <semaphore.h>
+-#include <lowlevellock.h>
+ #include <shlib-compat.h>
+ #include "semaphoreP.h"
+ #include <kernel-features.h>
+ 
++/* Returns FUTEX_PRIVATE if pshared is zero and private futexes are supported;
++   returns FUTEX_SHARED otherwise.
++   TODO Remove when cleaning up the futex API throughout glibc.  */
++static __always_inline int
++futex_private_if_supported (int pshared)
++{
++  if (pshared != 0)
++    return LLL_SHARED;
++#ifdef __ASSUME_PRIVATE_FUTEX
++  return LLL_PRIVATE;
++#else
++  return THREAD_GETMEM (THREAD_SELF, header.private_futex)
++      ^ FUTEX_PRIVATE_FLAG;
++#endif
++}
+ 
+ int
+-__new_sem_init (sem, pshared, value)
+-     sem_t *sem;
+-     int pshared;
+-     unsigned int value;
++__new_sem_init (sem_t *sem, int pshared, unsigned int value)
+ {
+   /* Parameter sanity check.  */
+   if (__builtin_expect (value > SEM_VALUE_MAX, 0))
+@@ -40,16 +51,15 @@ __new_sem_init (sem, pshared, value)
+   /* Map to the internal type.  */
+   struct new_sem *isem = (struct new_sem *) sem;
+ 
+-  /* Use the values the user provided.  */
+-  isem->value = value;
+-#ifdef __ASSUME_PRIVATE_FUTEX
+-  isem->private = pshared ? 0 : FUTEX_PRIVATE_FLAG;
++  /* Use the values the caller provided.  */
++#if __HAVE_64B_ATOMICS
++  isem->data = value;
+ #else
+-  isem->private = pshared ? 0 : THREAD_GETMEM (THREAD_SELF,
+-					       header.private_futex);
++  isem->value = value << SEM_VALUE_SHIFT;
++  isem->nwaiters = 0;
+ #endif
+ 
+-  isem->nwaiters = 0;
++  isem->private = futex_private_if_supported (pshared);
+ 
+   return 0;
+ }
+Index: glibc-2.17-c758a686/nptl/sem_open.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sem_open.c
++++ glibc-2.17-c758a686/nptl/sem_open.c
+@@ -307,9 +307,14 @@ sem_open (const char *name, int oflag, .
+ 	struct new_sem newsem;
+       } sem;
+ 
+-      sem.newsem.value = value;
+-      sem.newsem.private = 0;
++#if __HAVE_64B_ATOMICS
++      sem.newsem.data = value;
++#else
++      sem.newsem.value = value << SEM_VALUE_SHIFT;
+       sem.newsem.nwaiters = 0;
++#endif
++      /* This always is a shared semaphore.  */
++      sem.newsem.private = LLL_SHARED;
+ 
+       /* Initialize the remaining bytes as well.  */
+       memset ((char *) &sem.initsem + sizeof (struct new_sem), '\0',
+Index: glibc-2.17-c758a686/nptl/tst-sem11.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/tst-sem11.c
++++ glibc-2.17-c758a686/nptl/tst-sem11.c
+@@ -34,8 +34,11 @@ main (void)
+       puts ("sem_init failed");
+       return 1;
+     }
+-
++#if __HAVE_64B_ATOMICS
++  if ((u.ns.data >> SEM_NWAITERS_SHIFT) != 0)
++#else
+   if (u.ns.nwaiters != 0)
++#endif
+     {
+       puts ("nwaiters not initialized");
+       return 1;
+@@ -68,7 +71,11 @@ main (void)
+       goto again;
+     }
+ 
++#if __HAVE_64B_ATOMICS
++  if ((u.ns.data >> SEM_NWAITERS_SHIFT) != 0)
++#else
+   if (u.ns.nwaiters != 0)
++#endif
+     {
+       puts ("nwaiters not reset");
+       return 1;
+Index: glibc-2.17-c758a686/nptl/tst-sem13.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/tst-sem13.c
++++ glibc-2.17-c758a686/nptl/tst-sem13.c
+@@ -33,9 +33,14 @@ do_test (void)
+       perror ("sem_timedwait did not fail with EINVAL");
+       return 1;
+     }
+-  if (u.ns.nwaiters != 0)
++#if __HAVE_64B_ATOMICS
++  unsigned int nwaiters = (u.ns.data >> SEM_NWAITERS_SHIFT);
++#else
++  unsigned int nwaiters = u.ns.nwaiters;
++#endif
++  if (nwaiters != 0)
+     {
+-      printf ("sem_timedwait modified nwaiters: %ld\n", u.ns.nwaiters);
++      printf ("sem_timedwait modified nwaiters: %d\n", nwaiters);
+       return 1;
+     }
+ 
+@@ -52,9 +57,14 @@ do_test (void)
+       perror ("2nd sem_timedwait did not fail with ETIMEDOUT");
+       return 1;
+     }
+-  if (u.ns.nwaiters != 0)
++#if __HAVE_64B_ATOMICS
++  nwaiters = (u.ns.data >> SEM_NWAITERS_SHIFT);
++#else
++  nwaiters = u.ns.nwaiters;
++#endif
++  if (nwaiters != 0)
+     {
+-      printf ("2nd sem_timedwait modified nwaiters: %ld\n", u.ns.nwaiters);
++      printf ("2nd sem_timedwait modified nwaiters: %d\n", nwaiters);
+       return 1;
+     }
+ 
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S
++++ /dev/null
+@@ -1,151 +0,0 @@
+-/* Copyright (C) 2002,2003,2005,2007,2008,2011-2012
+-   Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <structsem.h>
+-#include <lowlevellock.h>
+-
+-
+-	.text
+-
+-	.globl	__new_sem_post
+-	.type	__new_sem_post,@function
+-	.align	16
+-__new_sem_post:
+-	cfi_startproc
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset(4)
+-	cfi_offset(%ebx, -8)
+-
+-	movl	8(%esp), %ebx
+-
+-#if VALUE == 0
+-	movl	(%ebx), %eax
+-#else
+-	movl	VALUE(%ebx), %eax
+-#endif
+-0:	cmpl	$SEM_VALUE_MAX, %eax
+-	je	3f
+-	leal	1(%eax), %edx
+-	LOCK
+-#if VALUE == 0
+-	cmpxchgl %edx, (%ebx)
+-#else
+-	cmpxchgl %edx, VALUE(%ebx)
+-#endif
+-	jnz	0b
+-
+-	cmpl	$0, NWAITERS(%ebx)
+-	je	2f
+-
+-	movl	$FUTEX_WAKE, %ecx
+-	orl	PRIVATE(%ebx), %ecx
+-	movl	$1, %edx
+-	movl	$SYS_futex, %eax
+-	ENTER_KERNEL
+-
+-	testl	%eax, %eax
+-	js	1f
+-
+-2:	xorl	%eax, %eax
+-	popl	%ebx
+-	cfi_adjust_cfa_offset(-4)
+-	cfi_restore(%ebx)
+-	ret
+-
+-	cfi_adjust_cfa_offset(4)
+-	cfi_offset(%ebx, -8)
+-1:
+-#ifdef PIC
+-	SETUP_PIC_REG(bx)
+-#else
+-	movl	$4f, %ebx
+-4:
+-#endif
+-	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+-#ifdef NO_TLS_DIRECT_SEG_REFS
+-	movl	errno@gotntpoff(%ebx), %edx
+-	addl	%gs:0, %edx
+-	movl	$EINVAL, (%edx)
+-#else
+-	movl	errno@gotntpoff(%ebx), %edx
+-	movl	$EINVAL, %gs:(%edx)
+-#endif
+-
+-	orl	$-1, %eax
+-	popl	%ebx
+-	ret
+-
+-3:
+-#ifdef PIC
+-	SETUP_PIC_REG(bx)
+-#else
+-	movl	$5f, %ebx
+-5:
+-#endif
+-	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+-#ifdef NO_TLS_DIRECT_SEG_REFS
+-	movl	errno@gotntpoff(%ebx), %edx
+-	addl	%gs:0, %edx
+-	movl	$EOVERFLOW, (%edx)
+-#else
+-	movl	errno@gotntpoff(%ebx), %edx
+-	movl	$EOVERFLOW, %gs:(%edx)
+-#endif
+-
+-	orl	$-1, %eax
+-	popl	%ebx
+-	cfi_adjust_cfa_offset(-4)
+-	cfi_restore(%ebx)
+-	ret
+-	cfi_endproc
+-	.size	__new_sem_post,.-__new_sem_post
+-	versioned_symbol(libpthread, __new_sem_post, sem_post, GLIBC_2_1)
+-#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
+-	.global	__old_sem_post
+-	.type	__old_sem_post,@function
+-__old_sem_post:
+-	cfi_startproc
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset(4)
+-	cfi_offset(%ebx, -8)
+-
+-	movl	8(%esp), %ebx
+-	LOCK
+-	addl	$1, (%ebx)
+-
+-	movl	$SYS_futex, %eax
+-	movl	$FUTEX_WAKE, %ecx
+-	movl	$1, %edx
+-	ENTER_KERNEL
+-
+-	testl	%eax, %eax
+-	js	1b
+-
+-	xorl	%eax, %eax
+-	popl	%ebx
+-	cfi_adjust_cfa_offset(-4)
+-	cfi_restore(%ebx)
+-	ret
+-	cfi_endproc
+-	.size	__old_sem_post,.-__old_sem_post
+-	compat_symbol(libpthread, __old_sem_post, sem_post, GLIBC_2_0)
+-#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
++++ /dev/null
+@@ -1,327 +0,0 @@
+-/* Copyright (C) 2002-2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <structsem.h>
+-#include <lowlevellock.h>
+-
+-
+-#if VALUE != 0
+-# error "code needs to be rewritten for VALUE != 0"
+-#endif
+-
+-
+-	.text
+-
+-	.globl	sem_timedwait
+-	.type	sem_timedwait,@function
+-	.align	16
+-sem_timedwait:
+-.LSTARTCODE:
+-	movl	4(%esp), %ecx
+-
+-	movl	(%ecx), %eax
+-2:	testl	%eax, %eax
+-	je	1f
+-
+-	leal	-1(%eax), %edx
+-	LOCK
+-	cmpxchgl %edx, (%ecx)
+-	jne	2b
+-
+-	xorl	%eax, %eax
+-	ret
+-
+-	/* Check whether the timeout value is valid.  */
+-1:	pushl	%esi
+-.Lpush_esi:
+-	pushl	%edi
+-.Lpush_edi:
+-	pushl	%ebx
+-.Lpush_ebx:
+-	subl	$12, %esp
+-.Lsub_esp:
+-
+-	movl	32(%esp), %edi
+-
+-	/* Check for invalid nanosecond field.  */
+-	cmpl	$1000000000, 4(%edi)
+-	movl	$EINVAL, %esi
+-	jae	.Lerrno_exit
+-
+-	LOCK
+-	incl	NWAITERS(%ecx)
+-
+-7:	xorl	%ecx, %ecx
+-	movl	%esp, %ebx
+-	movl	%ecx, %edx
+-	movl	$__NR_gettimeofday, %eax
+-	ENTER_KERNEL
+-
+-	/* Compute relative timeout.  */
+-	movl	4(%esp), %eax
+-	movl	$1000, %edx
+-	mul	%edx		/* Milli seconds to nano seconds.  */
+-	movl	(%edi), %ecx
+-	movl	4(%edi), %edx
+-	subl	(%esp), %ecx
+-	subl	%eax, %edx
+-	jns	5f
+-	addl	$1000000000, %edx
+-	subl	$1, %ecx
+-5:	testl	%ecx, %ecx
+-	movl	$ETIMEDOUT, %esi
+-	js	6f		/* Time is already up.  */
+-
+-	movl	%ecx, (%esp)	/* Store relative timeout.  */
+-	movl	%edx, 4(%esp)
+-
+-.LcleanupSTART:
+-	call	__pthread_enable_asynccancel
+-	movl	%eax, 8(%esp)
+-
+-	movl	28(%esp), %ebx	/* Load semaphore address.  */
+-#if FUTEX_WAIT == 0
+-	movl	PRIVATE(%ebx), %ecx
+-#else
+-	movl	$FUTEX_WAIT, %ecx
+-	orl	PRIVATE(%ebx), %ecx
+-#endif
+-	movl	%esp, %esi
+-	xorl	%edx, %edx
+-	movl	$SYS_futex, %eax
+-	ENTER_KERNEL
+-	movl	%eax, %esi
+-
+-	movl	8(%esp), %eax
+-	call	__pthread_disable_asynccancel
+-.LcleanupEND:
+-
+-	testl	%esi, %esi
+-	je	9f
+-	cmpl	$-EWOULDBLOCK, %esi
+-	jne	3f
+-
+-9:	movl	(%ebx), %eax
+-8:	testl	%eax, %eax
+-	je	7b
+-
+-	leal	-1(%eax), %ecx
+-	LOCK
+-	cmpxchgl %ecx, (%ebx)
+-	jne	8b
+-
+-	xorl	%eax, %eax
+-
+-	LOCK
+-	decl	NWAITERS(%ebx)
+-
+-10:	addl	$12, %esp
+-.Ladd_esp:
+-	popl	%ebx
+-.Lpop_ebx:
+-	popl	%edi
+-.Lpop_edi:
+-	popl	%esi
+-.Lpop_esi:
+-	ret
+-
+-.Lafter_ret:
+-3:	negl	%esi
+-6:
+-	movl	28(%esp), %ebx	/* Load semaphore address.  */
+-	LOCK
+-	decl	NWAITERS(%ebx)
+-.Lerrno_exit:
+-#ifdef PIC
+-	SETUP_PIC_REG(bx)
+-#else
+-	movl	$4f, %ebx
+-4:
+-#endif
+-	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+-#ifdef NO_TLS_DIRECT_SEG_REFS
+-	movl	errno@gotntpoff(%ebx), %edx
+-	addl	%gs:0, %edx
+-	movl	%esi, (%edx)
+-#else
+-	movl	errno@gotntpoff(%ebx), %edx
+-	movl	%esi, %gs:(%edx)
+-#endif
+-
+-	orl	$-1, %eax
+-	jmp	10b
+-	.size	sem_timedwait,.-sem_timedwait
+-
+-
+-	.type	sem_wait_cleanup,@function
+-sem_wait_cleanup:
+-	LOCK
+-	decl	NWAITERS(%ebx)
+-	movl	%eax, (%esp)
+-.LcallUR:
+-	call	_Unwind_Resume@PLT
+-	hlt
+-.LENDCODE:
+-	.size	sem_wait_cleanup,.-sem_wait_cleanup
+-
+-
+-	.section .gcc_except_table,"a",@progbits
+-.LexceptSTART:
+-	.byte	0xff				# @LPStart format (omit)
+-	.byte	0xff				# @TType format (omit)
+-	.byte	0x01				# call-site format
+-						# DW_EH_PE_uleb128
+-	.uleb128 .Lcstend-.Lcstbegin
+-.Lcstbegin:
+-	.uleb128 .LcleanupSTART-.LSTARTCODE
+-	.uleb128 .LcleanupEND-.LcleanupSTART
+-	.uleb128 sem_wait_cleanup-.LSTARTCODE
+-	.uleb128  0
+-	.uleb128 .LcallUR-.LSTARTCODE
+-	.uleb128 .LENDCODE-.LcallUR
+-	.uleb128 0
+-	.uleb128  0
+-.Lcstend:
+-
+-
+-	.section .eh_frame,"a",@progbits
+-.LSTARTFRAME:
+-	.long	.LENDCIE-.LSTARTCIE		# Length of the CIE.
+-.LSTARTCIE:
+-	.long	0				# CIE ID.
+-	.byte	1				# Version number.
+-#ifdef SHARED
+-	.string	"zPLR"				# NUL-terminated augmentation
+-						# string.
+-#else
+-	.string	"zPL"				# NUL-terminated augmentation
+-						# string.
+-#endif
+-	.uleb128 1				# Code alignment factor.
+-	.sleb128 -4				# Data alignment factor.
+-	.byte	8				# Return address register
+-						# column.
+-#ifdef SHARED
+-	.uleb128 7				# Augmentation value length.
+-	.byte	0x9b				# Personality: DW_EH_PE_pcrel
+-						# + DW_EH_PE_sdata4
+-						# + DW_EH_PE_indirect
+-	.long	DW.ref.__gcc_personality_v0-.
+-	.byte	0x1b				# LSDA Encoding: DW_EH_PE_pcrel
+-						# + DW_EH_PE_sdata4.
+-	.byte	0x1b				# FDE Encoding: DW_EH_PE_pcrel
+-						# + DW_EH_PE_sdata4.
+-#else
+-	.uleb128 6				# Augmentation value length.
+-	.byte	0x0				# Personality: absolute
+-	.long	__gcc_personality_v0
+-	.byte	0x0				# LSDA Encoding: absolute
+-#endif
+-	.byte 0x0c				# DW_CFA_def_cfa
+-	.uleb128 4
+-	.uleb128 4
+-	.byte	0x88				# DW_CFA_offset, column 0x10
+-	.uleb128 1
+-	.align 4
+-.LENDCIE:
+-
+-	.long	.LENDFDE-.LSTARTFDE		# Length of the FDE.
+-.LSTARTFDE:
+-	.long	.LSTARTFDE-.LSTARTFRAME		# CIE pointer.
+-#ifdef SHARED
+-	.long	.LSTARTCODE-.			# PC-relative start address
+-						# of the code.
+-#else
+-	.long	.LSTARTCODE			# Start address of the code.
+-#endif
+-	.long	.LENDCODE-.LSTARTCODE		# Length of the code.
+-	.uleb128 4				# Augmentation size
+-#ifdef SHARED
+-	.long	.LexceptSTART-.
+-#else
+-	.long	.LexceptSTART
+-#endif
+-
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lpush_esi-.LSTARTCODE
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 8
+-	.byte   0x86				# DW_CFA_offset %esi
+-	.uleb128 2
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lpush_edi-.Lpush_esi
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 12
+-	.byte   0x87				# DW_CFA_offset %edi
+-	.uleb128 3
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lpush_ebx-.Lpush_edi
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 16
+-	.byte   0x83				# DW_CFA_offset %ebx
+-	.uleb128 4
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lsub_esp-.Lpush_ebx
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 28
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Ladd_esp-.Lsub_esp
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 16
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lpop_ebx-.Ladd_esp
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 12
+-	.byte	0xc3				# DW_CFA_restore %ebx
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lpop_edi-.Lpop_ebx
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 8
+-	.byte	0xc7				# DW_CFA_restore %edi
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lpop_esi-.Lpop_edi
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 4
+-	.byte	0xc6				# DW_CFA_restore %esi
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lafter_ret-.Lpop_esi
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 28
+-	.byte   0x86				# DW_CFA_offset %esi
+-	.uleb128 2
+-	.byte   0x87				# DW_CFA_offset %edi
+-	.uleb128 3
+-	.byte   0x83				# DW_CFA_offset %ebx
+-	.uleb128 4
+-	.align	4
+-.LENDFDE:
+-
+-
+-#ifdef SHARED
+-	.hidden	DW.ref.__gcc_personality_v0
+-	.weak	DW.ref.__gcc_personality_v0
+-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
+-	.align	4
+-	.type	DW.ref.__gcc_personality_v0, @object
+-	.size	DW.ref.__gcc_personality_v0, 4
+-DW.ref.__gcc_personality_v0:
+-	.long	__gcc_personality_v0
+-#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S
++++ /dev/null
+@@ -1,67 +0,0 @@
+-/* Copyright (C) 2002-2003, 2005, 2007, 2011-2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <lowlevellock.h>
+-
+-	.text
+-
+-	.globl	__new_sem_trywait
+-	.type	__new_sem_trywait,@function
+-	.align	16
+-__new_sem_trywait:
+-	movl	4(%esp), %ecx
+-
+-	movl	(%ecx), %eax
+-2:	testl	%eax, %eax
+-	jz	1f
+-
+-	leal	-1(%eax), %edx
+-	LOCK
+-	cmpxchgl %edx, (%ecx)
+-	jne	2b
+-	xorl	%eax, %eax
+-	ret
+-
+-1:
+-#ifdef PIC
+-	SETUP_PIC_REG(cx)
+-#else
+-	movl	$3f, %ecx
+-3:
+-#endif
+-	addl	$_GLOBAL_OFFSET_TABLE_, %ecx
+-#ifdef NO_TLS_DIRECT_SEG_REFS
+-	movl	errno@gotntpoff(%ecx), %edx
+-	addl	%gs:0, %edx
+-	movl	$EAGAIN, (%edx)
+-#else
+-	movl	errno@gotntpoff(%ecx), %edx
+-	movl	$EAGAIN, %gs:(%edx)
+-#endif
+-	orl	$-1, %eax
+-	ret
+-	.size	__new_sem_trywait,.-__new_sem_trywait
+-	versioned_symbol(libpthread, __new_sem_trywait, sem_trywait, GLIBC_2_1)
+-#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
+-	.global	__old_sem_trywait
+-__old_sem_trywait = __new_sem_trywait
+-	compat_symbol(libpthread, __old_sem_trywait, sem_trywait, GLIBC_2_0)
+-#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S
++++ /dev/null
+@@ -1,343 +0,0 @@
+-/* Copyright (C) 2002-2003, 2005, 2007, 2011-2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <structsem.h>
+-#include <lowlevellock.h>
+-
+-
+-#if VALUE != 0
+-# error "code needs to be rewritten for VALUE != 0"
+-#endif
+-
+-	.text
+-
+-	.globl	__new_sem_wait
+-	.type	__new_sem_wait,@function
+-	.align	16
+-__new_sem_wait:
+-.LSTARTCODE:
+-	pushl	%ebx
+-.Lpush_ebx:
+-	pushl	%esi
+-.Lpush_esi:
+-	subl	$4, %esp
+-.Lsub_esp:
+-
+-	movl	16(%esp), %ebx
+-
+-	movl	(%ebx), %eax
+-2:	testl	%eax, %eax
+-	je	1f
+-
+-	leal	-1(%eax), %edx
+-	LOCK
+-	cmpxchgl %edx, (%ebx)
+-	jne	2b
+-7:	xorl	%eax, %eax
+-
+-9:	movl	4(%esp), %esi
+-	movl	8(%esp), %ebx
+-	addl	$12, %esp
+-.Ladd_esp:
+-	ret
+-
+-.Lafter_ret:
+-1:	LOCK
+-	incl	NWAITERS(%ebx)
+-
+-.LcleanupSTART:
+-6:	call	__pthread_enable_asynccancel
+-	movl	%eax, (%esp)
+-
+-#if FUTEX_WAIT == 0
+-	movl	PRIVATE(%ebx), %ecx
+-#else
+-	movl	$FUTEX_WAIT, %ecx
+-	orl	PRIVATE(%ebx), %ecx
+-#endif
+-	xorl	%esi, %esi
+-	xorl	%edx, %edx
+-	movl	$SYS_futex, %eax
+-	ENTER_KERNEL
+-	movl	%eax, %esi
+-
+-	movl	(%esp), %eax
+-	call	__pthread_disable_asynccancel
+-.LcleanupEND:
+-
+-	testl	%esi, %esi
+-	je	3f
+-	cmpl	$-EWOULDBLOCK, %esi
+-	jne	4f
+-
+-3:
+-	movl	(%ebx), %eax
+-5:	testl	%eax, %eax
+-	je	6b
+-
+-	leal	-1(%eax), %edx
+-	LOCK
+-	cmpxchgl %edx, (%ebx)
+-	jne	5b
+-
+-	LOCK
+-	decl	NWAITERS(%ebx)
+-	jmp	7b
+-
+-4:	LOCK
+-	decl	NWAITERS(%ebx)
+-
+-	negl	%esi
+-#ifdef PIC
+-	SETUP_PIC_REG(bx)
+-#else
+-	movl	$8f, %ebx
+-8:
+-#endif
+-	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+-#ifdef NO_TLS_DIRECT_SEG_REFS
+-	movl	errno@gotntpoff(%ebx), %edx
+-	addl	%gs:0, %edx
+-	movl	%esi, (%edx)
+-#else
+-	movl	errno@gotntpoff(%ebx), %edx
+-	movl	%esi, %gs:(%edx)
+-#endif
+-	orl	$-1, %eax
+-
+-	jmp	9b
+-	.size	__new_sem_wait,.-__new_sem_wait
+-	versioned_symbol(libpthread, __new_sem_wait, sem_wait, GLIBC_2_1)
+-
+-
+-	.type	sem_wait_cleanup,@function
+-sem_wait_cleanup:
+-	LOCK
+-	decl	NWAITERS(%ebx)
+-	movl	%eax, (%esp)
+-.LcallUR:
+-	call	_Unwind_Resume@PLT
+-	hlt
+-.LENDCODE:
+-	.size	sem_wait_cleanup,.-sem_wait_cleanup
+-
+-
+-	.section .gcc_except_table,"a",@progbits
+-.LexceptSTART:
+-	.byte	0xff				# @LPStart format (omit)
+-	.byte	0xff				# @TType format (omit)
+-	.byte	0x01				# call-site format
+-						# DW_EH_PE_uleb128
+-	.uleb128 .Lcstend-.Lcstbegin
+-.Lcstbegin:
+-	.uleb128 .LcleanupSTART-.LSTARTCODE
+-	.uleb128 .LcleanupEND-.LcleanupSTART
+-	.uleb128 sem_wait_cleanup-.LSTARTCODE
+-	.uleb128  0
+-	.uleb128 .LcallUR-.LSTARTCODE
+-	.uleb128 .LENDCODE-.LcallUR
+-	.uleb128 0
+-	.uleb128  0
+-.Lcstend:
+-
+-
+-	.section .eh_frame,"a",@progbits
+-.LSTARTFRAME:
+-	.long	.LENDCIE-.LSTARTCIE		# Length of the CIE.
+-.LSTARTCIE:
+-	.long	0				# CIE ID.
+-	.byte	1				# Version number.
+-#ifdef SHARED
+-	.string	"zPLR"				# NUL-terminated augmentation
+-						# string.
+-#else
+-	.string	"zPL"				# NUL-terminated augmentation
+-						# string.
+-#endif
+-	.uleb128 1				# Code alignment factor.
+-	.sleb128 -4				# Data alignment factor.
+-	.byte	8				# Return address register
+-						# column.
+-#ifdef SHARED
+-	.uleb128 7				# Augmentation value length.
+-	.byte	0x9b				# Personality: DW_EH_PE_pcrel
+-						# + DW_EH_PE_sdata4
+-						# + DW_EH_PE_indirect
+-	.long	DW.ref.__gcc_personality_v0-.
+-	.byte	0x1b				# LSDA Encoding: DW_EH_PE_pcrel
+-						# + DW_EH_PE_sdata4.
+-	.byte	0x1b				# FDE Encoding: DW_EH_PE_pcrel
+-						# + DW_EH_PE_sdata4.
+-#else
+-	.uleb128 6				# Augmentation value length.
+-	.byte	0x0				# Personality: absolute
+-	.long	__gcc_personality_v0
+-	.byte	0x0				# LSDA Encoding: absolute
+-#endif
+-	.byte 0x0c				# DW_CFA_def_cfa
+-	.uleb128 4
+-	.uleb128 4
+-	.byte	0x88				# DW_CFA_offset, column 0x10
+-	.uleb128 1
+-	.align 4
+-.LENDCIE:
+-
+-	.long	.LENDFDE-.LSTARTFDE		# Length of the FDE.
+-.LSTARTFDE:
+-	.long	.LSTARTFDE-.LSTARTFRAME		# CIE pointer.
+-#ifdef SHARED
+-	.long	.LSTARTCODE-.			# PC-relative start address
+-						# of the code.
+-#else
+-	.long	.LSTARTCODE			# Start address of the code.
+-#endif
+-	.long	.LENDCODE-.LSTARTCODE		# Length of the code.
+-	.uleb128 4				# Augmentation size
+-#ifdef SHARED
+-	.long	.LexceptSTART-.
+-#else
+-	.long	.LexceptSTART
+-#endif
+-
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lpush_ebx-.LSTARTCODE
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 8
+-	.byte   0x83				# DW_CFA_offset %ebx
+-	.uleb128 2
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lpush_esi-.Lpush_ebx
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 12
+-	.byte   0x86				# DW_CFA_offset %esi
+-	.uleb128 3
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lsub_esp-.Lpush_esi
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 16
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Ladd_esp-.Lsub_esp
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 4
+-	.byte	0xc3				# DW_CFA_restore %ebx
+-	.byte	0xc6				# DW_CFA_restore %esi
+-	.byte	4				# DW_CFA_advance_loc4
+-	.long	.Lafter_ret-.Ladd_esp
+-	.byte	14				# DW_CFA_def_cfa_offset
+-	.uleb128 16
+-	.byte   0x83				# DW_CFA_offset %ebx
+-	.uleb128 2
+-	.byte   0x86				# DW_CFA_offset %esi
+-	.uleb128 3
+-	.align	4
+-.LENDFDE:
+-
+-
+-#ifdef SHARED
+-	.hidden	DW.ref.__gcc_personality_v0
+-	.weak	DW.ref.__gcc_personality_v0
+-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
+-	.align	4
+-	.type	DW.ref.__gcc_personality_v0, @object
+-	.size	DW.ref.__gcc_personality_v0, 4
+-DW.ref.__gcc_personality_v0:
+-	.long	__gcc_personality_v0
+-#endif
+-
+-
+-#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
+-	.section ".text.compat", "ax"
+-	.global	__old_sem_wait
+-	.type	__old_sem_wait,@function
+-	.align	16
+-	cfi_startproc
+-__old_sem_wait:
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset(4)
+-	pushl	%esi
+-	cfi_adjust_cfa_offset(4)
+-	subl	$4, %esp
+-	cfi_adjust_cfa_offset(4)
+-
+-	movl	16(%esp), %ebx
+-	cfi_offset(ebx, -8)
+-
+-	cfi_offset(esi, -12)
+-3:	movl	(%ebx), %eax
+-2:	testl	%eax, %eax
+-	je	1f
+-
+-	leal	-1(%eax), %edx
+-	LOCK
+-	cmpxchgl %edx, (%ebx)
+-	jne	2b
+-	xorl	%eax, %eax
+-
+-5:	movl	4(%esp), %esi
+-	movl	8(%esp), %ebx
+-	addl	$12, %esp
+-	cfi_restore(ebx)
+-	cfi_restore(esi)
+-	cfi_adjust_cfa_offset(-12)
+-	ret
+-
+-	cfi_adjust_cfa_offset(12)
+-	cfi_offset(ebx, -8)
+-	cfi_offset(esi, -12)
+-1:	call	__pthread_enable_asynccancel
+-	movl	%eax, (%esp)
+-
+-	xorl	%esi, %esi
+-	movl	$SYS_futex, %eax
+-	movl	%esi, %ecx
+-	movl	%esi, %edx
+-	ENTER_KERNEL
+-	movl	%eax, %esi
+-
+-	movl	(%esp), %eax
+-	call	__pthread_disable_asynccancel
+-
+-	testl	%esi, %esi
+-	je	3b
+-	cmpl	$-EWOULDBLOCK, %esi
+-	je	3b
+-	negl	%esi
+-#ifdef PIC
+-	SETUP_PIC_REG(bx)
+-#else
+-	movl	$4f, %ebx
+-4:
+-#endif
+-	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+-#ifdef NO_TLS_DIRECT_SEG_REFS
+-	movl	errno@gotntpoff(%ebx), %edx
+-	addl	%gs:0, %edx
+-	movl	%esi, (%edx)
+-#else
+-	movl	errno@gotntpoff(%ebx), %edx
+-	movl	%esi, %gs:(%edx)
+-#endif
+-	orl	$-1, %eax
+-	jmp	5b
+-	cfi_endproc
+-	.size	__old_sem_wait,.-__old_sem_wait
+-	compat_symbol(libpthread, __old_sem_wait, sem_wait, GLIBC_2_0)
+-#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include "../i486/sem_post.S"
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include "../i486/sem_timedwait.S"
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include "../i486/sem_trywait.S"
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include "../i486/sem_wait.S"
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include "../i486/sem_post.S"
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include "../i486/sem_timedwait.S"
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include "../i486/sem_trywait.S"
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include "../i486/sem_wait.S"
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/internaltypes.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/internaltypes.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/internaltypes.h
+@@ -20,6 +20,8 @@
+ #define _INTERNALTYPES_H	1
+ 
+ #include <stdint.h>
++#include <atomic.h>
++#include <endian.h>
+ 
+ 
+ struct pthread_attr
+@@ -141,9 +143,29 @@ struct pthread_key_struct
+ /* Semaphore variable structure.  */
+ struct new_sem
+ {
++#if __HAVE_64B_ATOMICS
++  /* The data field holds both value (in the least-significant 32 bytes) and
++     nwaiters.  */
++# if __BYTE_ORDER == __LITTLE_ENDIAN
++#  define SEM_VALUE_OFFSET 0
++# elif __BYTE_ORDER == __BIG_ENDIAN
++#  define SEM_VALUE_OFFSET 1
++# else
++# error Unsupported byte order.
++# endif
++# define SEM_NWAITERS_SHIFT 32
++# define SEM_VALUE_MASK (~(unsigned int)0)
++  unsigned long int data;
++  int private;
++  int pad;
++#else
++# define SEM_VALUE_SHIFT 1
++# define SEM_NWAITERS_MASK ((unsigned int)1)
+   unsigned int value;
+   int private;
+-  unsigned long int nwaiters;
++  int pad;
++  unsigned int nwaiters;
++#endif
+ };
+ 
+ struct old_sem
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c
++++ /dev/null
+@@ -1,71 +0,0 @@
+-/* sem_post -- post to a POSIX semaphore.  Powerpc version.
+-   Copyright (C) 2003-2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <errno.h>
+-#include <sysdep.h>
+-#include <lowlevellock.h>
+-#include <internaltypes.h>
+-#include <semaphore.h>
+-
+-#include <shlib-compat.h>
+-
+-int
+-__new_sem_post (sem_t *sem)
+-{
+-  struct new_sem *isem = (struct new_sem *) sem;
+-
+-  __asm __volatile (__lll_rel_instr ::: "memory");
+-  atomic_increment (&isem->value);
+-  __asm __volatile (__lll_acq_instr ::: "memory");
+-  if (isem->nwaiters > 0)
+-    {
+-      int err = lll_futex_wake (&isem->value, 1,
+-				isem->private ^ FUTEX_PRIVATE_FLAG);
+-      if (__builtin_expect (err, 0) < 0)
+-	{
+-	  __set_errno (-err);
+-	  return -1;
+-	}
+-    }
+-  return 0;
+-}
+-versioned_symbol (libpthread, __new_sem_post, sem_post, GLIBC_2_1);
+-
+-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
+-
+-int
+-attribute_compat_text_section
+-__old_sem_post (sem_t *sem)
+-{
+-  int *futex = (int *) sem;
+-
+-  __asm __volatile (__lll_rel_instr ::: "memory");
+-  (void) atomic_increment_val (futex);
+-  /* We always have to assume it is a shared semaphore.  */
+-  int err = lll_futex_wake (futex, 1, LLL_SHARED);
+-  if (__builtin_expect (err, 0) < 0)
+-    {
+-      __set_errno (-err);
+-      return -1;
+-    }
+-  return 0;
+-}
+-
+-compat_symbol (libpthread, __old_sem_post, sem_post, GLIBC_2_0);
+-#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_post.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sem_post.c
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_post.c
+@@ -25,34 +25,78 @@
+ 
+ #include <shlib-compat.h>
+ 
++/* Wrapper for lll_futex_wake, with error checking.
++   TODO Remove when cleaning up the futex API throughout glibc.  */
++static __always_inline void
++futex_wake (unsigned int* futex, int processes_to_wake, int private)
++{
++  int res = lll_futex_wake (futex, processes_to_wake, private);
++  /* No error.  Ignore the number of woken processes.  */
++  if (res >= 0)
++    return;
++  switch (res)
++    {
++    case -EFAULT: /* Could have happened due to memory reuse.  */
++    case -EINVAL: /* Could be either due to incorrect alignment (a bug in
++		     glibc or in the application) or due to memory being
++		     reused for a PI futex.  We cannot distinguish between the
++		     two causes, and one of them is correct use, so we do not
++		     act in this case.  */
++      return;
++    case -ENOSYS: /* Must have been caused by a glibc bug.  */
++    /* No other errors are documented at this time.  */
++    default:
++      abort ();
++    }
++}
++
++
++/* See sem_wait for an explanation of the algorithm.  */
+ int
+ __new_sem_post (sem_t *sem)
+ {
+   struct new_sem *isem = (struct new_sem *) sem;
++  int private = isem->private;
+ 
+-  __typeof (isem->value) cur;
++#if __HAVE_64B_ATOMICS
++  /* Add a token to the semaphore.  We use release MO to make sure that a
++     thread acquiring this token synchronizes with us and other threads that
++     added tokens before (the release sequence includes atomic RMW operations
++     by other threads).  */
++  /* TODO Use atomic_fetch_add to make it scale better than a CAS loop?  */
++  unsigned long int d = atomic_load_relaxed (&isem->data);
+   do
+     {
+-      cur = isem->value;
+-      if (isem->value == SEM_VALUE_MAX)
++      if ((d & SEM_VALUE_MASK) == SEM_VALUE_MAX)
+ 	{
+ 	  __set_errno (EOVERFLOW);
+ 	  return -1;
+ 	}
+     }
+-  while (atomic_compare_and_exchange_bool_rel (&isem->value, cur + 1, cur));
++  while (!atomic_compare_exchange_weak_release (&isem->data, &d, d + 1));
+ 
+-  atomic_full_barrier ();
+-  if (isem->nwaiters > 0)
++  /* If there is any potentially blocked waiter, wake one of them.  */
++  if ((d >> SEM_NWAITERS_SHIFT) > 0)
++    futex_wake (((unsigned int *) &isem->data) + SEM_VALUE_OFFSET, 1, private);
++#else
++  /* Add a token to the semaphore.  Similar to 64b version.  */
++  unsigned int v = atomic_load_relaxed (&isem->value);
++  do
+     {
+-      int err = lll_futex_wake (&isem->value, 1,
+-				isem->private ^ FUTEX_PRIVATE_FLAG);
+-      if (__builtin_expect (err, 0) < 0)
++      if ((v << SEM_VALUE_SHIFT) == SEM_VALUE_MAX)
+ 	{
+-	  __set_errno (-err);
++	  __set_errno (EOVERFLOW);
+ 	  return -1;
+ 	}
+     }
++  while (!atomic_compare_exchange_weak_release (&isem->value,
++      &v, v + (1 << SEM_VALUE_SHIFT)));
++
++  /* If there is any potentially blocked waiter, wake one of them.  */
++  if ((v & SEM_NWAITERS_MASK) != 0)
++    futex_wake (&isem->value, 1, private);
++#endif
++
+   return 0;
+ }
+ versioned_symbol (libpthread, __new_sem_post, sem_post, GLIBC_2_1);
+@@ -65,6 +109,9 @@ __old_sem_post (sem_t *sem)
+ {
+   int *futex = (int *) sem;
+ 
++  /* We must need to synchronize with consumers of this token, so the atomic
++     increment must have release MO semantics.  */
++  atomic_write_barrier ();
+   (void) atomic_increment_val (futex);
+   /* We always have to assume it is a shared semaphore.  */
+   int err = lll_futex_wake (futex, 1, LLL_SHARED);
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
+@@ -1,5 +1,5 @@
+-/* sem_timedwait -- wait on a semaphore.  Generic futex-using version.
+-   Copyright (C) 2003, 2007, 2012 Free Software Foundation, Inc.
++/* sem_timedwait -- wait on a semaphore with timeout.
++   Copyright (C) 2003-2015 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
+ 
+@@ -17,42 +17,13 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#include <errno.h>
+-#include <sysdep.h>
+-#include <lowlevellock.h>
+-#include <internaltypes.h>
+-#include <semaphore.h>
+-
+-#include <pthreadP.h>
+-#include <shlib-compat.h>
+-
+-
+-extern void __sem_wait_cleanup (void *arg) attribute_hidden;
+-
+-/* This is in a seperate function in order to make sure gcc
+-   puts the call site into an exception region, and thus the
+-   cleanups get properly run.  */
+-static int
+-__attribute__ ((noinline))
+-do_futex_timed_wait (struct new_sem *isem, struct timespec *rt)
+-{
+-  int err, oldtype = __pthread_enable_asynccancel ();
+-
+-  err = lll_futex_timed_wait (&isem->value, 0, rt,
+-			      isem->private ^ FUTEX_PRIVATE_FLAG);
+-
+-  __pthread_disable_asynccancel (oldtype);
+-  return err;
+-}
++#include "sem_waitcommon.c"
+ 
++/* This is in a separate file because because sem_timedwait is only provided
++   if __USE_XOPEN2K is defined.  */
+ int
+ sem_timedwait (sem_t *sem, const struct timespec *abstime)
+ {
+-  struct new_sem *isem = (struct new_sem *) sem;
+-  int err;
+-
+-  if (atomic_decrement_if_positive (&isem->value) > 0)
+-    return 0;
+ 
+   if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
+     {
+@@ -60,57 +31,8 @@ sem_timedwait (sem_t *sem, const struct
+       return -1;
+     }
+ 
+-  atomic_increment (&isem->nwaiters);
+-
+-  pthread_cleanup_push (__sem_wait_cleanup, isem);
+-
+-  while (1)
+-    {
+-      struct timeval tv;
+-      struct timespec rt;
+-      int sec, nsec;
+-
+-      /* Get the current time.  */
+-      __gettimeofday (&tv, NULL);
+-
+-      /* Compute relative timeout.  */
+-      sec = abstime->tv_sec - tv.tv_sec;
+-      nsec = abstime->tv_nsec - tv.tv_usec * 1000;
+-      if (nsec < 0)
+-	{
+-	  nsec += 1000000000;
+-	  --sec;
+-	}
+-
+-      /* Already timed out?  */
+-      if (sec < 0)
+-	{
+-	  __set_errno (ETIMEDOUT);
+-	  err = -1;
+-	  break;
+-	}
+-
+-      /* Do wait.  */
+-      rt.tv_sec = sec;
+-      rt.tv_nsec = nsec;
+-      err = do_futex_timed_wait(isem, &rt);
+-      if (err != 0 && err != -EWOULDBLOCK)
+-	{
+-	  __set_errno (-err);
+-	  err = -1;
+-	  break;
+-	}
+-
+-      if (atomic_decrement_if_positive (&isem->value) > 0)
+-	{
+-	  err = 0;
+-	  break;
+-	}
+-    }
+-
+-  pthread_cleanup_pop (0);
+-
+-  atomic_decrement (&isem->nwaiters);
+-
+-  return err;
++  if (__new_sem_wait_fast ((struct new_sem *) sem, 0) == 0)
++    return 0;
++  else
++    return __new_sem_wait_slow((struct new_sem *) sem, abstime);
+ }
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_trywait.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sem_trywait.c
++++ /dev/null
+@@ -1,49 +0,0 @@
+-/* sem_trywait -- wait on a semaphore.  Generic futex-using version.
+-   Copyright (C) 2003 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <errno.h>
+-#include <sysdep.h>
+-#include <lowlevellock.h>
+-#include <internaltypes.h>
+-#include <semaphore.h>
+-
+-#include <shlib-compat.h>
+-
+-
+-int
+-__new_sem_trywait (sem_t *sem)
+-{
+-  int *futex = (int *) sem;
+-  int val;
+-
+-  if (*futex > 0)
+-    {
+-      val = atomic_decrement_if_positive (futex);
+-      if (val > 0)
+-	return 0;
+-    }
+-
+-  __set_errno (EAGAIN);
+-  return -1;
+-}
+-versioned_symbol (libpthread, __new_sem_trywait, sem_trywait, GLIBC_2_1);
+-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
+-strong_alias (__new_sem_trywait, __old_sem_trywait)
+-compat_symbol (libpthread, __old_sem_trywait, sem_trywait, GLIBC_2_0);
+-#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_wait.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sem_wait.c
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_wait.c
+@@ -17,79 +17,18 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#include <errno.h>
+-#include <sysdep.h>
+-#include <lowlevellock.h>
+-#include <internaltypes.h>
+-#include <semaphore.h>
+-
+-#include <pthreadP.h>
+-#include <shlib-compat.h>
+-
+-
+-void
+-attribute_hidden
+-__sem_wait_cleanup (void *arg)
+-{
+-  struct new_sem *isem = (struct new_sem *) arg;
+-
+-  atomic_decrement (&isem->nwaiters);
+-}
+-
+-/* This is in a seperate function in order to make sure gcc
+-   puts the call site into an exception region, and thus the
+-   cleanups get properly run.  */
+-static int
+-__attribute__ ((noinline))
+-do_futex_wait (struct new_sem *isem)
+-{
+-  int err, oldtype = __pthread_enable_asynccancel ();
+-
+-  err = lll_futex_wait (&isem->value, 0, isem->private ^ FUTEX_PRIVATE_FLAG);
+-
+-  __pthread_disable_asynccancel (oldtype);
+-  return err;
+-}
++#include "sem_waitcommon.c"
+ 
+ int
+ __new_sem_wait (sem_t *sem)
+ {
+-  struct new_sem *isem = (struct new_sem *) sem;
+-  int err;
+-
+-  if (atomic_decrement_if_positive (&isem->value) > 0)
++  if (__new_sem_wait_fast ((struct new_sem *) sem, 0) == 0)
+     return 0;
+-
+-  atomic_increment (&isem->nwaiters);
+-
+-  pthread_cleanup_push (__sem_wait_cleanup, isem);
+-
+-  while (1)
+-    {
+-      err = do_futex_wait(isem);
+-      if (err != 0 && err != -EWOULDBLOCK)
+-	{
+-	  __set_errno (-err);
+-	  err = -1;
+-	  break;
+-	}
+-
+-      if (atomic_decrement_if_positive (&isem->value) > 0)
+-	{
+-	  err = 0;
+-	  break;
+-	}
+-    }
+-
+-  pthread_cleanup_pop (0);
+-
+-  atomic_decrement (&isem->nwaiters);
+-
+-  return err;
++  else
++    return __new_sem_wait_slow((struct new_sem *) sem, NULL);
+ }
+ versioned_symbol (libpthread, __new_sem_wait, sem_wait, GLIBC_2_1);
+ 
+-
+ #if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
+ int
+ attribute_compat_text_section
+@@ -120,3 +59,34 @@ __old_sem_wait (sem_t *sem)
+ 
+ compat_symbol (libpthread, __old_sem_wait, sem_wait, GLIBC_2_0);
+ #endif
++
++int
++__new_sem_trywait (sem_t *sem)
++{
++  /* We must not fail spuriously, so require a definitive result even if this
++     may lead to a long execution time.  */
++  if (__new_sem_wait_fast ((struct new_sem *) sem, 1) == 0)
++    return 0;
++  __set_errno (EAGAIN);
++  return -1;
++}
++versioned_symbol (libpthread, __new_sem_trywait, sem_trywait, GLIBC_2_1);
++#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
++int
++__old_sem_trywait (sem_t *sem)
++{
++  int *futex = (int *) sem;
++  int val;
++
++  if (*futex > 0)
++    {
++      val = atomic_decrement_if_positive (futex);
++      if (val > 0)
++	return 0;
++    }
++
++  __set_errno (EAGAIN);
++  return -1;
++}
++compat_symbol (libpthread, __old_sem_trywait, sem_trywait, GLIBC_2_0);
++#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_waitcommon.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sem_waitcommon.c
+@@ -0,0 +1,467 @@
++/* sem_waitcommon -- wait on a semaphore, shared code.
++   Copyright (C) 2003-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++   Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <errno.h>
++#include <sysdep.h>
++#include <lowlevellock.h>
++#include <internaltypes.h>
++#include <semaphore.h>
++#include <sys/time.h>
++
++#include <pthreadP.h>
++#include <shlib-compat.h>
++#include <atomic.h>
++
++/* Wrapper for lll_futex_wait with absolute timeout and error checking.
++   TODO Remove when cleaning up the futex API throughout glibc.  */
++static __always_inline int
++futex_abstimed_wait (unsigned int* futex, unsigned int expected,
++		     const struct timespec* abstime, int private, bool cancel)
++{
++  int err, oldtype;
++  if (abstime == NULL)
++    {
++      if (cancel)
++	oldtype = __pthread_enable_asynccancel ();
++      err = lll_futex_wait (futex, expected, private);
++      if (cancel)
++	__pthread_disable_asynccancel (oldtype);
++    }
++  else
++    {
++      struct timeval tv;
++      struct timespec rt;
++      int sec, nsec;
++
++      /* Get the current time.  */
++      __gettimeofday (&tv, NULL);
++
++      /* Compute relative timeout.  */
++      sec = abstime->tv_sec - tv.tv_sec;
++      nsec = abstime->tv_nsec - tv.tv_usec * 1000;
++      if (nsec < 0)
++        {
++          nsec += 1000000000;
++          --sec;
++        }
++
++      /* Already timed out?  */
++      if (sec < 0)
++        return ETIMEDOUT;
++
++      /* Do wait.  */
++      rt.tv_sec = sec;
++      rt.tv_nsec = nsec;
++      if (cancel)
++	oldtype = __pthread_enable_asynccancel ();
++      err = lll_futex_timed_wait (futex, expected, &rt, private);
++      if (cancel)
++	__pthread_disable_asynccancel (oldtype);
++    }
++  switch (err)
++    {
++    case 0:
++    case -EAGAIN:
++    case -EINTR:
++    case -ETIMEDOUT:
++      return -err;
++
++    case -EFAULT: /* Must have been caused by a glibc or application bug.  */
++    case -EINVAL: /* Either due to wrong alignment or due to the timeout not
++		     being normalized.  Must have been caused by a glibc or
++		     application bug.  */
++    case -ENOSYS: /* Must have been caused by a glibc bug.  */
++    /* No other errors are documented at this time.  */
++    default:
++      abort ();
++    }
++}
++
++/* Wrapper for lll_futex_wake, with error checking.
++   TODO Remove when cleaning up the futex API throughout glibc.  */
++static __always_inline void
++futex_wake (unsigned int* futex, int processes_to_wake, int private)
++{
++  int res = lll_futex_wake (futex, processes_to_wake, private);
++  /* No error.  Ignore the number of woken processes.  */
++  if (res >= 0)
++    return;
++  switch (res)
++    {
++    case -EFAULT: /* Could have happened due to memory reuse.  */
++    case -EINVAL: /* Could be either due to incorrect alignment (a bug in
++		     glibc or in the application) or due to memory being
++		     reused for a PI futex.  We cannot distinguish between the
++		     two causes, and one of them is correct use, so we do not
++		     act in this case.  */
++      return;
++    case -ENOSYS: /* Must have been caused by a glibc bug.  */
++    /* No other errors are documented at this time.  */
++    default:
++      abort ();
++    }
++}
++
++
++/* The semaphore provides two main operations: sem_post adds a token to the
++   semaphore; sem_wait grabs a token from the semaphore, potentially waiting
++   until there is a token available.  A sem_wait needs to synchronize with
++   the sem_post that provided the token, so that whatever lead to the sem_post
++   happens before the code after sem_wait.
++
++   Conceptually, available tokens can simply be counted; let's call that the
++   value of the semaphore.  However, we also want to know whether there might
++   be a sem_wait that is blocked on the value because it was zero (using a
++   futex with the value being the futex variable); if there is no blocked
++   sem_wait, sem_post does not need to execute a futex_wake call.  Therefore,
++   we also need to count the number of potentially blocked sem_wait calls
++   (which we call nwaiters).
++
++   What makes this tricky is that POSIX requires that a semaphore can be
++   destroyed as soon as the last remaining sem_wait has returned, and no
++   other sem_wait or sem_post calls are executing concurrently.  However, the
++   sem_post call whose token was consumed by the last sem_wait is considered
++   to have finished once it provided the token to the sem_wait.
++   Thus, sem_post must not access the semaphore struct anymore after it has
++   made a token available; IOW, it needs to be able to atomically provide
++   a token and check whether any blocked sem_wait calls might exist.
++
++   This is straightforward to do if the architecture provides 64b atomics
++   because we can just put both the value and nwaiters into one variable that
++   we access atomically: This is the data field, the value is in the
++   least-significant 32 bits, and nwaiters in the other bits.  When sem_post
++   makes a value available, it can atomically check nwaiters.
++
++   If we have only 32b atomics available, we cannot put both nwaiters and
++   value into one 32b value because then we might have too few bits for both
++   of those counters.  Therefore, we need to use two distinct fields.
++
++   To allow sem_post to atomically make a token available and check for
++   blocked sem_wait calls, we use one bit in value to indicate whether
++   nwaiters is nonzero.  That allows sem_post to use basically the same
++   algorithm as with 64b atomics, but requires sem_wait to update the bit; it
++   can't do this atomically with another access to nwaiters, but it can compute
++   a conservative value for the bit because it's benign if the bit is set
++   even if nwaiters is zero (all we get is an unnecessary futex wake call by
++   sem_post).
++   Specifically, sem_wait will unset the bit speculatively if it believes that
++   there is no other concurrently executing sem_wait.  If it misspeculated,
++   it will have to clean up by waking any other sem_wait call (i.e., what
++   sem_post would do otherwise).  This does not conflict with the destruction
++   requirement because the semaphore must not be destructed while any sem_wait
++   is still executing.  */
++
++/* Set this to true if you assume that, in contrast to current Linux futex
++   documentation, lll_futex_wake can return -EINTR only if interrupted by a
++   signal, not spuriously due to some other reason.
++   TODO Discuss EINTR conditions with the Linux kernel community.  For
++   now, we set this to true to not change behavior of semaphores compared
++   to previous glibc builds.  */
++static const int sem_assume_only_signals_cause_futex_EINTR = 1;
++
++#if !__HAVE_64B_ATOMICS
++static void
++__sem_wait_32_finish (struct new_sem *sem);
++#endif
++
++static void
++__sem_wait_cleanup (void *arg)
++{
++  struct new_sem *sem = (struct new_sem *) arg;
++
++#if __HAVE_64B_ATOMICS
++  /* Stop being registered as a waiter.  See below for MO.  */
++  atomic_fetch_add_relaxed (&sem->data, -(1UL << SEM_NWAITERS_SHIFT));
++#else
++  __sem_wait_32_finish (sem);
++#endif
++}
++
++/* Wait until at least one token is available, possibly with a timeout.
++   This is in a separate function in order to make sure gcc
++   puts the call site into an exception region, and thus the
++   cleanups get properly run.  TODO still necessary?  Other futex_wait
++   users don't seem to need it.  */
++static int
++__attribute__ ((noinline))
++do_futex_wait (struct new_sem *sem, const struct timespec *abstime)
++{
++  int err;
++
++#if __HAVE_64B_ATOMICS
++  err = futex_abstimed_wait ((unsigned int *) &sem->data + SEM_VALUE_OFFSET, 0,
++			     abstime, sem->private, true);
++#else
++  err = futex_abstimed_wait (&sem->value, SEM_NWAITERS_MASK, abstime,
++			     sem->private, true);
++#endif
++
++  return err;
++}
++
++/* Fast path: Try to grab a token without blocking.  */
++static int
++__new_sem_wait_fast (struct new_sem *sem, int definitive_result)
++{
++  /* We need acquire MO if we actually grab a token, so that this
++     synchronizes with all token providers (i.e., the RMW operation we read
++     from or all those before it in modification order; also see sem_post).
++     We do not need to guarantee any ordering if we observed that there is
++     no token (POSIX leaves it unspecified whether functions that fail
++     synchronize memory); thus, relaxed MO is sufficient for the initial load
++     and the failure path of the CAS.  If the weak CAS fails and we need a
++     definitive result, retry.  */
++#if __HAVE_64B_ATOMICS
++  unsigned long d = atomic_load_relaxed (&sem->data);
++  do
++    {
++      if ((d & SEM_VALUE_MASK) == 0)
++	break;
++      if (atomic_compare_exchange_weak_acquire (&sem->data, &d, d - 1))
++	return 0;
++    }
++  while (definitive_result);
++  return -1;
++#else
++  unsigned int v = atomic_load_relaxed (&sem->value);
++  do
++    {
++      if ((v >> SEM_VALUE_SHIFT) == 0)
++	break;
++      if (atomic_compare_exchange_weak_acquire (&sem->value,
++	  &v, v - (1 << SEM_VALUE_SHIFT)))
++	return 0;
++    }
++  while (definitive_result);
++  return -1;
++#endif
++}
++
++/* Slow path that blocks.  */
++static int
++__attribute__ ((noinline))
++__new_sem_wait_slow (struct new_sem *sem, const struct timespec *abstime)
++{
++  int err = 0;
++
++#if __HAVE_64B_ATOMICS
++  /* Add a waiter.  Relaxed MO is sufficient because we can rely on the
++     ordering provided by the RMW operations we use.  */
++  unsigned long d = atomic_fetch_add_relaxed (&sem->data,
++      1UL << SEM_NWAITERS_SHIFT);
++
++  pthread_cleanup_push (__sem_wait_cleanup, sem);
++
++  /* Wait for a token to be available.  Retry until we can grab one.  */
++  for (;;)
++    {
++      /* If there is no token available, sleep until there is.  */
++      if ((d & SEM_VALUE_MASK) == 0)
++	{
++	  err = do_futex_wait (sem, abstime);
++	  /* A futex return value of 0 or EAGAIN is due to a real or spurious
++	     wake-up, or due to a change in the number of tokens.  We retry in
++	     these cases.
++	     If we timed out, forward this to the caller.
++	     EINTR could be either due to being interrupted by a signal, or
++	     due to a spurious wake-up.  Thus, we cannot distinguish between
++	     both, and are not allowed to return EINTR to the caller but have
++	     to retry; this is because we may not have been interrupted by a
++	     signal.  However, if we assume that only signals cause a futex
++	     return of EINTR, we forward EINTR to the caller.
++
++	     Retrying on EINTR is technically always allowed because to
++	     reliably interrupt sem_wait with a signal, the signal handler
++	     must call sem_post (which is AS-Safe).  In executions where the
++	     signal handler does not do that, the implementation can correctly
++	     claim that sem_wait hadn't actually started to execute yet, and
++	     thus the signal never actually interrupted sem_wait.  We make no
++	     timing guarantees, so the program can never observe that sem_wait
++	     actually did start to execute.  Thus, in a correct program, we
++	     can expect a signal that wanted to interrupt the sem_wait to have
++	     provided a token, and can just try to grab this token if
++	     futex_wait returns EINTR.  */
++	  if (err == ETIMEDOUT ||
++	      (err == EINTR && sem_assume_only_signals_cause_futex_EINTR))
++	    {
++	      __set_errno (err);
++	      err = -1;
++	      /* Stop being registered as a waiter.  */
++	      atomic_fetch_add_relaxed (&sem->data,
++		  -(1UL << SEM_NWAITERS_SHIFT));
++	      break;
++	    }
++	  /* Relaxed MO is sufficient; see below.  */
++	  d = atomic_load_relaxed (&sem->data);
++	}
++      else
++	{
++	  /* Try to grab both a token and stop being a waiter.  We need
++	     acquire MO so this synchronizes with all token providers (i.e.,
++	     the RMW operation we read from or all those before it in
++	     modification order; also see sem_post).  On the failure path,
++	     relaxed MO is sufficient because we only eventually need the
++	     up-to-date value; the futex_wait or the CAS perform the real
++	     work.  */
++	  if (atomic_compare_exchange_weak_acquire (&sem->data,
++	      &d, d - 1 - (1UL << SEM_NWAITERS_SHIFT)))
++	    {
++	      err = 0;
++	      break;
++	    }
++	}
++    }
++
++  pthread_cleanup_pop (0);
++#else
++  /* The main difference to the 64b-atomics implementation is that we need to
++     access value and nwaiters in separate steps, and that the nwaiters bit
++     in the value can temporarily not be set even if nwaiters is nonzero.
++     We work around incorrectly unsetting the nwaiters bit by letting sem_wait
++     set the bit again and waking the number of waiters that could grab a
++     token.  There are two additional properties we need to ensure:
++     (1) We make sure that whenever unsetting the bit, we see the increment of
++     nwaiters by the other thread that set the bit.  IOW, we will notice if
++     we make a mistake.
++     (2) When setting the nwaiters bit, we make sure that we see the unsetting
++     of the bit by another waiter that happened before us.  This avoids having
++     to blindly set the bit whenever we need to block on it.  We set/unset
++     the bit while having incremented nwaiters (i.e., are a registered
++     waiter), and the problematic case only happens when one waiter indeed
++     followed another (i.e., nwaiters was never larger than 1); thus, this
++     works similarly as with a critical section using nwaiters (see the MOs
++     and related comments below).
++
++     An alternative approach would be to unset the bit after decrementing
++     nwaiters; however, that would result in needing Dekker-like
++     synchronization and thus full memory barriers.  We also would not be able
++     to prevent misspeculation, so this alternative scheme does not seem
++     beneficial.  */
++  unsigned int v;
++
++  /* Add a waiter.  We need acquire MO so this synchronizes with the release
++     MO we use when decrementing nwaiters below; it ensures that if another
++     waiter unset the bit before us, we see that and set it again.  Also see
++     property (2) above.  */
++  atomic_fetch_add_acquire (&sem->nwaiters, 1);
++
++  pthread_cleanup_push (__sem_wait_cleanup, sem);
++
++  /* Wait for a token to be available.  Retry until we can grab one.  */
++  /* We do not need any ordering wrt. to this load's reads-from, so relaxed
++     MO is sufficient.  The acquire MO above ensures that in the problematic
++     case, we do see the unsetting of the bit by another waiter.  */
++  v = atomic_load_relaxed (&sem->value);
++  do
++    {
++      do
++	{
++	  /* We are about to block, so make sure that the nwaiters bit is
++	     set.  We need release MO on the CAS to ensure that when another
++	     waiter unsets the nwaiters bit, it will also observe that we
++	     incremented nwaiters in the meantime (also see the unsetting of
++	     the bit below).  Relaxed MO on CAS failure is sufficient (see
++	     above).  */
++	  do
++	    {
++	      if ((v & SEM_NWAITERS_MASK) != 0)
++		break;
++	    }
++	  while (!atomic_compare_exchange_weak_release (&sem->value,
++	      &v, v | SEM_NWAITERS_MASK));
++	  /* If there is no token, wait.  */
++	  if ((v >> SEM_VALUE_SHIFT) == 0)
++	    {
++	      /* See __HAVE_64B_ATOMICS variant.  */
++	      err = do_futex_wait(sem, abstime);
++	      if (err == ETIMEDOUT ||
++		  (err == EINTR && sem_assume_only_signals_cause_futex_EINTR))
++		{
++		  __set_errno (err);
++		  err = -1;
++		  goto error;
++		}
++	      err = 0;
++	      /* We blocked, so there might be a token now.  Relaxed MO is
++		 sufficient (see above).  */
++	      v = atomic_load_relaxed (&sem->value);
++	    }
++	}
++      /* If there is no token, we must not try to grab one.  */
++      while ((v >> SEM_VALUE_SHIFT) == 0);
++    }
++  /* Try to grab a token.  We need acquire MO so this synchronizes with
++     all token providers (i.e., the RMW operation we read from or all those
++     before it in modification order; also see sem_post).  */
++  while (!atomic_compare_exchange_weak_acquire (&sem->value,
++      &v, v - (1 << SEM_VALUE_SHIFT)));
++
++error:
++  pthread_cleanup_pop (0);
++
++  __sem_wait_32_finish (sem);
++#endif
++
++  return err;
++}
++
++/* Stop being a registered waiter (non-64b-atomics code only).  */
++#if !__HAVE_64B_ATOMICS
++static void
++__sem_wait_32_finish (struct new_sem *sem)
++{
++  /* The nwaiters bit is still set, try to unset it now if this seems
++     necessary.  We do this before decrementing nwaiters so that the unsetting
++     is visible to other waiters entering after us.  Relaxed MO is sufficient
++     because we are just speculating here; a stronger MO would not prevent
++     misspeculation.  */
++  unsigned int wguess = atomic_load_relaxed (&sem->nwaiters);
++  if (wguess == 1)
++    /* We might be the last waiter, so unset.  This needs acquire MO so that
++       it syncronizes with the release MO when setting the bit above; if we
++       overwrite someone else that set the bit, we'll read in the following
++       decrement of nwaiters at least from that release sequence, so we'll
++       see if the other waiter is still active or if another writer entered
++       in the meantime (i.e., using the check below).  */
++    atomic_fetch_and_acquire (&sem->value, ~SEM_NWAITERS_MASK);
++
++  /* Now stop being a waiter, and see whether our guess was correct.
++     This needs release MO so that it synchronizes with the acquire MO when
++     a waiter increments nwaiters; this makes sure that newer writers see that
++     we reset the waiters_present bit.  */
++  unsigned int wfinal = atomic_fetch_add_release (&sem->nwaiters, -1);
++  if (wfinal > 1 && wguess == 1)
++    {
++      /* We guessed wrong, and so need to clean up after the mistake and
++         unblock any waiters that could have not been woken.  There is no
++         additional ordering that we need to set up, so relaxed MO is
++         sufficient.  */
++      unsigned int v = atomic_fetch_or_relaxed (&sem->value,
++						SEM_NWAITERS_MASK);
++      /* If there are available tokens, then wake as many waiters.  If there
++         aren't any, then there is no need to wake anyone because there is
++         none to grab for another waiter.  If tokens become available
++         subsequently, then the respective sem_post calls will do the wake-up
++         due to us having set the nwaiters bit again.  */
++      v >>= SEM_VALUE_SHIFT;
++      if (v > 0)
++	futex_wake (&sem->value, v, sem->private);
++    }
++}
++#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/structsem.sym
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/structsem.sym
++++ /dev/null
+@@ -1,12 +0,0 @@
+-#include <limits.h>
+-#include <stddef.h>
+-#include <sched.h>
+-#include <bits/pthreadtypes.h>
+-#include "internaltypes.h"
+-
+---
+-
+-VALUE		offsetof (struct new_sem, value)
+-PRIVATE		offsetof (struct new_sem, private)
+-NWAITERS	offsetof (struct new_sem, nwaiters)
+-SEM_VALUE_MAX	SEM_VALUE_MAX
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S
++++ /dev/null
+@@ -1,75 +0,0 @@
+-/* Copyright (C) 2002,2003,2005,2007,2008,2011 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <lowlevellock.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <structsem.h>
+-
+-
+-	.text
+-
+-	.globl	sem_post
+-	.type	sem_post,@function
+-	.align	16
+-sem_post:
+-#if VALUE == 0
+-	movl	(%rdi), %eax
+-#else
+-	movl	VALUE(%rdi), %eax
+-#endif
+-0:	cmpl	$SEM_VALUE_MAX, %eax
+-	je	3f
+-	leal	1(%rax), %esi
+-	LOCK
+-#if VALUE == 0
+-	cmpxchgl %esi, (%rdi)
+-#else
+-	cmpxchgl %esi, VALUE(%rdi)
+-#endif
+-	jnz	0b
+-
+-	LP_OP(cmp) $0, NWAITERS(%rdi)
+-	je	2f
+-
+-	movl	$SYS_futex, %eax
+-	movl	$FUTEX_WAKE, %esi
+-	orl	PRIVATE(%rdi), %esi
+-	movl	$1, %edx
+-	syscall
+-
+-	testq	%rax, %rax
+-	js	1f
+-
+-2:	xorl	%eax, %eax
+-	retq
+-
+-1:
+-	movl	$EINVAL, %eax
+-	jmp	4f
+-
+-3:
+-	movl	$EOVERFLOW, %eax
+-
+-4:
+-	movq	errno@gottpoff(%rip), %rdx
+-	movl	%eax, %fs:(%rdx)
+-	orl	$-1, %eax
+-	retq
+-	.size	sem_post,.-sem_post
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
++++ /dev/null
+@@ -1,380 +0,0 @@
+-/* Copyright (C) 2002,2003,2005,2007,2009,2010,2011 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <kernel-features.h>
+-#include <lowlevellock.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <structsem.h>
+-
+-	.text
+-
+-	.globl	sem_timedwait
+-	.type	sem_timedwait,@function
+-	.align	16
+-sem_timedwait:
+-.LSTARTCODE:
+-	cfi_startproc
+-#ifdef SHARED
+-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+-			DW.ref.__gcc_personality_v0)
+-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+-#else
+-	cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+-	cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+-#endif
+-#if VALUE == 0
+-	movl	(%rdi), %eax
+-#else
+-	movl	VALUE(%rdi), %eax
+-#endif
+-2:	testl	%eax, %eax
+-	je	1f
+-
+-	leaq	-1(%rax), %rdx
+-	LOCK
+-#if VALUE == 0
+-	cmpxchgl %edx, (%rdi)
+-#else
+-	cmpxchgl %edx, VALUE(%rdi)
+-#endif
+-	jne	2b
+-
+-	xorl	%eax, %eax
+-	retq
+-
+-	/* Check whether the timeout value is valid.  */
+-1:	cmpq	$1000000000, 8(%rsi)
+-	jae	6f
+-
+-#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+-#  ifdef PIC
+-	cmpl	$0, __have_futex_clock_realtime(%rip)
+-#  else
+-	cmpl	$0, __have_futex_clock_realtime
+-#  endif
+-	je	.Lreltmo
+-#endif
+-
+-	cmpq	$0, (%rsi)
+-	js	16f
+-
+-	/* This push is only needed to store the sem_t pointer for the
+-	   exception handler.  */
+-	pushq	%rdi
+-	cfi_adjust_cfa_offset(8)
+-
+-	movq	%rsi, %r10
+-
+-	LOCK
+-	LP_OP(add) $1, NWAITERS(%rdi)
+-
+-.LcleanupSTART:
+-13:	call	__pthread_enable_asynccancel
+-	movl	%eax, %r8d
+-
+-#if VALUE != 0
+-	leaq	VALUE(%rdi), %rdi
+-#endif
+-	movl	$0xffffffff, %r9d
+-	movl	$FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi
+-	orl	PRIVATE(%rdi), %esi
+-	movl	$SYS_futex, %eax
+-	xorl	%edx, %edx
+-	syscall
+-	movq	%rax, %r9
+-#if VALUE != 0
+-	leaq	-VALUE(%rdi), %rdi
+-#endif
+-
+-	xchgq	%r8, %rdi
+-	call	__pthread_disable_asynccancel
+-.LcleanupEND:
+-	movq	%r8, %rdi
+-
+-	testq	%r9, %r9
+-	je	11f
+-	cmpq	$-EWOULDBLOCK, %r9
+-	jne	3f
+-
+-11:
+-#if VALUE == 0
+-	movl	(%rdi), %eax
+-#else
+-	movl	VALUE(%rdi), %eax
+-#endif
+-14:	testl	%eax, %eax
+-	je	13b
+-
+-	leaq	-1(%rax), %rcx
+-	LOCK
+-#if VALUE == 0
+-	cmpxchgl %ecx, (%rdi)
+-#else
+-	cmpxchgl %ecx, VALUE(%rdi)
+-#endif
+-	jne	14b
+-
+-	xorl	%eax, %eax
+-
+-15:	LOCK
+-	LP_OP(sub) $1, NWAITERS(%rdi)
+-
+-	leaq	8(%rsp), %rsp
+-	cfi_adjust_cfa_offset(-8)
+-	retq
+-
+-	cfi_adjust_cfa_offset(8)
+-3:	negq	%r9
+-	movq	errno@gottpoff(%rip), %rdx
+-	movl	%r9d, %fs:(%rdx)
+-
+-	orl	$-1, %eax
+-	jmp	15b
+-
+-	cfi_adjust_cfa_offset(-8)
+-6:
+-	movq	errno@gottpoff(%rip), %rdx
+-	movl	$EINVAL, %fs:(%rdx)
+-
+-	orl	$-1, %eax
+-
+-	retq
+-
+-16:
+-	movq	errno@gottpoff(%rip), %rdx
+-	movl	$ETIMEDOUT, %fs:(%rdx)
+-
+-	orl	$-1, %eax
+-
+-	retq
+-
+-#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+-.Lreltmo:
+-	pushq	%r12
+-	cfi_adjust_cfa_offset(8)
+-	cfi_rel_offset(%r12, 0)
+-	pushq	%r13
+-	cfi_adjust_cfa_offset(8)
+-	cfi_rel_offset(%r13, 0)
+-	pushq	%r14
+-	cfi_adjust_cfa_offset(8)
+-	cfi_rel_offset(%r14, 0)
+-
+-#ifdef __ASSUME_FUTEX_CLOCK_REALTIME
+-# define STACKFRAME 8
+-#else
+-# define STACKFRAME 24
+-#endif
+-	subq	$STACKFRAME, %rsp
+-	cfi_adjust_cfa_offset(STACKFRAME)
+-
+-	movq	%rdi, %r12
+-	movq	%rsi, %r13
+-
+-	LOCK
+-	LP_OP(add) $1, NWAITERS(%r12)
+-
+-7:	xorl	%esi, %esi
+-	movq	%rsp,%rdi
+-	/* This call works because we directly jump to a system call entry
+-	   which preserves all the registers.  */
+-	call	JUMPTARGET(__gettimeofday)
+-
+-	/* Compute relative timeout.  */
+-	movq	8(%rsp), %rax
+-	movl	$1000, %edi
+-	mul	%rdi		/* Milli seconds to nano seconds.  */
+-	movq	(%r13), %rdi
+-	movq	8(%r13), %rsi
+-	subq	(%rsp), %rdi
+-	subq	%rax, %rsi
+-	jns	5f
+-	addq	$1000000000, %rsi
+-	decq	%rdi
+-5:	testq	%rdi, %rdi
+-	movl	$ETIMEDOUT, %r14d
+-	js	36f		/* Time is already up.  */
+-
+-	movq	%rdi, (%rsp)	/* Store relative timeout.  */
+-	movq	%rsi, 8(%rsp)
+-
+-.LcleanupSTART2:
+-	call	__pthread_enable_asynccancel
+-	movl	%eax, 16(%rsp)
+-
+-	movq	%rsp, %r10
+-# if VALUE == 0
+-	movq	%r12, %rdi
+-# else
+-	leaq	VALUE(%r12), %rdi
+-# endif
+-# if FUTEX_WAIT == 0
+-	movl	PRIVATE(%rdi), %esi
+-# else
+-	movl	$FUTEX_WAIT, %esi
+-	orl	PRIVATE(%rdi), %esi
+-# endif
+-	movl	$SYS_futex, %eax
+-	xorl	%edx, %edx
+-	syscall
+-	movq	%rax, %r14
+-
+-	movl	16(%rsp), %edi
+-	call	__pthread_disable_asynccancel
+-.LcleanupEND2:
+-
+-	testq	%r14, %r14
+-	je	9f
+-	cmpq	$-EWOULDBLOCK, %r14
+-	jne	33f
+-
+-9:
+-# if VALUE == 0
+-	movl	(%r12), %eax
+-# else
+-	movl	VALUE(%r12), %eax
+-# endif
+-8:	testl	%eax, %eax
+-	je	7b
+-
+-	leaq	-1(%rax), %rcx
+-	LOCK
+-# if VALUE == 0
+-	cmpxchgl %ecx, (%r12)
+-# else
+-	cmpxchgl %ecx, VALUE(%r12)
+-# endif
+-	jne	8b
+-
+-	xorl	%eax, %eax
+-
+-45:	LOCK
+-	LP_OP(sub) $1, NWAITERS(%r12)
+-
+-	addq	$STACKFRAME, %rsp
+-	cfi_adjust_cfa_offset(-STACKFRAME)
+-	popq	%r14
+-	cfi_adjust_cfa_offset(-8)
+-	cfi_restore(%r14)
+-	popq	%r13
+-	cfi_adjust_cfa_offset(-8)
+-	cfi_restore(%r13)
+-	popq	%r12
+-	cfi_adjust_cfa_offset(-8)
+-	cfi_restore(%r12)
+-	retq
+-
+-	cfi_adjust_cfa_offset(STACKFRAME + 3 * 8)
+-	cfi_rel_offset(%r12, STACKFRAME + 2 * 8)
+-	cfi_rel_offset(%r13, STACKFRAME + 1 * 8)
+-	cfi_rel_offset(%r14, STACKFRAME)
+-33:	negq	%r14
+-36:
+-	movq	errno@gottpoff(%rip), %rdx
+-	movl	%r14d, %fs:(%rdx)
+-
+-	orl	$-1, %eax
+-	jmp	45b
+-#endif
+-	cfi_endproc
+-	.size	sem_timedwait,.-sem_timedwait
+-
+-
+-	.type	sem_timedwait_cleanup,@function
+-sem_timedwait_cleanup:
+-	cfi_startproc
+-	cfi_adjust_cfa_offset(8)
+-
+-	movq	(%rsp), %rdi
+-	LOCK
+-	LP_OP(sub) $1, NWAITERS(%rdi)
+-	movq	%rax, %rdi
+-.LcallUR:
+-	call	_Unwind_Resume@PLT
+-	hlt
+-.LENDCODE:
+-	cfi_endproc
+-	.size	sem_timedwait_cleanup,.-sem_timedwait_cleanup
+-
+-
+-#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+-	.type	sem_timedwait_cleanup2,@function
+-sem_timedwait_cleanup2:
+-	cfi_startproc
+-	cfi_adjust_cfa_offset(STACKFRAME + 3 * 8)
+-	cfi_rel_offset(%r12, STACKFRAME + 2 * 8)
+-	cfi_rel_offset(%r13, STACKFRAME + 1 * 8)
+-	cfi_rel_offset(%r14, STACKFRAME)
+-
+-	LOCK
+-	LP_OP(sub) $1, NWAITERS(%r12)
+-	movq	%rax, %rdi
+-	movq	STACKFRAME(%rsp), %r14
+-	movq	STACKFRAME+8(%rsp), %r13
+-	movq	STACKFRAME+16(%rsp), %r12
+-.LcallUR2:
+-	call	_Unwind_Resume@PLT
+-	hlt
+-.LENDCODE2:
+-	cfi_endproc
+-	.size	sem_timedwait_cleanup2,.-sem_timedwait_cleanup2
+-#endif
+-
+-
+-	.section .gcc_except_table,"a",@progbits
+-.LexceptSTART:
+-	.byte	DW_EH_PE_omit			# @LPStart format
+-	.byte	DW_EH_PE_omit			# @TType format
+-	.byte	DW_EH_PE_uleb128		# call-site format
+-	.uleb128 .Lcstend-.Lcstbegin
+-.Lcstbegin:
+-	.uleb128 .LcleanupSTART-.LSTARTCODE
+-	.uleb128 .LcleanupEND-.LcleanupSTART
+-	.uleb128 sem_timedwait_cleanup-.LSTARTCODE
+-	.uleb128  0
+-#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+-	.uleb128 .LcleanupSTART2-.LSTARTCODE
+-	.uleb128 .LcleanupEND2-.LcleanupSTART2
+-	.uleb128 sem_timedwait_cleanup2-.LSTARTCODE
+-	.uleb128  0
+-#endif
+-	.uleb128 .LcallUR-.LSTARTCODE
+-	.uleb128 .LENDCODE-.LcallUR
+-	.uleb128 0
+-	.uleb128  0
+-#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
+-	.uleb128 .LcallUR2-.LSTARTCODE
+-	.uleb128 .LENDCODE2-.LcallUR2
+-	.uleb128 0
+-	.uleb128  0
+-#endif
+-.Lcstend:
+-
+-
+-#ifdef SHARED
+-	.hidden	DW.ref.__gcc_personality_v0
+-	.weak	DW.ref.__gcc_personality_v0
+-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
+-	.align	LP_SIZE
+-	.type	DW.ref.__gcc_personality_v0, @object
+-	.size	DW.ref.__gcc_personality_v0, LP_SIZE
+-DW.ref.__gcc_personality_v0:
+-	ASM_ADDR __gcc_personality_v0
+-#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S
++++ /dev/null
+@@ -1,47 +0,0 @@
+-/* Copyright (C) 2002, 2003, 2005, 2007, 2011 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <lowlevellock.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-
+-	.text
+-
+-	.globl	sem_trywait
+-	.type	sem_trywait,@function
+-	.align	16
+-sem_trywait:
+-	movl	(%rdi), %eax
+-2:	testl	%eax, %eax
+-	jz	1f
+-
+-	leal	-1(%rax), %edx
+-	LOCK
+-	cmpxchgl %edx, (%rdi)
+-	jne	2b
+-
+-	xorl	%eax, %eax
+-	retq
+-
+-1:
+-	movq	errno@gottpoff(%rip), %rdx
+-	movl	$EAGAIN, %fs:(%rdx)
+-	orl	$-1, %eax
+-	retq
+-	.size	sem_trywait,.-sem_trywait
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
++++ /dev/null
+@@ -1,176 +0,0 @@
+-/* Copyright (C) 2002, 2003, 2005, 2007, 2009, 2011 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <lowlevellock.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <structsem.h>
+-
+-
+-	.text
+-
+-	.globl	sem_wait
+-	.type	sem_wait,@function
+-	.align	16
+-sem_wait:
+-.LSTARTCODE:
+-	cfi_startproc
+-#ifdef SHARED
+-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+-			DW.ref.__gcc_personality_v0)
+-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+-#else
+-	cfi_personality(DW_EH_PE_udata4, __gcc_personality_v0)
+-	cfi_lsda(DW_EH_PE_udata4, .LexceptSTART)
+-#endif
+-
+-#if VALUE == 0
+-	movl	(%rdi), %eax
+-#else
+-	movl	VALUE(%rdi), %eax
+-#endif
+-2:	testl	%eax, %eax
+-	je	1f
+-
+-	leal	-1(%rax), %edx
+-	LOCK
+-#if VALUE == 0
+-	cmpxchgl %edx, (%rdi)
+-#else
+-	cmpxchgl %edx, VALUE(%rdi)
+-#endif
+-	jne	2b
+-
+-	xorl	%eax, %eax
+-	retq
+-
+-	/* This push is only needed to store the sem_t pointer for the
+-	   exception handler.  */
+-1:	pushq	%rdi
+-	cfi_adjust_cfa_offset(8)
+-
+-	LOCK
+-	LP_OP(add) $1, NWAITERS(%rdi)
+-
+-.LcleanupSTART:
+-6:	call	__pthread_enable_asynccancel
+-	movl	%eax, %r8d
+-
+-	xorq	%r10, %r10
+-	movl	$SYS_futex, %eax
+-#if FUTEX_WAIT == 0
+-	movl	PRIVATE(%rdi), %esi
+-#else
+-	movl	$FUTEX_WAIT, %esi
+-	orl	PRIVATE(%rdi), %esi
+-#endif
+-	xorl	%edx, %edx
+-	syscall
+-	movq	%rax, %rcx
+-
+-	xchgq	%r8, %rdi
+-	call	__pthread_disable_asynccancel
+-.LcleanupEND:
+-	movq	%r8, %rdi
+-
+-	testq	%rcx, %rcx
+-	je	3f
+-	cmpq	$-EWOULDBLOCK, %rcx
+-	jne	4f
+-
+-3:
+-#if VALUE == 0
+-	movl	(%rdi), %eax
+-#else
+-	movl	VALUE(%rdi), %eax
+-#endif
+-5:	testl	%eax, %eax
+-	je	6b
+-
+-	leal	-1(%rax), %edx
+-	LOCK
+-#if VALUE == 0
+-	cmpxchgl %edx, (%rdi)
+-#else
+-	cmpxchgl %edx, VALUE(%rdi)
+-#endif
+-	jne	5b
+-
+-	xorl	%eax, %eax
+-
+-9:	LOCK
+-	LP_OP(sub) $1, NWAITERS(%rdi)
+-
+-	leaq	8(%rsp), %rsp
+-	cfi_adjust_cfa_offset(-8)
+-
+-	retq
+-
+-	cfi_adjust_cfa_offset(8)
+-4:	negq	%rcx
+-	movq	errno@gottpoff(%rip), %rdx
+-	movl	%ecx, %fs:(%rdx)
+-	orl	$-1, %eax
+-
+-	jmp 9b
+-	.size	sem_wait,.-sem_wait
+-
+-
+-	.type	sem_wait_cleanup,@function
+-sem_wait_cleanup:
+-	movq	(%rsp), %rdi
+-	LOCK
+-	LP_OP(sub) $1, NWAITERS(%rdi)
+-	movq	%rax, %rdi
+-.LcallUR:
+-	call	_Unwind_Resume@PLT
+-	hlt
+-.LENDCODE:
+-	cfi_endproc
+-	.size	sem_wait_cleanup,.-sem_wait_cleanup
+-
+-
+-	.section .gcc_except_table,"a",@progbits
+-.LexceptSTART:
+-	.byte	DW_EH_PE_omit			# @LPStart format
+-	.byte	DW_EH_PE_omit			# @TType format
+-	.byte	DW_EH_PE_uleb128		# call-site format
+-	.uleb128 .Lcstend-.Lcstbegin
+-.Lcstbegin:
+-	.uleb128 .LcleanupSTART-.LSTARTCODE
+-	.uleb128 .LcleanupEND-.LcleanupSTART
+-	.uleb128 sem_wait_cleanup-.LSTARTCODE
+-	.uleb128  0
+-	.uleb128 .LcallUR-.LSTARTCODE
+-	.uleb128 .LENDCODE-.LcallUR
+-	.uleb128 0
+-	.uleb128  0
+-.Lcstend:
+-
+-
+-#ifdef SHARED
+-	.hidden	DW.ref.__gcc_personality_v0
+-	.weak	DW.ref.__gcc_personality_v0
+-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
+-	.align	LP_SIZE
+-	.type	DW.ref.__gcc_personality_v0, @object
+-	.size	DW.ref.__gcc_personality_v0, LP_SIZE
+-DW.ref.__gcc_personality_v0:
+-	ASM_ADDR __gcc_personality_v0
+-#endif
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/sem_post.c
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/alpha/nptl/sem_post.c
++++ /dev/null
+@@ -1,5 +0,0 @@
+-/* ??? This is an ass-backwards way to do this.  We should simply define
+-   the acquire/release semantics of atomic_exchange_and_add.  And even if
+-   we don't do this, we should be using atomic_full_barrier or otherwise.  */
+-#define __lll_rel_instr  "mb"
+-#include <nptl/sysdeps/unix/sysv/linux/sem_post.c>
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S
++++ /dev/null
+@@ -1,111 +0,0 @@
+-/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <structsem.h>
+-#include <lowlevellock.h>
+-#include "lowlevel-atomic.h"
+-
+-
+-	.text
+-
+-	.globl	__new_sem_post
+-	.type	__new_sem_post,@function
+-	.align	5
+-	cfi_startproc
+-__new_sem_post:
+-	mov.l	@(VALUE,r4), r2
+-0:
+-	mov.l	.Lmax, r1
+-	cmp/eq	r1, r2
+-	bt/s	3f
+-	 mov	r2, r3
+-	mov	r3, r5
+-	add	#1, r5
+-	CMPXCHG (r3, @(VALUE,r4), r5, r2)
+-	bf	0b
+-	mov.l	@(NWAITERS,r4), r2
+-	tst	r2, r2
+-	bt	2f
+-	mov	#FUTEX_WAKE, r5
+-	mov.l	@(PRIVATE,r4), r1
+-	or	r1, r5
+-	mov	#1, r6
+-	mov	#0, r7
+-	mov	#SYS_futex, r3
+-	extu.b	r3, r3
+-	trapa	#0x14
+-	SYSCALL_INST_PAD
+-
+-	cmp/pz	r0
+-	bf	1f
+-2:
+-	rts
+-	 mov	#0, r0
+-
+-1:
+-	bra	4f
+-	 mov	#EINVAL, r2
+-
+-3:
+-	mov	#EOVERFLOW, r2
+-4:
+-	mov.l	r12, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r12, 0)
+-	mov.l	r8, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r8, 0)
+-	sts.l	pr, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (pr, 0)
+-	mova	.Lgot3, r0
+-	mov.l	.Lgot3, r12
+-	add	r0, r12
+-
+-	mov.l	.Lerrno3, r0
+-	stc	gbr, r1
+-	mov.l	@(r0, r12), r0
+-	bra	.Lexit
+-	 add	r1, r0
+-	.align	2
+-.Lerrno3:
+-	.long	errno@GOTTPOFF
+-.Lexit:
+-	mov.l	r2, @r0
+-	lds.l	@r15+, pr
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (pr)
+-	mov.l	@r15+, r8
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r8)
+-	mov.l	@r15+, r12
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r12)
+-	rts
+-	 mov	#-1, r0
+-	cfi_endproc
+-
+-	.align	2
+-.Lmax:
+-	.long	SEM_VALUE_MAX
+-.Lgot3:
+-	.long	_GLOBAL_OFFSET_TABLE_
+-	.size	__new_sem_post,.-__new_sem_post
+-	versioned_symbol(libpthread, __new_sem_post, sem_post, GLIBC_2_1)
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
++++ /dev/null
+@@ -1,281 +0,0 @@
+-/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <tcb-offsets.h>
+-#include <structsem.h>
+-#include <lowlevellock.h>
+-#include "lowlevel-atomic.h"
+-
+-
+-#if VALUE != 0
+-# error "code needs to be rewritten for VALUE != 0"
+-#endif
+-
+-	.text
+-
+-	.globl	sem_timedwait
+-	.type	sem_timedwait,@function
+-	.align	5
+-	cfi_startproc
+-sem_timedwait:
+-.LSTARTCODE:
+-#ifdef SHARED
+-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+-			DW.ref.__gcc_personality_v0)
+-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+-#else
+-	cfi_personality(DW_EH_PE_absptr, __gcc_personality_v0)
+-	cfi_lsda(DW_EH_PE_absptr, .LexceptSTART)
+-#endif
+-	mov.l	@r4, r0
+-2:
+-	tst	r0, r0
+-	bt	1f
+-	mov	r0, r3
+-	mov	r0, r6
+-	add	#-1, r3
+-	CMPXCHG (r6, @r4, r3, r2)
+-	bf/s	2b
+-	 mov	r2, r0
+-	rts
+-	 mov	#0, r0
+-
+-1:
+-	/* Check whether the timeout value is valid.  */
+-	mov.l	r8, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r8, 0)
+-	mov.l	r9, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r9, 0)
+-	mov.l	r10, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r10, 0)
+-	mov.l	r12, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r12, 0)
+-	sts.l	pr, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (pr, 0)
+-	add	#-8, r15
+-	cfi_adjust_cfa_offset (8)
+-
+-	mov	r4, r8
+-	mov	r5, r9
+-
+-	/* Check for invalid nanosecond field.  */
+-	mov.l	@(4,r9), r0
+-	mov.l	.L1g, r1
+-	cmp/hs	r1, r0
+-	bt/s	.Lerrno_exit
+-	 mov	#EINVAL, r10
+-	INC (@(NWAITERS,r8),r2)
+-
+-7:
+-	/* Compute relative timeout.  */
+-	mov	r15, r4
+-	mov	#0, r5
+-	mov	#__NR_gettimeofday, r3
+-	trapa	#0x12
+-	SYSCALL_INST_PAD
+-
+-	mov.l	@(4,r15), r0
+-	mov.w	.L1k, r1
+-	dmulu.l	r0, r1		/* Milli seconds to nano seconds.  */
+-	mov.l	@r9, r2
+-	mov.l	@(4,r9), r3
+-	mov.l	@r15, r0
+-	sts	macl, r1
+-	sub	r0, r2
+-	clrt
+-	subc	r1, r3
+-	bf	5f
+-	mov.l	.L1g, r1
+-	add	r1, r3
+-	add	#-1, r2
+-5:
+-	cmp/pz	r2
+-	bf/s	6f		/* Time is already up.  */
+-	 mov	#ETIMEDOUT, r0
+-
+-	/* Store relative timeout.  */
+-	mov.l	r2, @r15
+-	mov.l	r3, @(4,r15)
+-
+-.LcleanupSTART:
+-	mov.l	.Lenable0, r1
+-	bsrf	r1
+-	 nop
+-.Lenable0b:
+-	mov	r0, r10
+-
+-	mov	r8, r4
+-#if FUTEX_WAIT == 0
+-	mov.l	@(PRIVATE,r8), r5
+-#else
+-	mov.l	@(PRIVATE,r8), r5
+-	mov	#FUTEX_WAIT, r0
+-	or	r0, r5
+-#endif
+-	mov	#0, r6
+-	mov	r15, r7
+-	mov	#SYS_futex, r3
+-	extu.b	r3, r3
+-	trapa	#0x14
+-	SYSCALL_INST_PAD
+-
+-	mov.l	.Ldisable0, r1
+-	mov	r10, r4
+-	bsrf	r1
+-	 mov	r0, r10
+-.Ldisable0b:
+-	mov	r10, r0
+-.LcleanupEND:
+-
+-	tst	r0, r0
+-	bt	9f
+-	cmp/eq	#-EWOULDBLOCK, r0
+-	bf	3f
+-9:
+-	mov.l	@r8, r0
+-8:
+-	tst	r0, r0
+-	bt	7b
+-
+-	mov	r0, r3
+-	mov	r0, r4
+-	add	#-1, r3
+-	CMPXCHG (r4, @r8, r3, r2)
+-	bf/s	8b
+-	 mov	r2, r0
+-
+-	DEC (@(NWAITERS,r8), r2)
+-	mov	#0, r0
+-
+-10:
+-	cfi_remember_state
+-	add	#8, r15
+-	cfi_adjust_cfa_offset (-8)
+-	lds.l	@r15+, pr
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (pr)
+-	mov.l	@r15+, r12
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r12)
+-	mov.l	@r15+, r10
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r10)
+-	mov.l	@r15+, r9
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r9)
+-	mov.l	@r15+, r8
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r8)
+-	rts
+-	 nop
+-	cfi_restore_state
+-
+-3:
+-	neg	r0, r0
+-6:
+-	mov	r0, r10
+-	DEC (@(NWAITERS,r8), r2)
+-.Lerrno_exit:
+-	mova	.Lgot2, r0
+-	mov.l	.Lgot2, r12
+-	add	r0, r12
+-
+-	mov.l	.Lerrno2, r0
+-	stc	gbr, r1
+-	mov.l	@(r0, r12), r0
+-	bra	.Lexit
+-	 add	r1, r0
+-	.align	2
+-.Lerrno2:
+-	.long	errno@GOTTPOFF
+-.Lexit:
+-	mov.l	r10, @r0
+-	bra	10b
+-	 mov	#-1, r0
+-
+-.L1k:
+-	.word	1000
+-	.align	2
+-.L1g:
+-	.long	1000000000
+-.Lgot2:
+-	.long	_GLOBAL_OFFSET_TABLE_
+-.Lenable0:
+-	.long	__pthread_enable_asynccancel-.Lenable0b
+-.Ldisable0:
+-	.long	__pthread_disable_asynccancel-.Ldisable0b
+-	.size	sem_timedwait,.-sem_timedwait
+-
+-	.type	sem_wait_cleanup,@function
+-sem_wait_cleanup:
+-	DEC (@(NWAITERS,r8), r2)
+-.LcallUR:
+-	mov.l	.Lresume, r1
+-#ifdef PIC
+-	add	r12, r1
+-#endif
+-	jsr	@r1
+-	 nop
+-	sleep
+-
+-	.align	2
+-.Lresume:
+-#ifdef PIC
+-	.long	_Unwind_Resume@GOTOFF
+-#else
+-	.long	_Unwind_Resume
+-#endif
+-.LENDCODE:
+-	cfi_endproc
+-	.size	sem_wait_cleanup,.-sem_wait_cleanup
+-
+-
+-	.section .gcc_except_table,"a",@progbits
+-.LexceptSTART:
+-	.byte	DW_EH_PE_omit			! @LPStart format (omit)
+-	.byte	DW_EH_PE_omit			! @TType format (omit)
+-	.byte	DW_EH_PE_uleb128		! call-site format
+-	.uleb128 .Lcstend-.Lcstbegin
+-.Lcstbegin:
+-	.uleb128 .LcleanupSTART-.LSTARTCODE
+-	.uleb128 .LcleanupEND-.LcleanupSTART
+-	.uleb128 sem_wait_cleanup-.LSTARTCODE
+-	.uleb128  0
+-	.uleb128 .LcallUR-.LSTARTCODE
+-	.uleb128 .LENDCODE-.LcallUR
+-	.uleb128 0
+-	.uleb128  0
+-.Lcstend:
+-
+-#ifdef SHARED
+-	.hidden	DW.ref.__gcc_personality_v0
+-	.weak	DW.ref.__gcc_personality_v0
+-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
+-	.align	4
+-	.type	DW.ref.__gcc_personality_v0, @object
+-	.size	DW.ref.__gcc_personality_v0, 4
+-DW.ref.__gcc_personality_v0:
+-	.long	__gcc_personality_v0
+-#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S
++++ /dev/null
+@@ -1,102 +0,0 @@
+-/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <lowlevellock.h>
+-#include "lowlevel-atomic.h"
+-
+-
+-	.text
+-
+-	.globl	__new_sem_trywait
+-	.type	__new_sem_trywait,@function
+-	.align	5
+-	cfi_startproc
+-__new_sem_trywait:
+-	mov.l	r12, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r12, 0)
+-	mov.l	r8, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r8, 0)
+-	sts.l	pr, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (pr, 0)
+-	mov	r4, r8
+-	mov.l	@r8, r0
+-2:
+-	tst	r0, r0
+-	bt	1f
+-
+-	mov	r0, r3
+-	mov	r0, r4
+-	add	#-1, r3
+-	CMPXCHG (r4, @r8, r3, r2)
+-	bf/s	2b
+-	 mov	r2, r0
+-
+-	cfi_remember_state
+-	lds.l	@r15+, pr
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (pr)
+-	mov.l	@r15+, r8
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r8)
+-	mov.l	@r15+, r12
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r12)
+-	rts
+-	 mov	#0, r0
+-	cfi_restore_state
+-
+-1:
+-	mov	#EAGAIN, r8
+-	mova	.Lgot1, r0
+-	mov.l	.Lgot1, r12
+-	add	r0, r12
+-
+-	mov.l	.Lerrno1, r0
+-	stc	gbr, r1
+-	mov.l	@(r0, r12), r0
+-	bra	.Lexit
+-	 add	r1, r0
+-	.align	2
+-.Lerrno1:
+-	.long	errno@GOTTPOFF
+-.Lexit:
+-	mov.l	r8, @r0
+-	lds.l	@r15+, pr
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (pr)
+-	mov.l	@r15+, r8
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r8)
+-	mov.l	@r15+, r12
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r12)
+-	rts
+-	 mov	#-1, r0
+-
+-	cfi_endproc
+-
+-	.align	2
+-.Lgot1:
+-	.long	_GLOBAL_OFFSET_TABLE_
+-	.size	__new_sem_trywait,.-__new_sem_trywait
+-	versioned_symbol(libpthread, __new_sem_trywait, sem_trywait, GLIBC_2_1)
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S
++++ /dev/null
+@@ -1,229 +0,0 @@
+-/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <shlib-compat.h>
+-#include <pthread-errnos.h>
+-#include <tcb-offsets.h>
+-#include <structsem.h>
+-#include <lowlevellock.h>
+-#include "lowlevel-atomic.h"
+-
+-
+-#if VALUE != 0
+-# error "code needs to be rewritten for VALUE != 0"
+-#endif
+-
+-	.text
+-
+-	.globl	__new_sem_wait
+-	.type	__new_sem_wait,@function
+-	.align	5
+-	cfi_startproc
+-__new_sem_wait:
+-.LSTARTCODE:
+-#ifdef SHARED
+-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
+-			DW.ref.__gcc_personality_v0)
+-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
+-#else
+-	cfi_personality(DW_EH_PE_absptr, __gcc_personality_v0)
+-	cfi_lsda(DW_EH_PE_absptr, .LexceptSTART)
+-#endif
+-	mov.l	r8, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r8, 0)
+-	mov.l	r10, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r10, 0)
+-	mov.l	r12, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (r12, 0)
+-	sts.l	pr, @-r15
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (pr, 0)
+-
+-	mov	r4, r8
+-	mov.l	@r8, r0
+-2:
+-	tst	r0, r0
+-	bt	1f
+-	mov	r0, r3
+-	mov	r0, r4
+-	add	#-1, r3
+-	CMPXCHG (r4, @r8, r3, r2)
+-	bf/s	2b
+-	 mov	r2, r0
+-7:
+-	mov	#0, r0
+-9:
+-	cfi_remember_state
+-	lds.l	@r15+, pr
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (pr)
+-	mov.l	@r15+, r12
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r12)
+-	mov.l	@r15+, r10
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (r10)
+-	rts
+-	 mov.l	@r15+, r8
+-	/* Omit CFI for restore in delay slot.  */
+-	cfi_restore_state
+-
+-.Lafter_ret:
+-1:
+-	INC (@(NWAITERS,r8),r2)
+-
+-.LcleanupSTART:
+-6:
+-	mov.l	.Lenable0, r1
+-	bsrf	r1
+-	 nop
+-.Lenable0b:
+-	mov	r0, r10
+-
+-	mov	r8, r4
+-#if FUTEX_WAIT == 0
+-	mov.l	@(PRIVATE,r8), r5
+-#else
+-	mov.l	@(PRIVATE,r8), r5
+-	mov	#FUTEX_WAIT, r0
+-	or	r0, r5
+-#endif
+-	mov	#0, r6
+-	mov	#0, r7
+-	mov	#SYS_futex, r3
+-	extu.b	r3, r3
+-	trapa	#0x14
+-	SYSCALL_INST_PAD
+-
+-	mov.l	.Ldisable0, r1
+-	mov	r10, r4
+-	bsrf	r1
+-	 mov	r0, r10
+-.Ldisable0b:
+-	mov	r10, r0
+-.LcleanupEND:
+-
+-	tst	r0, r0
+-	bt	3f
+-	cmp/eq	#-EWOULDBLOCK, r0
+-	bf	4f
+-
+-3:
+-	mov.l	@r8, r0
+-5:
+-	tst	r0, r0
+-	bt	6b
+-
+-	mov	r0, r3
+-	mov	r0, r4
+-	add	#-1, r3
+-	CMPXCHG (r4, @r8, r3, r2)
+-	bf/s	5b
+-	 mov	r2, r0
+-
+-	DEC (@(NWAITERS,r8), r2)
+-	bra	7b
+-	 nop
+-
+-4:
+-	neg	r0, r0
+-	mov	r0, r4
+-	DEC (@(NWAITERS,r8), r2)
+-	mov	r4, r8
+-	mova	.Lgot0, r0
+-	mov.l	.Lgot0, r12
+-	add	r0, r12
+-
+-	mov.l	.Lerrno0, r0
+-	stc	gbr, r1
+-	mov.l	@(r0, r12), r0
+-	bra	.Lexit
+-	 add	r1, r0
+-	.align	2
+-.Lerrno0:
+-	.long	errno@GOTTPOFF
+-.Lexit:
+-	mov.l	r8, @r0
+-	bra	9b
+-	 mov	#-1, r0
+-
+-	.align	2
+-.Lgot0:
+-	.long	_GLOBAL_OFFSET_TABLE_
+-.Lenable0:
+-	.long	__pthread_enable_asynccancel-.Lenable0b
+-.Ldisable0:
+-	.long	__pthread_disable_asynccancel-.Ldisable0b
+-	.size	__new_sem_wait,.-__new_sem_wait
+-	versioned_symbol(libpthread, __new_sem_wait, sem_wait, GLIBC_2_1)
+-
+-
+-	.type	sem_wait_cleanup,@function
+-sem_wait_cleanup:
+-	DEC (@(NWAITERS,r8), r2)
+-.LcallUR:
+-	mov.l	.Lresume, r1
+-#ifdef PIC
+-	add	r12, r1
+-#endif
+-	jsr	@r1
+-	 nop
+-	sleep
+-
+-	.align	2
+-.Lresume:
+-#ifdef PIC
+-	.long	_Unwind_Resume@GOTOFF
+-#else
+-	.long	_Unwind_Resume
+-#endif
+-.LENDCODE:
+-	cfi_endproc
+-	.size	sem_wait_cleanup,.-sem_wait_cleanup
+-
+-
+-	.section .gcc_except_table,"a",@progbits
+-.LexceptSTART:
+-	.byte	DW_EH_PE_omit			! @LPStart format (omit)
+-	.byte	DW_EH_PE_omit			! @TType format (omit)
+-	.byte	DW_EH_PE_uleb128		! call-site format
+-	.uleb128 .Lcstend-.Lcstbegin
+-.Lcstbegin:
+-	.uleb128 .LcleanupSTART-.LSTARTCODE
+-	.uleb128 .LcleanupEND-.LcleanupSTART
+-	.uleb128 sem_wait_cleanup-.LSTARTCODE
+-	.uleb128  0
+-	.uleb128 .LcallUR-.LSTARTCODE
+-	.uleb128 .LENDCODE-.LcallUR
+-	.uleb128 0
+-	.uleb128  0
+-.Lcstend:
+-
+-#ifdef SHARED
+-	.hidden	DW.ref.__gcc_personality_v0
+-	.weak	DW.ref.__gcc_personality_v0
+-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
+-	.align	4
+-	.type	DW.ref.__gcc_personality_v0, @object
+-	.size	DW.ref.__gcc_personality_v0, 4
+-DW.ref.__gcc_personality_v0:
+-	.long	__gcc_personality_v0
+-#endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/Makefile
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/Makefile
+@@ -24,8 +24,7 @@ libpthread-sysdep_routines += pt-fork pt
+ 
+ gen-as-const-headers += lowlevelcond.sym lowlevelrwlock.sym \
+ 			lowlevelbarrier.sym unwindbuf.sym \
+-			lowlevelrobustlock.sym pthread-pi-defines.sym \
+-			structsem.sym
++			lowlevelrobustlock.sym pthread-pi-defines.sym
+ endif
+ 
+ ifeq ($(subdir),posix)
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+@@ -225,17 +225,18 @@ LLL_STUB_UNWIND_INFO_END
+ 
+ 
+ #define lll_futex_wake(futex, nr, private) \
+-  do {									      \
+-    int __ignore;							      \
++  ({									      \
++    int __status;							      \
+     register __typeof (nr) _nr __asm ("edx") = (nr);			      \
+     LIBC_PROBE (lll_futex_wake, 3, futex, nr, private);                       \
+     __asm __volatile ("syscall"						      \
+-		      : "=a" (__ignore)					      \
++		      : "=a" (__status)					      \
+ 		      : "0" (SYS_futex), "D" (futex),			      \
+ 			"S" (__lll_private_flag (FUTEX_WAKE, private)),	      \
+ 			"d" (_nr)					      \
+ 		      : "memory", "cc", "r10", "r11", "cx");		      \
+-  } while (0)
++    __status;								      \
++  })
+ 
+ 
+ /* NB: in the lll_trylock macro we simply return the value in %eax
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
+@@ -224,20 +224,21 @@ LLL_STUB_UNWIND_INFO_END
+ 
+ 
+ #define lll_futex_wake(futex, nr, private) \
+-  do {									      \
+-    int __ignore;							      \
++  ({									      \
++    int __status;							      \
+     register __typeof (nr) _nr asm ("edx") = (nr);			      \
+     LIBC_PROBE (lll_futex_wake, 3, futex, nr, private);                       \
+     __asm __volatile (LLL_EBX_LOAD					      \
+ 		      LLL_ENTER_KERNEL					      \
+ 		      LLL_EBX_LOAD					      \
+-		      : "=a" (__ignore)					      \
++		      : "=a" (__status)					      \
+ 		      : "0" (SYS_futex), LLL_EBX_REG (futex),		      \
+ 			"c" (__lll_private_flag (FUTEX_WAKE, private)),	      \
+ 			"d" (_nr),					      \
+ 			"i" (0) /* phony, to align next arg's number */,      \
+ 			"i" (offsetof (tcbhead_t, sysinfo)));		      \
+-  } while (0)
++    __status;								      \
++  })
+ 
+ 
+ /* NB: in the lll_trylock macro we simply return the value in %eax
diff --git a/SOURCES/glibc-rh1064063.patch b/SOURCES/glibc-rh1064063.patch
new file mode 100644
index 0000000..154ab66
--- /dev/null
+++ b/SOURCES/glibc-rh1064063.patch
@@ -0,0 +1,70 @@
+commit a3e5b4feeb54cb92657ec2bc6d9be1fcef9e8575
+Author: Paul E. Murphy <murphyp@linux.vnet.ibm.com>
+Date:   Mon Jan 11 17:24:04 2016 -0500
+
+    Fix race in tst-mqueue5
+    
+    The check is done on line 117 by a thread spawned
+    from do_child(), forked from do_test().  This test
+    generates a signal in the forked process.
+    
+    Either thread may handle the signal, and on ppc,
+    it happens to be done on do_child, on the thread
+    which is not doing the check on line 117.
+    
+    This exposes a race condition whereby the test
+    incorrectly fails as the signal is caught during
+    or after the check.
+    
+    This is mitigated by ensuring the signal is blocked
+    in the child thread while thread is running.
+
+ 2016-01-15  Martin Sebor  <msebor@redhat.com>
+ 
+ 	[BZ #19432]
+diff --git a/rt/tst-mqueue5.c b/rt/tst-mqueue5.c
+index aa74fa3..25042bc 100644
+--- a/rt/tst-mqueue5.c
++++ b/rt/tst-mqueue5.c
+@@ -116,7 +116,7 @@ thr (void *arg)
+ 
+   if (rtmin_cnt != 2)
+     {
+-      puts ("SIGRTMIN signal in child did not arrive");
++      puts ("SIGRTMIN signal in thread did not arrive");
+       result = 1;
+     }
+   else if (rtmin_pid != getppid ()
+@@ -403,6 +403,16 @@ do_child (const char *name, pthread_barrier_t *b2, pthread_barrier_t *b3,
+       result = 1;
+     }
+ 
++  /* Ensure the thr thread gets the signal, not us.  */
++  sigset_t set;
++  sigemptyset (&set);
++  sigaddset (&set, SIGRTMIN);
++  if (pthread_sigmask (SIG_BLOCK, &set, NULL))
++    {
++      printf ("Failed to block SIGRTMIN in child: %m\n");
++      result = 1;
++    }
++
+   (void) pthread_barrier_wait (b2);
+ 
+   /* Parent calls mqsend (q), which should wake up mqrecv (q)
+@@ -514,7 +524,14 @@ do_child (const char *name, pthread_barrier_t *b2, pthread_barrier_t *b3,
+       result = 1;
+     }
+ 
+- void *thr_ret;
++  /* Reenable test signals before cleaning up the thread.  */
++  if (pthread_sigmask (SIG_UNBLOCK, &set, NULL))
++    {
++      printf ("Failed to unblock SIGRTMIN in child: %m\n");
++      result = 1;
++    }
++
++  void *thr_ret;
+   ret = pthread_join (th, &thr_ret);
+   if (ret)
+     {
diff --git a/SOURCES/glibc-rh1140250.patch b/SOURCES/glibc-rh1140250.patch
new file mode 100644
index 0000000..570adbe
--- /dev/null
+++ b/SOURCES/glibc-rh1140250.patch
@@ -0,0 +1,346 @@
+commit 7fe9e2e089f4990b7d18d0798f591ab276b15f2b
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Fri Jun 5 10:50:38 2015 +0200
+
+    posix_fallocate: Emulation fixes and documentation [BZ #15661]
+    
+    Handle signed integer overflow correctly.  Detect and reject O_APPEND.
+    Document drawbacks of emulation.
+    
+    This does not completely address bug 15661, but improves the situation
+    somewhat.
+
+commit 543ef578c3304661713950b37abd0c916f52ecf0
+Author: Paul Eggert <eggert@cs.ucla.edu>
+Date:   Tue Aug 25 23:42:01 2015 -0700
+
+    Fix broken overflow check in posix_fallocate [BZ 18873]
+    
+    * sysdeps/posix/posix_fallocate.c (posix_fallocate):
+    * sysdeps/posix/posix_fallocate64.c (__posix_fallocate64_l64):
+    Fix parenthesization typo.
+
+Index: b/manual/filesys.texi
+===================================================================
+--- a/manual/filesys.texi
++++ b/manual/filesys.texi
+@@ -1723,6 +1723,7 @@ modify the attributes of a file.
+                                  access a file.
+ * File Times::                  About the time attributes of a file.
+ * File Size::			Manually changing the size of a file.
++* Storage Allocation::          Allocate backing storage for files.
+ @end menu
+ 
+ @node Attribute Meanings
+@@ -3232,6 +3233,99 @@ is a requirement of @code{mmap}.  The pr
+ real size, and when it has finished a final @code{ftruncate} call should
+ set the real size of the file.
+ 
++@node Storage Allocation
++@subsection Storage Allocation
++@cindex allocating file storage
++@cindex file allocation
++@cindex storage allocating
++
++@cindex file fragmentation
++@cindex fragmentation of files
++@cindex sparse files
++@cindex files, sparse
++Most file systems support allocating large files in a non-contiguous
++fashion: the file is split into @emph{fragments} which are allocated
++sequentially, but the fragments themselves can be scattered across the
++disk.  File systems generally try to avoid such fragmentation because it
++decreases performance, but if a file gradually increases in size, there
++might be no other option than to fragment it.  In addition, many file
++systems support @emph{sparse files} with @emph{holes}: regions of null
++bytes for which no backing storage has been allocated by the file
++system.  When the holes are finally overwritten with data, fragmentation
++can occur as well.
++
++Explicit allocation of storage for yet-unwritten parts of the file can
++help the system to avoid fragmentation.  Additionally, if storage
++pre-allocation fails, it is possible to report the out-of-disk error
++early, often without filling up the entire disk.  However, due to
++deduplication, copy-on-write semantics, and file compression, such
++pre-allocation may not reliably prevent the out-of-disk-space error from
++occurring later.  Checking for write errors is still required, and
++writes to memory-mapped regions created with @code{mmap} can still
++result in @code{SIGBUS}.
++
++@deftypefun int posix_fallocate (int @var{fd}, off_t @var{offset}, off_t @var{length})
++@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
++@c If the file system does not support allocation,
++@c @code{posix_fallocate} has a race with file extension (if
++@c @var{length} is zero) or with concurrent writes of non-NUL bytes (if
++@c @var{length} is positive).
++
++Allocate backing store for the region of @var{length} bytes starting at
++byte @var{offset} in the file for the descriptor @var{fd}.  The file
++length is increased to @samp{@var{length} + @var{offset}} if necessary.
++
++@var{fd} must be a regular file opened for writing, or @code{EBADF} is
++returned.  If there is insufficient disk space to fulfill the allocation
++request, @code{ENOSPC} is returned.
++
++@strong{Note:} If @code{fallocate} is not available (because the file
++system does not support it), @code{posix_fallocate} is emulated, which
++has the following drawbacks:
++
++@itemize @bullet
++@item
++It is very inefficient because all file system blocks in the requested
++range need to be examined (even if they have been allocated before) and
++potentially rewritten.  In contrast, with proper @code{fallocate}
++support (see below), the file system can examine the internal file
++allocation data structures and eliminate holes directly, maybe even
++using unwritten extents (which are pre-allocated but uninitialized on
++disk).
++
++@item
++There is a race condition if another thread or process modifies the
++underlying file in the to-be-allocated area.  Non-null bytes could be
++overwritten with null bytes.
++
++@item
++If @var{fd} has been opened with the @code{O_APPEND} flag, the function
++will fail with an @code{errno} value of @code{EBADF}.
++
++@item
++If @var{length} is zero, @code{ftruncate} is used to increase the file
++size as requested, without allocating file system blocks.  There is a
++race condition which means that @code{ftruncate} can accidentally
++truncate the file if it has been extended concurrently.
++@end itemize
++
++On Linux, if an application does not benefit from emulation or if the
++emulation is harmful due to its inherent race conditions, the
++application can use the Linux-specific @code{fallocate} function, with a
++zero flag argument.  For the @code{fallocate} function, @theglibc{} does
++not perform allocation emulation if the file system does not support
++allocation.  Instead, an @code{EOPNOTSUPP} is returned to the caller.
++
++@end deftypefun
++
++@deftypefun int posix_fallocate64 (int @var{fd}, off64_t @var{length}, off64_t @var{offset})
++@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
++
++This function is a variant of @code{posix_fallocate64} which accepts
++64-bit file offsets on all platforms.
++
++@end deftypefun
++
+ @node Making Special Files
+ @section Making Special Files
+ @cindex creating special files
+Index: b/sysdeps/posix/posix_fallocate.c
+===================================================================
+--- a/sysdeps/posix/posix_fallocate.c
++++ b/sysdeps/posix/posix_fallocate.c
+@@ -18,26 +18,36 @@
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <unistd.h>
++#include <stdint.h>
++#include <sys/fcntl.h>
+ #include <sys/stat.h>
+ #include <sys/statfs.h>
+ 
+-/* Reserve storage for the data of the file associated with FD.  */
++/* Reserve storage for the data of the file associated with FD.  This
++   emulation is far from perfect, but the kernel cannot do not much
++   better for network file systems, either.  */
+ 
+ int
+ posix_fallocate (int fd, __off_t offset, __off_t len)
+ {
+   struct stat64 st;
+-  struct statfs f;
+ 
+-  /* `off_t' is a signed type.  Therefore we can determine whether
+-     OFFSET + LEN is too large if it is a negative value.  */
+   if (offset < 0 || len < 0)
+     return EINVAL;
+-  if (offset + len < 0)
++
++  /* Perform overflow check.  The outer cast relies on a GCC
++     extension.  */
++  if ((__off_t) ((uint64_t) offset + (uint64_t) len) < 0)
+     return EFBIG;
+ 
+-  /* First thing we have to make sure is that this is really a regular
+-     file.  */
++  /* pwrite below will not do the right thing in O_APPEND mode.  */
++  {
++    int flags = __fcntl (fd, F_GETFL, 0);
++    if (flags < 0 || (flags & O_APPEND) != 0)
++      return EBADF;
++  }
++
++  /* We have to make sure that this is really a regular file.  */
+   if (__fxstat64 (_STAT_VER, fd, &st) != 0)
+     return EBADF;
+   if (S_ISFIFO (st.st_mode))
+@@ -47,6 +57,8 @@ posix_fallocate (int fd, __off_t offset,
+ 
+   if (len == 0)
+     {
++      /* This is racy, but there is no good way to satisfy a
++	 zero-length allocation request.  */
+       if (st.st_size < offset)
+ 	{
+ 	  int ret = __ftruncate (fd, offset);
+@@ -58,19 +70,36 @@ posix_fallocate (int fd, __off_t offset,
+       return 0;
+     }
+ 
+-  /* We have to know the block size of the filesystem to get at least some
+-     sort of performance.  */
+-  if (__fstatfs (fd, &f) != 0)
+-    return errno;
+-
+-  /* Try to play safe.  */
+-  if (f.f_bsize == 0)
+-    f.f_bsize = 512;
+-
+-  /* Write something to every block.  */
+-  for (offset += (len - 1) % f.f_bsize; len > 0; offset += f.f_bsize)
++  /* Minimize data transfer for network file systems, by issuing
++     single-byte write requests spaced by the file system block size.
++     (Most local file systems have fallocate support, so this fallback
++     code is not used there.)  */
++
++  unsigned increment;
++  {
++    struct statfs64 f;
++
++    if (__fstatfs64 (fd, &f) != 0)
++      return errno;
++    if (f.f_bsize == 0)
++      increment = 512;
++    else if (f.f_bsize < 4096)
++      increment = f.f_bsize;
++    else
++      /* NFS does not propagate the block size of the underlying
++	 storage and may report a much larger value which would still
++	 leave holes after the loop below, so we cap the increment at
++	 4096.  */
++      increment = 4096;
++  }
++
++  /* Write a null byte to every block.  This is racy; we currently
++     lack a better option.  Compare-and-swap against a file mapping
++     might additional local races, but requires interposition of a
++     signal handler to catch SIGBUS.  */
++  for (offset += (len - 1) % increment; len > 0; offset += increment)
+     {
+-      len -= f.f_bsize;
++      len -= increment;
+ 
+       if (offset < st.st_size)
+ 	{
+Index: b/sysdeps/posix/posix_fallocate64.c
+===================================================================
+--- a/sysdeps/posix/posix_fallocate64.c
++++ b/sysdeps/posix/posix_fallocate64.c
+@@ -18,26 +18,36 @@
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <unistd.h>
++#include <stdint.h>
++#include <sys/fcntl.h>
+ #include <sys/stat.h>
+ #include <sys/statfs.h>
+ 
+-/* Reserve storage for the data of the file associated with FD.  */
++/* Reserve storage for the data of the file associated with FD.  This
++   emulation is far from perfect, but the kernel cannot do not much
++   better for network file systems, either.  */
+ 
+ int
+ __posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len)
+ {
+   struct stat64 st;
+-  struct statfs64 f;
+ 
+-  /* `off64_t' is a signed type.  Therefore we can determine whether
+-     OFFSET + LEN is too large if it is a negative value.  */
+   if (offset < 0 || len < 0)
+     return EINVAL;
+-  if (offset + len < 0)
++
++  /* Perform overflow check.  The outer cast relies on a GCC
++     extension.  */
++  if ((__off64_t) ((uint64_t) offset + (uint64_t) len) < 0)
+     return EFBIG;
+ 
+-  /* First thing we have to make sure is that this is really a regular
+-     file.  */
++  /* pwrite64 below will not do the right thing in O_APPEND mode.  */
++  {
++    int flags = __fcntl (fd, F_GETFL, 0);
++    if (flags < 0 || (flags & O_APPEND) != 0)
++      return EBADF;
++  }
++
++  /* We have to make sure that this is really a regular file.  */
+   if (__fxstat64 (_STAT_VER, fd, &st) != 0)
+     return EBADF;
+   if (S_ISFIFO (st.st_mode))
+@@ -47,6 +57,8 @@ __posix_fallocate64_l64 (int fd, __off64
+ 
+   if (len == 0)
+     {
++      /* This is racy, but there is no good way to satisfy a
++	 zero-length allocation request.  */
+       if (st.st_size < offset)
+ 	{
+ 	  int ret = __ftruncate64 (fd, offset);
+@@ -58,19 +70,36 @@ __posix_fallocate64_l64 (int fd, __off64
+       return 0;
+     }
+ 
+-  /* We have to know the block size of the filesystem to get at least some
+-     sort of performance.  */
+-  if (__fstatfs64 (fd, &f) != 0)
+-    return errno;
+-
+-  /* Try to play safe.  */
+-  if (f.f_bsize == 0)
+-    f.f_bsize = 512;
+-
+-  /* Write something to every block.  */
+-  for (offset += (len - 1) % f.f_bsize; len > 0; offset += f.f_bsize)
++  /* Minimize data transfer for network file systems, by issuing
++     single-byte write requests spaced by the file system block size.
++     (Most local file systems have fallocate support, so this fallback
++     code is not used there.)  */
++
++  unsigned increment;
++  {
++    struct statfs64 f;
++
++    if (__fstatfs64 (fd, &f) != 0)
++      return errno;
++    if (f.f_bsize == 0)
++      increment = 512;
++    else if (f.f_bsize < 4096)
++      increment = f.f_bsize;
++    else
++      /* NFS clients do not propagate the block size of the underlying
++	 storage and may report a much larger value which would still
++	 leave holes after the loop below, so we cap the increment at
++	 4096.  */
++      increment = 4096;
++  }
++
++  /* Write a null byte to every block.  This is racy; we currently
++     lack a better option.  Compare-and-swap against a file mapping
++     might address local races, but requires interposition of a signal
++     handler to catch SIGBUS.  */
++  for (offset += (len - 1) % increment; len > 0; offset += increment)
+     {
+-      len -= f.f_bsize;
++      len -= increment;
+ 
+       if (offset < st.st_size)
+ 	{
diff --git a/SOURCES/glibc-rh1165212.patch b/SOURCES/glibc-rh1165212.patch
index 104c456..d5a5a7d 100644
--- a/SOURCES/glibc-rh1165212.patch
+++ b/SOURCES/glibc-rh1165212.patch
@@ -213,7 +213,7 @@
 +  dlerror ();
 +
 +  /* Lookup func.  */
-+  *(void **) (&func) = dlsym (dso, func_name);
++  func = (int (*) (void)) dlsym (dso, func_name);
 +  if (func == NULL)
 +    {
 +      err = dlerror ();
diff --git a/SOURCES/glibc-rh1189278-1.patch b/SOURCES/glibc-rh1189278-1.patch
index b0e6bc5..012e005 100644
--- a/SOURCES/glibc-rh1189278-1.patch
+++ b/SOURCES/glibc-rh1189278-1.patch
@@ -10,6 +10,16 @@
 # when constructing an application or DSO. We do not adjust the link
 # lines used to build lib* targets.
 #
+# The rest of this patch is brought in by glibc-rh1292018-0a.patch
+# where we need to link against ld.so from libm.so.
+#
+
+commit fab7ce3f5b4060bf62659e8b58529de4156b5a2f
+Author: Joseph Myers <joseph@codesourcery.com>
+Date:   Fri May 31 16:16:33 2013 +0000
+
+    Link extra-libs consistently with libc and ld.so.
+
 diff -urN glibc-2.17-c758a686/Makerules glibc-2.17-c758a686/Makerules
 --- glibc-2.17-c758a686/Makerules	2015-02-18 19:53:00.000000000 -0500
 +++ glibc-2.17-c758a686/Makerules	2015-02-18 20:08:33.299000028 -0500
diff --git a/SOURCES/glibc-rh1207032.patch b/SOURCES/glibc-rh1207032.patch
index 09a5c78..ae6ae18 100644
--- a/SOURCES/glibc-rh1207032.patch
+++ b/SOURCES/glibc-rh1207032.patch
@@ -48,9 +48,26 @@ Date:   Tue May 19 06:40:37 2015 +0530
     this patch.  I also ran the malloc benchmarks and found an
     insignificant difference in timings (< 2%).
 
-diff -pruN glibc-2.17-c758a686/malloc/arena.c glibc-2.17-c758a686/malloc/arena.c
---- glibc-2.17-c758a686/malloc/arena.c	2015-05-28 13:32:17.544433238 +0530
-+++ glibc-2.17-c758a686/malloc/arena.c	2015-05-28 15:29:02.605120231 +0530
+
+The follow-on test-suite fix has been folded into the patch below, but
+to keep it minimal, ignore_stderr is put directly into
+tst-malloc-backtrace.c.
+
+commit 02242448bf431a69fd0b8c929ca4408a05479baa
+Author: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
+Date:   Tue Jun 2 10:32:25 2015 -0300
+
+    Avoid outputting to TTY after an expected memory corruption in testcase
+
+    Protect TTY against an expected memory corruption from testcase
+    tst-malloc-backtrace, which is expected to SIGABRT after a forced memory
+    corruption.
+
+
+Index: b/malloc/arena.c
+===================================================================
+--- a/malloc/arena.c
++++ b/malloc/arena.c
 @@ -119,7 +119,7 @@ int __malloc_initialized = -1;
  
  #ifdef PER_THREAD
@@ -92,9 +109,10 @@ diff -pruN glibc-2.17-c758a686/malloc/arena.c glibc-2.17-c758a686/malloc/arena.c
    LIBC_PROBE (memory_arena_reuse_wait, 3, &result->mutex, result, avoid_arena);
    (void)mutex_lock(&result->mutex);
  
-diff -pruN glibc-2.17-c758a686/malloc/hooks.c glibc-2.17-c758a686/malloc/hooks.c
---- glibc-2.17-c758a686/malloc/hooks.c	2015-05-28 13:32:17.379431450 +0530
-+++ glibc-2.17-c758a686/malloc/hooks.c	2015-05-28 15:31:14.132551554 +0530
+Index: b/malloc/hooks.c
+===================================================================
+--- a/malloc/hooks.c
++++ b/malloc/hooks.c
 @@ -109,7 +109,8 @@ malloc_check_get_size(mchunkptr p)
         size -= c) {
      if(c<=0 || size<(c+2*SIZE_SZ)) {
@@ -135,9 +153,10 @@ diff -pruN glibc-2.17-c758a686/malloc/hooks.c glibc-2.17-c758a686/malloc/hooks.c
      return malloc_check(bytes, NULL);
    }
    const INTERNAL_SIZE_T oldsize = chunksize(oldp);
-diff -pruN glibc-2.17-c758a686/malloc/Makefile glibc-2.17-c758a686/malloc/Makefile
---- glibc-2.17-c758a686/malloc/Makefile	2012-12-25 08:32:13.000000000 +0530
-+++ glibc-2.17-c758a686/malloc/Makefile	2015-05-28 13:34:11.967673754 +0530
+Index: b/malloc/Makefile
+===================================================================
+--- a/malloc/Makefile
++++ b/malloc/Makefile
 @@ -25,7 +25,8 @@ all:
  dist-headers := malloc.h
  headers := $(dist-headers) obstack.h mcheck.h
@@ -158,9 +177,10 @@ diff -pruN glibc-2.17-c758a686/malloc/Makefile glibc-2.17-c758a686/malloc/Makefi
  # These should be removed by `make clean'.
  extra-objs = mcheck-init.o libmcheck.a
  
-diff -pruN glibc-2.17-c758a686/malloc/malloc.c glibc-2.17-c758a686/malloc/malloc.c
---- glibc-2.17-c758a686/malloc/malloc.c	2015-05-28 13:32:17.848436534 +0530
-+++ glibc-2.17-c758a686/malloc/malloc.c	2015-05-28 15:53:16.694991702 +0530
+Index: b/malloc/malloc.c
+===================================================================
+--- a/malloc/malloc.c
++++ b/malloc/malloc.c
 @@ -1060,7 +1060,7 @@ static void*  _int_realloc(mstate, mchun
  static void*  _int_memalign(mstate, size_t, size_t);
  static void*  _int_valloc(mstate, size_t);
@@ -500,7 +520,7 @@ diff -pruN glibc-2.17-c758a686/malloc/malloc.c glibc-2.17-c758a686/malloc/malloc
        mutex_lock(&av->mutex);
        return NULL;
      }
-@@ -4467,7 +4467,7 @@ static void*
+@@ -4436,7 +4467,7 @@ static void*
  _int_valloc(mstate av, size_t bytes)
  {
    /* Ensure initialization/consolidation */
@@ -509,7 +529,7 @@ diff -pruN glibc-2.17-c758a686/malloc/malloc.c glibc-2.17-c758a686/malloc/malloc
    return _int_memalign(av, GLRO(dl_pagesize), bytes);
  }
  
-@@ -4482,7 +4482,7 @@ _int_pvalloc(mstate av, size_t bytes)
+@@ -4451,7 +4482,7 @@ _int_pvalloc(mstate av, size_t bytes)
    size_t pagesz;
  
    /* Ensure initialization/consolidation */
@@ -545,10 +565,11 @@ diff -pruN glibc-2.17-c758a686/malloc/malloc.c glibc-2.17-c758a686/malloc/malloc
    if ((action & 5) == 5)
      __libc_message (action & 2, "%s\n", str);
    else if (action & 1)
-diff -pruN glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c
---- glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c	1970-01-01 05:30:00.000000000 +0530
-+++ glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c	2015-05-28 15:54:10.135577633 +0530
-@@ -0,0 +1,50 @@
+Index: b/malloc/tst-malloc-backtrace.c
+===================================================================
+--- /dev/null
++++ b/malloc/tst-malloc-backtrace.c
+@@ -0,0 +1,71 @@
 +/* Verify that backtrace does not deadlock on itself on memory corruption.
 +   Copyright (C) 2015 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -568,10 +589,28 @@ diff -pruN glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c glibc-2.17-c758a686
 +   <http://www.gnu.org/licenses/>.  */
 +
 +
++#include <fcntl.h>
++#include <paths.h>
 +#include <stdlib.h>
++#include <unistd.h>
 +
 +#define SIZE 4096
 +
++/* Avoid all the buffer overflow messages on stderr.  */
++static void
++ignore_stderr (void)
++{
++  int fd = open (_PATH_DEVNULL, O_WRONLY);
++  if (fd == -1)
++    close (STDERR_FILENO);
++  else
++    {
++      dup2 (fd, STDERR_FILENO);
++      close (fd);
++    }
++  setenv ("LIBC_FATAL_STDERR_", "1", 1);
++}
++
 +/* Wrap free with a function to prevent gcc from optimizing it out.  */
 +static void
 +__attribute__((noinline))
@@ -587,7 +626,10 @@ diff -pruN glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c glibc-2.17-c758a686
 +  void *ptr1 = malloc (SIZE);
 +  void *ptr2 = malloc (SIZE);
 +
-+  call_free (ptr1);
++  /* Avoid unwanted output to TTY after an expected memory corruption.  */
++  ignore_stderr ();
++
++  call_free ((void *) ptr1);
 +  ptr1 = malloc (SIZE);
 +
 +  /* Not reached.  The return statement is to put ptr2 into use so that gcc
diff --git a/SOURCES/glibc-rh1211100.patch b/SOURCES/glibc-rh1211100.patch
new file mode 100644
index 0000000..63bb49d
--- /dev/null
+++ b/SOURCES/glibc-rh1211100.patch
@@ -0,0 +1,522 @@
+commit a1b85ae88b1a664e93ca0182c82f7763dd5a1754
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Mon Nov 9 16:52:31 2015 +0100
+
+    ld.so: Add original DSO name if overridden by audit module [BZ #18251]
+
+Index: b/elf/Makefile
+===================================================================
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -119,7 +119,8 @@ $(inst_auditdir)/sotruss-lib.so: $(objpf
+ endif
+ 
+ tests = tst-tls1 tst-tls2 tst-tls9 tst-leaks1 \
+-	tst-array1 tst-array2 tst-array3 tst-array4 tst-array5
++	tst-array1 tst-array2 tst-array3 tst-array4 tst-array5 \
++	tst-audit11 tst-audit12
+ tests-static = tst-tls1-static tst-tls2-static tst-stackguard1-static \
+ 	       tst-leaks1-static tst-array1-static tst-array5-static \
+ 	       tst-ptrguard1-static
+@@ -216,7 +217,9 @@ modules-names = testobj1 testobj2 testob
+ 		tst-initorder2a tst-initorder2b tst-initorder2c \
+ 		tst-initorder2d \
+ 		tst-relsort1mod1 tst-relsort1mod2 tst-array2dep \
+-		tst-array5dep
++		tst-array5dep \
++		tst-audit11mod1 tst-audit11mod2 tst-auditmod11 \
++		tst-audit12mod1 tst-audit12mod2 tst-audit12mod3 tst-auditmod12
+ ifeq (yesyes,$(have-fpie)$(build-shared))
+ modules-names += tst-piemod1
+ tests += tst-pie1
+@@ -1210,3 +1213,15 @@ $(objpfx)tst-unused-dep.out: $(objpfx)te
+ 	  --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ 	  $< > $@
+ 	cmp $@ /dev/null > /dev/null
++
++$(objpfx)tst-audit11.out: $(objpfx)tst-auditmod11.so $(objpfx)tst-audit11mod1.so
++$(objpfx)tst-audit11: $(libdl)
++tst-audit11-ENV = LD_AUDIT=$(objpfx)tst-auditmod11.so
++$(objpfx)tst-audit11mod1.so: $(objpfx)tst-audit11mod2.so
++LDFLAGS-tst-audit11mod2.so = -Wl,--version-script=tst-audit11mod2.map,-soname,tst-audit11mod2.so
++
++$(objpfx)tst-audit12.out: $(objpfx)tst-auditmod12.so $(objpfx)tst-audit12mod1.so $(objpfx)tst-audit12mod3.so
++$(objpfx)tst-audit12: $(libdl)
++tst-audit12-ENV = LD_AUDIT=$(objpfx)tst-auditmod12.so
++$(objpfx)tst-audit12mod1.so: $(objpfx)tst-audit12mod2.so
++LDFLAGS-tst-audit12mod2.so = -Wl,--version-script=tst-audit12mod2.map
+Index: b/elf/dl-load.c
+===================================================================
+--- a/elf/dl-load.c
++++ b/elf/dl-load.c
+@@ -909,9 +909,10 @@ lose (int code, int fd, const char *name
+ static
+ #endif
+ struct link_map *
+-_dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
+-			char *realname, struct link_map *loader, int l_type,
+-			int mode, void **stack_endp, Lmid_t nsid)
++_dl_map_object_from_fd (const char *name, const char *origname, int fd,
++			struct filebuf *fbp, char *realname,
++			struct link_map *loader, int l_type, int mode,
++			void **stack_endp, Lmid_t nsid)
+ {
+   struct link_map *l = NULL;
+   const ElfW(Ehdr) *header;
+@@ -1582,6 +1583,17 @@ cannot enable executable stack as shared
+   l->l_dev = st.st_dev;
+   l->l_ino = st.st_ino;
+ 
++#ifdef SHARED
++  /* When auditing is used the recorded names might not include the
++     name by which the DSO is actually known.  Add that as well.  */
++  if (__glibc_unlikely (origname != NULL))
++    add_name_to_object (l, origname);
++#else
++  /* Audit modules only exist when linking is dynamic so ORIGNAME
++     cannot be non-NULL.  */
++  assert (origname == NULL);
++#endif
++
+   /* When we profile the SONAME might be needed for something else but
+      loading.  Add it right away.  */
+   if (__builtin_expect (GLRO(dl_profile) != NULL, 0)
+@@ -2081,6 +2093,7 @@ _dl_map_object (struct link_map *loader,
+ 		int type, int trace_mode, int mode, Lmid_t nsid)
+ {
+   int fd;
++  const char *origname = NULL;
+   char *realname;
+   char *name_copy;
+   struct link_map *l;
+@@ -2144,6 +2157,7 @@ _dl_map_object (struct link_map *loader,
+ 	{
+ 	  if (afct->objsearch != NULL)
+ 	    {
++	      const char *before = name;
+ 	      name = afct->objsearch (name, &loader->l_audit[cnt].cookie,
+ 				      LA_SER_ORIG);
+ 	      if (name == NULL)
+@@ -2152,6 +2166,15 @@ _dl_map_object (struct link_map *loader,
+ 		  fd = -1;
+ 		  goto no_file;
+ 		}
++	      if (before != name && strcmp (before, name) != 0)
++		{
++		  if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
++		    _dl_debug_printf ("audit changed filename %s -> %s\n",
++				      before, name);
++
++		  if (origname == NULL)
++		    origname = before;
++		}
+ 	    }
+ 
+ 	  afct = afct->next;
+@@ -2371,8 +2394,8 @@ _dl_map_object (struct link_map *loader,
+     }
+ 
+   void *stack_end = __libc_stack_end;
+-  return _dl_map_object_from_fd (name, fd, &fb, realname, loader, type, mode,
+-				 &stack_end, nsid);
++  return _dl_map_object_from_fd (name, origname, fd, &fb, realname, loader,
++				 type, mode, &stack_end, nsid);
+ }
+ 
+ 
+Index: b/elf/tst-audit11.c
+===================================================================
+--- /dev/null
++++ b/elf/tst-audit11.c
+@@ -0,0 +1,36 @@
++/* Test version symbol binding can find a DSO replaced by la_objsearch.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <dlfcn.h>
++#include <stdio.h>
++
++int
++do_test (void)
++{
++  puts ("Start");
++  if (dlopen ("$ORIGIN/tst-audit11mod1.so", RTLD_LAZY) == NULL)
++    {
++      printf ("module not loaded: %s\n", dlerror ());
++      return 1;
++    }
++  puts ("OK");
++  return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+Index: b/elf/tst-audit11mod1.c
+===================================================================
+--- /dev/null
++++ b/elf/tst-audit11mod1.c
+@@ -0,0 +1,24 @@
++/* DSO directly opened by tst-audit11.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++extern int f2 (void);
++int
++f1 (void)
++{
++  return f2 ();
++}
+Index: b/elf/tst-audit11mod2.c
+===================================================================
+--- /dev/null
++++ b/elf/tst-audit11mod2.c
+@@ -0,0 +1,23 @@
++/* DSO indirectly opened by tst-audit11, with symbol versioning.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++int
++f2 (void)
++{
++  return 42;
++}
+Index: b/elf/tst-audit11mod2.map
+===================================================================
+--- /dev/null
++++ b/elf/tst-audit11mod2.map
+@@ -0,0 +1,22 @@
++/* Symbol versioning for the DSO indirectly opened by tst-audit11.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++V1 {
++  global: f2;
++  local: *;
++};
+Index: b/elf/tst-audit12.c
+===================================================================
+--- /dev/null
++++ b/elf/tst-audit12.c
+@@ -0,0 +1,49 @@
++/* Test that symbol is bound to a DSO replaced by la_objsearch.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <dlfcn.h>
++#include <stdio.h>
++
++int
++do_test (void)
++{
++  puts ("Start");
++  void *h = dlopen ("$ORIGIN/tst-audit12mod1.so", RTLD_LAZY);
++  if (h == NULL)
++    {
++      printf ("module not loaded: %s\n", dlerror ());
++      return 1;
++    }
++  int (*fp) (void) = (int (*) (void)) dlsym (h, "f1");
++  if (fp == NULL)
++    {
++      printf ("function f1 not found: %s\n", dlerror ());
++      return 1;
++    }
++  int res = fp ();
++  if (res != 43)
++    {
++      puts ("incorrect function f2 called");
++      return 1;
++    }
++  printf ("%d is OK\n", res);
++  return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+Index: b/elf/tst-audit12mod1.c
+===================================================================
+--- /dev/null
++++ b/elf/tst-audit12mod1.c
+@@ -0,0 +1,24 @@
++/* DSO directly opened by tst-audit12.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++extern int f2 (void);
++int
++f1 (void)
++{
++  return f2 ();
++}
+Index: b/elf/tst-audit12mod2.c
+===================================================================
+--- /dev/null
++++ b/elf/tst-audit12mod2.c
+@@ -0,0 +1,23 @@
++/* Replaced DSO referenced by tst-audit12mod1.so, for tst-audit12.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++int
++f2 (void)
++{
++  return 42;
++}
+Index: b/elf/tst-audit12mod2.map
+===================================================================
+--- /dev/null
++++ b/elf/tst-audit12mod2.map
+@@ -0,0 +1,22 @@
++/* Symbol versioning for tst-audit12mod2.so used by tst-audit12.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++V1 {
++  global: f2;
++  local: *;
++};
+Index: b/elf/tst-audit12mod3.c
+===================================================================
+--- /dev/null
++++ b/elf/tst-audit12mod3.c
+@@ -0,0 +1,23 @@
++/* Replacement DSO loaded by the audit module, for tst-audit12.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++int
++f2 (void)
++{
++  return 43;
++}
+Index: b/elf/tst-auditmod11.c
+===================================================================
+--- /dev/null
++++ b/elf/tst-auditmod11.c
+@@ -0,0 +1,39 @@
++/* Audit module for tst-audit11.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <link.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++
++unsigned int
++la_version (unsigned int version)
++{
++  return version;
++}
++
++char *
++la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag)
++{
++  if (strcmp (name, "tst-audit11mod2.so") == 0)
++    {
++      return (char *) "$ORIGIN/tst-audit11mod2.so";
++    }
++  return (char *) name;
++}
+Index: b/elf/tst-auditmod12.c
+===================================================================
+--- /dev/null
++++ b/elf/tst-auditmod12.c
+@@ -0,0 +1,43 @@
++/* Audit module for tst-audit12.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <link.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++
++unsigned int
++la_version (unsigned int version)
++{
++  return version;
++}
++
++char *
++la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag)
++{
++  const char target[] = "tst-audit12mod2.so";
++
++  size_t namelen = strlen (name);
++  if (namelen >= sizeof (target) - 1
++      && strcmp (name + namelen - (sizeof (target) - 1), target) == 0)
++    {
++      return (char *) "$ORIGIN/tst-audit12mod3.so";
++    }
++  return (char *) name;
++}
+Index: b/sysdeps/mach/hurd/dl-sysdep.c
+===================================================================
+--- a/sysdeps/mach/hurd/dl-sysdep.c
++++ b/sysdeps/mach/hurd/dl-sysdep.c
+@@ -187,7 +187,7 @@ unfmh();			/* XXX */
+ 	    assert_perror (err);
+ 
+ 	    lastslash = strrchr (p, '/');
+-	    l = _dl_map_object_from_fd (lastslash ? lastslash + 1 : p,
++	    l = _dl_map_object_from_fd (lastslash ? lastslash + 1 : p, NULL,
+ 					memobj, strdup (p), 0);
+ 
+ 	    /* Squirrel away the memory object port where it
diff --git a/SOURCES/glibc-rh1211823.patch b/SOURCES/glibc-rh1211823.patch
new file mode 100644
index 0000000..007b7d7
--- /dev/null
+++ b/SOURCES/glibc-rh1211823.patch
@@ -0,0 +1,29005 @@
+commit f22bc486c1ce5e92380a0d06b98fbba639d170e4
+Author: Andreas Schwab <schwab@suse.de>
+Date:   Thu Jan 10 17:46:49 2013 +0100
+
+    Update BIG5-HKSCS charmap to HKSCS-2008
+
+diff --git a/iconvdata/BIG5HKSCS.irreversible b/iconvdata/BIG5HKSCS.irreversible
+index d873dfa..34a261e 100644
+--- a/iconvdata/BIG5HKSCS.irreversible
++++ b/iconvdata/BIG5HKSCS.irreversible
+@@ -1,5 +1,3 @@
+-0x8BF8	0x9F9C
+-0x957A	0x8728
+ 0xA27E	0x256D
+ 0xA2A1	0x256E
+ 0xA2A2	0x2570
+diff --git a/iconvdata/BIG5HKSCS.precomposed b/iconvdata/BIG5HKSCS.precomposed
+new file mode 100644
+index 0000000..3ebb1f5
+--- /dev/null
++++ b/iconvdata/BIG5HKSCS.precomposed
+@@ -0,0 +1,4 @@
++0x88A3	0x00EA 0x0304
++0x88A5	0x00EA 0x030C
++0x8862	0x00CA 0x0304
++0x8864	0x00CA 0x030C
+diff --git a/iconvdata/big5hkscs.c b/iconvdata/big5hkscs.c
+index 18e413d..5487323 100644
+--- a/iconvdata/big5hkscs.c
++++ b/iconvdata/big5hkscs.c
+@@ -29,8 +29,7 @@
+ /* Table for Big5 to UCS conversion.
+ 
+    With HKSCS mappings 0x8140-0xA0FE and 0xFA40-0xFEFE added; more info:
+-   http://www.digital21.gov.hk/eng/hkscs/index.html
+-     - spacehunt 07/01/2000
++   http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/hkscs/
+ 
+    Using the charmap:
+ 
+@@ -43,7 +42,7 @@
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    while (<>) {
+      local($big5, $ucs) = split;
+-     $big5 = hex($big5) - 0x8840;
++     $big5 = hex($big5) - 0x8740;
+      local($ridx) = int($big5 / 256) * 195 + $big5 % 256;
+      printf "\n " if (($n % 4) == 0);
+      ++$n;
+@@ -54,4545 +53,4621 @@
+ */
+ static const uint32_t big5hkscs_to_ucs[] =
+ {
+-  [    0] = 0xF303, [    1] = 0xF304, [    2] = 0xF305, [    3] = 0xF306,
+-  [    4] = 0xF307, [    5] = 0xF308, [    6] = 0xF309, [    7] = 0xF30A,
+-  [    8] = 0xF30B, [    9] = 0xF30C, [   10] = 0xF30D, [   11] = 0xF30E,
+-  [   12] = 0xF30F, [   13] = 0xF310, [   14] = 0xF311, [   15] = 0xF312,
+-  [   16] = 0xF313, [   17] = 0xF314, [   18] = 0xF315, [   19] = 0xF316,
+-  [   20] = 0xF317, [   21] = 0xF318, [   22] = 0x0100, [   23] = 0x00C1,
+-  [   24] = 0x01CD, [   25] = 0x00C0, [   26] = 0x0112, [   27] = 0x00C9,
+-  [   28] = 0x011A, [   29] = 0x00C8, [   30] = 0x014C, [   31] = 0x00D3,
+-  [   32] = 0x01D1, [   33] = 0x00D2, [   34] = 0xF325, [   35] = 0x1EBE,
+-  [   36] = 0xF327, [   37] = 0x1EC0, [   38] = 0x00CA, [   39] = 0x0101,
+-  [   40] = 0x00E1, [   41] = 0x01CE, [   42] = 0x00E0, [   43] = 0x0251,
+-  [   44] = 0x0113, [   45] = 0x00E9, [   46] = 0x011B, [   47] = 0x00E8,
+-  [   48] = 0x012B, [   49] = 0x00ED, [   50] = 0x01D0, [   51] = 0x00EC,
+-  [   52] = 0x014D, [   53] = 0x00F3, [   54] = 0x01D2, [   55] = 0x00F2,
+-  [   56] = 0x016B, [   57] = 0x00FA, [   58] = 0x01D4, [   59] = 0x00F9,
+-  [   60] = 0x01D6, [   61] = 0x01D8, [   62] = 0x01DA, [   97] = 0x01DC,
+-  [   98] = 0x00FC, [   99] = 0xF344, [  100] = 0x1EBF, [  101] = 0xF346,
+-  [  102] = 0x1EC1, [  103] = 0x00EA, [  104] = 0x0261, [  105] = 0xF34A,
+-  [  106] = 0xF34B, [  195] = 0x2A3A9, [  196] = 0xF3A1, [  198] = 0x650A,
+-  [  201] = 0x4E3D, [  202] = 0x6EDD, [  203] = 0x9D4E, [  204] = 0x91DF,
+-  [  207] = 0x27735, [  208] = 0x6491, [  209] = 0x4F1A, [  210] = 0x4F28,
+-  [  211] = 0x4FA8, [  212] = 0x5156, [  213] = 0x5174, [  214] = 0x519C,
+-  [  215] = 0x51E4, [  216] = 0x52A1, [  217] = 0x52A8, [  218] = 0x533B,
+-  [  219] = 0x534E, [  220] = 0x53D1, [  221] = 0x53D8, [  222] = 0x56E2,
+-  [  223] = 0x58F0, [  224] = 0x5904, [  225] = 0x5907, [  226] = 0x5932,
+-  [  227] = 0x5934, [  228] = 0x5B66, [  229] = 0x5B9E, [  230] = 0x5B9F,
+-  [  231] = 0x5C9A, [  232] = 0x5E86, [  233] = 0x603B, [  234] = 0x6589,
+-  [  235] = 0x67FE, [  236] = 0x6804, [  237] = 0x6865, [  238] = 0x6D4E,
+-  [  239] = 0x70BC, [  240] = 0x7535, [  241] = 0x7EA4, [  242] = 0x7EAC,
+-  [  243] = 0x7EBA, [  244] = 0x7EC7, [  245] = 0x7ECF, [  246] = 0x7EDF,
+-  [  247] = 0x7F06, [  248] = 0x7F37, [  249] = 0x827A, [  250] = 0x82CF,
+-  [  251] = 0x836F, [  252] = 0x89C6, [  253] = 0x8BBE, [  254] = 0x8BE2,
+-  [  255] = 0x8F66, [  256] = 0x8F67, [  257] = 0x8F6E, [  292] = 0x7411,
+-  [  293] = 0x7CFC, [  294] = 0x7DCD, [  295] = 0x6946, [  296] = 0x7AC9,
+-  [  297] = 0x5227, [  302] = 0x918C, [  303] = 0x78B8, [  304] = 0x915E,
+-  [  305] = 0x80BC, [  307] = 0x8D0B, [  308] = 0x80F6, [  309] = 0xF3F0,
+-  [  312] = 0x809F, [  313] = 0x9EC7, [  314] = 0x4CCD, [  315] = 0x9DC9,
+-  [  316] = 0x9E0C, [  317] = 0x4C3E, [  318] = 0xF3F9, [  319] = 0x2700E,
+-  [  320] = 0x9E0A, [  321] = 0xF3FC, [  322] = 0x35C1, [  324] = 0x6E9A,
+-  [  325] = 0x823E, [  326] = 0x7519, [  328] = 0x4911, [  329] = 0x9A6C,
+-  [  330] = 0x9A8F, [  331] = 0x9F99, [  332] = 0x7987, [  333] = 0xF408,
+-  [  334] = 0x21DCA, [  335] = 0x205D0, [  336] = 0xF40B, [  337] = 0x4E24,
+-  [  338] = 0x4E81, [  339] = 0x4E80, [  340] = 0x4E87, [  341] = 0x4EBF,
+-  [  342] = 0x4EEB, [  343] = 0x4F37, [  344] = 0x344C, [  345] = 0x4FBD,
+-  [  346] = 0x3E48, [  347] = 0x5003, [  348] = 0x5088, [  349] = 0x347D,
+-  [  350] = 0x3493, [  351] = 0x34A5, [  352] = 0x5186, [  353] = 0x5905,
+-  [  354] = 0x51DB, [  355] = 0x51FC, [  356] = 0x5205, [  357] = 0x4E89,
+-  [  358] = 0x5279, [  359] = 0x5290, [  360] = 0x5327, [  361] = 0x35C7,
+-  [  362] = 0x53A9, [  363] = 0x3551, [  364] = 0x53B0, [  365] = 0x3553,
+-  [  366] = 0x53C2, [  367] = 0x5423, [  368] = 0x356D, [  369] = 0x3572,
+-  [  370] = 0x3681, [  371] = 0x5493, [  372] = 0x54A3, [  373] = 0x54B4,
+-  [  374] = 0x54B9, [  375] = 0x54D0, [  376] = 0x54EF, [  377] = 0x5518,
+-  [  378] = 0x5523, [  379] = 0x5528, [  380] = 0x3598, [  381] = 0x553F,
+-  [  382] = 0x35A5, [  383] = 0x35BF, [  384] = 0x55D7, [  385] = 0x35C5,
+-  [  390] = 0xF43D, [  391] = 0x5525, [  393] = 0x20C42, [  394] = 0xF441,
+-  [  395] = 0xF442, [  396] = 0x5590, [  397] = 0x22CC6, [  398] = 0x39EC,
+-  [  399] = 0x20341, [  400] = 0x8E46, [  401] = 0x24DB8, [  402] = 0xF449,
+-  [  403] = 0x4053, [  404] = 0x280BE, [  405] = 0x777A, [  406] = 0xF44D,
+-  [  407] = 0x3A34, [  408] = 0x47D5, [  409] = 0xF450, [  410] = 0x269F2,
+-  [  411] = 0x24DEA, [  412] = 0x64DD, [  413] = 0xF454, [  414] = 0x20FB4,
+-  [  415] = 0x20CD5, [  416] = 0x210F4, [  417] = 0x648D, [  418] = 0x8E7E,
+-  [  419] = 0xF45A, [  420] = 0xF45B, [  421] = 0xF45C, [  422] = 0xF45D,
+-  [  423] = 0x28256, [  424] = 0x244D3, [  426] = 0x20D46, [  427] = 0xF462,
+-  [  428] = 0x280E9, [  429] = 0x47F4, [  430] = 0xF465, [  431] = 0xF466,
+-  [  432] = 0x9AB2, [  433] = 0x3A67, [  434] = 0xF469, [  435] = 0x3FED,
+-  [  436] = 0x3506, [  437] = 0x252C7, [  438] = 0xF46D, [  439] = 0xF46E,
+-  [  440] = 0xF46F, [  441] = 0x9D6E, [  442] = 0x9815, [  444] = 0x43D9,
+-  [  445] = 0x260A5, [  446] = 0x64B4, [  447] = 0x54E3, [  448] = 0xF477,
+-  [  449] = 0xF478, [  450] = 0x21077, [  451] = 0x39FB, [  452] = 0x2106F,
+-  [  487] = 0xF47C, [  488] = 0xF47D, [  489] = 0xF47E, [  490] = 0x64EA,
+-  [  491] = 0xF480, [  492] = 0x20C43, [  493] = 0x8E68, [  494] = 0x221A1,
+-  [  495] = 0x28B4C, [  496] = 0xF485, [  498] = 0x480B, [  499] = 0xF488,
+-  [  500] = 0x3FFA, [  501] = 0x5873, [  502] = 0xF48B, [  504] = 0xF48D,
+-  [  505] = 0x204FC, [  506] = 0xF48F, [  507] = 0xF490, [  508] = 0xF491,
+-  [  509] = 0x5579, [  510] = 0x40BB, [  511] = 0x43BA, [  513] = 0x4AB4,
+-  [  514] = 0xF497, [  515] = 0xF498, [  516] = 0x81AA, [  517] = 0x98F5,
+-  [  518] = 0xF49B, [  519] = 0x6379, [  520] = 0x39FE, [  521] = 0x22775,
+-  [  522] = 0x8DC0, [  523] = 0x56A1, [  524] = 0x647C, [  525] = 0x3E43,
+-  [  527] = 0xF4A4, [  528] = 0x20E09, [  529] = 0x22ACF, [  530] = 0xF4A7,
+-  [  532] = 0x210C8, [  533] = 0xF4AA, [  534] = 0x3992, [  535] = 0x3A06,
+-  [  536] = 0xF4AD, [  537] = 0x3578, [  538] = 0xF4AF, [  539] = 0x220C7,
+-  [  540] = 0x5652, [  541] = 0x20F31, [  542] = 0xF4B3, [  543] = 0xF4B4,
+-  [  544] = 0x34BC, [  545] = 0x6C3D, [  546] = 0xF4B7, [  549] = 0xF4BA,
+-  [  550] = 0xF4BB, [  551] = 0xF4BC, [  552] = 0xF4BD, [  553] = 0x28CCD,
+-  [  554] = 0x20E7A, [  555] = 0xF4C0, [  556] = 0xF4C1, [  557] = 0x7F93,
+-  [  558] = 0xF4C3, [  559] = 0x22803, [  560] = 0x22939, [  561] = 0x35FB,
+-  [  562] = 0x251E3, [  563] = 0xF4C8, [  564] = 0x20F8D, [  565] = 0x20EAA,
+-  [  566] = 0x3F93, [  567] = 0x20F30, [  568] = 0x20D47, [  569] = 0xF4CE,
+-  [  570] = 0xF4CF, [  572] = 0x20EAB, [  573] = 0xF4D2, [  574] = 0x20D48,
+-  [  575] = 0x210C0, [  576] = 0x2113D, [  577] = 0x3FF9, [  578] = 0x22696,
+-  [  579] = 0x6432, [  580] = 0x20FAD, [  585] = 0x233F4, [  586] = 0x27639,
+-  [  587] = 0x22BCE, [  588] = 0x20D7E, [  589] = 0x20D7F, [  590] = 0x22C51,
+-  [  591] = 0x22C55, [  592] = 0x3A18, [  593] = 0xF4E2, [  594] = 0x210C7,
+-  [  595] = 0x20F2E, [  596] = 0xF4E5, [  597] = 0x26B50, [  598] = 0xF4E7,
+-  [  599] = 0xF4E8, [  600] = 0xF4E9, [  601] = 0x95AA, [  602] = 0x54CC,
+-  [  603] = 0x82C4, [  604] = 0x55B9, [  606] = 0x29EC3, [  607] = 0x9C26,
+-  [  608] = 0x9AB6, [  609] = 0x2775E, [  610] = 0xF4F3, [  611] = 0x7140,
+-  [  612] = 0x816D, [  613] = 0x80EC, [  614] = 0x5C1C, [  615] = 0x26572,
+-  [  616] = 0x8134, [  617] = 0x3797, [  618] = 0x535F, [  619] = 0x280BD,
+-  [  620] = 0x91B6, [  621] = 0x20EFA, [  622] = 0x20E0F, [  623] = 0x20E77,
+-  [  624] = 0x20EFB, [  625] = 0x35DD, [  626] = 0x24DEB, [  627] = 0x3609,
+-  [  628] = 0x20CD6, [  629] = 0x56AF, [  630] = 0x227B5, [  631] = 0x210C9,
+-  [  632] = 0x20E10, [  633] = 0x20E78, [  634] = 0x21078, [  635] = 0x21148,
+-  [  636] = 0x28207, [  637] = 0x21455, [  638] = 0x20E79, [  639] = 0x24E50,
+-  [  640] = 0x22DA4, [  641] = 0x5A54, [  642] = 0x2101D, [  643] = 0x2101E,
+-  [  644] = 0x210F5, [  645] = 0x210F6, [  646] = 0x579C, [  647] = 0x20E11,
+-  [  682] = 0x27694, [  683] = 0x282CD, [  684] = 0x20FB5, [  685] = 0x20E7B,
+-  [  686] = 0x2517E, [  687] = 0x3703, [  688] = 0x20FB6, [  689] = 0x21180,
+-  [  690] = 0x252D8, [  691] = 0xF522, [  692] = 0xF523, [  693] = 0x2183A,
+-  [  694] = 0xF525, [  695] = 0xF526, [  696] = 0x5899, [  697] = 0x5268,
+-  [  698] = 0x361A, [  699] = 0xF52A, [  700] = 0x7BB2, [  701] = 0x5B68,
+-  [  702] = 0x4800, [  703] = 0x4B2C, [  704] = 0x9F27, [  705] = 0x49E7,
+-  [  706] = 0x9C1F, [  707] = 0x9B8D, [  708] = 0x25B74, [  709] = 0x2313D,
+-  [  710] = 0x55FB, [  711] = 0x35F2, [  712] = 0x5689, [  713] = 0x4E28,
+-  [  714] = 0x5902, [  715] = 0xF53A, [  716] = 0xF53B, [  717] = 0x9751,
+-  [  718] = 0xF53D, [  719] = 0x4E5B, [  720] = 0x4EBB, [  721] = 0x353E,
+-  [  722] = 0x5C23, [  723] = 0x5F51, [  724] = 0x5FC4, [  725] = 0x38FA,
+-  [  726] = 0x624C, [  727] = 0x6535, [  728] = 0x6B7A, [  729] = 0x6C35,
+-  [  730] = 0x6C3A, [  731] = 0x706C, [  732] = 0x722B, [  733] = 0x4E2C,
+-  [  734] = 0x72AD, [  735] = 0xF54E, [  736] = 0x7F52, [  737] = 0x793B,
+-  [  738] = 0x7CF9, [  739] = 0x7F53, [  740] = 0xF553, [  741] = 0x34C1,
+-  [  743] = 0xF556, [  744] = 0x8002, [  745] = 0x8080, [  746] = 0xF559,
+-  [  747] = 0xF55A, [  748] = 0x535D, [  749] = 0x8864, [  750] = 0x89C1,
+-  [  751] = 0xF55E, [  752] = 0x8BA0, [  753] = 0x8D1D, [  754] = 0x9485,
+-  [  755] = 0x9578, [  756] = 0x957F, [  757] = 0x95E8, [  758] = 0xF565,
+-  [  759] = 0x97E6, [  760] = 0x9875, [  761] = 0x98CE, [  762] = 0x98DE,
+-  [  763] = 0x9963, [  764] = 0xF56B, [  765] = 0x9C7C, [  766] = 0x9E1F,
+-  [  767] = 0x9EC4, [  768] = 0x6B6F, [  769] = 0x9F9C, [  770] = 0x4E37,
+-  [  771] = 0xF572, [  772] = 0x961D, [  773] = 0x6237, [  774] = 0x94A2,
+-  [ 1007] = 0x5D3E, [ 1008] = 0x5D48, [ 1009] = 0x5D56, [ 1010] = 0x3DFC,
+-  [ 1011] = 0x380F, [ 1012] = 0x5DA4, [ 1013] = 0x5DB9, [ 1014] = 0x3820,
+-  [ 1015] = 0x3838, [ 1016] = 0x5E42, [ 1017] = 0x5EBD, [ 1018] = 0x5F25,
+-  [ 1019] = 0x5F83, [ 1020] = 0x3908, [ 1021] = 0x3914, [ 1022] = 0x393F,
+-  [ 1023] = 0x394D, [ 1024] = 0x60D7, [ 1025] = 0x613D, [ 1026] = 0x5CE5,
+-  [ 1027] = 0x3989, [ 1028] = 0x61B7, [ 1029] = 0x61B9, [ 1030] = 0x61CF,
+-  [ 1031] = 0x39B8, [ 1032] = 0x622C, [ 1033] = 0x6290, [ 1034] = 0x62E5,
+-  [ 1035] = 0x6318, [ 1036] = 0x39F8, [ 1037] = 0x56B1, [ 1072] = 0x3A03,
+-  [ 1073] = 0x63E2, [ 1074] = 0x63FB, [ 1075] = 0x6407, [ 1076] = 0x645A,
+-  [ 1077] = 0x3A4B, [ 1078] = 0x64C0, [ 1079] = 0x5D15, [ 1080] = 0x5621,
+-  [ 1081] = 0x9F9F, [ 1082] = 0x3A97, [ 1083] = 0x6586, [ 1084] = 0x3ABD,
+-  [ 1085] = 0x65FF, [ 1086] = 0x6653, [ 1087] = 0x3AF2, [ 1088] = 0x6692,
+-  [ 1089] = 0x3B22, [ 1090] = 0x6716, [ 1091] = 0x3B42, [ 1092] = 0x67A4,
+-  [ 1093] = 0x6800, [ 1094] = 0x3B58, [ 1095] = 0x684A, [ 1096] = 0x6884,
+-  [ 1097] = 0x3B72, [ 1098] = 0x3B71, [ 1099] = 0x3B7B, [ 1100] = 0x6909,
+-  [ 1101] = 0x6943, [ 1102] = 0x725C, [ 1103] = 0x6964, [ 1104] = 0x699F,
+-  [ 1105] = 0x6985, [ 1106] = 0x3BBC, [ 1107] = 0x69D6, [ 1108] = 0x3BDD,
+-  [ 1109] = 0x6A65, [ 1110] = 0x6A74, [ 1111] = 0x6A71, [ 1112] = 0x6A82,
+-  [ 1113] = 0x3BEC, [ 1114] = 0x6A99, [ 1115] = 0x3BF2, [ 1116] = 0x6AAB,
+-  [ 1117] = 0x6AB5, [ 1118] = 0x6AD4, [ 1119] = 0x6AF6, [ 1120] = 0x6B81,
+-  [ 1121] = 0x6BC1, [ 1122] = 0x6BEA, [ 1123] = 0x6C75, [ 1124] = 0x6CAA,
+-  [ 1125] = 0x3CCB, [ 1126] = 0x6D02, [ 1127] = 0x6D06, [ 1128] = 0x6D26,
+-  [ 1129] = 0x6D81, [ 1130] = 0x3CEF, [ 1131] = 0x6DA4, [ 1132] = 0x6DB1,
+-  [ 1133] = 0x6E15, [ 1134] = 0x6E18, [ 1135] = 0x6E29, [ 1136] = 0x6E86,
+-  [ 1137] = 0x289C0, [ 1138] = 0x6EBB, [ 1139] = 0x6EE2, [ 1140] = 0x6EDA,
+-  [ 1141] = 0x9F7F, [ 1142] = 0x6EE8, [ 1143] = 0x6EE9, [ 1144] = 0x6F24,
+-  [ 1145] = 0x6F34, [ 1146] = 0x3D46, [ 1147] = 0x23F41, [ 1148] = 0x6F81,
+-  [ 1149] = 0x6FBE, [ 1150] = 0x3D6A, [ 1151] = 0x3D75, [ 1152] = 0x71B7,
+-  [ 1153] = 0x5C99, [ 1154] = 0x3D8A, [ 1155] = 0x702C, [ 1156] = 0x3D91,
+-  [ 1157] = 0x7050, [ 1158] = 0x7054, [ 1159] = 0x706F, [ 1160] = 0x707F,
+-  [ 1161] = 0x7089, [ 1162] = 0x20325, [ 1163] = 0x43C1, [ 1164] = 0x35F1,
+-  [ 1165] = 0xF6B0, [ 1170] = 0xE311, [ 1171] = 0x57BE, [ 1172] = 0x26ED3,
+-  [ 1173] = 0x713E, [ 1174] = 0x257E0, [ 1175] = 0x364E, [ 1176] = 0x69A2,
+-  [ 1177] = 0x28BE9, [ 1178] = 0x5B74, [ 1179] = 0x7A49, [ 1180] = 0x258E1,
+-  [ 1181] = 0x294D9, [ 1182] = 0x7A65, [ 1183] = 0x7A7D, [ 1184] = 0x259AC,
+-  [ 1185] = 0x7ABB, [ 1186] = 0x7AB0, [ 1187] = 0x7AC2, [ 1188] = 0x7AC3,
+-  [ 1189] = 0x71D1, [ 1190] = 0xE325, [ 1191] = 0x41CA, [ 1192] = 0x7ADA,
+-  [ 1193] = 0x7ADD, [ 1194] = 0x7AEA, [ 1195] = 0x41EF, [ 1196] = 0x54B2,
+-  [ 1197] = 0x25C01, [ 1198] = 0x7B0B, [ 1199] = 0x7B55, [ 1200] = 0x7B29,
+-  [ 1201] = 0xE330, [ 1202] = 0x25CFE, [ 1203] = 0x7BA2, [ 1204] = 0x7B6F,
+-  [ 1205] = 0x839C, [ 1206] = 0x25BB4, [ 1207] = 0x26C7F, [ 1208] = 0x7BD0,
+-  [ 1209] = 0x8421, [ 1210] = 0x7B92, [ 1212] = 0x23FF0, [ 1213] = 0x3DAD,
+-  [ 1214] = 0x25C65, [ 1215] = 0x8492, [ 1216] = 0x7BFA, [ 1218] = 0x7C35,
+-  [ 1219] = 0x25CC1, [ 1220] = 0x7C44, [ 1221] = 0x7C83, [ 1222] = 0xE345,
+-  [ 1223] = 0x7CA6, [ 1224] = 0x667D, [ 1225] = 0x24578, [ 1226] = 0x7CC9,
+-  [ 1227] = 0x7CC7, [ 1228] = 0x7CE6, [ 1229] = 0x7C74, [ 1230] = 0x7CF3,
+-  [ 1231] = 0x7CF5, [ 1267] = 0x7E67, [ 1268] = 0x451D, [ 1269] = 0x26E44,
+-  [ 1270] = 0x7D5D, [ 1271] = 0x26ED6, [ 1272] = 0x748D, [ 1273] = 0x7D89,
+-  [ 1274] = 0x7DAB, [ 1275] = 0x7135, [ 1276] = 0x7DB3, [ 1278] = 0x24057,
+-  [ 1279] = 0x26029, [ 1280] = 0x7DE4, [ 1281] = 0x3D13, [ 1282] = 0x7DF5,
+-  [ 1283] = 0x217F9, [ 1284] = 0x7DE5, [ 1285] = 0xE362, [ 1287] = 0x26121,
+-  [ 1288] = 0x2615A, [ 1289] = 0x7E6E, [ 1290] = 0x7E92, [ 1291] = 0x432B,
+-  [ 1292] = 0x946C, [ 1293] = 0x7E27, [ 1294] = 0x7F40, [ 1295] = 0x7F41,
+-  [ 1296] = 0x7F47, [ 1297] = 0x7936, [ 1298] = 0x262D0, [ 1299] = 0x99E1,
+-  [ 1300] = 0x7F97, [ 1301] = 0x26351, [ 1302] = 0x7FA3, [ 1303] = 0x21661,
+-  [ 1304] = 0x20068, [ 1305] = 0x455C, [ 1306] = 0x23766, [ 1307] = 0x4503,
+-  [ 1308] = 0x2833A, [ 1309] = 0x7FFA, [ 1310] = 0x26489, [ 1312] = 0x8008,
+-  [ 1313] = 0x801D, [ 1315] = 0x802F, [ 1316] = 0xE381, [ 1317] = 0xE382,
+-  [ 1318] = 0x803B, [ 1319] = 0x803C, [ 1320] = 0x8061, [ 1321] = 0xE386,
+-  [ 1322] = 0x4989, [ 1323] = 0x26626, [ 1324] = 0xE389, [ 1325] = 0x266E8,
+-  [ 1326] = 0x6725, [ 1327] = 0x80A7, [ 1328] = 0x28A48, [ 1329] = 0x8107,
+-  [ 1330] = 0x811A, [ 1331] = 0x58B0, [ 1332] = 0x226F6, [ 1333] = 0x6C7F,
+-  [ 1334] = 0x26498, [ 1335] = 0xE394, [ 1336] = 0x64E7, [ 1337] = 0xE396,
+-  [ 1338] = 0x8218, [ 1339] = 0x2185E, [ 1340] = 0x6A53, [ 1341] = 0x24A65,
+-  [ 1342] = 0x24A95, [ 1343] = 0x447A, [ 1344] = 0x8229, [ 1345] = 0xE39E,
+-  [ 1346] = 0x26A52, [ 1347] = 0xE3A0, [ 1348] = 0x4FF9, [ 1349] = 0x214FD,
+-  [ 1350] = 0x84E2, [ 1351] = 0x8362, [ 1352] = 0x26B0A, [ 1353] = 0x249A7,
+-  [ 1354] = 0x23530, [ 1355] = 0x21773, [ 1356] = 0x23DF8, [ 1357] = 0x82AA,
+-  [ 1358] = 0x691B, [ 1359] = 0x2F994, [ 1360] = 0x41DB, [ 1365] = 0x854B,
+-  [ 1366] = 0x82D0, [ 1367] = 0x831A, [ 1368] = 0x20E16, [ 1369] = 0x217B4,
+-  [ 1370] = 0x36C1, [ 1371] = 0xE3B4, [ 1372] = 0x2355A, [ 1373] = 0x827B,
+-  [ 1374] = 0x82E2, [ 1375] = 0x8318, [ 1376] = 0x23E8B, [ 1377] = 0x26DA3,
+-  [ 1378] = 0xE3BB, [ 1379] = 0x26B97, [ 1380] = 0x235CE, [ 1381] = 0x3DBF,
+-  [ 1382] = 0x831D, [ 1383] = 0x55EC, [ 1384] = 0x8385, [ 1385] = 0x450B,
+-  [ 1386] = 0x26DA5, [ 1387] = 0x83AC, [ 1389] = 0x83D3, [ 1390] = 0x347E,
+-  [ 1391] = 0x26ED4, [ 1392] = 0x6A57, [ 1393] = 0x855A, [ 1394] = 0x3496,
+-  [ 1395] = 0x26E42, [ 1396] = 0xE3CD, [ 1397] = 0x8458, [ 1398] = 0xE3CF,
+-  [ 1399] = 0x8471, [ 1400] = 0x3DD3, [ 1401] = 0x44E4, [ 1402] = 0x6AA7,
+-  [ 1403] = 0x844A, [ 1404] = 0xE3D5, [ 1405] = 0x7958, [ 1407] = 0x26B96,
+-  [ 1408] = 0x26E77, [ 1409] = 0x26E43, [ 1410] = 0x84DE, [ 1412] = 0x8391,
+-  [ 1413] = 0x44A0, [ 1414] = 0x8493, [ 1415] = 0x84E4, [ 1416] = 0xE3E1,
+-  [ 1417] = 0x4240, [ 1418] = 0x25CC0, [ 1419] = 0x4543, [ 1420] = 0x8534,
+-  [ 1421] = 0x5AF2, [ 1422] = 0xE3E7, [ 1423] = 0x4527, [ 1424] = 0x8573,
+-  [ 1425] = 0x4516, [ 1426] = 0x67BF, [ 1427] = 0x8616, [ 1462] = 0x28625,
+-  [ 1463] = 0x2863B, [ 1464] = 0x85C1, [ 1465] = 0xE3F0, [ 1466] = 0x8602,
+-  [ 1467] = 0xE3F2, [ 1468] = 0x270CD, [ 1469] = 0xE3F4, [ 1470] = 0x456A,
+-  [ 1471] = 0x8628, [ 1472] = 0x3648, [ 1473] = 0x218A2, [ 1474] = 0x53F7,
+-  [ 1475] = 0x2739A, [ 1476] = 0x867E, [ 1477] = 0x8771, [ 1478] = 0x2A0F8,
+-  [ 1479] = 0x87EE, [ 1480] = 0x22C27, [ 1481] = 0x87B1, [ 1482] = 0x87DA,
+-  [ 1483] = 0x880F, [ 1484] = 0x5661, [ 1485] = 0x866C, [ 1486] = 0x6856,
+-  [ 1487] = 0x460F, [ 1488] = 0x8845, [ 1489] = 0x8846, [ 1490] = 0x275E0,
+-  [ 1491] = 0x23DB9, [ 1492] = 0x275E4, [ 1493] = 0x885E, [ 1494] = 0x889C,
+-  [ 1495] = 0x465B, [ 1496] = 0x88B4, [ 1497] = 0x88B5, [ 1498] = 0x63C1,
+-  [ 1499] = 0x88C5, [ 1500] = 0x7777, [ 1501] = 0x2770F, [ 1502] = 0x8987,
+-  [ 1503] = 0x898A, [ 1506] = 0x89A7, [ 1507] = 0x89BC, [ 1508] = 0x28A25,
+-  [ 1509] = 0x89E7, [ 1510] = 0x27924, [ 1511] = 0x27ABD, [ 1512] = 0x8A9C,
+-  [ 1513] = 0x7793, [ 1514] = 0x91FE, [ 1515] = 0x8A90, [ 1516] = 0x27A59,
+-  [ 1517] = 0x7AE9, [ 1518] = 0x27B3A, [ 1519] = 0xE426, [ 1520] = 0x4713,
+-  [ 1521] = 0x27B38, [ 1522] = 0x717C, [ 1523] = 0x8B0C, [ 1524] = 0x8B1F,
+-  [ 1525] = 0x25430, [ 1526] = 0x25565, [ 1527] = 0x8B3F, [ 1528] = 0x8B4C,
+-  [ 1529] = 0x8B4D, [ 1530] = 0x8AA9, [ 1531] = 0x24A7A, [ 1532] = 0x8B90,
+-  [ 1533] = 0x8B9B, [ 1534] = 0x8AAF, [ 1535] = 0xE436, [ 1536] = 0x4615,
+-  [ 1537] = 0x884F, [ 1538] = 0x8C9B, [ 1539] = 0x27D54, [ 1540] = 0x27D8F,
+-  [ 1541] = 0x2F9D4, [ 1542] = 0x3725, [ 1543] = 0x27D53, [ 1544] = 0x8CD6,
+-  [ 1545] = 0x27D98, [ 1546] = 0x27DBD, [ 1547] = 0x8D12, [ 1548] = 0x8D03,
+-  [ 1549] = 0x21910, [ 1550] = 0x8CDB, [ 1551] = 0x705C, [ 1552] = 0x8D11,
+-  [ 1553] = 0xE448, [ 1554] = 0x3ED0, [ 1560] = 0x8DA9, [ 1561] = 0x28002,
+-  [ 1562] = 0xE44D, [ 1563] = 0x2498A, [ 1564] = 0x3B7C, [ 1565] = 0xE450,
+-  [ 1566] = 0x2710C, [ 1567] = 0x7AE7, [ 1568] = 0x8EAD, [ 1569] = 0x8EB6,
+-  [ 1570] = 0x8EC3, [ 1571] = 0x92D4, [ 1572] = 0x8F19, [ 1573] = 0x8F2D,
+-  [ 1574] = 0x28365, [ 1575] = 0x28412, [ 1576] = 0x8FA5, [ 1577] = 0x9303,
+-  [ 1578] = 0x2A29F, [ 1579] = 0x20A50, [ 1580] = 0x8FB3, [ 1581] = 0x492A,
+-  [ 1582] = 0x289DE, [ 1583] = 0x2853D, [ 1584] = 0x23DBB, [ 1585] = 0x5EF8,
+-  [ 1586] = 0x23262, [ 1587] = 0x8FF9, [ 1588] = 0xE467, [ 1589] = 0xE468,
+-  [ 1590] = 0xE469, [ 1591] = 0x22325, [ 1592] = 0x3980, [ 1593] = 0x26ED7,
+-  [ 1594] = 0x9037, [ 1595] = 0x2853C, [ 1596] = 0x27ABE, [ 1597] = 0x9061,
+-  [ 1598] = 0x2856C, [ 1599] = 0x2860B, [ 1600] = 0x90A8, [ 1601] = 0xE474,
+-  [ 1602] = 0x90C4, [ 1603] = 0x286E6, [ 1604] = 0x90AE, [ 1606] = 0x9167,
+-  [ 1607] = 0x3AF0, [ 1608] = 0x91A9, [ 1609] = 0x91C4, [ 1610] = 0x7CAC,
+-  [ 1611] = 0x28933, [ 1612] = 0x21E89, [ 1613] = 0x920E, [ 1614] = 0x6C9F,
+-  [ 1615] = 0x9241, [ 1616] = 0x9262, [ 1617] = 0x255B9, [ 1619] = 0x28AC6,
+-  [ 1620] = 0x23C9B, [ 1621] = 0x28B0C, [ 1622] = 0x255DB, [ 1657] = 0xE48A,
+-  [ 1658] = 0x932C, [ 1659] = 0x936B, [ 1660] = 0x28AE1, [ 1661] = 0x28BEB,
+-  [ 1662] = 0x708F, [ 1663] = 0x5AC3, [ 1664] = 0x28AE2, [ 1665] = 0x28AE5,
+-  [ 1666] = 0x4965, [ 1667] = 0x9244, [ 1668] = 0x28BEC, [ 1669] = 0x28C39,
+-  [ 1670] = 0x28BFF, [ 1671] = 0x9373, [ 1672] = 0x945B, [ 1673] = 0x8EBC,
+-  [ 1674] = 0x9585, [ 1675] = 0x95A6, [ 1676] = 0x9426, [ 1677] = 0x95A0,
+-  [ 1678] = 0x6FF6, [ 1679] = 0x42B9, [ 1680] = 0xE4A1, [ 1681] = 0x286D8,
+-  [ 1682] = 0x2127C, [ 1683] = 0x23E2E, [ 1684] = 0x49DF, [ 1685] = 0x6C1C,
+-  [ 1686] = 0x967B, [ 1687] = 0x9696, [ 1688] = 0x416C, [ 1689] = 0x96A3,
+-  [ 1690] = 0x26ED5, [ 1691] = 0x61DA, [ 1692] = 0x96B6, [ 1693] = 0x78F5,
+-  [ 1694] = 0x28AE0, [ 1695] = 0x96BD, [ 1696] = 0x53CC, [ 1697] = 0x49A1,
+-  [ 1698] = 0x26CB8, [ 1699] = 0x20274, [ 1700] = 0x26410, [ 1701] = 0x290AF,
+-  [ 1702] = 0x290E5, [ 1703] = 0x24AD1, [ 1704] = 0x21915, [ 1705] = 0x2330A,
+-  [ 1706] = 0x9731, [ 1707] = 0x8642, [ 1708] = 0x9736, [ 1709] = 0x4A0F,
+-  [ 1710] = 0x453D, [ 1711] = 0x4585, [ 1712] = 0xE4C1, [ 1713] = 0x7075,
+-  [ 1714] = 0x5B41, [ 1715] = 0x971B, [ 1717] = 0xE4C6, [ 1718] = 0x9757,
+-  [ 1719] = 0x5B4A, [ 1720] = 0x291EB, [ 1721] = 0x975F, [ 1722] = 0x9425,
+-  [ 1723] = 0x50D0, [ 1724] = 0x230B7, [ 1725] = 0x230BC, [ 1726] = 0x9789,
+-  [ 1727] = 0x979F, [ 1728] = 0x97B1, [ 1729] = 0x97BE, [ 1730] = 0x97C0,
+-  [ 1731] = 0x97D2, [ 1732] = 0x97E0, [ 1733] = 0x2546C, [ 1734] = 0x97EE,
+-  [ 1735] = 0x741C, [ 1736] = 0x29433, [ 1738] = 0x97F5, [ 1739] = 0x2941D,
+-  [ 1740] = 0xE4DD, [ 1741] = 0x4AD1, [ 1742] = 0x9834, [ 1743] = 0x9833,
+-  [ 1744] = 0x984B, [ 1745] = 0x9866, [ 1746] = 0x3B0E, [ 1747] = 0x27175,
+-  [ 1748] = 0x3D51, [ 1749] = 0x20630, [ 1750] = 0x2415C, [ 1755] = 0x25706,
+-  [ 1756] = 0x98CA, [ 1757] = 0x98B7, [ 1758] = 0x98C8, [ 1759] = 0x98C7,
+-  [ 1760] = 0x4AFF, [ 1761] = 0x26D27, [ 1762] = 0x216D3, [ 1763] = 0x55B0,
+-  [ 1764] = 0x98E1, [ 1765] = 0x98E6, [ 1766] = 0x98EC, [ 1767] = 0x9378,
+-  [ 1768] = 0x9939, [ 1769] = 0x24A29, [ 1770] = 0x4B72, [ 1771] = 0x29857,
+-  [ 1772] = 0x29905, [ 1773] = 0x99F5, [ 1774] = 0x9A0C, [ 1775] = 0x9A3B,
+-  [ 1776] = 0x9A10, [ 1777] = 0x9A58, [ 1778] = 0x25725, [ 1779] = 0x36C4,
+-  [ 1780] = 0x290B1, [ 1781] = 0x29BD5, [ 1782] = 0x9AE0, [ 1783] = 0x9AE2,
+-  [ 1784] = 0x29B05, [ 1785] = 0x9AF4, [ 1786] = 0x4C0E, [ 1787] = 0x9B14,
+-  [ 1788] = 0x9B2D, [ 1789] = 0x28600, [ 1790] = 0x5034, [ 1791] = 0x9B34,
+-  [ 1792] = 0x269A8, [ 1793] = 0x38C3, [ 1794] = 0x2307D, [ 1795] = 0x9B50,
+-  [ 1796] = 0x9B40, [ 1797] = 0x29D3E, [ 1798] = 0x5A45, [ 1799] = 0x21863,
+-  [ 1800] = 0x9B8E, [ 1801] = 0x2424B, [ 1802] = 0x9C02, [ 1803] = 0x9BFF,
+-  [ 1804] = 0x9C0C, [ 1805] = 0x29E68, [ 1806] = 0x9DD4, [ 1807] = 0x29FB7,
+-  [ 1808] = 0x2A192, [ 1809] = 0xE51E, [ 1810] = 0x2A0E1, [ 1811] = 0x2A123,
+-  [ 1812] = 0x2A1DF, [ 1813] = 0x9D7E, [ 1814] = 0x9D83, [ 1815] = 0xE524,
+-  [ 1816] = 0x9E0E, [ 1817] = 0x6888, [ 1852] = 0x9DC4, [ 1853] = 0xE528,
+-  [ 1854] = 0x2A193, [ 1855] = 0x2A220, [ 1856] = 0x2193B, [ 1857] = 0x2A233,
+-  [ 1858] = 0x9D39, [ 1859] = 0xE52E, [ 1860] = 0xE52F, [ 1861] = 0x9E90,
+-  [ 1862] = 0x9E95, [ 1863] = 0x9E9E, [ 1864] = 0x9EA2, [ 1865] = 0x4D34,
+-  [ 1866] = 0x9EAA, [ 1867] = 0x9EAF, [ 1868] = 0x24364, [ 1869] = 0x9EC1,
+-  [ 1870] = 0x3B60, [ 1871] = 0x39E5, [ 1872] = 0x3D1D, [ 1873] = 0x4F32,
+-  [ 1874] = 0x37BE, [ 1875] = 0x28C2B, [ 1876] = 0x9F02, [ 1877] = 0x9F08,
+-  [ 1878] = 0x4B96, [ 1879] = 0x9424, [ 1880] = 0x26DA2, [ 1881] = 0x9F17,
+-  [ 1883] = 0x9F39, [ 1884] = 0x569F, [ 1885] = 0x568A, [ 1886] = 0x9F45,
+-  [ 1887] = 0x99B8, [ 1888] = 0x2908B, [ 1889] = 0x97F2, [ 1890] = 0x847F,
+-  [ 1891] = 0x9F62, [ 1892] = 0x9F69, [ 1893] = 0x7ADC, [ 1894] = 0x9F8E,
+-  [ 1895] = 0x7216, [ 1896] = 0x4BBE, [ 1897] = 0x24975, [ 1898] = 0x249BB,
+-  [ 1899] = 0x7177, [ 1900] = 0x249F8, [ 1901] = 0x24348, [ 1902] = 0x24A51,
+-  [ 1903] = 0x739E, [ 1904] = 0x28BDA, [ 1905] = 0x218FA, [ 1906] = 0x799F,
+-  [ 1907] = 0x2897E, [ 1908] = 0x28E36, [ 1909] = 0x9369, [ 1910] = 0x93F3,
+-  [ 1911] = 0x28A44, [ 1912] = 0x92EC, [ 1913] = 0x9381, [ 1914] = 0x93CB,
+-  [ 1915] = 0x2896C, [ 1916] = 0x244B9, [ 1917] = 0x7217, [ 1918] = 0x3EEB,
+-  [ 1919] = 0x7772, [ 1920] = 0x7A43, [ 1921] = 0x70D0, [ 1922] = 0xE56D,
+-  [ 1923] = 0x243F8, [ 1924] = 0x717E, [ 1925] = 0xE570, [ 1926] = 0x70A3,
+-  [ 1927] = 0x218BE, [ 1928] = 0x23599, [ 1929] = 0x3EC7, [ 1930] = 0x21885,
+-  [ 1931] = 0x2542F, [ 1932] = 0x217F8, [ 1933] = 0x3722, [ 1934] = 0x216FB,
+-  [ 1935] = 0xE57A, [ 1936] = 0x36E1, [ 1937] = 0x21774, [ 1938] = 0xE57D,
+-  [ 1939] = 0x25F4B, [ 1940] = 0x3723, [ 1941] = 0x216C0, [ 1942] = 0x575B,
+-  [ 1943] = 0x24A25, [ 1944] = 0x213FE, [ 1945] = 0xE584, [ 1950] = 0x213C6,
+-  [ 1951] = 0x214B6, [ 1952] = 0x8503, [ 1953] = 0x236A6, [ 1955] = 0x8455,
+-  [ 1956] = 0xE58B, [ 1957] = 0x27165, [ 1958] = 0x23E31, [ 1959] = 0x2555C,
+-  [ 1960] = 0x23EFB, [ 1961] = 0x27052, [ 1962] = 0x44F4, [ 1963] = 0x236EE,
+-  [ 1964] = 0x2999D, [ 1965] = 0x26F26, [ 1966] = 0x67F9, [ 1967] = 0x3733,
+-  [ 1968] = 0x3C15, [ 1969] = 0x3DE7, [ 1970] = 0x586C, [ 1971] = 0xE59A,
+-  [ 1972] = 0x6810, [ 1973] = 0x4057, [ 1974] = 0x2373F, [ 1975] = 0xE59E,
+-  [ 1976] = 0x2408B, [ 1977] = 0xE5A0, [ 1978] = 0x26C21, [ 1979] = 0x54CB,
+-  [ 1980] = 0x569E, [ 1981] = 0x266B1, [ 1982] = 0x5692, [ 1983] = 0xE5A6,
+-  [ 1984] = 0x20BA8, [ 1985] = 0x20E0D, [ 1986] = 0x93C6, [ 1987] = 0xE5AA,
+-  [ 1988] = 0x939C, [ 1989] = 0x4EF8, [ 1990] = 0x512B, [ 1991] = 0x3819,
+-  [ 1992] = 0x24436, [ 1993] = 0x4EBC, [ 1994] = 0x20465, [ 1995] = 0x2037F,
+-  [ 1996] = 0x4F4B, [ 1997] = 0x4F8A, [ 1998] = 0x25651, [ 1999] = 0x5A68,
+-  [ 2000] = 0x201AB, [ 2001] = 0x203CB, [ 2002] = 0x3999, [ 2003] = 0x2030A,
+-  [ 2004] = 0x20414, [ 2005] = 0x3435, [ 2006] = 0x4F29, [ 2007] = 0x202C0,
+-  [ 2008] = 0x28EB3, [ 2009] = 0x20275, [ 2010] = 0x8ADA, [ 2011] = 0xE5C2,
+-  [ 2012] = 0x4E98, [ 2047] = 0x50CD, [ 2048] = 0x510D, [ 2049] = 0x4FA2,
+-  [ 2050] = 0x4F03, [ 2051] = 0xE5C8, [ 2052] = 0x23E8A, [ 2053] = 0x4F42,
+-  [ 2054] = 0x502E, [ 2055] = 0x506C, [ 2056] = 0x5081, [ 2057] = 0x4FCC,
+-  [ 2058] = 0x4FE5, [ 2059] = 0x5058, [ 2060] = 0x50FC, [ 2065] = 0x6E76,
+-  [ 2066] = 0x23595, [ 2067] = 0xE5D8, [ 2068] = 0x23EBF, [ 2069] = 0x6D72,
+-  [ 2070] = 0x21884, [ 2071] = 0x23E89, [ 2072] = 0x51A8, [ 2073] = 0x51C3,
+-  [ 2074] = 0x205E0, [ 2075] = 0x44DD, [ 2076] = 0x204A3, [ 2077] = 0x20492,
+-  [ 2078] = 0x20491, [ 2079] = 0x8D7A, [ 2080] = 0x28A9C, [ 2081] = 0x2070E,
+-  [ 2082] = 0x5259, [ 2083] = 0x52A4, [ 2084] = 0x20873, [ 2085] = 0x52E1,
+-  [ 2087] = 0x467A, [ 2088] = 0x718C, [ 2089] = 0x2438C, [ 2090] = 0x20C20,
+-  [ 2091] = 0x249AC, [ 2092] = 0xE5F1, [ 2093] = 0x69D1, [ 2094] = 0x20E1D,
+-  [ 2096] = 0x3EDE, [ 2097] = 0x7499, [ 2098] = 0x7414, [ 2099] = 0x7456,
+-  [ 2100] = 0x7398, [ 2101] = 0x4B8E, [ 2102] = 0x24ABC, [ 2103] = 0x2408D,
+-  [ 2104] = 0x53D0, [ 2105] = 0x3584, [ 2106] = 0x720F, [ 2107] = 0x240C9,
+-  [ 2108] = 0x55B4, [ 2109] = 0x20345, [ 2110] = 0x54CD, [ 2111] = 0x20BC6,
+-  [ 2112] = 0x571D, [ 2113] = 0x925D, [ 2114] = 0x96F4, [ 2115] = 0x9366,
+-  [ 2116] = 0x57DD, [ 2117] = 0x578D, [ 2118] = 0x577F, [ 2119] = 0x363E,
+-  [ 2120] = 0x58CB, [ 2121] = 0x5A99, [ 2122] = 0x28A46, [ 2123] = 0x216FA,
+-  [ 2124] = 0x2176F, [ 2125] = 0x21710, [ 2126] = 0x5A2C, [ 2127] = 0x59B8,
+-  [ 2128] = 0x928F, [ 2129] = 0x5A7E, [ 2130] = 0x5ACF, [ 2131] = 0x5A12,
+-  [ 2132] = 0xE619, [ 2133] = 0x219F3, [ 2134] = 0x21861, [ 2135] = 0xE61C,
+-  [ 2136] = 0x36F5, [ 2137] = 0x6D05, [ 2138] = 0x7443, [ 2139] = 0x5A21,
+-  [ 2140] = 0x25E83, [ 2145] = 0x5A81, [ 2146] = 0x28BD7, [ 2147] = 0x20413,
+-  [ 2148] = 0x93E0, [ 2149] = 0x748C, [ 2150] = 0x21303, [ 2151] = 0x7105,
+-  [ 2152] = 0x4972, [ 2153] = 0x9408, [ 2154] = 0x289FB, [ 2155] = 0x93BD,
+-  [ 2156] = 0x37A0, [ 2157] = 0x5C1E, [ 2158] = 0x5C9E, [ 2159] = 0x5E5E,
+-  [ 2160] = 0x5E48, [ 2161] = 0x21996, [ 2162] = 0x2197C, [ 2163] = 0x23AEE,
+-  [ 2164] = 0x5ECD, [ 2165] = 0x5B4F, [ 2166] = 0x21903, [ 2167] = 0x21904,
+-  [ 2168] = 0x3701, [ 2169] = 0x218A0, [ 2170] = 0x36DD, [ 2171] = 0x216FE,
+-  [ 2172] = 0x36D3, [ 2173] = 0x812A, [ 2174] = 0x28A47, [ 2175] = 0x21DBA,
+-  [ 2176] = 0x23472, [ 2177] = 0x289A8, [ 2178] = 0x5F0C, [ 2179] = 0x5F0E,
+-  [ 2180] = 0x21927, [ 2181] = 0xE646, [ 2182] = 0x5A6B, [ 2183] = 0x2173B,
+-  [ 2184] = 0x5B44, [ 2185] = 0x8614, [ 2186] = 0x275FD, [ 2187] = 0x8860,
+-  [ 2188] = 0x607E, [ 2189] = 0x22860, [ 2190] = 0x2262B, [ 2191] = 0x5FDB,
+-  [ 2192] = 0x3EB8, [ 2193] = 0x225AF, [ 2194] = 0x225BE, [ 2195] = 0xE654,
+-  [ 2196] = 0x26F73, [ 2197] = 0x61C0, [ 2198] = 0x2003E, [ 2199] = 0x20046,
+-  [ 2200] = 0x2261B, [ 2201] = 0x6199, [ 2202] = 0x6198, [ 2203] = 0x6075,
+-  [ 2204] = 0x22C9B, [ 2205] = 0x22D07, [ 2206] = 0x246D4, [ 2207] = 0xE660,
+-  [ 2242] = 0x6471, [ 2243] = 0x24665, [ 2244] = 0x22B6A, [ 2245] = 0x3A29,
+-  [ 2246] = 0x22B22, [ 2247] = 0x23450, [ 2248] = 0x298EA, [ 2249] = 0x22E78,
+-  [ 2250] = 0x6337, [ 2251] = 0xE66A, [ 2252] = 0x64B6, [ 2253] = 0x6331,
+-  [ 2254] = 0x63D1, [ 2255] = 0x249E3, [ 2256] = 0x22D67, [ 2257] = 0x62A4,
+-  [ 2258] = 0x22CA1, [ 2259] = 0x643B, [ 2260] = 0x656B, [ 2261] = 0x6972,
+-  [ 2262] = 0x3BF4, [ 2263] = 0x2308E, [ 2264] = 0x232AD, [ 2265] = 0x24989,
+-  [ 2266] = 0x232AB, [ 2267] = 0x550D, [ 2268] = 0x232E0, [ 2269] = 0x218D9,
+-  [ 2270] = 0xE67D, [ 2271] = 0x66CE, [ 2272] = 0x23289, [ 2273] = 0xE680,
+-  [ 2274] = 0x3AE0, [ 2275] = 0x4190, [ 2276] = 0x25584, [ 2277] = 0x28B22,
+-  [ 2278] = 0x2558F, [ 2279] = 0x216FC, [ 2280] = 0x2555B, [ 2281] = 0x25425,
+-  [ 2282] = 0x78EE, [ 2283] = 0x23103, [ 2284] = 0x2182A, [ 2285] = 0x23234,
+-  [ 2286] = 0x3464, [ 2287] = 0xE68E, [ 2288] = 0x23182, [ 2289] = 0x242C9,
+-  [ 2290] = 0x668E, [ 2291] = 0x26D24, [ 2292] = 0x666B, [ 2293] = 0x4B93,
+-  [ 2294] = 0x6630, [ 2295] = 0x27870, [ 2296] = 0xE697, [ 2297] = 0x6663,
+-  [ 2298] = 0x232D2, [ 2299] = 0x232E1, [ 2300] = 0x661E, [ 2301] = 0x25872,
+-  [ 2302] = 0x38D1, [ 2303] = 0xE69E, [ 2304] = 0x237BC, [ 2305] = 0x3B99,
+-  [ 2306] = 0x237A2, [ 2307] = 0x233FE, [ 2308] = 0x74D0, [ 2309] = 0x3B96,
+-  [ 2310] = 0x678F, [ 2311] = 0x2462A, [ 2312] = 0x68B6, [ 2313] = 0x681E,
+-  [ 2314] = 0x3BC4, [ 2315] = 0x6ABE, [ 2316] = 0x3863, [ 2317] = 0x237D5,
+-  [ 2318] = 0x24487, [ 2319] = 0x6A33, [ 2320] = 0x6A52, [ 2321] = 0x6AC9,
+-  [ 2322] = 0x6B05, [ 2323] = 0x21912, [ 2324] = 0x6511, [ 2325] = 0x6898,
+-  [ 2326] = 0x6A4C, [ 2327] = 0x3BD7, [ 2328] = 0x6A7A, [ 2329] = 0x6B57,
+-  [ 2330] = 0x23FC0, [ 2331] = 0x23C9A, [ 2332] = 0x93A0, [ 2333] = 0x92F2,
+-  [ 2334] = 0x28BEA, [ 2335] = 0x28ACB, [ 2340] = 0x9289, [ 2341] = 0xE6C0,
+-  [ 2342] = 0x289DC, [ 2343] = 0x9467, [ 2344] = 0x6DA5, [ 2345] = 0x6F0B,
+-  [ 2346] = 0xE6C5, [ 2348] = 0x23F7F, [ 2349] = 0x3D8F, [ 2350] = 0x6E04,
+-  [ 2351] = 0x2403C, [ 2352] = 0x5A3D, [ 2353] = 0x6E0A, [ 2354] = 0x5847,
+-  [ 2355] = 0x6D24, [ 2356] = 0x7842, [ 2357] = 0x713B, [ 2358] = 0x2431A,
+-  [ 2359] = 0x24276, [ 2360] = 0x70F1, [ 2361] = 0x7250, [ 2362] = 0x7287,
+-  [ 2363] = 0x7294, [ 2364] = 0x2478F, [ 2365] = 0x24725, [ 2366] = 0x5179,
+-  [ 2367] = 0x24AA4, [ 2368] = 0x205EB, [ 2369] = 0x747A, [ 2370] = 0x23EF8,
+-  [ 2371] = 0xE6DE, [ 2372] = 0xE6DF, [ 2373] = 0x24917, [ 2374] = 0x25FE1,
+-  [ 2375] = 0x3F06, [ 2376] = 0x3EB1, [ 2377] = 0x24ADF, [ 2378] = 0x28C23,
+-  [ 2379] = 0x23F35, [ 2380] = 0x60A7, [ 2381] = 0x3EF3, [ 2382] = 0x74CC,
+-  [ 2383] = 0x743C, [ 2384] = 0x9387, [ 2385] = 0x7437, [ 2386] = 0x449F,
+-  [ 2387] = 0x26DEA, [ 2388] = 0x4551, [ 2389] = 0x7583, [ 2390] = 0x3F63,
+-  [ 2391] = 0x24CD9, [ 2392] = 0x24D06, [ 2393] = 0x3F58, [ 2394] = 0x7555,
+-  [ 2395] = 0x7673, [ 2396] = 0x2A5C6, [ 2397] = 0x3B19, [ 2398] = 0x7468,
+-  [ 2399] = 0x28ACC, [ 2400] = 0x249AB, [ 2401] = 0x2498E, [ 2402] = 0x3AFB,
+-  [ 2437] = 0x3DCD, [ 2438] = 0x24A4E, [ 2439] = 0x3EFF, [ 2440] = 0xE701,
+-  [ 2441] = 0x248F3, [ 2442] = 0x91FA, [ 2443] = 0x5732, [ 2444] = 0x9342,
+-  [ 2445] = 0x28AE3, [ 2446] = 0x21864, [ 2447] = 0x50DF, [ 2448] = 0x25221,
+-  [ 2449] = 0x251E7, [ 2450] = 0x7778, [ 2451] = 0x23232, [ 2452] = 0x770E,
+-  [ 2453] = 0x770F, [ 2454] = 0x777B, [ 2455] = 0x24697, [ 2456] = 0x23781,
+-  [ 2457] = 0x3A5E, [ 2458] = 0xE713, [ 2459] = 0x7438, [ 2460] = 0x749B,
+-  [ 2461] = 0x3EBF, [ 2462] = 0x24ABA, [ 2463] = 0x24AC7, [ 2464] = 0x40C8,
+-  [ 2465] = 0x24A96, [ 2466] = 0x261AE, [ 2467] = 0x9307, [ 2468] = 0x25581,
+-  [ 2469] = 0x781E, [ 2470] = 0x788D, [ 2471] = 0x7888, [ 2472] = 0x78D2,
+-  [ 2473] = 0x73D0, [ 2474] = 0x7959, [ 2475] = 0x27741, [ 2476] = 0xE725,
+-  [ 2477] = 0x410E, [ 2479] = 0x8496, [ 2480] = 0x79A5, [ 2481] = 0x6A2D,
+-  [ 2482] = 0x23EFA, [ 2483] = 0x7A3A, [ 2484] = 0x79F4, [ 2485] = 0x416E,
+-  [ 2486] = 0x216E6, [ 2487] = 0x4132, [ 2488] = 0x9235, [ 2489] = 0x79F1,
+-  [ 2490] = 0x20D4C, [ 2491] = 0x2498C, [ 2492] = 0x20299, [ 2493] = 0x23DBA,
+-  [ 2494] = 0x2176E, [ 2495] = 0x3597, [ 2496] = 0x556B, [ 2497] = 0x3570,
+-  [ 2498] = 0x36AA, [ 2499] = 0x201D4, [ 2500] = 0xE73D, [ 2501] = 0x7AE2,
+-  [ 2502] = 0x5A59, [ 2503] = 0x226F5, [ 2504] = 0xE741, [ 2505] = 0x25A9C,
+-  [ 2506] = 0x5A0D, [ 2507] = 0x2025B, [ 2508] = 0x78F0, [ 2509] = 0x5A2A,
+-  [ 2510] = 0x25BC6, [ 2511] = 0x7AFE, [ 2512] = 0x41F9, [ 2513] = 0x7C5D,
+-  [ 2514] = 0x7C6D, [ 2515] = 0x4211, [ 2516] = 0x25BB3, [ 2517] = 0x25EBC,
+-  [ 2518] = 0x25EA6, [ 2519] = 0x7CCD, [ 2520] = 0x249F9, [ 2521] = 0xE752,
+-  [ 2522] = 0x7C8E, [ 2523] = 0x7C7C, [ 2524] = 0x7CAE, [ 2525] = 0x6AB2,
+-  [ 2526] = 0x7DDC, [ 2527] = 0x7E07, [ 2528] = 0x7DD3, [ 2529] = 0x7F4E,
+-  [ 2530] = 0x26261, [ 2535] = 0x2615C, [ 2536] = 0xE75D, [ 2537] = 0x7D97,
+-  [ 2538] = 0x25E82, [ 2539] = 0x426A, [ 2540] = 0xE761, [ 2541] = 0x20916,
+-  [ 2542] = 0x67D6, [ 2543] = 0x2004E, [ 2544] = 0x235CF, [ 2545] = 0x57C4,
+-  [ 2546] = 0x26412, [ 2547] = 0xE768, [ 2548] = 0x24962, [ 2549] = 0x7FDD,
+-  [ 2550] = 0x7B27, [ 2551] = 0x2082C, [ 2552] = 0x25AE9, [ 2553] = 0x25D43,
+-  [ 2554] = 0x7B0C, [ 2555] = 0x25E0E, [ 2556] = 0x99E6, [ 2557] = 0x8645,
+-  [ 2558] = 0x9A63, [ 2559] = 0x6A1C, [ 2560] = 0xE775, [ 2561] = 0x39E2,
+-  [ 2562] = 0x249F7, [ 2563] = 0x265AD, [ 2564] = 0x9A1F, [ 2565] = 0xE77A,
+-  [ 2566] = 0x8480, [ 2567] = 0x27127, [ 2568] = 0xE77D, [ 2569] = 0x44EA,
+-  [ 2570] = 0x8137, [ 2571] = 0x4402, [ 2572] = 0x80C6, [ 2573] = 0x8109,
+-  [ 2574] = 0x8142, [ 2575] = 0x267B4, [ 2576] = 0x98C3, [ 2577] = 0x26A42,
+-  [ 2578] = 0x8262, [ 2579] = 0x8265, [ 2580] = 0x26A51, [ 2581] = 0x8453,
+-  [ 2582] = 0x26DA7, [ 2583] = 0x8610, [ 2584] = 0x2721B, [ 2585] = 0x5A86,
+-  [ 2586] = 0x417F, [ 2587] = 0xE790, [ 2588] = 0x5B2B, [ 2589] = 0x218A1,
+-  [ 2590] = 0x5AE4, [ 2591] = 0x218D8, [ 2592] = 0x86A0, [ 2593] = 0x8728,
+-  [ 2594] = 0xE797, [ 2595] = 0x882D, [ 2596] = 0x27422, [ 2597] = 0x5A02,
+-  [ 2632] = 0x886E, [ 2633] = 0x4F45, [ 2634] = 0x8887, [ 2635] = 0x88BF,
+-  [ 2636] = 0x88E6, [ 2637] = 0x8965, [ 2638] = 0x894D, [ 2639] = 0x25683,
+-  [ 2640] = 0x8954, [ 2641] = 0x27785, [ 2642] = 0x27784, [ 2643] = 0xE7A6,
+-  [ 2644] = 0x28BD9, [ 2645] = 0x28B9C, [ 2646] = 0x289F9, [ 2647] = 0x3EAD,
+-  [ 2648] = 0x84A3, [ 2649] = 0x46F5, [ 2650] = 0x46CF, [ 2651] = 0x37F2,
+-  [ 2652] = 0x8A3D, [ 2653] = 0x8A1C, [ 2654] = 0x29448, [ 2655] = 0x5F4D,
+-  [ 2656] = 0x922B, [ 2657] = 0xE7B4, [ 2658] = 0x65D4, [ 2659] = 0x7129,
+-  [ 2660] = 0x70C4, [ 2661] = 0x21845, [ 2662] = 0x9D6D, [ 2663] = 0x8C9F,
+-  [ 2664] = 0x8CE9, [ 2665] = 0x27DDC, [ 2666] = 0x599A, [ 2667] = 0x77C3,
+-  [ 2668] = 0x59F0, [ 2669] = 0x436E, [ 2670] = 0x36D4, [ 2671] = 0x8E2A,
+-  [ 2672] = 0x8EA7, [ 2673] = 0x24C09, [ 2674] = 0x8F30, [ 2675] = 0x8F4A,
+-  [ 2676] = 0x42F4, [ 2677] = 0x6C58, [ 2678] = 0x6FBB, [ 2679] = 0x22321,
+-  [ 2680] = 0x489B, [ 2681] = 0x6F79, [ 2682] = 0x6E8B, [ 2683] = 0x217DA,
+-  [ 2684] = 0x9BE9, [ 2685] = 0x36B5, [ 2686] = 0x2492F, [ 2687] = 0x90BB,
+-  [ 2689] = 0x5571, [ 2690] = 0x4906, [ 2691] = 0x91BB, [ 2692] = 0x9404,
+-  [ 2693] = 0x28A4B, [ 2694] = 0x4062, [ 2695] = 0xE7DA, [ 2696] = 0x9427,
+-  [ 2697] = 0x28C1D, [ 2698] = 0xE7DD, [ 2699] = 0x84E5, [ 2700] = 0x8A2B,
+-  [ 2701] = 0x9599, [ 2702] = 0x95A7, [ 2703] = 0x9597, [ 2704] = 0x9596,
+-  [ 2705] = 0x28D34, [ 2706] = 0x7445, [ 2707] = 0x3EC2, [ 2708] = 0x248FF,
+-  [ 2709] = 0xE7E8, [ 2710] = 0xE7E9, [ 2711] = 0x3EE7, [ 2712] = 0x23225,
+-  [ 2713] = 0x968F, [ 2714] = 0xE7ED, [ 2715] = 0x28E66, [ 2716] = 0x28E65,
+-  [ 2717] = 0x3ECC, [ 2718] = 0xE7F1, [ 2719] = 0x24A78, [ 2720] = 0x23FEE,
+-  [ 2721] = 0x7412, [ 2722] = 0x746B, [ 2723] = 0x3EFC, [ 2724] = 0x9741,
+-  [ 2725] = 0x290B0, [ 2730] = 0x6847, [ 2731] = 0x4A1D, [ 2732] = 0xE7FB,
+-  [ 2733] = 0xE7FC, [ 2735] = 0x9368, [ 2736] = 0x28989, [ 2737] = 0xE800,
+-  [ 2738] = 0x28B2F, [ 2739] = 0x263BE, [ 2740] = 0x92BA, [ 2741] = 0x5B11,
+-  [ 2742] = 0x8B69, [ 2743] = 0x493C, [ 2744] = 0x73F9, [ 2745] = 0x2421B,
+-  [ 2746] = 0x979B, [ 2747] = 0x9771, [ 2748] = 0x9938, [ 2749] = 0xE80C,
+-  [ 2750] = 0x5DC1, [ 2751] = 0x28BC5, [ 2752] = 0x24AB2, [ 2753] = 0x981F,
+-  [ 2754] = 0x294DA, [ 2755] = 0x92F6, [ 2756] = 0xE813, [ 2757] = 0x91E5,
+-  [ 2758] = 0x44C0, [ 2759] = 0x28B50, [ 2760] = 0x24A67, [ 2761] = 0x28B64,
+-  [ 2762] = 0x98DC, [ 2763] = 0x28A45, [ 2764] = 0x3F00, [ 2765] = 0x922A,
+-  [ 2766] = 0x4925, [ 2767] = 0x8414, [ 2768] = 0x993B, [ 2769] = 0x994D,
+-  [ 2770] = 0xE821, [ 2771] = 0x3DFD, [ 2772] = 0x999B, [ 2773] = 0x4B6F,
+-  [ 2774] = 0x99AA, [ 2775] = 0x9A5C, [ 2776] = 0x28B65, [ 2777] = 0xE828,
+-  [ 2778] = 0x6A8F, [ 2779] = 0x9A21, [ 2780] = 0x5AFE, [ 2781] = 0x9A2F,
+-  [ 2782] = 0xE82D, [ 2783] = 0x4B90, [ 2784] = 0xE82F, [ 2785] = 0x99BC,
+-  [ 2786] = 0x4BBD, [ 2787] = 0x4B97, [ 2788] = 0x937D, [ 2789] = 0x5872,
+-  [ 2790] = 0x21302, [ 2791] = 0x5822, [ 2792] = 0x249B8, [ 2827] = 0x214E8,
+-  [ 2828] = 0x7844, [ 2829] = 0x2271F, [ 2830] = 0x23DB8, [ 2831] = 0x68C5,
+-  [ 2832] = 0x3D7D, [ 2833] = 0x9458, [ 2834] = 0x3927, [ 2835] = 0x6150,
+-  [ 2836] = 0x22781, [ 2837] = 0x2296B, [ 2838] = 0x6107, [ 2839] = 0x9C4F,
+-  [ 2840] = 0x9C53, [ 2841] = 0x9C7B, [ 2842] = 0x9C35, [ 2843] = 0x9C10,
+-  [ 2844] = 0x9B7F, [ 2845] = 0x9BCF, [ 2846] = 0x29E2D, [ 2847] = 0x9B9F,
+-  [ 2848] = 0xE84D, [ 2849] = 0x2A0FE, [ 2850] = 0x9D21, [ 2851] = 0x4CAE,
+-  [ 2852] = 0x24104, [ 2853] = 0x9E18, [ 2854] = 0x4CB0, [ 2855] = 0x9D0C,
+-  [ 2856] = 0xE855, [ 2857] = 0xE856, [ 2858] = 0x2A0F3, [ 2859] = 0x2992F,
+-  [ 2860] = 0x9DA5, [ 2861] = 0x84BD, [ 2862] = 0xE85B, [ 2863] = 0x26FDF,
+-  [ 2864] = 0xE85D, [ 2865] = 0x85FC, [ 2866] = 0x4533, [ 2867] = 0x26DA4,
+-  [ 2868] = 0x26E84, [ 2869] = 0x26DF0, [ 2870] = 0x8420, [ 2871] = 0x85EE,
+-  [ 2872] = 0xE865, [ 2873] = 0x237D7, [ 2874] = 0x26064, [ 2875] = 0x79E2,
+-  [ 2876] = 0x2359C, [ 2877] = 0x23640, [ 2878] = 0x492D, [ 2879] = 0x249DE,
+-  [ 2880] = 0x3D62, [ 2881] = 0x93DB, [ 2882] = 0x92BE, [ 2883] = 0x9348,
+-  [ 2884] = 0x202BF, [ 2885] = 0x78B9, [ 2886] = 0x9277, [ 2887] = 0x944D,
+-  [ 2888] = 0x4FE4, [ 2889] = 0x3440, [ 2890] = 0x9064, [ 2891] = 0x2555D,
+-  [ 2892] = 0x783D, [ 2893] = 0x7854, [ 2894] = 0x78B6, [ 2895] = 0x784B,
+-  [ 2896] = 0x21757, [ 2897] = 0x231C9, [ 2898] = 0x24941, [ 2899] = 0x369A,
+-  [ 2900] = 0x4F72, [ 2901] = 0x6FDA, [ 2902] = 0x6FD9, [ 2904] = 0x701E,
+-  [ 2905] = 0x5414, [ 2906] = 0xE887, [ 2907] = 0x57BB, [ 2908] = 0x58F3,
+-  [ 2909] = 0x578A, [ 2910] = 0x9D16, [ 2911] = 0x57D7, [ 2912] = 0x7134,
+-  [ 2913] = 0x34AF, [ 2914] = 0xE88F, [ 2915] = 0x71EB, [ 2916] = 0xE891,
+-  [ 2917] = 0x24F97, [ 2919] = 0x217B5, [ 2920] = 0x28A49, [ 2925] = 0x610C,
+-  [ 2926] = 0x5ACE, [ 2927] = 0x5A0B, [ 2928] = 0x42BC, [ 2929] = 0x24488,
+-  [ 2930] = 0x372C, [ 2931] = 0x4B7B, [ 2932] = 0x289FC, [ 2933] = 0x93BB,
+-  [ 2934] = 0x93B8, [ 2935] = 0x218D6, [ 2936] = 0xE8A1, [ 2937] = 0x8472,
+-  [ 2938] = 0x26CC0, [ 2939] = 0xE8A4, [ 2940] = 0x242FA, [ 2941] = 0x22C26,
+-  [ 2942] = 0x243C1, [ 2943] = 0x5994, [ 2944] = 0x23DB7, [ 2945] = 0x26741,
+-  [ 2946] = 0x7DA8, [ 2947] = 0x2615B, [ 2948] = 0x260A4, [ 2949] = 0x249B9,
+-  [ 2950] = 0x2498B, [ 2951] = 0x289FA, [ 2952] = 0x92E5, [ 2953] = 0x73E2,
+-  [ 2954] = 0x3EE9, [ 2955] = 0x74B4, [ 2956] = 0x28B63, [ 2957] = 0x2189F,
+-  [ 2958] = 0x3EE1, [ 2959] = 0x24AB3, [ 2960] = 0x6AD8, [ 2961] = 0x73F3,
+-  [ 2962] = 0x73FB, [ 2963] = 0x3ED6, [ 2964] = 0x24A3E, [ 2965] = 0x24A94,
+-  [ 2966] = 0x217D9, [ 2967] = 0x24A66, [ 2968] = 0x203A7, [ 2969] = 0xE8C2,
+-  [ 2970] = 0xE8C3, [ 2971] = 0x7448, [ 2972] = 0x24916, [ 2973] = 0x70A5,
+-  [ 2974] = 0x24976, [ 2975] = 0x9284, [ 2976] = 0x73E6, [ 2977] = 0x935F,
+-  [ 2978] = 0x204FE, [ 2979] = 0x9331, [ 2980] = 0xE8CD, [ 2981] = 0x28A16,
+-  [ 2982] = 0x9386, [ 2983] = 0x28BE7, [ 2984] = 0x255D5, [ 2985] = 0x4935,
+-  [ 2986] = 0x28A82, [ 2987] = 0x716B, [ 3022] = 0xE8D5, [ 3023] = 0xE8D6,
+-  [ 3024] = 0x56A4, [ 3025] = 0x2061A, [ 3026] = 0xE8D9, [ 3027] = 0xE8DA,
+-  [ 3028] = 0x5502, [ 3029] = 0x79C4, [ 3030] = 0x217FA, [ 3031] = 0x7DFE,
+-  [ 3032] = 0x216C2, [ 3033] = 0x24A50, [ 3034] = 0xE8E1, [ 3035] = 0x452E,
+-  [ 3036] = 0x9401, [ 3037] = 0x370A, [ 3038] = 0xE8E5, [ 3039] = 0x249AD,
+-  [ 3040] = 0x59B0, [ 3041] = 0x218BF, [ 3042] = 0x21883, [ 3043] = 0x27484,
+-  [ 3044] = 0x5AA1, [ 3045] = 0x36E2, [ 3046] = 0x23D5B, [ 3047] = 0x36B0,
+-  [ 3048] = 0x925F, [ 3049] = 0x5A79, [ 3050] = 0x28A81, [ 3051] = 0x21862,
+-  [ 3052] = 0x9374, [ 3053] = 0x3CCD, [ 3054] = 0x20AB4, [ 3055] = 0x4A96,
+-  [ 3056] = 0x398A, [ 3057] = 0x50F4, [ 3058] = 0x3D69, [ 3059] = 0x3D4C,
+-  [ 3060] = 0x2139C, [ 3061] = 0x7175, [ 3062] = 0x42FB, [ 3063] = 0xE8FE,
+-  [ 3064] = 0x6E0F, [ 3065] = 0x290E4, [ 3066] = 0x44EB, [ 3067] = 0x6D57,
+-  [ 3068] = 0x27E4F, [ 3069] = 0x7067, [ 3070] = 0x6CAF, [ 3071] = 0x3CD6,
+-  [ 3072] = 0x23FED, [ 3073] = 0x23E2D, [ 3074] = 0x6E02, [ 3075] = 0x6F0C,
+-  [ 3076] = 0x3D6F, [ 3077] = 0x203F5, [ 3078] = 0x7551, [ 3079] = 0x36BC,
+-  [ 3080] = 0x34C8, [ 3081] = 0x4680, [ 3082] = 0x3EDA, [ 3083] = 0x4871,
+-  [ 3084] = 0x59C4, [ 3085] = 0x926E, [ 3086] = 0x493E, [ 3087] = 0x8F41,
+-  [ 3088] = 0xE917, [ 3089] = 0xE918, [ 3090] = 0x5812, [ 3091] = 0x57C8,
+-  [ 3092] = 0x36D6, [ 3093] = 0x21452, [ 3094] = 0x70FE, [ 3095] = 0x24362,
+-  [ 3096] = 0xE91F, [ 3097] = 0x22FE3, [ 3098] = 0x212B0, [ 3099] = 0x223BD,
+-  [ 3100] = 0x68B9, [ 3101] = 0x6967, [ 3102] = 0xE925, [ 3103] = 0x234E5,
+-  [ 3104] = 0x27BF4, [ 3105] = 0x236DF, [ 3106] = 0x28A83, [ 3107] = 0x237D6,
+-  [ 3108] = 0xE92B, [ 3109] = 0x24C9F, [ 3110] = 0x6A1A, [ 3111] = 0x236AD,
+-  [ 3112] = 0x26CB7, [ 3113] = 0x843E, [ 3114] = 0x44DF, [ 3115] = 0x44CE,
+-  [ 3120] = 0x26D26, [ 3121] = 0xE934, [ 3122] = 0x26C82, [ 3123] = 0x26FDE,
+-  [ 3124] = 0x6F17, [ 3125] = 0x27109, [ 3126] = 0x833D, [ 3127] = 0x2173A,
+-  [ 3128] = 0x83ED, [ 3129] = 0x26C80, [ 3130] = 0x27053, [ 3131] = 0x217DB,
+-  [ 3132] = 0x5989, [ 3133] = 0x5A82, [ 3134] = 0x217B3, [ 3135] = 0x5A61,
+-  [ 3136] = 0x5A71, [ 3137] = 0x21905, [ 3138] = 0x241FC, [ 3139] = 0x372D,
+-  [ 3140] = 0x59EF, [ 3141] = 0x2173C, [ 3142] = 0x36C7, [ 3143] = 0x718E,
+-  [ 3144] = 0x9390, [ 3145] = 0x669A, [ 3146] = 0x242A5, [ 3147] = 0x5A6E,
+-  [ 3148] = 0x5A2B, [ 3149] = 0xE950, [ 3150] = 0x6A2B, [ 3151] = 0x23EF9,
+-  [ 3152] = 0x27736, [ 3153] = 0x2445B, [ 3154] = 0x242CA, [ 3155] = 0x711D,
+-  [ 3156] = 0x24259, [ 3157] = 0x289E1, [ 3158] = 0x4FB0, [ 3159] = 0x26D28,
+-  [ 3160] = 0x5CC2, [ 3161] = 0x244CE, [ 3162] = 0x27E4D, [ 3163] = 0x243BD,
+-  [ 3164] = 0x6A0C, [ 3165] = 0x24256, [ 3166] = 0x21304, [ 3167] = 0x70A6,
+-  [ 3168] = 0x7133, [ 3169] = 0x243E9, [ 3170] = 0x3DA5, [ 3171] = 0x6CDF,
+-  [ 3172] = 0xE967, [ 3173] = 0x24A4F, [ 3174] = 0x7E65, [ 3175] = 0x59EB,
+-  [ 3176] = 0x5D2F, [ 3177] = 0x3DF3, [ 3178] = 0x5F5C, [ 3179] = 0xE96E,
+-  [ 3180] = 0xE96F, [ 3181] = 0x7DA4, [ 3182] = 0x8426, [ 3217] = 0x5485,
+-  [ 3218] = 0xE973, [ 3219] = 0x23300, [ 3220] = 0x20214, [ 3221] = 0x577E,
+-  [ 3222] = 0xE977, [ 3223] = 0x20619, [ 3224] = 0x3FE5, [ 3225] = 0xE97A,
+-  [ 3226] = 0xE97B, [ 3227] = 0x7003, [ 3228] = 0xE97D, [ 3229] = 0x5D70,
+-  [ 3230] = 0x738F, [ 3231] = 0x7CD3, [ 3232] = 0x28A59, [ 3233] = 0xE982,
+-  [ 3234] = 0x4FC8, [ 3235] = 0x7FE7, [ 3236] = 0x72CD, [ 3237] = 0x7310,
+-  [ 3238] = 0x27AF4, [ 3239] = 0x7338, [ 3240] = 0x7339, [ 3241] = 0x256F6,
+-  [ 3242] = 0x7341, [ 3243] = 0x7348, [ 3244] = 0x3EA9, [ 3245] = 0x27B18,
+-  [ 3246] = 0x906C, [ 3247] = 0x71F5, [ 3248] = 0xE991, [ 3249] = 0x73E1,
+-  [ 3250] = 0x81F6, [ 3251] = 0x3ECA, [ 3252] = 0x770C, [ 3253] = 0x3ED1,
+-  [ 3254] = 0x6CA2, [ 3255] = 0x56FD, [ 3256] = 0x7419, [ 3257] = 0x741E,
+-  [ 3258] = 0x741F, [ 3259] = 0x3EE2, [ 3260] = 0x3EF0, [ 3261] = 0x3EF4,
+-  [ 3262] = 0x3EFA, [ 3263] = 0x74D3, [ 3264] = 0x3F0E, [ 3265] = 0x3F53,
+-  [ 3266] = 0x7542, [ 3267] = 0x756D, [ 3268] = 0x7572, [ 3269] = 0x758D,
+-  [ 3270] = 0x3F7C, [ 3271] = 0x75C8, [ 3272] = 0x75DC, [ 3273] = 0x3FC0,
+-  [ 3274] = 0x764D, [ 3275] = 0x3FD7, [ 3276] = 0x7674, [ 3277] = 0x3FDC,
+-  [ 3278] = 0x767A, [ 3279] = 0x24F5C, [ 3280] = 0x7188, [ 3281] = 0x5623,
+-  [ 3282] = 0x8980, [ 3283] = 0x5869, [ 3284] = 0x401D, [ 3285] = 0x7743,
+-  [ 3286] = 0x4039, [ 3287] = 0x6761, [ 3288] = 0x4045, [ 3289] = 0x35DB,
+-  [ 3290] = 0x7798, [ 3291] = 0x406A, [ 3292] = 0x406F, [ 3293] = 0x5C5E,
+-  [ 3294] = 0x77BE, [ 3295] = 0x77CB, [ 3296] = 0x58F2, [ 3297] = 0x7818,
+-  [ 3298] = 0x70B9, [ 3299] = 0x781C, [ 3300] = 0x40A8, [ 3301] = 0x7839,
+-  [ 3302] = 0x7847, [ 3303] = 0x7851, [ 3304] = 0x7866, [ 3305] = 0x8448,
+-  [ 3306] = 0xE9CB, [ 3307] = 0x7933, [ 3308] = 0x6803, [ 3309] = 0x7932,
+-  [ 3310] = 0x4103, [ 3315] = 0x4109, [ 3316] = 0x7991, [ 3317] = 0x7999,
+-  [ 3318] = 0x8FBB, [ 3319] = 0x7A06, [ 3320] = 0x8FBC, [ 3321] = 0x4167,
+-  [ 3322] = 0x7A91, [ 3323] = 0x41B2, [ 3324] = 0x7ABC, [ 3325] = 0x8279,
+-  [ 3326] = 0x41C4, [ 3327] = 0x7ACF, [ 3328] = 0x7ADB, [ 3329] = 0x41CF,
+-  [ 3330] = 0x4E21, [ 3331] = 0x7B62, [ 3332] = 0x7B6C, [ 3333] = 0x7B7B,
+-  [ 3334] = 0x7C12, [ 3335] = 0x7C1B, [ 3336] = 0x4260, [ 3337] = 0x427A,
+-  [ 3338] = 0x7C7B, [ 3339] = 0x7C9C, [ 3340] = 0x428C, [ 3341] = 0x7CB8,
+-  [ 3342] = 0x4294, [ 3343] = 0x7CED, [ 3344] = 0x8F93, [ 3345] = 0x70C0,
+-  [ 3346] = 0x20CCF, [ 3347] = 0x7DCF, [ 3348] = 0x7DD4, [ 3349] = 0x7DD0,
+-  [ 3350] = 0x7DFD, [ 3351] = 0x7FAE, [ 3352] = 0x7FB4, [ 3353] = 0x729F,
+-  [ 3354] = 0x4397, [ 3355] = 0x8020, [ 3356] = 0x8025, [ 3357] = 0x7B39,
+-  [ 3358] = 0x802E, [ 3359] = 0x8031, [ 3360] = 0x8054, [ 3361] = 0x3DCC,
+-  [ 3362] = 0x57B4, [ 3363] = 0x70A0, [ 3364] = 0x80B7, [ 3365] = 0x80E9,
+-  [ 3366] = 0x43ED, [ 3367] = 0x810C, [ 3368] = 0x732A, [ 3369] = 0x810E,
+-  [ 3370] = 0x8112, [ 3371] = 0x7560, [ 3372] = 0x8114, [ 3373] = 0x4401,
+-  [ 3374] = 0x3B39, [ 3375] = 0x8156, [ 3376] = 0x8159, [ 3377] = 0x815A,
+-  [ 3412] = 0x4413, [ 3413] = 0x583A, [ 3414] = 0x817C, [ 3415] = 0x8184,
+-  [ 3416] = 0x4425, [ 3417] = 0x8193, [ 3418] = 0x442D, [ 3419] = 0x81A5,
+-  [ 3420] = 0x57EF, [ 3421] = 0x81C1, [ 3422] = 0x81E4, [ 3423] = 0x8254,
+-  [ 3424] = 0x448F, [ 3425] = 0x82A6, [ 3426] = 0x8276, [ 3427] = 0x82CA,
+-  [ 3428] = 0x82D8, [ 3429] = 0x82FF, [ 3430] = 0x44B0, [ 3431] = 0x8357,
+-  [ 3432] = 0x9669, [ 3433] = 0x698A, [ 3434] = 0x8405, [ 3435] = 0x70F5,
+-  [ 3436] = 0x8464, [ 3437] = 0x60E3, [ 3438] = 0x8488, [ 3439] = 0x4504,
+-  [ 3440] = 0x84BE, [ 3441] = 0x84E1, [ 3442] = 0x84F8, [ 3443] = 0x8510,
+-  [ 3444] = 0x8538, [ 3445] = 0x8552, [ 3446] = 0x453B, [ 3447] = 0x856F,
+-  [ 3448] = 0x8570, [ 3449] = 0x85E0, [ 3450] = 0x4577, [ 3451] = 0x8672,
+-  [ 3452] = 0x8692, [ 3453] = 0x86B2, [ 3454] = 0x86EF, [ 3455] = 0x9645,
+-  [ 3456] = 0x878B, [ 3457] = 0x4606, [ 3458] = 0x4617, [ 3459] = 0x88AE,
+-  [ 3460] = 0x88FF, [ 3461] = 0x8924, [ 3462] = 0x8947, [ 3463] = 0x8991,
+-  [ 3464] = 0x27967, [ 3465] = 0x8A29, [ 3466] = 0x8A38, [ 3467] = 0x8A94,
+-  [ 3468] = 0x8AB4, [ 3469] = 0x8C51, [ 3470] = 0x8CD4, [ 3471] = 0x8CF2,
+-  [ 3472] = 0x8D1C, [ 3473] = 0x4798, [ 3474] = 0x585F, [ 3475] = 0x8DC3,
+-  [ 3476] = 0x47ED, [ 3477] = 0x4EEE, [ 3478] = 0x8E3A, [ 3479] = 0x55D8,
+-  [ 3480] = 0x5754, [ 3481] = 0x8E71, [ 3482] = 0x55F5, [ 3483] = 0x8EB0,
+-  [ 3484] = 0x4837, [ 3485] = 0x8ECE, [ 3486] = 0x8EE2, [ 3487] = 0x8EE4,
+-  [ 3488] = 0x8EED, [ 3489] = 0x8EF2, [ 3490] = 0x8FB7, [ 3491] = 0x8FC1,
+-  [ 3492] = 0x8FCA, [ 3493] = 0x8FCC, [ 3494] = 0x9033, [ 3495] = 0x99C4,
+-  [ 3496] = 0x48AD, [ 3497] = 0x98E0, [ 3498] = 0x9213, [ 3499] = 0x491E,
+-  [ 3500] = 0x9228, [ 3501] = 0x9258, [ 3502] = 0x926B, [ 3503] = 0x92B1,
+-  [ 3504] = 0x92AE, [ 3505] = 0x92BF, [ 3510] = 0x92E3, [ 3511] = 0x92EB,
+-  [ 3512] = 0x92F3, [ 3513] = 0x92F4, [ 3514] = 0x92FD, [ 3515] = 0x9343,
+-  [ 3516] = 0x9384, [ 3517] = 0x93AD, [ 3518] = 0x4945, [ 3519] = 0x4951,
+-  [ 3520] = 0x9EBF, [ 3521] = 0x9417, [ 3522] = 0x5301, [ 3523] = 0x941D,
+-  [ 3524] = 0x942D, [ 3525] = 0x943E, [ 3526] = 0x496A, [ 3527] = 0x9454,
+-  [ 3528] = 0x9479, [ 3529] = 0x952D, [ 3530] = 0x95A2, [ 3531] = 0x49A7,
+-  [ 3532] = 0x95F4, [ 3533] = 0x9633, [ 3534] = 0x49E5, [ 3535] = 0x67A0,
+-  [ 3536] = 0x4A24, [ 3537] = 0x9740, [ 3538] = 0x4A35, [ 3539] = 0x97B2,
+-  [ 3540] = 0x97C2, [ 3541] = 0x5654, [ 3542] = 0x4AE4, [ 3543] = 0x60E8,
+-  [ 3544] = 0x98B9, [ 3545] = 0x4B19, [ 3546] = 0x98F1, [ 3547] = 0x5844,
+-  [ 3548] = 0x990E, [ 3549] = 0x9919, [ 3550] = 0x51B4, [ 3551] = 0x991C,
+-  [ 3552] = 0x9937, [ 3553] = 0x9942, [ 3554] = 0x995D, [ 3555] = 0x9962,
+-  [ 3556] = 0x4B70, [ 3557] = 0x99C5, [ 3558] = 0x4B9D, [ 3559] = 0x9A3C,
+-  [ 3560] = 0x9B0F, [ 3561] = 0x7A83, [ 3562] = 0x9B69, [ 3563] = 0x9B81,
+-  [ 3564] = 0x9BDD, [ 3565] = 0x9BF1, [ 3566] = 0x9BF4, [ 3567] = 0x4C6D,
+-  [ 3568] = 0x9C20, [ 3569] = 0x376F, [ 3570] = 0xEAA9, [ 3571] = 0x9D49,
+-  [ 3572] = 0x9C3A, [ 3607] = 0x9EFE, [ 3608] = 0x5650, [ 3609] = 0x9D93,
+-  [ 3610] = 0x9DBD, [ 3611] = 0x9DC0, [ 3612] = 0x9DFC, [ 3613] = 0x94F6,
+-  [ 3614] = 0x8FB6, [ 3615] = 0x9E7B, [ 3616] = 0x9EAC, [ 3617] = 0x9EB1,
+-  [ 3618] = 0x9EBD, [ 3619] = 0x9EC6, [ 3620] = 0x94DC, [ 3621] = 0x9EE2,
+-  [ 3622] = 0x9EF1, [ 3623] = 0x9EF8, [ 3624] = 0x7AC8, [ 3625] = 0x9F44,
+-  [ 3626] = 0xEABF, [ 3627] = 0xEAC0, [ 3628] = 0xEAC1, [ 3629] = 0x691A,
+-  [ 3630] = 0x94C3, [ 3631] = 0x59AC, [ 3632] = 0xEAC5, [ 3633] = 0x5840,
+-  [ 3634] = 0x94C1, [ 3635] = 0x37B9, [ 3636] = 0xEAC9, [ 3637] = 0xEACA,
+-  [ 3638] = 0xEACB, [ 3639] = 0xEACC, [ 3640] = 0x5757, [ 3641] = 0x7173,
+-  [ 3642] = 0xEACF, [ 3643] = 0xEAD0, [ 3644] = 0xEAD1, [ 3645] = 0x546A,
+-  [ 3646] = 0xEAD3, [ 3647] = 0xEAD4, [ 3648] = 0x549E, [ 3649] = 0xEAD6,
+-  [ 3650] = 0xEAD7, [ 3651] = 0x20C53, [ 3652] = 0xEAD9, [ 3653] = 0xEADA,
+-  [ 3654] = 0x60E7, [ 3655] = 0xEADC, [ 3656] = 0x567A, [ 3657] = 0xEADE,
+-  [ 3658] = 0xEADF, [ 3659] = 0xEAE0, [ 3660] = 0xEAE1, [ 3661] = 0xEAE2,
+-  [ 3662] = 0xEAE3, [ 3663] = 0x6955, [ 3664] = 0x9C2F, [ 3665] = 0x87A5,
+-  [ 3666] = 0xEAE7, [ 3667] = 0x20E0E, [ 3668] = 0xEAE9, [ 3669] = 0xEAEA,
+-  [ 3670] = 0x20F2D, [ 3671] = 0xEAEC, [ 3672] = 0x5C20, [ 3673] = 0xEAEE,
+-  [ 3674] = 0x5E0B, [ 3675] = 0xEAF0, [ 3676] = 0xEAF1, [ 3677] = 0x21076,
+-  [ 3678] = 0x671E, [ 3679] = 0x2107B, [ 3680] = 0xEAF5, [ 3681] = 0xEAF6,
+-  [ 3682] = 0x3647, [ 3683] = 0xEAF8, [ 3684] = 0xEAF9, [ 3685] = 0xEAFA,
+-  [ 3686] = 0xEAFB, [ 3687] = 0x5364, [ 3688] = 0x84AD, [ 3689] = 0x212E3,
+-  [ 3690] = 0xEAFF, [ 3691] = 0xEB00, [ 3692] = 0x8B81, [ 3693] = 0xEB02,
+-  [ 3694] = 0xEB03, [ 3695] = 0xEB04, [ 3696] = 0xEB05, [ 3697] = 0x4E78,
+-  [ 3698] = 0x70BB, [ 3699] = 0xEB08, [ 3700] = 0xEB09, [ 3705] = 0xEB0A,
+-  [ 3706] = 0xEB0B, [ 3707] = 0xEB0C, [ 3708] = 0xEB0D, [ 3709] = 0xEB0E,
+-  [ 3710] = 0xEB0F, [ 3711] = 0x62C3, [ 3712] = 0x21ED5, [ 3713] = 0xEB12,
+-  [ 3714] = 0x7198, [ 3715] = 0x6855, [ 3716] = 0xEB15, [ 3717] = 0x69E9,
+-  [ 3718] = 0x36C8, [ 3719] = 0x2227C, [ 3720] = 0xEB19, [ 3721] = 0xEB1A,
+-  [ 3722] = 0xEB1B, [ 3723] = 0xEB1C, [ 3724] = 0xEB1D, [ 3725] = 0x82FD,
+-  [ 3726] = 0xEB1F, [ 3727] = 0xEB20, [ 3728] = 0x22AD5, [ 3729] = 0x89A5,
+-  [ 3730] = 0xEB23, [ 3731] = 0x8FA0, [ 3732] = 0xEB25, [ 3733] = 0x97B8,
+-  [ 3734] = 0xEB27, [ 3735] = 0x9847, [ 3736] = 0x9ABD, [ 3737] = 0xEB2A,
+-  [ 3739] = 0xEB2C, [ 3740] = 0xEB2D, [ 3741] = 0xEB2E, [ 3742] = 0x22D08,
+-  [ 3743] = 0xEB30, [ 3744] = 0xEB31, [ 3745] = 0xEB32, [ 3746] = 0xEB33,
+-  [ 3747] = 0xEB34, [ 3748] = 0xEB35, [ 3749] = 0xEB36, [ 3750] = 0xEB37,
+-  [ 3751] = 0xEB38, [ 3752] = 0xEB39, [ 3753] = 0x5FB1, [ 3754] = 0x6648,
+-  [ 3755] = 0x66BF, [ 3756] = 0xEB3D, [ 3757] = 0xEB3E, [ 3758] = 0xEB3F,
+-  [ 3760] = 0x249BA, [ 3762] = 0xEB43, [ 3763] = 0xEB44, [ 3765] = 0x20346,
+-  [ 3766] = 0x58B5, [ 3767] = 0x670E, [ 3802] = 0x6918, [ 3803] = 0xEB4A,
+-  [ 3804] = 0x27657, [ 3805] = 0x25FE2, [ 3806] = 0xEB4D, [ 3807] = 0xEB4E,
+-  [ 3808] = 0x275FE, [ 3809] = 0x2209A, [ 3810] = 0x48D0, [ 3811] = 0x4AB8,
+-  [ 3812] = 0xEB53, [ 3813] = 0x28A9A, [ 3814] = 0xEB55, [ 3815] = 0xEB56,
+-  [ 3816] = 0x2403B, [ 3817] = 0xEB58, [ 3818] = 0x24396, [ 3819] = 0xEB5A,
+-  [ 3820] = 0xEB5B, [ 3821] = 0x51D2, [ 3822] = 0x20611, [ 3823] = 0x599F,
+-  [ 3824] = 0x21EA8, [ 3825] = 0x3BBE, [ 3826] = 0x23CFF, [ 3827] = 0xEB62,
+-  [ 3828] = 0xEB63, [ 3829] = 0x5788, [ 3830] = 0xEB65, [ 3831] = 0x399B,
+-  [ 3832] = 0xEB67, [ 3833] = 0xEB68, [ 3834] = 0xEB69, [ 3835] = 0x3762,
+-  [ 3836] = 0x221C3, [ 3837] = 0x8B5E, [ 3838] = 0x28B4E, [ 3840] = 0xEB6F,
+-  [ 3841] = 0xEB70, [ 3842] = 0xEB71, [ 3843] = 0x7209, [ 3844] = 0xEB73,
+-  [ 3845] = 0x20C78, [ 3846] = 0x5965, [ 3847] = 0xEB76, [ 3848] = 0xEB77,
+-  [ 3849] = 0x20779, [ 3850] = 0x8EDA, [ 3851] = 0xEB7A, [ 3852] = 0x528F,
+-  [ 3853] = 0x573F, [ 3854] = 0x7171, [ 3855] = 0xEB7E, [ 3856] = 0xEB7F,
+-  [ 3857] = 0xEB80, [ 3858] = 0x24AA7, [ 3859] = 0x55BC, [ 3860] = 0xEB83,
+-  [ 3861] = 0x2546E, [ 3862] = 0x26B52, [ 3864] = 0x3473, [ 3865] = 0xEB88,
+-  [ 3866] = 0x27632, [ 3867] = 0xEB8A, [ 3868] = 0x4718, [ 3869] = 0xEB8C,
+-  [ 3870] = 0x25566, [ 3871] = 0x257C7, [ 3872] = 0x2493F, [ 3873] = 0xEB90,
+-  [ 3874] = 0x5066, [ 3875] = 0x34FB, [ 3876] = 0xEB93, [ 3878] = 0xEB95,
+-  [ 3879] = 0x477C, [ 3880] = 0x28948, [ 3881] = 0x25AAE, [ 3882] = 0xEB99,
+-  [ 3883] = 0x25C06, [ 3884] = 0xEB9B, [ 3885] = 0x57A1, [ 3886] = 0x7151,
+-  [ 3888] = 0xEB9F, [ 3889] = 0x27C12, [ 3890] = 0x9056, [ 3891] = 0xEBA2,
+-  [ 3892] = 0x24F9A, [ 3893] = 0x8B62, [ 3894] = 0xEBA5, [ 3895] = 0xEBA6,
+-  [ 3900] = 0x5D5B, [ 3901] = 0x26BF7, [ 3903] = 0xEBAA, [ 3904] = 0xEBAB,
+-  [ 3905] = 0x8AEA, [ 3906] = 0x249F6, [ 3907] = 0xEBAE, [ 3908] = 0x23FEF,
+-  [ 3909] = 0x26512, [ 3910] = 0x4BC0, [ 3911] = 0xEBB2, [ 3912] = 0xEBB3,
+-  [ 3913] = 0x2271B, [ 3914] = 0x9465, [ 3915] = 0x257E1, [ 3916] = 0x6195,
+-  [ 3917] = 0x5A27, [ 3918] = 0x2F8CD, [ 3920] = 0x56B9, [ 3921] = 0x24521,
+-  [ 3922] = 0xEBBD, [ 3923] = 0x4E6A, [ 3924] = 0xEBBF, [ 3925] = 0x9656,
+-  [ 3926] = 0x6D8F, [ 3927] = 0x26CBD, [ 3928] = 0x3618, [ 3929] = 0x8977,
+-  [ 3930] = 0xEBC5, [ 3931] = 0x2686E, [ 3932] = 0x26411, [ 3933] = 0x2685E,
+-  [ 3935] = 0xEBCA, [ 3936] = 0x7B42, [ 3937] = 0xEBCC, [ 3938] = 0x20A11,
+-  [ 3939] = 0xEBCE, [ 3941] = 0xEBD0, [ 3942] = 0x7A45, [ 3944] = 0x269FA,
+-  [ 3945] = 0x9A26, [ 3946] = 0xEBD5, [ 3947] = 0x365F, [ 3948] = 0xEBD7,
+-  [ 3949] = 0xEBD8, [ 3950] = 0x7983, [ 3951] = 0xEBDA, [ 3952] = 0xEBDB,
+-  [ 3953] = 0x5D2C, [ 3954] = 0xEBDD, [ 3956] = 0xEBDF, [ 3957] = 0x46D0,
+-  [ 3958] = 0xEBE1, [ 3959] = 0x753B, [ 3960] = 0x8865, [ 3961] = 0xEBE4,
+-  [ 3962] = 0x58B6, [ 3997] = 0x371C, [ 3998] = 0x2258D, [ 3999] = 0xEBE8,
+-  [ 4000] = 0xEBE9, [ 4001] = 0x3C54, [ 4002] = 0xEBEB, [ 4003] = 0xEBEC,
+-  [ 4004] = 0x9281, [ 4005] = 0x2217A, [ 4006] = 0xEBEF, [ 4007] = 0x9330,
+-  [ 4008] = 0x272E6, [ 4009] = 0xEBF2, [ 4010] = 0x6C39, [ 4011] = 0x949F,
+-  [ 4012] = 0xEBF5, [ 4013] = 0x20EF8, [ 4014] = 0x8827, [ 4015] = 0x88F5,
+-  [ 4016] = 0xEBF9, [ 4017] = 0xEBFA, [ 4018] = 0x217B1, [ 4019] = 0x6EB8,
+-  [ 4020] = 0x24A2A, [ 4021] = 0xEBFE, [ 4022] = 0x39A4, [ 4023] = 0x36B9,
+-  [ 4026] = 0x453F, [ 4027] = 0x66B6, [ 4028] = 0x29CAD, [ 4029] = 0x298A4,
+-  [ 4030] = 0x8943, [ 4031] = 0xEC08, [ 4032] = 0xEC09, [ 4033] = 0x56D6,
+-  [ 4034] = 0x40DF, [ 4035] = 0x2160A, [ 4036] = 0x39A1, [ 4037] = 0x2372F,
+-  [ 4038] = 0xEC0F, [ 4039] = 0x213C5, [ 4040] = 0x71AD, [ 4041] = 0x8366,
+-  [ 4042] = 0xEC13, [ 4043] = 0x291A8, [ 4045] = 0x4CB7, [ 4046] = 0x270AF,
+-  [ 4047] = 0x289AB, [ 4048] = 0xEC19, [ 4049] = 0xEC1A, [ 4050] = 0xEC1B,
+-  [ 4051] = 0xEC1C, [ 4052] = 0x2417A, [ 4053] = 0x7B43, [ 4054] = 0x797E,
+-  [ 4055] = 0x28009, [ 4056] = 0x6FB5, [ 4057] = 0x2A2DF, [ 4058] = 0x6A03,
+-  [ 4059] = 0xEC24, [ 4060] = 0x53A2, [ 4061] = 0xEC26, [ 4062] = 0x93BF,
+-  [ 4063] = 0x6836, [ 4064] = 0x975D, [ 4065] = 0x2816F, [ 4066] = 0xEC2B,
+-  [ 4067] = 0x269B5, [ 4068] = 0x213ED, [ 4069] = 0x2322F, [ 4070] = 0xEC2F,
+-  [ 4071] = 0x5D85, [ 4072] = 0x28C30, [ 4073] = 0xEC32, [ 4074] = 0x5715,
+-  [ 4075] = 0x9823, [ 4076] = 0x28949, [ 4077] = 0x5DAB, [ 4078] = 0x24988,
+-  [ 4079] = 0x65BE, [ 4080] = 0x69D5, [ 4081] = 0x53D2, [ 4082] = 0x24AA5,
+-  [ 4083] = 0x23F81, [ 4084] = 0x3C11, [ 4085] = 0x6736, [ 4086] = 0xEC3F,
+-  [ 4087] = 0x280F4, [ 4088] = 0x2812E, [ 4089] = 0x21FA1, [ 4090] = 0xEC43,
+-  [ 4095] = 0xEC44, [ 4096] = 0xEC45, [ 4097] = 0xEC46, [ 4098] = 0xEC47,
+-  [ 4099] = 0xEC48, [ 4100] = 0xEC49, [ 4101] = 0x35CA, [ 4102] = 0xEC4B,
+-  [ 4103] = 0x286AA, [ 4104] = 0x48FA, [ 4105] = 0x63E6, [ 4106] = 0xEC4F,
+-  [ 4107] = 0x7808, [ 4108] = 0x9255, [ 4109] = 0xEC52, [ 4110] = 0x43F2,
+-  [ 4111] = 0xEC54, [ 4112] = 0x43DF, [ 4113] = 0xEC56, [ 4114] = 0xEC57,
+-  [ 4115] = 0xEC58, [ 4116] = 0x59F8, [ 4117] = 0xEC5A, [ 4119] = 0xEC5C,
+-  [ 4120] = 0xEC5D, [ 4122] = 0x29110, [ 4123] = 0xEC60, [ 4124] = 0x3DF7,
+-  [ 4125] = 0xEC62, [ 4126] = 0xEC63, [ 4127] = 0x8FD0, [ 4128] = 0x728F,
+-  [ 4129] = 0x568B, [ 4130] = 0xEC67, [ 4131] = 0x295E9, [ 4132] = 0xEC69,
+-  [ 4133] = 0xEC6A, [ 4134] = 0xEC6B, [ 4135] = 0xEC6C, [ 4136] = 0xEC6D,
+-  [ 4137] = 0x2996A, [ 4138] = 0xEC6F, [ 4139] = 0xEC70, [ 4140] = 0x29B0E,
+-  [ 4141] = 0xEC72, [ 4142] = 0xEC73, [ 4143] = 0x7E9F, [ 4144] = 0xEC75,
+-  [ 4145] = 0x29F23, [ 4146] = 0x4CA4, [ 4147] = 0x9547, [ 4148] = 0xEC79,
+-  [ 4149] = 0x71A2, [ 4150] = 0xEC7B, [ 4151] = 0x4D91, [ 4152] = 0x9012,
+-  [ 4153] = 0xEC7E, [ 4154] = 0x4D9C, [ 4155] = 0x20C9C, [ 4156] = 0x8FBE,
+-  [ 4157] = 0x55C1, [ 4192] = 0x8FBA, [ 4193] = 0xEC84, [ 4194] = 0x8FB9,
+-  [ 4195] = 0x24A93, [ 4196] = 0x4509, [ 4197] = 0x7E7F, [ 4198] = 0x6F56,
+-  [ 4199] = 0x6AB1, [ 4200] = 0x4EEA, [ 4201] = 0x34E4, [ 4202] = 0x28B2C,
+-  [ 4203] = 0xEC8E, [ 4204] = 0x373A, [ 4205] = 0x8E80, [ 4206] = 0x217F5,
+-  [ 4207] = 0xEC92, [ 4208] = 0x28B6C, [ 4209] = 0x28B99, [ 4210] = 0xEC95,
+-  [ 4211] = 0x266AF, [ 4212] = 0x3DEB, [ 4213] = 0x27655, [ 4214] = 0x23CB7,
+-  [ 4215] = 0x25635, [ 4216] = 0x25956, [ 4217] = 0x4E9A, [ 4218] = 0x25E81,
+-  [ 4219] = 0x26258, [ 4220] = 0x56BF, [ 4221] = 0x20E6D, [ 4222] = 0x8E0E,
+-  [ 4223] = 0x5B6D, [ 4224] = 0x23E88, [ 4225] = 0x24C9E, [ 4226] = 0x63DE,
+-  [ 4228] = 0x217F6, [ 4229] = 0x2187B, [ 4230] = 0x6530, [ 4231] = 0x562D,
+-  [ 4232] = 0x25C4A, [ 4233] = 0x541A, [ 4234] = 0x25311, [ 4235] = 0x3DC6,
+-  [ 4236] = 0xECAF, [ 4237] = 0x4C7D, [ 4238] = 0x5622, [ 4239] = 0x561E,
+-  [ 4240] = 0x7F49, [ 4241] = 0x25ED8, [ 4242] = 0x5975, [ 4243] = 0xECB6,
+-  [ 4244] = 0x8770, [ 4245] = 0x4E1C, [ 4246] = 0x20FEA, [ 4247] = 0x20D49,
+-  [ 4248] = 0x236BA, [ 4249] = 0x8117, [ 4250] = 0x9D5E, [ 4251] = 0x8D18,
+-  [ 4252] = 0x763B, [ 4253] = 0x9C45, [ 4254] = 0x764E, [ 4255] = 0x77B9,
+-  [ 4256] = 0x9345, [ 4257] = 0x5432, [ 4258] = 0x8148, [ 4259] = 0x82F7,
+-  [ 4260] = 0x5625, [ 4261] = 0x8132, [ 4262] = 0x8418, [ 4263] = 0x80BD,
+-  [ 4264] = 0x55EA, [ 4265] = 0x7962, [ 4266] = 0x5643, [ 4267] = 0x5416,
+-  [ 4268] = 0xECCF, [ 4269] = 0x35CE, [ 4270] = 0x5605, [ 4271] = 0x55F1,
+-  [ 4272] = 0x66F1, [ 4273] = 0x282E2, [ 4274] = 0x362D, [ 4275] = 0x7534,
+-  [ 4276] = 0x55F0, [ 4277] = 0x55BA, [ 4278] = 0x5497, [ 4279] = 0x5572,
+-  [ 4280] = 0x20C41, [ 4281] = 0xECDC, [ 4282] = 0x5ED0, [ 4283] = 0x25148,
+-  [ 4284] = 0x20E76, [ 4285] = 0xECE0, [ 4290] = 0xECE1, [ 4291] = 0x9EAB,
+-  [ 4292] = 0x7D5A, [ 4293] = 0x55DE, [ 4294] = 0x21075, [ 4295] = 0x629D,
+-  [ 4296] = 0x976D, [ 4297] = 0x5494, [ 4298] = 0x8CCD, [ 4299] = 0x71F6,
+-  [ 4300] = 0x9176, [ 4301] = 0x63FC, [ 4302] = 0x63B9, [ 4303] = 0x63FE,
+-  [ 4304] = 0x5569, [ 4305] = 0xECF0, [ 4306] = 0x9C72, [ 4307] = 0xECF2,
+-  [ 4308] = 0x519A, [ 4309] = 0x34DF, [ 4310] = 0x20DA7, [ 4311] = 0x51A7,
+-  [ 4312] = 0x544D, [ 4313] = 0x551E, [ 4314] = 0x5513, [ 4315] = 0x7666,
+-  [ 4316] = 0x8E2D, [ 4317] = 0xECFC, [ 4318] = 0x75B1, [ 4319] = 0x80B6,
+-  [ 4320] = 0x8804, [ 4321] = 0x8786, [ 4322] = 0x88C7, [ 4323] = 0x81B6,
+-  [ 4324] = 0x841C, [ 4325] = 0x210C1, [ 4326] = 0x44EC, [ 4327] = 0x7304,
+-  [ 4328] = 0x24706, [ 4329] = 0x5B90, [ 4330] = 0x830B, [ 4331] = 0x26893,
+-  [ 4332] = 0x567B, [ 4333] = 0x226F4, [ 4334] = 0x27D2F, [ 4335] = 0x241A3,
+-  [ 4336] = 0x27D73, [ 4337] = 0x26ED0, [ 4338] = 0xED11, [ 4339] = 0x9170,
+-  [ 4340] = 0x211D9, [ 4341] = 0x9208, [ 4342] = 0x23CFC, [ 4343] = 0x2A6A9,
+-  [ 4344] = 0x20EAC, [ 4345] = 0x20EF9, [ 4346] = 0x7266, [ 4347] = 0x21CA2,
+-  [ 4348] = 0x474E, [ 4349] = 0x24FC2, [ 4350] = 0xED1D, [ 4351] = 0x20FEB,
+-  [ 4352] = 0x40FA, [ 4387] = 0x9C5D, [ 4388] = 0x651F, [ 4389] = 0x22DA0,
+-  [ 4390] = 0x48F3, [ 4391] = 0xED24, [ 4392] = 0x29D7C, [ 4393] = 0x20FEC,
+-  [ 4394] = 0x20E0A, [ 4396] = 0xED29, [ 4397] = 0x20FED, [ 4399] = 0xED2C,
+-  [ 4400] = 0x21187, [ 4401] = 0x71A3, [ 4402] = 0x7E8E, [ 4403] = 0x9D50,
+-  [ 4404] = 0x4E1A, [ 4405] = 0x4E04, [ 4406] = 0x3577, [ 4407] = 0x5B0D,
+-  [ 4408] = 0x6CB2, [ 4409] = 0x5367, [ 4410] = 0x36AC, [ 4411] = 0x39DC,
+-  [ 4412] = 0x537D, [ 4413] = 0x36A5, [ 4414] = 0xED3B, [ 4415] = 0x589A,
+-  [ 4416] = 0x24B6E, [ 4417] = 0x822D, [ 4418] = 0x544B, [ 4419] = 0x57AA,
+-  [ 4420] = 0xED41, [ 4421] = 0x20979, [ 4423] = 0x3A52, [ 4424] = 0x22465,
+-  [ 4425] = 0x7374, [ 4426] = 0x29EAC, [ 4427] = 0x4D09, [ 4428] = 0x9BED,
+-  [ 4429] = 0x23CFE, [ 4430] = 0x29F30, [ 4431] = 0x4C5B, [ 4432] = 0x24FA9,
+-  [ 4433] = 0x2959E, [ 4434] = 0xED4F, [ 4435] = 0x845C, [ 4436] = 0x23DB6,
+-  [ 4437] = 0xED52, [ 4438] = 0x267B3, [ 4439] = 0x23720, [ 4440] = 0x632E,
+-  [ 4441] = 0x7D25, [ 4442] = 0x23EF7, [ 4443] = 0x23E2C, [ 4444] = 0x3A2A,
+-  [ 4445] = 0x9008, [ 4446] = 0x52CC, [ 4447] = 0x3E74, [ 4448] = 0x367A,
+-  [ 4449] = 0x45E9, [ 4450] = 0xED5F, [ 4451] = 0x7640, [ 4452] = 0x5AF0,
+-  [ 4453] = 0x20EB6, [ 4454] = 0x787A, [ 4455] = 0x47B6, [ 4456] = 0x58A7,
+-  [ 4457] = 0x40BF, [ 4458] = 0x567C, [ 4459] = 0x9B8B, [ 4460] = 0x5D74,
+-  [ 4461] = 0x7654, [ 4462] = 0xED6B, [ 4463] = 0x9E85, [ 4464] = 0x4CE1,
+-  [ 4466] = 0x37FB, [ 4467] = 0x6119, [ 4468] = 0x230DA, [ 4469] = 0x243F2,
+-  [ 4471] = 0x565D, [ 4472] = 0x212A9, [ 4473] = 0x57A7, [ 4474] = 0x24963,
+-  [ 4475] = 0xED78, [ 4476] = 0x5234, [ 4477] = 0x270AE, [ 4478] = 0x35AD,
+-  [ 4480] = 0x9D7C, [ 4485] = 0x7C56, [ 4486] = 0x9B39, [ 4487] = 0x57DE,
+-  [ 4488] = 0x2176C, [ 4489] = 0x5C53, [ 4490] = 0x64D3, [ 4491] = 0xED84,
+-  [ 4492] = 0xED85, [ 4493] = 0x27164, [ 4494] = 0x86AD, [ 4495] = 0xED88,
+-  [ 4496] = 0x26D22, [ 4497] = 0x24AE2, [ 4498] = 0xED8B, [ 4500] = 0x51FE,
+-  [ 4501] = 0xED8E, [ 4502] = 0x5D8E, [ 4503] = 0x9703, [ 4504] = 0x21DD1,
+-  [ 4505] = 0x9E81, [ 4506] = 0x904C, [ 4507] = 0x7B1F, [ 4508] = 0x9B02,
+-  [ 4509] = 0x5CD1, [ 4510] = 0x7BA3, [ 4511] = 0x6268, [ 4512] = 0x6335,
+-  [ 4513] = 0x9AFF, [ 4514] = 0x7BCF, [ 4515] = 0x9B2A, [ 4516] = 0x7C7E,
+-  [ 4518] = 0x7C42, [ 4519] = 0x7C86, [ 4520] = 0x9C15, [ 4521] = 0x7BFC,
+-  [ 4522] = 0x9B09, [ 4524] = 0x9C1B, [ 4525] = 0x2493E, [ 4526] = 0x9F5A,
+-  [ 4527] = 0x5573, [ 4528] = 0x5BC3, [ 4529] = 0x4FFD, [ 4530] = 0x9E98,
+-  [ 4531] = 0x4FF2, [ 4532] = 0x5260, [ 4533] = 0x3E06, [ 4534] = 0x52D1,
+-  [ 4535] = 0x5767, [ 4536] = 0x5056, [ 4537] = 0x59B7, [ 4538] = 0x5E12,
+-  [ 4539] = 0x97C8, [ 4540] = 0x9DAB, [ 4541] = 0x8F5C, [ 4542] = 0x5469,
+-  [ 4543] = 0x97B4, [ 4544] = 0x9940, [ 4545] = 0x97BA, [ 4546] = 0x532C,
+-  [ 4547] = 0x6130, [ 4582] = 0x692C, [ 4583] = 0x53DA, [ 4584] = 0x9C0A,
+-  [ 4585] = 0x9D02, [ 4586] = 0x4C3B, [ 4587] = 0x9641, [ 4588] = 0x6980,
+-  [ 4589] = 0x50A6, [ 4590] = 0x7546, [ 4591] = 0x2176D, [ 4592] = 0x99DA,
+-  [ 4593] = 0x5273, [ 4595] = 0x9159, [ 4596] = 0x9681, [ 4597] = 0x915C,
+-  [ 4599] = 0x9151, [ 4600] = 0xEDCF, [ 4601] = 0x637F, [ 4602] = 0x26D23,
+-  [ 4603] = 0x6ACA, [ 4604] = 0x5611, [ 4605] = 0x918E, [ 4606] = 0x757A,
+-  [ 4607] = 0x6285, [ 4608] = 0x203FC, [ 4609] = 0x734F, [ 4610] = 0x7C70,
+-  [ 4611] = 0xEDDA, [ 4612] = 0x23CFD, [ 4614] = 0x24919, [ 4615] = 0x76D6,
+-  [ 4616] = 0x9B9D, [ 4617] = 0x4E2A, [ 4618] = 0x20CD4, [ 4619] = 0x83BE,
+-  [ 4620] = 0x8842, [ 4622] = 0x5C4A, [ 4623] = 0x69C0, [ 4625] = 0x577A,
+-  [ 4626] = 0x521F, [ 4627] = 0x5DF5, [ 4628] = 0x4ECE, [ 4629] = 0x6C31,
+-  [ 4630] = 0xEDED, [ 4631] = 0x4F39, [ 4632] = 0x549C, [ 4633] = 0x54DA,
+-  [ 4634] = 0x529A, [ 4635] = 0x8D82, [ 4636] = 0x35FE, [ 4638] = 0x35F3,
+-  [ 4640] = 0x6B52, [ 4641] = 0x917C, [ 4642] = 0x9FA5, [ 4643] = 0x9B97,
+-  [ 4644] = 0x982E, [ 4645] = 0x98B4, [ 4646] = 0x9ABA, [ 4647] = 0x9EA8,
+-  [ 4648] = 0x9E84, [ 4649] = 0x717A, [ 4650] = 0x7B14, [ 4652] = 0x6BFA,
+-  [ 4653] = 0x8818, [ 4654] = 0x7F78, [ 4656] = 0x5620, [ 4657] = 0xEE08,
+-  [ 4658] = 0x8E77, [ 4659] = 0x9F53, [ 4661] = 0x8DD4, [ 4662] = 0x8E4F,
+-  [ 4663] = 0x9E1C, [ 4664] = 0x8E01, [ 4665] = 0x6282, [ 4666] = 0x2837D,
+-  [ 4667] = 0x8E28, [ 4668] = 0x8E75, [ 4669] = 0x7AD3, [ 4670] = 0x24A77,
+-  [ 4671] = 0x7A3E, [ 4672] = 0x78D8, [ 4673] = 0x6CEA, [ 4674] = 0x8A67,
+-  [ 4675] = 0x7607, [ 4680] = 0x28A5A, [ 4681] = 0x9F26, [ 4682] = 0x6CCE,
+-  [ 4683] = 0x87D6, [ 4684] = 0x75C3, [ 4685] = 0x2A2B2, [ 4686] = 0x7853,
+-  [ 4687] = 0x2F840, [ 4688] = 0x8D0C, [ 4689] = 0x72E2, [ 4690] = 0x7371,
+-  [ 4691] = 0x8B2D, [ 4692] = 0x7302, [ 4693] = 0x74F1, [ 4694] = 0x8CEB,
+-  [ 4695] = 0x24ABB, [ 4696] = 0x862F, [ 4697] = 0x5FBA, [ 4698] = 0x88A0,
+-  [ 4699] = 0x44B7, [ 4701] = 0x2183B, [ 4702] = 0x26E05, [ 4704] = 0x8A7E,
+-  [ 4705] = 0x2251B, [ 4707] = 0x60FD, [ 4708] = 0x7667, [ 4709] = 0x9AD7,
+-  [ 4710] = 0x9D44, [ 4711] = 0x936E, [ 4712] = 0x9B8F, [ 4713] = 0x87F5,
+-  [ 4716] = 0x8CF7, [ 4717] = 0x732C, [ 4718] = 0x9721, [ 4719] = 0x9BB0,
+-  [ 4720] = 0x35D6, [ 4721] = 0x72B2, [ 4722] = 0x4C07, [ 4723] = 0x7C51,
+-  [ 4724] = 0x994A, [ 4725] = 0x26159, [ 4726] = 0x6159, [ 4727] = 0x4C04,
+-  [ 4728] = 0x9E96, [ 4729] = 0x617D, [ 4731] = 0x575F, [ 4732] = 0x616F,
+-  [ 4733] = 0x62A6, [ 4734] = 0x6239, [ 4736] = 0x3A5C, [ 4737] = 0x61E2,
+-  [ 4738] = 0x53AA, [ 4739] = 0x233F5, [ 4740] = 0x6364, [ 4741] = 0x6802,
+-  [ 4742] = 0x35D2, [ 4777] = 0x5D57, [ 4778] = 0x28BC2, [ 4779] = 0x8FDA,
+-  [ 4780] = 0xEE5D, [ 4782] = 0x50D9, [ 4783] = 0x21D46, [ 4784] = 0x7906,
+-  [ 4785] = 0x5332, [ 4786] = 0x9638, [ 4787] = 0x20F3B, [ 4788] = 0x4065,
+-  [ 4790] = 0x77FE, [ 4792] = 0x7CC2, [ 4793] = 0xEE6A, [ 4794] = 0x7CDA,
+-  [ 4795] = 0x7A2D, [ 4796] = 0x8066, [ 4797] = 0x8063, [ 4798] = 0x7D4D,
+-  [ 4799] = 0x7505, [ 4800] = 0x74F2, [ 4801] = 0x8994, [ 4802] = 0x821A,
+-  [ 4803] = 0x670C, [ 4804] = 0x8062, [ 4805] = 0x27486, [ 4806] = 0x805B,
+-  [ 4807] = 0x74F0, [ 4808] = 0x8103, [ 4809] = 0x7724, [ 4810] = 0x8989,
+-  [ 4811] = 0x267CC, [ 4812] = 0x7553, [ 4813] = 0x26ED1, [ 4814] = 0x87A9,
+-  [ 4815] = 0x87CE, [ 4816] = 0x81C8, [ 4817] = 0x878C, [ 4818] = 0x8A49,
+-  [ 4819] = 0x8CAD, [ 4820] = 0x8B43, [ 4821] = 0x772B, [ 4822] = 0x74F8,
+-  [ 4823] = 0x84DA, [ 4824] = 0x3635, [ 4825] = 0x69B2, [ 4826] = 0x8DA6,
+-  [ 4828] = 0x89A9, [ 4830] = 0x6DB9, [ 4831] = 0x87C1, [ 4832] = 0x24011,
+-  [ 4833] = 0x74E7, [ 4834] = 0x3DDB, [ 4835] = 0x7176, [ 4836] = 0x60A4,
+-  [ 4837] = 0x619C, [ 4838] = 0x3CD1, [ 4840] = 0x6077, [ 4842] = 0x7F71,
+-  [ 4843] = 0x28B2D, [ 4845] = 0x60E9, [ 4846] = 0x4B7E, [ 4847] = 0x5220,
+-  [ 4848] = 0x3C18, [ 4849] = 0x23CC7, [ 4850] = 0x25ED7, [ 4851] = 0x27656,
+-  [ 4852] = 0xEEA5, [ 4853] = 0x21944, [ 4854] = 0x212FE, [ 4855] = 0x29903,
+-  [ 4856] = 0x26DDC, [ 4857] = 0x270AD, [ 4858] = 0x5CC1, [ 4859] = 0x261AD,
+-  [ 4860] = 0x28A0F, [ 4861] = 0x23677, [ 4862] = 0x200EE, [ 4863] = 0xEEB0,
+-  [ 4864] = 0x24F0E, [ 4865] = 0x4562, [ 4866] = 0x5B1F, [ 4867] = 0xEEB4,
+-  [ 4868] = 0x9F50, [ 4869] = 0x9EA6, [ 4870] = 0xEEB7, [ 4875] = 0x3000,
+-  [ 4876] = 0xFF0C, [ 4877] = 0x3001, [ 4878] = 0x3002, [ 4879] = 0xFF0E,
+-  [ 4880] = 0x2022, [ 4881] = 0xFF1B, [ 4882] = 0xFF1A, [ 4883] = 0xFF1F,
+-  [ 4884] = 0xFF01, [ 4885] = 0xFE30, [ 4886] = 0x2026, [ 4887] = 0x2025,
+-  [ 4888] = 0xFE50, [ 4889] = 0xFF64, [ 4890] = 0xFE52, [ 4891] = 0x00B7,
+-  [ 4892] = 0xFE54, [ 4893] = 0xFE55, [ 4894] = 0xFE56, [ 4895] = 0xFE57,
+-  [ 4896] = 0xFF5C, [ 4897] = 0x2013, [ 4898] = 0xFE31, [ 4899] = 0x2014,
+-  [ 4900] = 0xFE33, [ 4902] = 0xFE34, [ 4903] = 0xFE4F, [ 4904] = 0xFF08,
+-  [ 4905] = 0xFF09, [ 4906] = 0xFE35, [ 4907] = 0xFE36, [ 4908] = 0xFF5B,
+-  [ 4909] = 0xFF5D, [ 4910] = 0xFE37, [ 4911] = 0xFE38, [ 4912] = 0x3014,
+-  [ 4913] = 0x3015, [ 4914] = 0xFE39, [ 4915] = 0xFE3A, [ 4916] = 0x3010,
+-  [ 4917] = 0x3011, [ 4918] = 0xFE3B, [ 4919] = 0xFE3C, [ 4920] = 0x300A,
+-  [ 4921] = 0x300B, [ 4922] = 0xFE3D, [ 4923] = 0xFE3E, [ 4924] = 0x3008,
+-  [ 4925] = 0x3009, [ 4926] = 0xFE3F, [ 4927] = 0xFE40, [ 4928] = 0x300C,
+-  [ 4929] = 0x300D, [ 4930] = 0xFE41, [ 4931] = 0xFE42, [ 4932] = 0x300E,
+-  [ 4933] = 0x300F, [ 4934] = 0xFE43, [ 4935] = 0xFE44, [ 4936] = 0xFE59,
+-  [ 4937] = 0xFE5A, [ 4972] = 0xFE5B, [ 4973] = 0xFE5C, [ 4974] = 0xFE5D,
+-  [ 4975] = 0xFE5E, [ 4976] = 0x2018, [ 4977] = 0x2019, [ 4978] = 0x201C,
+-  [ 4979] = 0x201D, [ 4980] = 0x301D, [ 4981] = 0x301E, [ 4982] = 0x2035,
+-  [ 4983] = 0x2032, [ 4984] = 0xFF03, [ 4985] = 0xFF06, [ 4986] = 0xFF0A,
+-  [ 4987] = 0x203B, [ 4988] = 0x00A7, [ 4989] = 0x3003, [ 4990] = 0x25CB,
+-  [ 4991] = 0x25CF, [ 4992] = 0x25B3, [ 4993] = 0x25B2, [ 4994] = 0x25CE,
+-  [ 4995] = 0x2606, [ 4996] = 0x2605, [ 4997] = 0x25C7, [ 4998] = 0x25C6,
+-  [ 4999] = 0x25A1, [ 5000] = 0x25A0, [ 5001] = 0x25BD, [ 5002] = 0x25BC,
+-  [ 5003] = 0x32A3, [ 5004] = 0x2105, [ 5005] = 0x203E, [ 5007] = 0xFF3F,
+-  [ 5009] = 0xFE49, [ 5010] = 0xFE4A, [ 5011] = 0xFE4D, [ 5012] = 0xFE4E,
+-  [ 5013] = 0xFE4B, [ 5014] = 0xFE4C, [ 5015] = 0xFE5F, [ 5016] = 0xFE60,
+-  [ 5017] = 0xFE61, [ 5018] = 0xFF0B, [ 5019] = 0xFF0D, [ 5020] = 0x00D7,
+-  [ 5021] = 0x00F7, [ 5022] = 0x00B1, [ 5023] = 0x221A, [ 5024] = 0xFF1C,
+-  [ 5025] = 0xFF1E, [ 5026] = 0xFF1D, [ 5027] = 0x2266, [ 5028] = 0x2267,
+-  [ 5029] = 0x2260, [ 5030] = 0x221E, [ 5031] = 0x2252, [ 5032] = 0x2261,
+-  [ 5033] = 0xFE62, [ 5034] = 0xFE63, [ 5035] = 0xFE64, [ 5036] = 0xFE65,
+-  [ 5037] = 0xFE66, [ 5038] = 0x223C, [ 5039] = 0x2229, [ 5040] = 0x222A,
+-  [ 5041] = 0x22A5, [ 5042] = 0x2220, [ 5043] = 0x221F, [ 5044] = 0x22BF,
+-  [ 5045] = 0x33D2, [ 5046] = 0x33D1, [ 5047] = 0x222B, [ 5048] = 0x222E,
+-  [ 5049] = 0x2235, [ 5050] = 0x2234, [ 5051] = 0x2640, [ 5052] = 0x2642,
+-  [ 5053] = 0x2641, [ 5054] = 0x2609, [ 5055] = 0x2191, [ 5056] = 0x2193,
+-  [ 5057] = 0x2190, [ 5058] = 0x2192, [ 5059] = 0x2196, [ 5060] = 0x2197,
+-  [ 5061] = 0x2199, [ 5062] = 0x2198, [ 5063] = 0x2225, [ 5064] = 0x2223,
+-  [ 5071] = 0xFF0F, [ 5072] = 0xFF3C, [ 5073] = 0xFF04, [ 5074] = 0x00A5,
+-  [ 5075] = 0x3012, [ 5076] = 0x00A2, [ 5077] = 0x00A3, [ 5078] = 0xFF05,
+-  [ 5079] = 0xFF20, [ 5080] = 0x2103, [ 5081] = 0x2109, [ 5082] = 0xFE69,
+-  [ 5083] = 0xFE6A, [ 5084] = 0xFE6B, [ 5085] = 0x33D5, [ 5086] = 0x339C,
+-  [ 5087] = 0x339D, [ 5088] = 0x339E, [ 5089] = 0x33CE, [ 5090] = 0x33A1,
+-  [ 5091] = 0x338E, [ 5092] = 0x338F, [ 5093] = 0x33C4, [ 5094] = 0x00B0,
+-  [ 5095] = 0x5159, [ 5096] = 0x515B, [ 5097] = 0x515E, [ 5098] = 0x515D,
+-  [ 5099] = 0x5161, [ 5100] = 0x5163, [ 5101] = 0x55E7, [ 5102] = 0x74E9,
+-  [ 5103] = 0x7CCE, [ 5104] = 0x2581, [ 5105] = 0x2582, [ 5106] = 0x2583,
+-  [ 5107] = 0x2584, [ 5108] = 0x2585, [ 5109] = 0x2586, [ 5110] = 0x2587,
+-  [ 5111] = 0x2588, [ 5112] = 0x258F, [ 5113] = 0x258E, [ 5114] = 0x258D,
+-  [ 5115] = 0x258C, [ 5116] = 0x258B, [ 5117] = 0x258A, [ 5118] = 0x2589,
+-  [ 5119] = 0x253C, [ 5120] = 0x2534, [ 5121] = 0x252C, [ 5122] = 0x2524,
+-  [ 5123] = 0x251C, [ 5124] = 0x2594, [ 5125] = 0x2500, [ 5126] = 0x2502,
+-  [ 5127] = 0x2595, [ 5128] = 0x250C, [ 5129] = 0x2510, [ 5130] = 0x2514,
+-  [ 5131] = 0x2518, [ 5132] = 0x256D, [ 5167] = 0x256E, [ 5168] = 0x2570,
+-  [ 5169] = 0x256F, [ 5170] = 0x2550, [ 5171] = 0x255E, [ 5172] = 0x256A,
+-  [ 5173] = 0x2561, [ 5174] = 0x25E2, [ 5175] = 0x25E3, [ 5176] = 0x25E5,
+-  [ 5177] = 0x25E4, [ 5178] = 0x2571, [ 5179] = 0x2572, [ 5180] = 0x2573,
+-  [ 5181] = 0xFF10, [ 5182] = 0xFF11, [ 5183] = 0xFF12, [ 5184] = 0xFF13,
+-  [ 5185] = 0xFF14, [ 5186] = 0xFF15, [ 5187] = 0xFF16, [ 5188] = 0xFF17,
+-  [ 5189] = 0xFF18, [ 5190] = 0xFF19, [ 5191] = 0x2160, [ 5192] = 0x2161,
+-  [ 5193] = 0x2162, [ 5194] = 0x2163, [ 5195] = 0x2164, [ 5196] = 0x2165,
+-  [ 5197] = 0x2166, [ 5198] = 0x2167, [ 5199] = 0x2168, [ 5200] = 0x2169,
+-  [ 5201] = 0x3021, [ 5202] = 0x3022, [ 5203] = 0x3023, [ 5204] = 0x3024,
+-  [ 5205] = 0x3025, [ 5206] = 0x3026, [ 5207] = 0x3027, [ 5208] = 0x3028,
+-  [ 5209] = 0x3029, [ 5211] = 0x5344, [ 5213] = 0xFF21, [ 5214] = 0xFF22,
+-  [ 5215] = 0xFF23, [ 5216] = 0xFF24, [ 5217] = 0xFF25, [ 5218] = 0xFF26,
+-  [ 5219] = 0xFF27, [ 5220] = 0xFF28, [ 5221] = 0xFF29, [ 5222] = 0xFF2A,
+-  [ 5223] = 0xFF2B, [ 5224] = 0xFF2C, [ 5225] = 0xFF2D, [ 5226] = 0xFF2E,
+-  [ 5227] = 0xFF2F, [ 5228] = 0xFF30, [ 5229] = 0xFF31, [ 5230] = 0xFF32,
+-  [ 5231] = 0xFF33, [ 5232] = 0xFF34, [ 5233] = 0xFF35, [ 5234] = 0xFF36,
+-  [ 5235] = 0xFF37, [ 5236] = 0xFF38, [ 5237] = 0xFF39, [ 5238] = 0xFF3A,
+-  [ 5239] = 0xFF41, [ 5240] = 0xFF42, [ 5241] = 0xFF43, [ 5242] = 0xFF44,
+-  [ 5243] = 0xFF45, [ 5244] = 0xFF46, [ 5245] = 0xFF47, [ 5246] = 0xFF48,
+-  [ 5247] = 0xFF49, [ 5248] = 0xFF4A, [ 5249] = 0xFF4B, [ 5250] = 0xFF4C,
+-  [ 5251] = 0xFF4D, [ 5252] = 0xFF4E, [ 5253] = 0xFF4F, [ 5254] = 0xFF50,
+-  [ 5255] = 0xFF51, [ 5256] = 0xFF52, [ 5257] = 0xFF53, [ 5258] = 0xFF54,
+-  [ 5259] = 0xFF55, [ 5260] = 0xFF56, [ 5265] = 0xFF57, [ 5266] = 0xFF58,
+-  [ 5267] = 0xFF59, [ 5268] = 0xFF5A, [ 5269] = 0x0391, [ 5270] = 0x0392,
+-  [ 5271] = 0x0393, [ 5272] = 0x0394, [ 5273] = 0x0395, [ 5274] = 0x0396,
+-  [ 5275] = 0x0397, [ 5276] = 0x0398, [ 5277] = 0x0399, [ 5278] = 0x039A,
+-  [ 5279] = 0x039B, [ 5280] = 0x039C, [ 5281] = 0x039D, [ 5282] = 0x039E,
+-  [ 5283] = 0x039F, [ 5284] = 0x03A0, [ 5285] = 0x03A1, [ 5286] = 0x03A3,
+-  [ 5287] = 0x03A4, [ 5288] = 0x03A5, [ 5289] = 0x03A6, [ 5290] = 0x03A7,
+-  [ 5291] = 0x03A8, [ 5292] = 0x03A9, [ 5293] = 0x03B1, [ 5294] = 0x03B2,
+-  [ 5295] = 0x03B3, [ 5296] = 0x03B4, [ 5297] = 0x03B5, [ 5298] = 0x03B6,
+-  [ 5299] = 0x03B7, [ 5300] = 0x03B8, [ 5301] = 0x03B9, [ 5302] = 0x03BA,
+-  [ 5303] = 0x03BB, [ 5304] = 0x03BC, [ 5305] = 0x03BD, [ 5306] = 0x03BE,
+-  [ 5307] = 0x03BF, [ 5308] = 0x03C0, [ 5309] = 0x03C1, [ 5310] = 0x03C3,
+-  [ 5311] = 0x03C4, [ 5312] = 0x03C5, [ 5313] = 0x03C6, [ 5314] = 0x03C7,
+-  [ 5315] = 0x03C8, [ 5316] = 0x03C9, [ 5317] = 0x3105, [ 5318] = 0x3106,
+-  [ 5319] = 0x3107, [ 5320] = 0x3108, [ 5321] = 0x3109, [ 5322] = 0x310A,
+-  [ 5323] = 0x310B, [ 5324] = 0x310C, [ 5325] = 0x310D, [ 5326] = 0x310E,
+-  [ 5327] = 0x310F, [ 5362] = 0x3110, [ 5363] = 0x3111, [ 5364] = 0x3112,
+-  [ 5365] = 0x3113, [ 5366] = 0x3114, [ 5367] = 0x3115, [ 5368] = 0x3116,
+-  [ 5369] = 0x3117, [ 5370] = 0x3118, [ 5371] = 0x3119, [ 5372] = 0x311A,
+-  [ 5373] = 0x311B, [ 5374] = 0x311C, [ 5375] = 0x311D, [ 5376] = 0x311E,
+-  [ 5377] = 0x311F, [ 5378] = 0x3120, [ 5379] = 0x3121, [ 5380] = 0x3122,
+-  [ 5381] = 0x3123, [ 5382] = 0x3124, [ 5383] = 0x3125, [ 5384] = 0x3126,
+-  [ 5385] = 0x3127, [ 5386] = 0x3128, [ 5387] = 0x3129, [ 5388] = 0x02D9,
+-  [ 5389] = 0x02C9, [ 5390] = 0x02CA, [ 5391] = 0x02C7, [ 5392] = 0x02CB,
+-  [ 5460] = 0x4E00, [ 5461] = 0x4E59, [ 5462] = 0x4E01, [ 5463] = 0x4E03,
+-  [ 5464] = 0x4E43, [ 5465] = 0x4E5D, [ 5466] = 0x4E86, [ 5467] = 0x4E8C,
+-  [ 5468] = 0x4EBA, [ 5469] = 0x513F, [ 5470] = 0x5165, [ 5471] = 0x516B,
+-  [ 5472] = 0x51E0, [ 5473] = 0x5200, [ 5474] = 0x5201, [ 5475] = 0x529B,
+-  [ 5476] = 0x5315, [ 5477] = 0x5341, [ 5478] = 0x535C, [ 5479] = 0x53C8,
+-  [ 5480] = 0x4E09, [ 5481] = 0x4E0B, [ 5482] = 0x4E08, [ 5483] = 0x4E0A,
+-  [ 5484] = 0x4E2B, [ 5485] = 0x4E38, [ 5486] = 0x51E1, [ 5487] = 0x4E45,
+-  [ 5488] = 0x4E48, [ 5489] = 0x4E5F, [ 5490] = 0x4E5E, [ 5491] = 0x4E8E,
+-  [ 5492] = 0x4EA1, [ 5493] = 0x5140, [ 5494] = 0x5203, [ 5495] = 0x52FA,
+-  [ 5496] = 0x5343, [ 5497] = 0x53C9, [ 5498] = 0x53E3, [ 5499] = 0x571F,
+-  [ 5500] = 0x58EB, [ 5501] = 0x5915, [ 5502] = 0x5927, [ 5503] = 0x5973,
+-  [ 5504] = 0x5B50, [ 5505] = 0x5B51, [ 5506] = 0x5B53, [ 5507] = 0x5BF8,
+-  [ 5508] = 0x5C0F, [ 5509] = 0x5C22, [ 5510] = 0x5C38, [ 5511] = 0x5C71,
+-  [ 5512] = 0x5DDD, [ 5513] = 0x5DE5, [ 5514] = 0x5DF1, [ 5515] = 0x5DF2,
+-  [ 5516] = 0x5DF3, [ 5517] = 0x5DFE, [ 5518] = 0x5E72, [ 5519] = 0x5EFE,
+-  [ 5520] = 0x5F0B, [ 5521] = 0x5F13, [ 5522] = 0x624D, [ 5557] = 0x4E11,
+-  [ 5558] = 0x4E10, [ 5559] = 0x4E0D, [ 5560] = 0x4E2D, [ 5561] = 0x4E30,
+-  [ 5562] = 0x4E39, [ 5563] = 0x4E4B, [ 5564] = 0x5C39, [ 5565] = 0x4E88,
+-  [ 5566] = 0x4E91, [ 5567] = 0x4E95, [ 5568] = 0x4E92, [ 5569] = 0x4E94,
+-  [ 5570] = 0x4EA2, [ 5571] = 0x4EC1, [ 5572] = 0x4EC0, [ 5573] = 0x4EC3,
+-  [ 5574] = 0x4EC6, [ 5575] = 0x4EC7, [ 5576] = 0x4ECD, [ 5577] = 0x4ECA,
+-  [ 5578] = 0x4ECB, [ 5579] = 0x4EC4, [ 5580] = 0x5143, [ 5581] = 0x5141,
+-  [ 5582] = 0x5167, [ 5583] = 0x516D, [ 5584] = 0x516E, [ 5585] = 0x516C,
+-  [ 5586] = 0x5197, [ 5587] = 0x51F6, [ 5588] = 0x5206, [ 5589] = 0x5207,
+-  [ 5590] = 0x5208, [ 5591] = 0x52FB, [ 5592] = 0x52FE, [ 5593] = 0x52FF,
+-  [ 5594] = 0x5316, [ 5595] = 0x5339, [ 5596] = 0x5348, [ 5597] = 0x5347,
+-  [ 5598] = 0x5345, [ 5599] = 0x535E, [ 5600] = 0x5384, [ 5601] = 0x53CB,
+-  [ 5602] = 0x53CA, [ 5603] = 0x53CD, [ 5604] = 0x58EC, [ 5605] = 0x5929,
+-  [ 5606] = 0x592B, [ 5607] = 0x592A, [ 5608] = 0x592D, [ 5609] = 0x5B54,
+-  [ 5610] = 0x5C11, [ 5611] = 0x5C24, [ 5612] = 0x5C3A, [ 5613] = 0x5C6F,
+-  [ 5614] = 0x5DF4, [ 5615] = 0x5E7B, [ 5616] = 0x5EFF, [ 5617] = 0x5F14,
+-  [ 5618] = 0x5F15, [ 5619] = 0x5FC3, [ 5620] = 0x6208, [ 5621] = 0x6236,
+-  [ 5622] = 0x624B, [ 5623] = 0x624E, [ 5624] = 0x652F, [ 5625] = 0x6587,
+-  [ 5626] = 0x6597, [ 5627] = 0x65A4, [ 5628] = 0x65B9, [ 5629] = 0x65E5,
+-  [ 5630] = 0x66F0, [ 5631] = 0x6708, [ 5632] = 0x6728, [ 5633] = 0x6B20,
+-  [ 5634] = 0x6B62, [ 5635] = 0x6B79, [ 5636] = 0x6BCB, [ 5637] = 0x6BD4,
+-  [ 5638] = 0x6BDB, [ 5639] = 0x6C0F, [ 5640] = 0x6C34, [ 5641] = 0x706B,
+-  [ 5642] = 0x722A, [ 5643] = 0x7236, [ 5644] = 0x723B, [ 5645] = 0x7247,
+-  [ 5646] = 0x7259, [ 5647] = 0x725B, [ 5648] = 0x72AC, [ 5649] = 0x738B,
+-  [ 5650] = 0x4E19, [ 5655] = 0x4E16, [ 5656] = 0x4E15, [ 5657] = 0x4E14,
+-  [ 5658] = 0x4E18, [ 5659] = 0x4E3B, [ 5660] = 0x4E4D, [ 5661] = 0x4E4F,
+-  [ 5662] = 0x4E4E, [ 5663] = 0x4EE5, [ 5664] = 0x4ED8, [ 5665] = 0x4ED4,
+-  [ 5666] = 0x4ED5, [ 5667] = 0x4ED6, [ 5668] = 0x4ED7, [ 5669] = 0x4EE3,
+-  [ 5670] = 0x4EE4, [ 5671] = 0x4ED9, [ 5672] = 0x4EDE, [ 5673] = 0x5145,
+-  [ 5674] = 0x5144, [ 5675] = 0x5189, [ 5676] = 0x518A, [ 5677] = 0x51AC,
+-  [ 5678] = 0x51F9, [ 5679] = 0x51FA, [ 5680] = 0x51F8, [ 5681] = 0x520A,
+-  [ 5682] = 0x52A0, [ 5683] = 0x529F, [ 5684] = 0x5305, [ 5685] = 0x5306,
+-  [ 5686] = 0x5317, [ 5687] = 0x531D, [ 5688] = 0x4EDF, [ 5689] = 0x534A,
+-  [ 5690] = 0x5349, [ 5691] = 0x5361, [ 5692] = 0x5360, [ 5693] = 0x536F,
+-  [ 5694] = 0x536E, [ 5695] = 0x53BB, [ 5696] = 0x53EF, [ 5697] = 0x53E4,
+-  [ 5698] = 0x53F3, [ 5699] = 0x53EC, [ 5700] = 0x53EE, [ 5701] = 0x53E9,
+-  [ 5702] = 0x53E8, [ 5703] = 0x53FC, [ 5704] = 0x53F8, [ 5705] = 0x53F5,
+-  [ 5706] = 0x53EB, [ 5707] = 0x53E6, [ 5708] = 0x53EA, [ 5709] = 0x53F2,
+-  [ 5710] = 0x53F1, [ 5711] = 0x53F0, [ 5712] = 0x53E5, [ 5713] = 0x53ED,
+-  [ 5714] = 0x53FB, [ 5715] = 0x56DB, [ 5716] = 0x56DA, [ 5717] = 0x5916,
+-  [ 5752] = 0x592E, [ 5753] = 0x5931, [ 5754] = 0x5974, [ 5755] = 0x5976,
+-  [ 5756] = 0x5B55, [ 5757] = 0x5B83, [ 5758] = 0x5C3C, [ 5759] = 0x5DE8,
+-  [ 5760] = 0x5DE7, [ 5761] = 0x5DE6, [ 5762] = 0x5E02, [ 5763] = 0x5E03,
+-  [ 5764] = 0x5E73, [ 5765] = 0x5E7C, [ 5766] = 0x5F01, [ 5767] = 0x5F18,
+-  [ 5768] = 0x5F17, [ 5769] = 0x5FC5, [ 5770] = 0x620A, [ 5771] = 0x6253,
+-  [ 5772] = 0x6254, [ 5773] = 0x6252, [ 5774] = 0x6251, [ 5775] = 0x65A5,
+-  [ 5776] = 0x65E6, [ 5777] = 0x672E, [ 5778] = 0x672C, [ 5779] = 0x672A,
+-  [ 5780] = 0x672B, [ 5781] = 0x672D, [ 5782] = 0x6B63, [ 5783] = 0x6BCD,
+-  [ 5784] = 0x6C11, [ 5785] = 0x6C10, [ 5786] = 0x6C38, [ 5787] = 0x6C41,
+-  [ 5788] = 0x6C40, [ 5789] = 0x6C3E, [ 5790] = 0x72AF, [ 5791] = 0x7384,
+-  [ 5792] = 0x7389, [ 5793] = 0x74DC, [ 5794] = 0x74E6, [ 5795] = 0x7518,
+-  [ 5796] = 0x751F, [ 5797] = 0x7528, [ 5798] = 0x7529, [ 5799] = 0x7530,
+-  [ 5800] = 0x7531, [ 5801] = 0x7532, [ 5802] = 0x7533, [ 5803] = 0x758B,
+-  [ 5804] = 0x767D, [ 5805] = 0x76AE, [ 5806] = 0x76BF, [ 5807] = 0x76EE,
+-  [ 5808] = 0x77DB, [ 5809] = 0x77E2, [ 5810] = 0x77F3, [ 5811] = 0x793A,
+-  [ 5812] = 0x79BE, [ 5813] = 0x7A74, [ 5814] = 0x7ACB, [ 5815] = 0x4E1E,
+-  [ 5816] = 0x4E1F, [ 5817] = 0x4E52, [ 5818] = 0x4E53, [ 5819] = 0x4E69,
+-  [ 5820] = 0x4E99, [ 5821] = 0x4EA4, [ 5822] = 0x4EA6, [ 5823] = 0x4EA5,
+-  [ 5824] = 0x4EFF, [ 5825] = 0x4F09, [ 5826] = 0x4F19, [ 5827] = 0x4F0A,
+-  [ 5828] = 0x4F15, [ 5829] = 0x4F0D, [ 5830] = 0x4F10, [ 5831] = 0x4F11,
+-  [ 5832] = 0x4F0F, [ 5833] = 0x4EF2, [ 5834] = 0x4EF6, [ 5835] = 0x4EFB,
+-  [ 5836] = 0x4EF0, [ 5837] = 0x4EF3, [ 5838] = 0x4EFD, [ 5839] = 0x4F01,
+-  [ 5840] = 0x4F0B, [ 5841] = 0x5149, [ 5842] = 0x5147, [ 5843] = 0x5146,
+-  [ 5844] = 0x5148, [ 5845] = 0x5168, [ 5850] = 0x5171, [ 5851] = 0x518D,
+-  [ 5852] = 0x51B0, [ 5853] = 0x5217, [ 5854] = 0x5211, [ 5855] = 0x5212,
+-  [ 5856] = 0x520E, [ 5857] = 0x5216, [ 5858] = 0x52A3, [ 5859] = 0x5308,
+-  [ 5860] = 0x5321, [ 5861] = 0x5320, [ 5862] = 0x5370, [ 5863] = 0x5371,
+-  [ 5864] = 0x5409, [ 5865] = 0x540F, [ 5866] = 0x540C, [ 5867] = 0x540A,
+-  [ 5868] = 0x5410, [ 5869] = 0x5401, [ 5870] = 0x540B, [ 5871] = 0x5404,
+-  [ 5872] = 0x5411, [ 5873] = 0x540D, [ 5874] = 0x5408, [ 5875] = 0x5403,
+-  [ 5876] = 0x540E, [ 5877] = 0x5406, [ 5878] = 0x5412, [ 5879] = 0x56E0,
+-  [ 5880] = 0x56DE, [ 5881] = 0x56DD, [ 5882] = 0x5733, [ 5883] = 0x5730,
+-  [ 5884] = 0x5728, [ 5885] = 0x572D, [ 5886] = 0x572C, [ 5887] = 0x572F,
+-  [ 5888] = 0x5729, [ 5889] = 0x5919, [ 5890] = 0x591A, [ 5891] = 0x5937,
+-  [ 5892] = 0x5938, [ 5893] = 0x5984, [ 5894] = 0x5978, [ 5895] = 0x5983,
+-  [ 5896] = 0x597D, [ 5897] = 0x5979, [ 5898] = 0x5982, [ 5899] = 0x5981,
+-  [ 5900] = 0x5B57, [ 5901] = 0x5B58, [ 5902] = 0x5B87, [ 5903] = 0x5B88,
+-  [ 5904] = 0x5B85, [ 5905] = 0x5B89, [ 5906] = 0x5BFA, [ 5907] = 0x5C16,
+-  [ 5908] = 0x5C79, [ 5909] = 0x5DDE, [ 5910] = 0x5E06, [ 5911] = 0x5E76,
+-  [ 5912] = 0x5E74, [ 5947] = 0x5F0F, [ 5948] = 0x5F1B, [ 5949] = 0x5FD9,
+-  [ 5950] = 0x5FD6, [ 5951] = 0x620E, [ 5952] = 0x620C, [ 5953] = 0x620D,
+-  [ 5954] = 0x6210, [ 5955] = 0x6263, [ 5956] = 0x625B, [ 5957] = 0x6258,
+-  [ 5958] = 0x6536, [ 5959] = 0x65E9, [ 5960] = 0x65E8, [ 5961] = 0x65EC,
+-  [ 5962] = 0x65ED, [ 5963] = 0x66F2, [ 5964] = 0x66F3, [ 5965] = 0x6709,
+-  [ 5966] = 0x673D, [ 5967] = 0x6734, [ 5968] = 0x6731, [ 5969] = 0x6735,
+-  [ 5970] = 0x6B21, [ 5971] = 0x6B64, [ 5972] = 0x6B7B, [ 5973] = 0x6C16,
+-  [ 5974] = 0x6C5D, [ 5975] = 0x6C57, [ 5976] = 0x6C59, [ 5977] = 0x6C5F,
+-  [ 5978] = 0x6C60, [ 5979] = 0x6C50, [ 5980] = 0x6C55, [ 5981] = 0x6C61,
+-  [ 5982] = 0x6C5B, [ 5983] = 0x6C4D, [ 5984] = 0x6C4E, [ 5985] = 0x7070,
+-  [ 5986] = 0x725F, [ 5987] = 0x725D, [ 5988] = 0x767E, [ 5989] = 0x7AF9,
+-  [ 5990] = 0x7C73, [ 5991] = 0x7CF8, [ 5992] = 0x7F36, [ 5993] = 0x7F8A,
+-  [ 5994] = 0x7FBD, [ 5995] = 0x8001, [ 5996] = 0x8003, [ 5997] = 0x800C,
+-  [ 5998] = 0x8012, [ 5999] = 0x8033, [ 6000] = 0x807F, [ 6001] = 0x8089,
+-  [ 6002] = 0x808B, [ 6003] = 0x808C, [ 6004] = 0x81E3, [ 6005] = 0x81EA,
+-  [ 6006] = 0x81F3, [ 6007] = 0x81FC, [ 6008] = 0x820C, [ 6009] = 0x821B,
+-  [ 6010] = 0x821F, [ 6011] = 0x826E, [ 6012] = 0x8272, [ 6013] = 0x827E,
+-  [ 6014] = 0x866B, [ 6015] = 0x8840, [ 6016] = 0x884C, [ 6017] = 0x8863,
+-  [ 6018] = 0x897F, [ 6019] = 0x9621, [ 6020] = 0x4E32, [ 6021] = 0x4EA8,
+-  [ 6022] = 0x4F4D, [ 6023] = 0x4F4F, [ 6024] = 0x4F47, [ 6025] = 0x4F57,
+-  [ 6026] = 0x4F5E, [ 6027] = 0x4F34, [ 6028] = 0x4F5B, [ 6029] = 0x4F55,
+-  [ 6030] = 0x4F30, [ 6031] = 0x4F50, [ 6032] = 0x4F51, [ 6033] = 0x4F3D,
+-  [ 6034] = 0x4F3A, [ 6035] = 0x4F38, [ 6036] = 0x4F43, [ 6037] = 0x4F54,
+-  [ 6038] = 0x4F3C, [ 6039] = 0x4F46, [ 6040] = 0x4F63, [ 6045] = 0x4F5C,
+-  [ 6046] = 0x4F60, [ 6047] = 0x4F2F, [ 6048] = 0x4F4E, [ 6049] = 0x4F36,
+-  [ 6050] = 0x4F59, [ 6051] = 0x4F5D, [ 6052] = 0x4F48, [ 6053] = 0x4F5A,
+-  [ 6054] = 0x514C, [ 6055] = 0x514B, [ 6056] = 0x514D, [ 6057] = 0x5175,
+-  [ 6058] = 0x51B6, [ 6059] = 0x51B7, [ 6060] = 0x5225, [ 6061] = 0x5224,
+-  [ 6062] = 0x5229, [ 6063] = 0x522A, [ 6064] = 0x5228, [ 6065] = 0x52AB,
+-  [ 6066] = 0x52A9, [ 6067] = 0x52AA, [ 6068] = 0x52AC, [ 6069] = 0x5323,
+-  [ 6070] = 0x5373, [ 6071] = 0x5375, [ 6072] = 0x541D, [ 6073] = 0x542D,
+-  [ 6074] = 0x541E, [ 6075] = 0x543E, [ 6076] = 0x5426, [ 6077] = 0x544E,
+-  [ 6078] = 0x5427, [ 6079] = 0x5446, [ 6080] = 0x5443, [ 6081] = 0x5433,
+-  [ 6082] = 0x5448, [ 6083] = 0x5442, [ 6084] = 0x541B, [ 6085] = 0x5429,
+-  [ 6086] = 0x544A, [ 6087] = 0x5439, [ 6088] = 0x543B, [ 6089] = 0x5438,
+-  [ 6090] = 0x542E, [ 6091] = 0x5435, [ 6092] = 0x5436, [ 6093] = 0x5420,
+-  [ 6094] = 0x543C, [ 6095] = 0x5440, [ 6096] = 0x5431, [ 6097] = 0x542B,
+-  [ 6098] = 0x541F, [ 6099] = 0x542C, [ 6100] = 0x56EA, [ 6101] = 0x56F0,
+-  [ 6102] = 0x56E4, [ 6103] = 0x56EB, [ 6104] = 0x574A, [ 6105] = 0x5751,
+-  [ 6106] = 0x5740, [ 6107] = 0x574D, [ 6142] = 0x5747, [ 6143] = 0x574E,
+-  [ 6144] = 0x573E, [ 6145] = 0x5750, [ 6146] = 0x574F, [ 6147] = 0x573B,
+-  [ 6148] = 0x58EF, [ 6149] = 0x593E, [ 6150] = 0x599D, [ 6151] = 0x5992,
+-  [ 6152] = 0x59A8, [ 6153] = 0x599E, [ 6154] = 0x59A3, [ 6155] = 0x5999,
+-  [ 6156] = 0x5996, [ 6157] = 0x598D, [ 6158] = 0x59A4, [ 6159] = 0x5993,
+-  [ 6160] = 0x598A, [ 6161] = 0x59A5, [ 6162] = 0x5B5D, [ 6163] = 0x5B5C,
+-  [ 6164] = 0x5B5A, [ 6165] = 0x5B5B, [ 6166] = 0x5B8C, [ 6167] = 0x5B8B,
+-  [ 6168] = 0x5B8F, [ 6169] = 0x5C2C, [ 6170] = 0x5C40, [ 6171] = 0x5C41,
+-  [ 6172] = 0x5C3F, [ 6173] = 0x5C3E, [ 6174] = 0x5C90, [ 6175] = 0x5C91,
+-  [ 6176] = 0x5C94, [ 6177] = 0x5C8C, [ 6178] = 0x5DEB, [ 6179] = 0x5E0C,
+-  [ 6180] = 0x5E8F, [ 6181] = 0x5E87, [ 6182] = 0x5E8A, [ 6183] = 0x5EF7,
+-  [ 6184] = 0x5F04, [ 6185] = 0x5F1F, [ 6186] = 0x5F64, [ 6187] = 0x5F62,
+-  [ 6188] = 0x5F77, [ 6189] = 0x5F79, [ 6190] = 0x5FD8, [ 6191] = 0x5FCC,
+-  [ 6192] = 0x5FD7, [ 6193] = 0x5FCD, [ 6194] = 0x5FF1, [ 6195] = 0x5FEB,
+-  [ 6196] = 0x5FF8, [ 6197] = 0x5FEA, [ 6198] = 0x6212, [ 6199] = 0x6211,
+-  [ 6200] = 0x6284, [ 6201] = 0x6297, [ 6202] = 0x6296, [ 6203] = 0x6280,
+-  [ 6204] = 0x6276, [ 6205] = 0x6289, [ 6206] = 0x626D, [ 6207] = 0x628A,
+-  [ 6208] = 0x627C, [ 6209] = 0x627E, [ 6210] = 0x6279, [ 6211] = 0x6273,
+-  [ 6212] = 0x6292, [ 6213] = 0x626F, [ 6214] = 0x6298, [ 6215] = 0x626E,
+-  [ 6216] = 0x6295, [ 6217] = 0x6293, [ 6218] = 0x6291, [ 6219] = 0x6286,
+-  [ 6220] = 0x6539, [ 6221] = 0x653B, [ 6222] = 0x6538, [ 6223] = 0x65F1,
+-  [ 6224] = 0x66F4, [ 6225] = 0x675F, [ 6226] = 0x674E, [ 6227] = 0x674F,
+-  [ 6228] = 0x6750, [ 6229] = 0x6751, [ 6230] = 0x675C, [ 6231] = 0x6756,
+-  [ 6232] = 0x675E, [ 6233] = 0x6749, [ 6234] = 0x6746, [ 6235] = 0x6760,
+-  [ 6240] = 0x6753, [ 6241] = 0x6757, [ 6242] = 0x6B65, [ 6243] = 0x6BCF,
+-  [ 6244] = 0x6C42, [ 6245] = 0x6C5E, [ 6246] = 0x6C99, [ 6247] = 0x6C81,
+-  [ 6248] = 0x6C88, [ 6249] = 0x6C89, [ 6250] = 0x6C85, [ 6251] = 0x6C9B,
+-  [ 6252] = 0x6C6A, [ 6253] = 0x6C7A, [ 6254] = 0x6C90, [ 6255] = 0x6C70,
+-  [ 6256] = 0x6C8C, [ 6257] = 0x6C68, [ 6258] = 0x6C96, [ 6259] = 0x6C92,
+-  [ 6260] = 0x6C7D, [ 6261] = 0x6C83, [ 6262] = 0x6C72, [ 6263] = 0x6C7E,
+-  [ 6264] = 0x6C74, [ 6265] = 0x6C86, [ 6266] = 0x6C76, [ 6267] = 0x6C8D,
+-  [ 6268] = 0x6C94, [ 6269] = 0x6C98, [ 6270] = 0x6C82, [ 6271] = 0x7076,
+-  [ 6272] = 0x707C, [ 6273] = 0x707D, [ 6274] = 0x7078, [ 6275] = 0x7262,
+-  [ 6276] = 0x7261, [ 6277] = 0x7260, [ 6278] = 0x72C4, [ 6279] = 0x72C2,
+-  [ 6280] = 0x7396, [ 6281] = 0x752C, [ 6282] = 0x752B, [ 6283] = 0x7537,
+-  [ 6284] = 0x7538, [ 6285] = 0x7682, [ 6286] = 0x76EF, [ 6287] = 0x77E3,
+-  [ 6288] = 0x79C1, [ 6289] = 0x79C0, [ 6290] = 0x79BF, [ 6291] = 0x7A76,
+-  [ 6292] = 0x7CFB, [ 6293] = 0x7F55, [ 6294] = 0x8096, [ 6295] = 0x8093,
+-  [ 6296] = 0x809D, [ 6297] = 0x8098, [ 6298] = 0x809B, [ 6299] = 0x809A,
+-  [ 6300] = 0x80B2, [ 6301] = 0x826F, [ 6302] = 0x8292, [ 6337] = 0x828B,
+-  [ 6338] = 0x828D, [ 6339] = 0x898B, [ 6340] = 0x89D2, [ 6341] = 0x8A00,
+-  [ 6342] = 0x8C37, [ 6343] = 0x8C46, [ 6344] = 0x8C55, [ 6345] = 0x8C9D,
+-  [ 6346] = 0x8D64, [ 6347] = 0x8D70, [ 6348] = 0x8DB3, [ 6349] = 0x8EAB,
+-  [ 6350] = 0x8ECA, [ 6351] = 0x8F9B, [ 6352] = 0x8FB0, [ 6353] = 0x8FC2,
+-  [ 6354] = 0x8FC6, [ 6355] = 0x8FC5, [ 6356] = 0x8FC4, [ 6357] = 0x5DE1,
+-  [ 6358] = 0x9091, [ 6359] = 0x90A2, [ 6360] = 0x90AA, [ 6361] = 0x90A6,
+-  [ 6362] = 0x90A3, [ 6363] = 0x9149, [ 6364] = 0x91C6, [ 6365] = 0x91CC,
+-  [ 6366] = 0x9632, [ 6367] = 0x962E, [ 6368] = 0x9631, [ 6369] = 0x962A,
+-  [ 6370] = 0x962C, [ 6371] = 0x4E26, [ 6372] = 0x4E56, [ 6373] = 0x4E73,
+-  [ 6374] = 0x4E8B, [ 6375] = 0x4E9B, [ 6376] = 0x4E9E, [ 6377] = 0x4EAB,
+-  [ 6378] = 0x4EAC, [ 6379] = 0x4F6F, [ 6380] = 0x4F9D, [ 6381] = 0x4F8D,
+-  [ 6382] = 0x4F73, [ 6383] = 0x4F7F, [ 6384] = 0x4F6C, [ 6385] = 0x4F9B,
+-  [ 6386] = 0x4F8B, [ 6387] = 0x4F86, [ 6388] = 0x4F83, [ 6389] = 0x4F70,
+-  [ 6390] = 0x4F75, [ 6391] = 0x4F88, [ 6392] = 0x4F69, [ 6393] = 0x4F7B,
+-  [ 6394] = 0x4F96, [ 6395] = 0x4F7E, [ 6396] = 0x4F8F, [ 6397] = 0x4F91,
+-  [ 6398] = 0x4F7A, [ 6399] = 0x5154, [ 6400] = 0x5152, [ 6401] = 0x5155,
+-  [ 6402] = 0x5169, [ 6403] = 0x5177, [ 6404] = 0x5176, [ 6405] = 0x5178,
+-  [ 6406] = 0x51BD, [ 6407] = 0x51FD, [ 6408] = 0x523B, [ 6409] = 0x5238,
+-  [ 6410] = 0x5237, [ 6411] = 0x523A, [ 6412] = 0x5230, [ 6413] = 0x522E,
+-  [ 6414] = 0x5236, [ 6415] = 0x5241, [ 6416] = 0x52BE, [ 6417] = 0x52BB,
+-  [ 6418] = 0x5352, [ 6419] = 0x5354, [ 6420] = 0x5353, [ 6421] = 0x5351,
+-  [ 6422] = 0x5366, [ 6423] = 0x5377, [ 6424] = 0x5378, [ 6425] = 0x5379,
+-  [ 6426] = 0x53D6, [ 6427] = 0x53D4, [ 6428] = 0x53D7, [ 6429] = 0x5473,
+-  [ 6430] = 0x5475, [ 6435] = 0x5496, [ 6436] = 0x5478, [ 6437] = 0x5495,
+-  [ 6438] = 0x5480, [ 6439] = 0x547B, [ 6440] = 0x5477, [ 6441] = 0x5484,
+-  [ 6442] = 0x5492, [ 6443] = 0x5486, [ 6444] = 0x547C, [ 6445] = 0x5490,
+-  [ 6446] = 0x5471, [ 6447] = 0x5476, [ 6448] = 0x548C, [ 6449] = 0x549A,
+-  [ 6450] = 0x5462, [ 6451] = 0x5468, [ 6452] = 0x548B, [ 6453] = 0x547D,
+-  [ 6454] = 0x548E, [ 6455] = 0x56FA, [ 6456] = 0x5783, [ 6457] = 0x5777,
+-  [ 6458] = 0x576A, [ 6459] = 0x5769, [ 6460] = 0x5761, [ 6461] = 0x5766,
+-  [ 6462] = 0x5764, [ 6463] = 0x577C, [ 6464] = 0x591C, [ 6465] = 0x5949,
+-  [ 6466] = 0x5947, [ 6467] = 0x5948, [ 6468] = 0x5944, [ 6469] = 0x5954,
+-  [ 6470] = 0x59BE, [ 6471] = 0x59BB, [ 6472] = 0x59D4, [ 6473] = 0x59B9,
+-  [ 6474] = 0x59AE, [ 6475] = 0x59D1, [ 6476] = 0x59C6, [ 6477] = 0x59D0,
+-  [ 6478] = 0x59CD, [ 6479] = 0x59CB, [ 6480] = 0x59D3, [ 6481] = 0x59CA,
+-  [ 6482] = 0x59AF, [ 6483] = 0x59B3, [ 6484] = 0x59D2, [ 6485] = 0x59C5,
+-  [ 6486] = 0x5B5F, [ 6487] = 0x5B64, [ 6488] = 0x5B63, [ 6489] = 0x5B97,
+-  [ 6490] = 0x5B9A, [ 6491] = 0x5B98, [ 6492] = 0x5B9C, [ 6493] = 0x5B99,
+-  [ 6494] = 0x5B9B, [ 6495] = 0x5C1A, [ 6496] = 0x5C48, [ 6497] = 0x5C45,
+-  [ 6532] = 0x5C46, [ 6533] = 0x5CB7, [ 6534] = 0x5CA1, [ 6535] = 0x5CB8,
+-  [ 6536] = 0x5CA9, [ 6537] = 0x5CAB, [ 6538] = 0x5CB1, [ 6539] = 0x5CB3,
+-  [ 6540] = 0x5E18, [ 6541] = 0x5E1A, [ 6542] = 0x5E16, [ 6543] = 0x5E15,
+-  [ 6544] = 0x5E1B, [ 6545] = 0x5E11, [ 6546] = 0x5E78, [ 6547] = 0x5E9A,
+-  [ 6548] = 0x5E97, [ 6549] = 0x5E9C, [ 6550] = 0x5E95, [ 6551] = 0x5E96,
+-  [ 6552] = 0x5EF6, [ 6553] = 0x5F26, [ 6554] = 0x5F27, [ 6555] = 0x5F29,
+-  [ 6556] = 0x5F80, [ 6557] = 0x5F81, [ 6558] = 0x5F7F, [ 6559] = 0x5F7C,
+-  [ 6560] = 0x5FDD, [ 6561] = 0x5FE0, [ 6562] = 0x5FFD, [ 6563] = 0x5FF5,
+-  [ 6564] = 0x5FFF, [ 6565] = 0x600F, [ 6566] = 0x6014, [ 6567] = 0x602F,
+-  [ 6568] = 0x6035, [ 6569] = 0x6016, [ 6570] = 0x602A, [ 6571] = 0x6015,
+-  [ 6572] = 0x6021, [ 6573] = 0x6027, [ 6574] = 0x6029, [ 6575] = 0x602B,
+-  [ 6576] = 0x601B, [ 6577] = 0x6216, [ 6578] = 0x6215, [ 6579] = 0x623F,
+-  [ 6580] = 0x623E, [ 6581] = 0x6240, [ 6582] = 0x627F, [ 6583] = 0x62C9,
+-  [ 6584] = 0x62CC, [ 6585] = 0x62C4, [ 6586] = 0x62BF, [ 6587] = 0x62C2,
+-  [ 6588] = 0x62B9, [ 6589] = 0x62D2, [ 6590] = 0x62DB, [ 6591] = 0x62AB,
+-  [ 6592] = 0x62D3, [ 6593] = 0x62D4, [ 6594] = 0x62CB, [ 6595] = 0x62C8,
+-  [ 6596] = 0x62A8, [ 6597] = 0x62BD, [ 6598] = 0x62BC, [ 6599] = 0x62D0,
+-  [ 6600] = 0x62D9, [ 6601] = 0x62C7, [ 6602] = 0x62CD, [ 6603] = 0x62B5,
+-  [ 6604] = 0x62DA, [ 6605] = 0x62B1, [ 6606] = 0x62D8, [ 6607] = 0x62D6,
+-  [ 6608] = 0x62D7, [ 6609] = 0x62C6, [ 6610] = 0x62AC, [ 6611] = 0x62CE,
+-  [ 6612] = 0x653E, [ 6613] = 0x65A7, [ 6614] = 0x65BC, [ 6615] = 0x65FA,
+-  [ 6616] = 0x6614, [ 6617] = 0x6613, [ 6618] = 0x660C, [ 6619] = 0x6606,
+-  [ 6620] = 0x6602, [ 6621] = 0x660E, [ 6622] = 0x6600, [ 6623] = 0x660F,
+-  [ 6624] = 0x6615, [ 6625] = 0x660A, [ 6630] = 0x6607, [ 6631] = 0x670D,
+-  [ 6632] = 0x670B, [ 6633] = 0x676D, [ 6634] = 0x678B, [ 6635] = 0x6795,
+-  [ 6636] = 0x6771, [ 6637] = 0x679C, [ 6638] = 0x6773, [ 6639] = 0x6777,
+-  [ 6640] = 0x6787, [ 6641] = 0x679D, [ 6642] = 0x6797, [ 6643] = 0x676F,
+-  [ 6644] = 0x6770, [ 6645] = 0x677F, [ 6646] = 0x6789, [ 6647] = 0x677E,
+-  [ 6648] = 0x6790, [ 6649] = 0x6775, [ 6650] = 0x679A, [ 6651] = 0x6793,
+-  [ 6652] = 0x677C, [ 6653] = 0x676A, [ 6654] = 0x6772, [ 6655] = 0x6B23,
+-  [ 6656] = 0x6B66, [ 6657] = 0x6B67, [ 6658] = 0x6B7F, [ 6659] = 0x6C13,
+-  [ 6660] = 0x6C1B, [ 6661] = 0x6CE3, [ 6662] = 0x6CE8, [ 6663] = 0x6CF3,
+-  [ 6664] = 0x6CB1, [ 6665] = 0x6CCC, [ 6666] = 0x6CE5, [ 6667] = 0x6CB3,
+-  [ 6668] = 0x6CBD, [ 6669] = 0x6CBE, [ 6670] = 0x6CBC, [ 6671] = 0x6CE2,
+-  [ 6672] = 0x6CAB, [ 6673] = 0x6CD5, [ 6674] = 0x6CD3, [ 6675] = 0x6CB8,
+-  [ 6676] = 0x6CC4, [ 6677] = 0x6CB9, [ 6678] = 0x6CC1, [ 6679] = 0x6CAE,
+-  [ 6680] = 0x6CD7, [ 6681] = 0x6CC5, [ 6682] = 0x6CF1, [ 6683] = 0x6CBF,
+-  [ 6684] = 0x6CBB, [ 6685] = 0x6CE1, [ 6686] = 0x6CDB, [ 6687] = 0x6CCA,
+-  [ 6688] = 0x6CAC, [ 6689] = 0x6CEF, [ 6690] = 0x6CDC, [ 6691] = 0x6CD6,
+-  [ 6692] = 0x6CE0, [ 6727] = 0x7095, [ 6728] = 0x708E, [ 6729] = 0x7092,
+-  [ 6730] = 0x708A, [ 6731] = 0x7099, [ 6732] = 0x722C, [ 6733] = 0x722D,
+-  [ 6734] = 0x7238, [ 6735] = 0x7248, [ 6736] = 0x7267, [ 6737] = 0x7269,
+-  [ 6738] = 0x72C0, [ 6739] = 0x72CE, [ 6740] = 0x72D9, [ 6741] = 0x72D7,
+-  [ 6742] = 0x72D0, [ 6743] = 0x73A9, [ 6744] = 0x73A8, [ 6745] = 0x739F,
+-  [ 6746] = 0x73AB, [ 6747] = 0x73A5, [ 6748] = 0x753D, [ 6749] = 0x759D,
+-  [ 6750] = 0x7599, [ 6751] = 0x759A, [ 6752] = 0x7684, [ 6753] = 0x76C2,
+-  [ 6754] = 0x76F2, [ 6755] = 0x76F4, [ 6756] = 0x77E5, [ 6757] = 0x77FD,
+-  [ 6758] = 0x793E, [ 6759] = 0x7940, [ 6760] = 0x7941, [ 6761] = 0x79C9,
+-  [ 6762] = 0x79C8, [ 6763] = 0x7A7A, [ 6764] = 0x7A79, [ 6765] = 0x7AFA,
+-  [ 6766] = 0x7CFE, [ 6767] = 0x7F54, [ 6768] = 0x7F8C, [ 6769] = 0x7F8B,
+-  [ 6770] = 0x8005, [ 6771] = 0x80BA, [ 6772] = 0x80A5, [ 6773] = 0x80A2,
+-  [ 6774] = 0x80B1, [ 6775] = 0x80A1, [ 6776] = 0x80AB, [ 6777] = 0x80A9,
+-  [ 6778] = 0x80B4, [ 6779] = 0x80AA, [ 6780] = 0x80AF, [ 6781] = 0x81E5,
+-  [ 6782] = 0x81FE, [ 6783] = 0x820D, [ 6784] = 0x82B3, [ 6785] = 0x829D,
+-  [ 6786] = 0x8299, [ 6787] = 0x82AD, [ 6788] = 0x82BD, [ 6789] = 0x829F,
+-  [ 6790] = 0x82B9, [ 6791] = 0x82B1, [ 6792] = 0x82AC, [ 6793] = 0x82A5,
+-  [ 6794] = 0x82AF, [ 6795] = 0x82B8, [ 6796] = 0x82A3, [ 6797] = 0x82B0,
+-  [ 6798] = 0x82BE, [ 6799] = 0x82B7, [ 6800] = 0x864E, [ 6801] = 0x8671,
+-  [ 6802] = 0x521D, [ 6803] = 0x8868, [ 6804] = 0x8ECB, [ 6805] = 0x8FCE,
+-  [ 6806] = 0x8FD4, [ 6807] = 0x8FD1, [ 6808] = 0x90B5, [ 6809] = 0x90B8,
+-  [ 6810] = 0x90B1, [ 6811] = 0x90B6, [ 6812] = 0x91C7, [ 6813] = 0x91D1,
+-  [ 6814] = 0x9577, [ 6815] = 0x9580, [ 6816] = 0x961C, [ 6817] = 0x9640,
+-  [ 6818] = 0x963F, [ 6819] = 0x963B, [ 6820] = 0x9644, [ 6825] = 0x9642,
+-  [ 6826] = 0x96B9, [ 6827] = 0x96E8, [ 6828] = 0x9752, [ 6829] = 0x975E,
+-  [ 6830] = 0x4E9F, [ 6831] = 0x4EAD, [ 6832] = 0x4EAE, [ 6833] = 0x4FE1,
+-  [ 6834] = 0x4FB5, [ 6835] = 0x4FAF, [ 6836] = 0x4FBF, [ 6837] = 0x4FE0,
+-  [ 6838] = 0x4FD1, [ 6839] = 0x4FCF, [ 6840] = 0x4FDD, [ 6841] = 0x4FC3,
+-  [ 6842] = 0x4FB6, [ 6843] = 0x4FD8, [ 6844] = 0x4FDF, [ 6845] = 0x4FCA,
+-  [ 6846] = 0x4FD7, [ 6847] = 0x4FAE, [ 6848] = 0x4FD0, [ 6849] = 0x4FC4,
+-  [ 6850] = 0x4FC2, [ 6851] = 0x4FDA, [ 6852] = 0x4FCE, [ 6853] = 0x4FDE,
+-  [ 6854] = 0x4FB7, [ 6855] = 0x5157, [ 6856] = 0x5192, [ 6857] = 0x5191,
+-  [ 6858] = 0x51A0, [ 6859] = 0x524E, [ 6860] = 0x5243, [ 6861] = 0x524A,
+-  [ 6862] = 0x524D, [ 6863] = 0x524C, [ 6864] = 0x524B, [ 6865] = 0x5247,
+-  [ 6866] = 0x52C7, [ 6867] = 0x52C9, [ 6868] = 0x52C3, [ 6869] = 0x52C1,
+-  [ 6870] = 0x530D, [ 6871] = 0x5357, [ 6872] = 0x537B, [ 6873] = 0x539A,
+-  [ 6874] = 0x53DB, [ 6875] = 0x54AC, [ 6876] = 0x54C0, [ 6877] = 0x54A8,
+-  [ 6878] = 0x54CE, [ 6879] = 0x54C9, [ 6880] = 0x54B8, [ 6881] = 0x54A6,
+-  [ 6882] = 0x54B3, [ 6883] = 0x54C7, [ 6884] = 0x54C2, [ 6885] = 0x54BD,
+-  [ 6886] = 0x54AA, [ 6887] = 0x54C1, [ 6922] = 0x54C4, [ 6923] = 0x54C8,
+-  [ 6924] = 0x54AF, [ 6925] = 0x54AB, [ 6926] = 0x54B1, [ 6927] = 0x54BB,
+-  [ 6928] = 0x54A9, [ 6929] = 0x54A7, [ 6930] = 0x54BF, [ 6931] = 0x56FF,
+-  [ 6932] = 0x5782, [ 6933] = 0x578B, [ 6934] = 0x57A0, [ 6935] = 0x57A3,
+-  [ 6936] = 0x57A2, [ 6937] = 0x57CE, [ 6938] = 0x57AE, [ 6939] = 0x5793,
+-  [ 6940] = 0x5955, [ 6941] = 0x5951, [ 6942] = 0x594F, [ 6943] = 0x594E,
+-  [ 6944] = 0x5950, [ 6945] = 0x59DC, [ 6946] = 0x59D8, [ 6947] = 0x59FF,
+-  [ 6948] = 0x59E3, [ 6949] = 0x59E8, [ 6950] = 0x5A03, [ 6951] = 0x59E5,
+-  [ 6952] = 0x59EA, [ 6953] = 0x59DA, [ 6954] = 0x59E6, [ 6955] = 0x5A01,
+-  [ 6956] = 0x59FB, [ 6957] = 0x5B69, [ 6958] = 0x5BA3, [ 6959] = 0x5BA6,
+-  [ 6960] = 0x5BA4, [ 6961] = 0x5BA2, [ 6962] = 0x5BA5, [ 6963] = 0x5C01,
+-  [ 6964] = 0x5C4E, [ 6965] = 0x5C4F, [ 6966] = 0x5C4D, [ 6967] = 0x5C4B,
+-  [ 6968] = 0x5CD9, [ 6969] = 0x5CD2, [ 6970] = 0x5DF7, [ 6971] = 0x5E1D,
+-  [ 6972] = 0x5E25, [ 6973] = 0x5E1F, [ 6974] = 0x5E7D, [ 6975] = 0x5EA0,
+-  [ 6976] = 0x5EA6, [ 6977] = 0x5EFA, [ 6978] = 0x5F08, [ 6979] = 0x5F2D,
+-  [ 6980] = 0x5F65, [ 6981] = 0x5F88, [ 6982] = 0x5F85, [ 6983] = 0x5F8A,
+-  [ 6984] = 0x5F8B, [ 6985] = 0x5F87, [ 6986] = 0x5F8C, [ 6987] = 0x5F89,
+-  [ 6988] = 0x6012, [ 6989] = 0x601D, [ 6990] = 0x6020, [ 6991] = 0x6025,
+-  [ 6992] = 0x600E, [ 6993] = 0x6028, [ 6994] = 0x604D, [ 6995] = 0x6070,
+-  [ 6996] = 0x6068, [ 6997] = 0x6062, [ 6998] = 0x6046, [ 6999] = 0x6043,
+-  [ 7000] = 0x606C, [ 7001] = 0x606B, [ 7002] = 0x606A, [ 7003] = 0x6064,
+-  [ 7004] = 0x6241, [ 7005] = 0x62DC, [ 7006] = 0x6316, [ 7007] = 0x6309,
+-  [ 7008] = 0x62FC, [ 7009] = 0x62ED, [ 7010] = 0x6301, [ 7011] = 0x62EE,
+-  [ 7012] = 0x62FD, [ 7013] = 0x6307, [ 7014] = 0x62F1, [ 7015] = 0x62F7,
+-  [ 7020] = 0x62EF, [ 7021] = 0x62EC, [ 7022] = 0x62FE, [ 7023] = 0x62F4,
+-  [ 7024] = 0x6311, [ 7025] = 0x6302, [ 7026] = 0x653F, [ 7027] = 0x6545,
+-  [ 7028] = 0x65AB, [ 7029] = 0x65BD, [ 7030] = 0x65E2, [ 7031] = 0x6625,
+-  [ 7032] = 0x662D, [ 7033] = 0x6620, [ 7034] = 0x6627, [ 7035] = 0x662F,
+-  [ 7036] = 0x661F, [ 7037] = 0x6628, [ 7038] = 0x6631, [ 7039] = 0x6624,
+-  [ 7040] = 0x66F7, [ 7041] = 0x67FF, [ 7042] = 0x67D3, [ 7043] = 0x67F1,
+-  [ 7044] = 0x67D4, [ 7045] = 0x67D0, [ 7046] = 0x67EC, [ 7047] = 0x67B6,
+-  [ 7048] = 0x67AF, [ 7049] = 0x67F5, [ 7050] = 0x67E9, [ 7051] = 0x67EF,
+-  [ 7052] = 0x67C4, [ 7053] = 0x67D1, [ 7054] = 0x67B4, [ 7055] = 0x67DA,
+-  [ 7056] = 0x67E5, [ 7057] = 0x67B8, [ 7058] = 0x67CF, [ 7059] = 0x67DE,
+-  [ 7060] = 0x67F3, [ 7061] = 0x67B0, [ 7062] = 0x67D9, [ 7063] = 0x67E2,
+-  [ 7064] = 0x67DD, [ 7065] = 0x67D2, [ 7066] = 0x6B6A, [ 7067] = 0x6B83,
+-  [ 7068] = 0x6B86, [ 7069] = 0x6BB5, [ 7070] = 0x6BD2, [ 7071] = 0x6BD7,
+-  [ 7072] = 0x6C1F, [ 7073] = 0x6CC9, [ 7074] = 0x6D0B, [ 7075] = 0x6D32,
+-  [ 7076] = 0x6D2A, [ 7077] = 0x6D41, [ 7078] = 0x6D25, [ 7079] = 0x6D0C,
+-  [ 7080] = 0x6D31, [ 7081] = 0x6D1E, [ 7082] = 0x6D17, [ 7117] = 0x6D3B,
+-  [ 7118] = 0x6D3D, [ 7119] = 0x6D3E, [ 7120] = 0x6D36, [ 7121] = 0x6D1B,
+-  [ 7122] = 0x6CF5, [ 7123] = 0x6D39, [ 7124] = 0x6D27, [ 7125] = 0x6D38,
+-  [ 7126] = 0x6D29, [ 7127] = 0x6D2E, [ 7128] = 0x6D35, [ 7129] = 0x6D0E,
+-  [ 7130] = 0x6D2B, [ 7131] = 0x70AB, [ 7132] = 0x70BA, [ 7133] = 0x70B3,
+-  [ 7134] = 0x70AC, [ 7135] = 0x70AF, [ 7136] = 0x70AD, [ 7137] = 0x70B8,
+-  [ 7138] = 0x70AE, [ 7139] = 0x70A4, [ 7140] = 0x7230, [ 7141] = 0x7272,
+-  [ 7142] = 0x726F, [ 7143] = 0x7274, [ 7144] = 0x72E9, [ 7145] = 0x72E0,
+-  [ 7146] = 0x72E1, [ 7147] = 0x73B7, [ 7148] = 0x73CA, [ 7149] = 0x73BB,
+-  [ 7150] = 0x73B2, [ 7151] = 0x73CD, [ 7152] = 0x73C0, [ 7153] = 0x73B3,
+-  [ 7154] = 0x751A, [ 7155] = 0x752D, [ 7156] = 0x754F, [ 7157] = 0x754C,
+-  [ 7158] = 0x754E, [ 7159] = 0x754B, [ 7160] = 0x75AB, [ 7161] = 0x75A4,
+-  [ 7162] = 0x75A5, [ 7163] = 0x75A2, [ 7164] = 0x75A3, [ 7165] = 0x7678,
+-  [ 7166] = 0x7686, [ 7167] = 0x7687, [ 7168] = 0x7688, [ 7169] = 0x76C8,
+-  [ 7170] = 0x76C6, [ 7171] = 0x76C3, [ 7172] = 0x76C5, [ 7173] = 0x7701,
+-  [ 7174] = 0x76F9, [ 7175] = 0x76F8, [ 7176] = 0x7709, [ 7177] = 0x770B,
+-  [ 7178] = 0x76FE, [ 7179] = 0x76FC, [ 7180] = 0x7707, [ 7181] = 0x77DC,
+-  [ 7182] = 0x7802, [ 7183] = 0x7814, [ 7184] = 0x780C, [ 7185] = 0x780D,
+-  [ 7186] = 0x7946, [ 7187] = 0x7949, [ 7188] = 0x7948, [ 7189] = 0x7947,
+-  [ 7190] = 0x79B9, [ 7191] = 0x79BA, [ 7192] = 0x79D1, [ 7193] = 0x79D2,
+-  [ 7194] = 0x79CB, [ 7195] = 0x7A7F, [ 7196] = 0x7A81, [ 7197] = 0x7AFF,
+-  [ 7198] = 0x7AFD, [ 7199] = 0x7C7D, [ 7200] = 0x7D02, [ 7201] = 0x7D05,
+-  [ 7202] = 0x7D00, [ 7203] = 0x7D09, [ 7204] = 0x7D07, [ 7205] = 0x7D04,
+-  [ 7206] = 0x7D06, [ 7207] = 0x7F38, [ 7208] = 0x7F8E, [ 7209] = 0x7FBF,
+-  [ 7210] = 0x8004, [ 7215] = 0x8010, [ 7216] = 0x800D, [ 7217] = 0x8011,
+-  [ 7218] = 0x8036, [ 7219] = 0x80D6, [ 7220] = 0x80E5, [ 7221] = 0x80DA,
+-  [ 7222] = 0x80C3, [ 7223] = 0x80C4, [ 7224] = 0x80CC, [ 7225] = 0x80E1,
+-  [ 7226] = 0x80DB, [ 7227] = 0x80CE, [ 7228] = 0x80DE, [ 7229] = 0x80E4,
+-  [ 7230] = 0x80DD, [ 7231] = 0x81F4, [ 7232] = 0x8222, [ 7233] = 0x82E7,
+-  [ 7234] = 0x8303, [ 7235] = 0x8305, [ 7236] = 0x82E3, [ 7237] = 0x82DB,
+-  [ 7238] = 0x82E6, [ 7239] = 0x8304, [ 7240] = 0x82E5, [ 7241] = 0x8302,
+-  [ 7242] = 0x8309, [ 7243] = 0x82D2, [ 7244] = 0x82D7, [ 7245] = 0x82F1,
+-  [ 7246] = 0x8301, [ 7247] = 0x82DC, [ 7248] = 0x82D4, [ 7249] = 0x82D1,
+-  [ 7250] = 0x82DE, [ 7251] = 0x82D3, [ 7252] = 0x82DF, [ 7253] = 0x82EF,
+-  [ 7254] = 0x8306, [ 7255] = 0x8650, [ 7256] = 0x8679, [ 7257] = 0x867B,
+-  [ 7258] = 0x867A, [ 7259] = 0x884D, [ 7260] = 0x886B, [ 7261] = 0x8981,
+-  [ 7262] = 0x89D4, [ 7263] = 0x8A08, [ 7264] = 0x8A02, [ 7265] = 0x8A03,
+-  [ 7266] = 0x8C9E, [ 7267] = 0x8CA0, [ 7268] = 0x8D74, [ 7269] = 0x8D73,
+-  [ 7270] = 0x8DB4, [ 7271] = 0x8ECD, [ 7272] = 0x8ECC, [ 7273] = 0x8FF0,
+-  [ 7274] = 0x8FE6, [ 7275] = 0x8FE2, [ 7276] = 0x8FEA, [ 7277] = 0x8FE5,
+-  [ 7312] = 0x8FED, [ 7313] = 0x8FEB, [ 7314] = 0x8FE4, [ 7315] = 0x8FE8,
+-  [ 7316] = 0x90CA, [ 7317] = 0x90CE, [ 7318] = 0x90C1, [ 7319] = 0x90C3,
+-  [ 7320] = 0x914B, [ 7321] = 0x914A, [ 7322] = 0x91CD, [ 7323] = 0x9582,
+-  [ 7324] = 0x9650, [ 7325] = 0x964B, [ 7326] = 0x964C, [ 7327] = 0x964D,
+-  [ 7328] = 0x9762, [ 7329] = 0x9769, [ 7330] = 0x97CB, [ 7331] = 0x97ED,
+-  [ 7332] = 0x97F3, [ 7333] = 0x9801, [ 7334] = 0x98A8, [ 7335] = 0x98DB,
+-  [ 7336] = 0x98DF, [ 7337] = 0x9996, [ 7338] = 0x9999, [ 7339] = 0x4E58,
+-  [ 7340] = 0x4EB3, [ 7341] = 0x500C, [ 7342] = 0x500D, [ 7343] = 0x5023,
+-  [ 7344] = 0x4FEF, [ 7345] = 0x5026, [ 7346] = 0x5025, [ 7347] = 0x4FF8,
+-  [ 7348] = 0x5029, [ 7349] = 0x5016, [ 7350] = 0x5006, [ 7351] = 0x503C,
+-  [ 7352] = 0x501F, [ 7353] = 0x501A, [ 7354] = 0x5012, [ 7355] = 0x5011,
+-  [ 7356] = 0x4FFA, [ 7357] = 0x5000, [ 7358] = 0x5014, [ 7359] = 0x5028,
+-  [ 7360] = 0x4FF1, [ 7361] = 0x5021, [ 7362] = 0x500B, [ 7363] = 0x5019,
+-  [ 7364] = 0x5018, [ 7365] = 0x4FF3, [ 7366] = 0x4FEE, [ 7367] = 0x502D,
+-  [ 7368] = 0x502A, [ 7369] = 0x4FFE, [ 7370] = 0x502B, [ 7371] = 0x5009,
+-  [ 7372] = 0x517C, [ 7373] = 0x51A4, [ 7374] = 0x51A5, [ 7375] = 0x51A2,
+-  [ 7376] = 0x51CD, [ 7377] = 0x51CC, [ 7378] = 0x51C6, [ 7379] = 0x51CB,
+-  [ 7380] = 0x5256, [ 7381] = 0x525C, [ 7382] = 0x5254, [ 7383] = 0x525B,
+-  [ 7384] = 0x525D, [ 7385] = 0x532A, [ 7386] = 0x537F, [ 7387] = 0x539F,
+-  [ 7388] = 0x539D, [ 7389] = 0x53DF, [ 7390] = 0x54E8, [ 7391] = 0x5510,
+-  [ 7392] = 0x5501, [ 7393] = 0x5537, [ 7394] = 0x54FC, [ 7395] = 0x54E5,
+-  [ 7396] = 0x54F2, [ 7397] = 0x5506, [ 7398] = 0x54FA, [ 7399] = 0x5514,
+-  [ 7400] = 0x54E9, [ 7401] = 0x54ED, [ 7402] = 0x54E1, [ 7403] = 0x5509,
+-  [ 7404] = 0x54EE, [ 7405] = 0x54EA, [ 7410] = 0x54E6, [ 7411] = 0x5527,
+-  [ 7412] = 0x5507, [ 7413] = 0x54FD, [ 7414] = 0x550F, [ 7415] = 0x5703,
+-  [ 7416] = 0x5704, [ 7417] = 0x57C2, [ 7418] = 0x57D4, [ 7419] = 0x57CB,
+-  [ 7420] = 0x57C3, [ 7421] = 0x5809, [ 7422] = 0x590F, [ 7423] = 0x5957,
+-  [ 7424] = 0x5958, [ 7425] = 0x595A, [ 7426] = 0x5A11, [ 7427] = 0x5A18,
+-  [ 7428] = 0x5A1C, [ 7429] = 0x5A1F, [ 7430] = 0x5A1B, [ 7431] = 0x5A13,
+-  [ 7432] = 0x59EC, [ 7433] = 0x5A20, [ 7434] = 0x5A23, [ 7435] = 0x5A29,
+-  [ 7436] = 0x5A25, [ 7437] = 0x5A0C, [ 7438] = 0x5A09, [ 7439] = 0x5B6B,
+-  [ 7440] = 0x5C58, [ 7441] = 0x5BB0, [ 7442] = 0x5BB3, [ 7443] = 0x5BB6,
+-  [ 7444] = 0x5BB4, [ 7445] = 0x5BAE, [ 7446] = 0x5BB5, [ 7447] = 0x5BB9,
+-  [ 7448] = 0x5BB8, [ 7449] = 0x5C04, [ 7450] = 0x5C51, [ 7451] = 0x5C55,
+-  [ 7452] = 0x5C50, [ 7453] = 0x5CED, [ 7454] = 0x5CFD, [ 7455] = 0x5CFB,
+-  [ 7456] = 0x5CEA, [ 7457] = 0x5CE8, [ 7458] = 0x5CF0, [ 7459] = 0x5CF6,
+-  [ 7460] = 0x5D01, [ 7461] = 0x5CF4, [ 7462] = 0x5DEE, [ 7463] = 0x5E2D,
+-  [ 7464] = 0x5E2B, [ 7465] = 0x5EAB, [ 7466] = 0x5EAD, [ 7467] = 0x5EA7,
+-  [ 7468] = 0x5F31, [ 7469] = 0x5F92, [ 7470] = 0x5F91, [ 7471] = 0x5F90,
+-  [ 7472] = 0x6059, [ 7507] = 0x6063, [ 7508] = 0x6065, [ 7509] = 0x6050,
+-  [ 7510] = 0x6055, [ 7511] = 0x606D, [ 7512] = 0x6069, [ 7513] = 0x606F,
+-  [ 7514] = 0x6084, [ 7515] = 0x609F, [ 7516] = 0x609A, [ 7517] = 0x608D,
+-  [ 7518] = 0x6094, [ 7519] = 0x608C, [ 7520] = 0x6085, [ 7521] = 0x6096,
+-  [ 7522] = 0x6247, [ 7523] = 0x62F3, [ 7524] = 0x6308, [ 7525] = 0x62FF,
+-  [ 7526] = 0x634E, [ 7527] = 0x633E, [ 7528] = 0x632F, [ 7529] = 0x6355,
+-  [ 7530] = 0x6342, [ 7531] = 0x6346, [ 7532] = 0x634F, [ 7533] = 0x6349,
+-  [ 7534] = 0x633A, [ 7535] = 0x6350, [ 7536] = 0x633D, [ 7537] = 0x632A,
+-  [ 7538] = 0x632B, [ 7539] = 0x6328, [ 7540] = 0x634D, [ 7541] = 0x634C,
+-  [ 7542] = 0x6548, [ 7543] = 0x6549, [ 7544] = 0x6599, [ 7545] = 0x65C1,
+-  [ 7546] = 0x65C5, [ 7547] = 0x6642, [ 7548] = 0x6649, [ 7549] = 0x664F,
+-  [ 7550] = 0x6643, [ 7551] = 0x6652, [ 7552] = 0x664C, [ 7553] = 0x6645,
+-  [ 7554] = 0x6641, [ 7555] = 0x66F8, [ 7556] = 0x6714, [ 7557] = 0x6715,
+-  [ 7558] = 0x6717, [ 7559] = 0x6821, [ 7560] = 0x6838, [ 7561] = 0x6848,
+-  [ 7562] = 0x6846, [ 7563] = 0x6853, [ 7564] = 0x6839, [ 7565] = 0x6842,
+-  [ 7566] = 0x6854, [ 7567] = 0x6829, [ 7568] = 0x68B3, [ 7569] = 0x6817,
+-  [ 7570] = 0x684C, [ 7571] = 0x6851, [ 7572] = 0x683D, [ 7573] = 0x67F4,
+-  [ 7574] = 0x6850, [ 7575] = 0x6840, [ 7576] = 0x683C, [ 7577] = 0x6843,
+-  [ 7578] = 0x682A, [ 7579] = 0x6845, [ 7580] = 0x6813, [ 7581] = 0x6818,
+-  [ 7582] = 0x6841, [ 7583] = 0x6B8A, [ 7584] = 0x6B89, [ 7585] = 0x6BB7,
+-  [ 7586] = 0x6C23, [ 7587] = 0x6C27, [ 7588] = 0x6C28, [ 7589] = 0x6C26,
+-  [ 7590] = 0x6C24, [ 7591] = 0x6CF0, [ 7592] = 0x6D6A, [ 7593] = 0x6D95,
+-  [ 7594] = 0x6D88, [ 7595] = 0x6D87, [ 7596] = 0x6D66, [ 7597] = 0x6D78,
+-  [ 7598] = 0x6D77, [ 7599] = 0x6D59, [ 7600] = 0x6D93, [ 7605] = 0x6D6C,
+-  [ 7606] = 0x6D89, [ 7607] = 0x6D6E, [ 7608] = 0x6D5A, [ 7609] = 0x6D74,
+-  [ 7610] = 0x6D69, [ 7611] = 0x6D8C, [ 7612] = 0x6D8A, [ 7613] = 0x6D79,
+-  [ 7614] = 0x6D85, [ 7615] = 0x6D65, [ 7616] = 0x6D94, [ 7617] = 0x70CA,
+-  [ 7618] = 0x70D8, [ 7619] = 0x70E4, [ 7620] = 0x70D9, [ 7621] = 0x70C8,
+-  [ 7622] = 0x70CF, [ 7623] = 0x7239, [ 7624] = 0x7279, [ 7625] = 0x72FC,
+-  [ 7626] = 0x72F9, [ 7627] = 0x72FD, [ 7628] = 0x72F8, [ 7629] = 0x72F7,
+-  [ 7630] = 0x7386, [ 7631] = 0x73ED, [ 7632] = 0x7409, [ 7633] = 0x73EE,
+-  [ 7634] = 0x73E0, [ 7635] = 0x73EA, [ 7636] = 0x73DE, [ 7637] = 0x7554,
+-  [ 7638] = 0x755D, [ 7639] = 0x755C, [ 7640] = 0x755A, [ 7641] = 0x7559,
+-  [ 7642] = 0x75BE, [ 7643] = 0x75C5, [ 7644] = 0x75C7, [ 7645] = 0x75B2,
+-  [ 7646] = 0x75B3, [ 7647] = 0x75BD, [ 7648] = 0x75BC, [ 7649] = 0x75B9,
+-  [ 7650] = 0x75C2, [ 7651] = 0x75B8, [ 7652] = 0x768B, [ 7653] = 0x76B0,
+-  [ 7654] = 0x76CA, [ 7655] = 0x76CD, [ 7656] = 0x76CE, [ 7657] = 0x7729,
+-  [ 7658] = 0x771F, [ 7659] = 0x7720, [ 7660] = 0x7728, [ 7661] = 0x77E9,
+-  [ 7662] = 0x7830, [ 7663] = 0x7827, [ 7664] = 0x7838, [ 7665] = 0x781D,
+-  [ 7666] = 0x7834, [ 7667] = 0x7837, [ 7702] = 0x7825, [ 7703] = 0x782D,
+-  [ 7704] = 0x7820, [ 7705] = 0x781F, [ 7706] = 0x7832, [ 7707] = 0x7955,
+-  [ 7708] = 0x7950, [ 7709] = 0x7960, [ 7710] = 0x795F, [ 7711] = 0x7956,
+-  [ 7712] = 0x795E, [ 7713] = 0x795D, [ 7714] = 0x7957, [ 7715] = 0x795A,
+-  [ 7716] = 0x79E4, [ 7717] = 0x79E3, [ 7718] = 0x79E7, [ 7719] = 0x79DF,
+-  [ 7720] = 0x79E6, [ 7721] = 0x79E9, [ 7722] = 0x79D8, [ 7723] = 0x7A84,
+-  [ 7724] = 0x7A88, [ 7725] = 0x7AD9, [ 7726] = 0x7B06, [ 7727] = 0x7B11,
+-  [ 7728] = 0x7C89, [ 7729] = 0x7D21, [ 7730] = 0x7D17, [ 7731] = 0x7D0B,
+-  [ 7732] = 0x7D0A, [ 7733] = 0x7D20, [ 7734] = 0x7D22, [ 7735] = 0x7D14,
+-  [ 7736] = 0x7D10, [ 7737] = 0x7D15, [ 7738] = 0x7D1A, [ 7739] = 0x7D1C,
+-  [ 7740] = 0x7D0D, [ 7741] = 0x7D19, [ 7742] = 0x7D1B, [ 7743] = 0x7F3A,
+-  [ 7744] = 0x7F5F, [ 7745] = 0x7F94, [ 7746] = 0x7FC5, [ 7747] = 0x7FC1,
+-  [ 7748] = 0x8006, [ 7749] = 0x8018, [ 7750] = 0x8015, [ 7751] = 0x8019,
+-  [ 7752] = 0x8017, [ 7753] = 0x803D, [ 7754] = 0x803F, [ 7755] = 0x80F1,
+-  [ 7756] = 0x8102, [ 7757] = 0x80F0, [ 7758] = 0x8105, [ 7759] = 0x80ED,
+-  [ 7760] = 0x80F4, [ 7761] = 0x8106, [ 7762] = 0x80F8, [ 7763] = 0x80F3,
+-  [ 7764] = 0x8108, [ 7765] = 0x80FD, [ 7766] = 0x810A, [ 7767] = 0x80FC,
+-  [ 7768] = 0x80EF, [ 7769] = 0x81ED, [ 7770] = 0x81EC, [ 7771] = 0x8200,
+-  [ 7772] = 0x8210, [ 7773] = 0x822A, [ 7774] = 0x822B, [ 7775] = 0x8228,
+-  [ 7776] = 0x822C, [ 7777] = 0x82BB, [ 7778] = 0x832B, [ 7779] = 0x8352,
+-  [ 7780] = 0x8354, [ 7781] = 0x834A, [ 7782] = 0x8338, [ 7783] = 0x8350,
+-  [ 7784] = 0x8349, [ 7785] = 0x8335, [ 7786] = 0x8334, [ 7787] = 0x834F,
+-  [ 7788] = 0x8332, [ 7789] = 0x8339, [ 7790] = 0x8336, [ 7791] = 0x8317,
+-  [ 7792] = 0x8340, [ 7793] = 0x8331, [ 7794] = 0x8328, [ 7795] = 0x8343,
+-  [ 7800] = 0x8654, [ 7801] = 0x868A, [ 7802] = 0x86AA, [ 7803] = 0x8693,
+-  [ 7804] = 0x86A4, [ 7805] = 0x86A9, [ 7806] = 0x868C, [ 7807] = 0x86A3,
+-  [ 7808] = 0x869C, [ 7809] = 0x8870, [ 7810] = 0x8877, [ 7811] = 0x8881,
+-  [ 7812] = 0x8882, [ 7813] = 0x887D, [ 7814] = 0x8879, [ 7815] = 0x8A18,
+-  [ 7816] = 0x8A10, [ 7817] = 0x8A0E, [ 7818] = 0x8A0C, [ 7819] = 0x8A15,
+-  [ 7820] = 0x8A0A, [ 7821] = 0x8A17, [ 7822] = 0x8A13, [ 7823] = 0x8A16,
+-  [ 7824] = 0x8A0F, [ 7825] = 0x8A11, [ 7826] = 0x8C48, [ 7827] = 0x8C7A,
+-  [ 7828] = 0x8C79, [ 7829] = 0x8CA1, [ 7830] = 0x8CA2, [ 7831] = 0x8D77,
+-  [ 7832] = 0x8EAC, [ 7833] = 0x8ED2, [ 7834] = 0x8ED4, [ 7835] = 0x8ECF,
+-  [ 7836] = 0x8FB1, [ 7837] = 0x9001, [ 7838] = 0x9006, [ 7839] = 0x8FF7,
+-  [ 7840] = 0x9000, [ 7841] = 0x8FFA, [ 7842] = 0x8FF4, [ 7843] = 0x9003,
+-  [ 7844] = 0x8FFD, [ 7845] = 0x9005, [ 7846] = 0x8FF8, [ 7847] = 0x9095,
+-  [ 7848] = 0x90E1, [ 7849] = 0x90DD, [ 7850] = 0x90E2, [ 7851] = 0x9152,
+-  [ 7852] = 0x914D, [ 7853] = 0x914C, [ 7854] = 0x91D8, [ 7855] = 0x91DD,
+-  [ 7856] = 0x91D7, [ 7857] = 0x91DC, [ 7858] = 0x91D9, [ 7859] = 0x9583,
+-  [ 7860] = 0x9662, [ 7861] = 0x9663, [ 7862] = 0x9661, [ 7897] = 0x965B,
+-  [ 7898] = 0x965D, [ 7899] = 0x9664, [ 7900] = 0x9658, [ 7901] = 0x965E,
+-  [ 7902] = 0x96BB, [ 7903] = 0x98E2, [ 7904] = 0x99AC, [ 7905] = 0x9AA8,
+-  [ 7906] = 0x9AD8, [ 7907] = 0x9B25, [ 7908] = 0x9B32, [ 7909] = 0x9B3C,
+-  [ 7910] = 0x4E7E, [ 7911] = 0x507A, [ 7912] = 0x507D, [ 7913] = 0x505C,
+-  [ 7914] = 0x5047, [ 7915] = 0x5043, [ 7916] = 0x504C, [ 7917] = 0x505A,
+-  [ 7918] = 0x5049, [ 7919] = 0x5065, [ 7920] = 0x5076, [ 7921] = 0x504E,
+-  [ 7922] = 0x5055, [ 7923] = 0x5075, [ 7924] = 0x5074, [ 7925] = 0x5077,
+-  [ 7926] = 0x504F, [ 7927] = 0x500F, [ 7928] = 0x506F, [ 7929] = 0x506D,
+-  [ 7930] = 0x515C, [ 7931] = 0x5195, [ 7932] = 0x51F0, [ 7933] = 0x526A,
+-  [ 7934] = 0x526F, [ 7935] = 0x52D2, [ 7936] = 0x52D9, [ 7937] = 0x52D8,
+-  [ 7938] = 0x52D5, [ 7939] = 0x5310, [ 7940] = 0x530F, [ 7941] = 0x5319,
+-  [ 7942] = 0x533F, [ 7943] = 0x5340, [ 7944] = 0x533E, [ 7945] = 0x53C3,
+-  [ 7946] = 0x66FC, [ 7947] = 0x5546, [ 7948] = 0x556A, [ 7949] = 0x5566,
+-  [ 7950] = 0x5544, [ 7951] = 0x555E, [ 7952] = 0x5561, [ 7953] = 0x5543,
+-  [ 7954] = 0x554A, [ 7955] = 0x5531, [ 7956] = 0x5556, [ 7957] = 0x554F,
+-  [ 7958] = 0x5555, [ 7959] = 0x552F, [ 7960] = 0x5564, [ 7961] = 0x5538,
+-  [ 7962] = 0x552E, [ 7963] = 0x555C, [ 7964] = 0x552C, [ 7965] = 0x5563,
+-  [ 7966] = 0x5533, [ 7967] = 0x5541, [ 7968] = 0x5557, [ 7969] = 0x5708,
+-  [ 7970] = 0x570B, [ 7971] = 0x5709, [ 7972] = 0x57DF, [ 7973] = 0x5805,
+-  [ 7974] = 0x580A, [ 7975] = 0x5806, [ 7976] = 0x57E0, [ 7977] = 0x57E4,
+-  [ 7978] = 0x57FA, [ 7979] = 0x5802, [ 7980] = 0x5835, [ 7981] = 0x57F7,
+-  [ 7982] = 0x57F9, [ 7983] = 0x5920, [ 7984] = 0x5962, [ 7985] = 0x5A36,
+-  [ 7986] = 0x5A41, [ 7987] = 0x5A49, [ 7988] = 0x5A66, [ 7989] = 0x5A6A,
+-  [ 7990] = 0x5A40, [ 7995] = 0x5A3C, [ 7996] = 0x5A62, [ 7997] = 0x5A5A,
+-  [ 7998] = 0x5A46, [ 7999] = 0x5A4A, [ 8000] = 0x5B70, [ 8001] = 0x5BC7,
+-  [ 8002] = 0x5BC5, [ 8003] = 0x5BC4, [ 8004] = 0x5BC2, [ 8005] = 0x5BBF,
+-  [ 8006] = 0x5BC6, [ 8007] = 0x5C09, [ 8008] = 0x5C08, [ 8009] = 0x5C07,
+-  [ 8010] = 0x5C60, [ 8011] = 0x5C5C, [ 8012] = 0x5C5D, [ 8013] = 0x5D07,
+-  [ 8014] = 0x5D06, [ 8015] = 0x5D0E, [ 8016] = 0x5D1B, [ 8017] = 0x5D16,
+-  [ 8018] = 0x5D22, [ 8019] = 0x5D11, [ 8020] = 0x5D29, [ 8021] = 0x5D14,
+-  [ 8022] = 0x5D19, [ 8023] = 0x5D24, [ 8024] = 0x5D27, [ 8025] = 0x5D17,
+-  [ 8026] = 0x5DE2, [ 8027] = 0x5E38, [ 8028] = 0x5E36, [ 8029] = 0x5E33,
+-  [ 8030] = 0x5E37, [ 8031] = 0x5EB7, [ 8032] = 0x5EB8, [ 8033] = 0x5EB6,
+-  [ 8034] = 0x5EB5, [ 8035] = 0x5EBE, [ 8036] = 0x5F35, [ 8037] = 0x5F37,
+-  [ 8038] = 0x5F57, [ 8039] = 0x5F6C, [ 8040] = 0x5F69, [ 8041] = 0x5F6B,
+-  [ 8042] = 0x5F97, [ 8043] = 0x5F99, [ 8044] = 0x5F9E, [ 8045] = 0x5F98,
+-  [ 8046] = 0x5FA1, [ 8047] = 0x5FA0, [ 8048] = 0x5F9C, [ 8049] = 0x607F,
+-  [ 8050] = 0x60A3, [ 8051] = 0x6089, [ 8052] = 0x60A0, [ 8053] = 0x60A8,
+-  [ 8054] = 0x60CB, [ 8055] = 0x60B4, [ 8056] = 0x60E6, [ 8057] = 0x60BD,
+-  [ 8092] = 0x60C5, [ 8093] = 0x60BB, [ 8094] = 0x60B5, [ 8095] = 0x60DC,
+-  [ 8096] = 0x60BC, [ 8097] = 0x60D8, [ 8098] = 0x60D5, [ 8099] = 0x60C6,
+-  [ 8100] = 0x60DF, [ 8101] = 0x60B8, [ 8102] = 0x60DA, [ 8103] = 0x60C7,
+-  [ 8104] = 0x621A, [ 8105] = 0x621B, [ 8106] = 0x6248, [ 8107] = 0x63A0,
+-  [ 8108] = 0x63A7, [ 8109] = 0x6372, [ 8110] = 0x6396, [ 8111] = 0x63A2,
+-  [ 8112] = 0x63A5, [ 8113] = 0x6377, [ 8114] = 0x6367, [ 8115] = 0x6398,
+-  [ 8116] = 0x63AA, [ 8117] = 0x6371, [ 8118] = 0x63A9, [ 8119] = 0x6389,
+-  [ 8120] = 0x6383, [ 8121] = 0x639B, [ 8122] = 0x636B, [ 8123] = 0x63A8,
+-  [ 8124] = 0x6384, [ 8125] = 0x6388, [ 8126] = 0x6399, [ 8127] = 0x63A1,
+-  [ 8128] = 0x63AC, [ 8129] = 0x6392, [ 8130] = 0x638F, [ 8131] = 0x6380,
+-  [ 8132] = 0x637B, [ 8133] = 0x6369, [ 8134] = 0x6368, [ 8135] = 0x637A,
+-  [ 8136] = 0x655D, [ 8137] = 0x6556, [ 8138] = 0x6551, [ 8139] = 0x6559,
+-  [ 8140] = 0x6557, [ 8141] = 0x555F, [ 8142] = 0x654F, [ 8143] = 0x6558,
+-  [ 8144] = 0x6555, [ 8145] = 0x6554, [ 8146] = 0x659C, [ 8147] = 0x659B,
+-  [ 8148] = 0x65AC, [ 8149] = 0x65CF, [ 8150] = 0x65CB, [ 8151] = 0x65CC,
+-  [ 8152] = 0x65CE, [ 8153] = 0x665D, [ 8154] = 0x665A, [ 8155] = 0x6664,
+-  [ 8156] = 0x6668, [ 8157] = 0x6666, [ 8158] = 0x665E, [ 8159] = 0x66F9,
+-  [ 8160] = 0x52D7, [ 8161] = 0x671B, [ 8162] = 0x6881, [ 8163] = 0x68AF,
+-  [ 8164] = 0x68A2, [ 8165] = 0x6893, [ 8166] = 0x68B5, [ 8167] = 0x687F,
+-  [ 8168] = 0x6876, [ 8169] = 0x68B1, [ 8170] = 0x68A7, [ 8171] = 0x6897,
+-  [ 8172] = 0x68B0, [ 8173] = 0x6883, [ 8174] = 0x68C4, [ 8175] = 0x68AD,
+-  [ 8176] = 0x6886, [ 8177] = 0x6885, [ 8178] = 0x6894, [ 8179] = 0x689D,
+-  [ 8180] = 0x68A8, [ 8181] = 0x689F, [ 8182] = 0x68A1, [ 8183] = 0x6882,
+-  [ 8184] = 0x6B32, [ 8185] = 0x6BBA, [ 8190] = 0x6BEB, [ 8191] = 0x6BEC,
+-  [ 8192] = 0x6C2B, [ 8193] = 0x6D8E, [ 8194] = 0x6DBC, [ 8195] = 0x6DF3,
+-  [ 8196] = 0x6DD9, [ 8197] = 0x6DB2, [ 8198] = 0x6DE1, [ 8199] = 0x6DCC,
+-  [ 8200] = 0x6DE4, [ 8201] = 0x6DFB, [ 8202] = 0x6DFA, [ 8203] = 0x6E05,
+-  [ 8204] = 0x6DC7, [ 8205] = 0x6DCB, [ 8206] = 0x6DAF, [ 8207] = 0x6DD1,
+-  [ 8208] = 0x6DAE, [ 8209] = 0x6DDE, [ 8210] = 0x6DF9, [ 8211] = 0x6DB8,
+-  [ 8212] = 0x6DF7, [ 8213] = 0x6DF5, [ 8214] = 0x6DC5, [ 8215] = 0x6DD2,
+-  [ 8216] = 0x6E1A, [ 8217] = 0x6DB5, [ 8218] = 0x6DDA, [ 8219] = 0x6DEB,
+-  [ 8220] = 0x6DD8, [ 8221] = 0x6DEA, [ 8222] = 0x6DF1, [ 8223] = 0x6DEE,
+-  [ 8224] = 0x6DE8, [ 8225] = 0x6DC6, [ 8226] = 0x6DC4, [ 8227] = 0x6DAA,
+-  [ 8228] = 0x6DEC, [ 8229] = 0x6DBF, [ 8230] = 0x6DE6, [ 8231] = 0x70F9,
+-  [ 8232] = 0x7109, [ 8233] = 0x710A, [ 8234] = 0x70FD, [ 8235] = 0x70EF,
+-  [ 8236] = 0x723D, [ 8237] = 0x727D, [ 8238] = 0x7281, [ 8239] = 0x731C,
+-  [ 8240] = 0x731B, [ 8241] = 0x7316, [ 8242] = 0x7313, [ 8243] = 0x7319,
+-  [ 8244] = 0x7387, [ 8245] = 0x7405, [ 8246] = 0x740A, [ 8247] = 0x7403,
+-  [ 8248] = 0x7406, [ 8249] = 0x73FE, [ 8250] = 0x740D, [ 8251] = 0x74E0,
+-  [ 8252] = 0x74F6, [ 8287] = 0x74F7, [ 8288] = 0x751C, [ 8289] = 0x7522,
+-  [ 8290] = 0x7565, [ 8291] = 0x7566, [ 8292] = 0x7562, [ 8293] = 0x7570,
+-  [ 8294] = 0x758F, [ 8295] = 0x75D4, [ 8296] = 0x75D5, [ 8297] = 0x75B5,
+-  [ 8298] = 0x75CA, [ 8299] = 0x75CD, [ 8300] = 0x768E, [ 8301] = 0x76D4,
+-  [ 8302] = 0x76D2, [ 8303] = 0x76DB, [ 8304] = 0x7737, [ 8305] = 0x773E,
+-  [ 8306] = 0x773C, [ 8307] = 0x7736, [ 8308] = 0x7738, [ 8309] = 0x773A,
+-  [ 8310] = 0x786B, [ 8311] = 0x7843, [ 8312] = 0x784E, [ 8313] = 0x7965,
+-  [ 8314] = 0x7968, [ 8315] = 0x796D, [ 8316] = 0x79FB, [ 8317] = 0x7A92,
+-  [ 8318] = 0x7A95, [ 8319] = 0x7B20, [ 8320] = 0x7B28, [ 8321] = 0x7B1B,
+-  [ 8322] = 0x7B2C, [ 8323] = 0x7B26, [ 8324] = 0x7B19, [ 8325] = 0x7B1E,
+-  [ 8326] = 0x7B2E, [ 8327] = 0x7C92, [ 8328] = 0x7C97, [ 8329] = 0x7C95,
+-  [ 8330] = 0x7D46, [ 8331] = 0x7D43, [ 8332] = 0x7D71, [ 8333] = 0x7D2E,
+-  [ 8334] = 0x7D39, [ 8335] = 0x7D3C, [ 8336] = 0x7D40, [ 8337] = 0x7D30,
+-  [ 8338] = 0x7D33, [ 8339] = 0x7D44, [ 8340] = 0x7D2F, [ 8341] = 0x7D42,
+-  [ 8342] = 0x7D32, [ 8343] = 0x7D31, [ 8344] = 0x7F3D, [ 8345] = 0x7F9E,
+-  [ 8346] = 0x7F9A, [ 8347] = 0x7FCC, [ 8348] = 0x7FCE, [ 8349] = 0x7FD2,
+-  [ 8350] = 0x801C, [ 8351] = 0x804A, [ 8352] = 0x8046, [ 8353] = 0x812F,
+-  [ 8354] = 0x8116, [ 8355] = 0x8123, [ 8356] = 0x812B, [ 8357] = 0x8129,
+-  [ 8358] = 0x8130, [ 8359] = 0x8124, [ 8360] = 0x8202, [ 8361] = 0x8235,
+-  [ 8362] = 0x8237, [ 8363] = 0x8236, [ 8364] = 0x8239, [ 8365] = 0x838E,
+-  [ 8366] = 0x839E, [ 8367] = 0x8398, [ 8368] = 0x8378, [ 8369] = 0x83A2,
+-  [ 8370] = 0x8396, [ 8371] = 0x83BD, [ 8372] = 0x83AB, [ 8373] = 0x8392,
+-  [ 8374] = 0x838A, [ 8375] = 0x8393, [ 8376] = 0x8389, [ 8377] = 0x83A0,
+-  [ 8378] = 0x8377, [ 8379] = 0x837B, [ 8380] = 0x837C, [ 8385] = 0x8386,
+-  [ 8386] = 0x83A7, [ 8387] = 0x8655, [ 8388] = 0x5F6A, [ 8389] = 0x86C7,
+-  [ 8390] = 0x86C0, [ 8391] = 0x86B6, [ 8392] = 0x86C4, [ 8393] = 0x86B5,
+-  [ 8394] = 0x86C6, [ 8395] = 0x86CB, [ 8396] = 0x86B1, [ 8397] = 0x86AF,
+-  [ 8398] = 0x86C9, [ 8399] = 0x8853, [ 8400] = 0x889E, [ 8401] = 0x8888,
+-  [ 8402] = 0x88AB, [ 8403] = 0x8892, [ 8404] = 0x8896, [ 8405] = 0x888D,
+-  [ 8406] = 0x888B, [ 8407] = 0x8993, [ 8408] = 0x898F, [ 8409] = 0x8A2A,
+-  [ 8410] = 0x8A1D, [ 8411] = 0x8A23, [ 8412] = 0x8A25, [ 8413] = 0x8A31,
+-  [ 8414] = 0x8A2D, [ 8415] = 0x8A1F, [ 8416] = 0x8A1B, [ 8417] = 0x8A22,
+-  [ 8418] = 0x8C49, [ 8419] = 0x8C5A, [ 8420] = 0x8CA9, [ 8421] = 0x8CAC,
+-  [ 8422] = 0x8CAB, [ 8423] = 0x8CA8, [ 8424] = 0x8CAA, [ 8425] = 0x8CA7,
+-  [ 8426] = 0x8D67, [ 8427] = 0x8D66, [ 8428] = 0x8DBE, [ 8429] = 0x8DBA,
+-  [ 8430] = 0x8EDB, [ 8431] = 0x8EDF, [ 8432] = 0x9019, [ 8433] = 0x900D,
+-  [ 8434] = 0x901A, [ 8435] = 0x9017, [ 8436] = 0x9023, [ 8437] = 0x901F,
+-  [ 8438] = 0x901D, [ 8439] = 0x9010, [ 8440] = 0x9015, [ 8441] = 0x901E,
+-  [ 8442] = 0x9020, [ 8443] = 0x900F, [ 8444] = 0x9022, [ 8445] = 0x9016,
+-  [ 8446] = 0x901B, [ 8447] = 0x9014, [ 8482] = 0x90E8, [ 8483] = 0x90ED,
+-  [ 8484] = 0x90FD, [ 8485] = 0x9157, [ 8486] = 0x91CE, [ 8487] = 0x91F5,
+-  [ 8488] = 0x91E6, [ 8489] = 0x91E3, [ 8490] = 0x91E7, [ 8491] = 0x91ED,
+-  [ 8492] = 0x91E9, [ 8493] = 0x9589, [ 8494] = 0x966A, [ 8495] = 0x9675,
+-  [ 8496] = 0x9673, [ 8497] = 0x9678, [ 8498] = 0x9670, [ 8499] = 0x9674,
+-  [ 8500] = 0x9676, [ 8501] = 0x9677, [ 8502] = 0x966C, [ 8503] = 0x96C0,
+-  [ 8504] = 0x96EA, [ 8505] = 0x96E9, [ 8506] = 0x7AE0, [ 8507] = 0x7ADF,
+-  [ 8508] = 0x9802, [ 8509] = 0x9803, [ 8510] = 0x9B5A, [ 8511] = 0x9CE5,
+-  [ 8512] = 0x9E75, [ 8513] = 0x9E7F, [ 8514] = 0x9EA5, [ 8515] = 0x9EBB,
+-  [ 8516] = 0x50A2, [ 8517] = 0x508D, [ 8518] = 0x5085, [ 8519] = 0x5099,
+-  [ 8520] = 0x5091, [ 8521] = 0x5080, [ 8522] = 0x5096, [ 8523] = 0x5098,
+-  [ 8524] = 0x509A, [ 8525] = 0x6700, [ 8526] = 0x51F1, [ 8527] = 0x5272,
+-  [ 8528] = 0x5274, [ 8529] = 0x5275, [ 8530] = 0x5269, [ 8531] = 0x52DE,
+-  [ 8532] = 0x52DD, [ 8533] = 0x52DB, [ 8534] = 0x535A, [ 8535] = 0x53A5,
+-  [ 8536] = 0x557B, [ 8537] = 0x5580, [ 8538] = 0x55A7, [ 8539] = 0x557C,
+-  [ 8540] = 0x558A, [ 8541] = 0x559D, [ 8542] = 0x5598, [ 8543] = 0x5582,
+-  [ 8544] = 0x559C, [ 8545] = 0x55AA, [ 8546] = 0x5594, [ 8547] = 0x5587,
+-  [ 8548] = 0x558B, [ 8549] = 0x5583, [ 8550] = 0x55B3, [ 8551] = 0x55AE,
+-  [ 8552] = 0x559F, [ 8553] = 0x553E, [ 8554] = 0x55B2, [ 8555] = 0x559A,
+-  [ 8556] = 0x55BB, [ 8557] = 0x55AC, [ 8558] = 0x55B1, [ 8559] = 0x557E,
+-  [ 8560] = 0x5589, [ 8561] = 0x55AB, [ 8562] = 0x5599, [ 8563] = 0x570D,
+-  [ 8564] = 0x582F, [ 8565] = 0x582A, [ 8566] = 0x5834, [ 8567] = 0x5824,
+-  [ 8568] = 0x5830, [ 8569] = 0x5831, [ 8570] = 0x5821, [ 8571] = 0x581D,
+-  [ 8572] = 0x5820, [ 8573] = 0x58F9, [ 8574] = 0x58FA, [ 8575] = 0x5960,
+-  [ 8580] = 0x5A77, [ 8581] = 0x5A9A, [ 8582] = 0x5A7F, [ 8583] = 0x5A92,
+-  [ 8584] = 0x5A9B, [ 8585] = 0x5AA7, [ 8586] = 0x5B73, [ 8587] = 0x5B71,
+-  [ 8588] = 0x5BD2, [ 8589] = 0x5BCC, [ 8590] = 0x5BD3, [ 8591] = 0x5BD0,
+-  [ 8592] = 0x5C0A, [ 8593] = 0x5C0B, [ 8594] = 0x5C31, [ 8595] = 0x5D4C,
+-  [ 8596] = 0x5D50, [ 8597] = 0x5D34, [ 8598] = 0x5D47, [ 8599] = 0x5DFD,
+-  [ 8600] = 0x5E45, [ 8601] = 0x5E3D, [ 8602] = 0x5E40, [ 8603] = 0x5E43,
+-  [ 8604] = 0x5E7E, [ 8605] = 0x5ECA, [ 8606] = 0x5EC1, [ 8607] = 0x5EC2,
+-  [ 8608] = 0x5EC4, [ 8609] = 0x5F3C, [ 8610] = 0x5F6D, [ 8611] = 0x5FA9,
+-  [ 8612] = 0x5FAA, [ 8613] = 0x5FA8, [ 8614] = 0x60D1, [ 8615] = 0x60E1,
+-  [ 8616] = 0x60B2, [ 8617] = 0x60B6, [ 8618] = 0x60E0, [ 8619] = 0x611C,
+-  [ 8620] = 0x6123, [ 8621] = 0x60FA, [ 8622] = 0x6115, [ 8623] = 0x60F0,
+-  [ 8624] = 0x60FB, [ 8625] = 0x60F4, [ 8626] = 0x6168, [ 8627] = 0x60F1,
+-  [ 8628] = 0x610E, [ 8629] = 0x60F6, [ 8630] = 0x6109, [ 8631] = 0x6100,
+-  [ 8632] = 0x6112, [ 8633] = 0x621F, [ 8634] = 0x6249, [ 8635] = 0x63A3,
+-  [ 8636] = 0x638C, [ 8637] = 0x63CF, [ 8638] = 0x63C0, [ 8639] = 0x63E9,
+-  [ 8640] = 0x63C9, [ 8641] = 0x63C6, [ 8642] = 0x63CD, [ 8677] = 0x63D2,
+-  [ 8678] = 0x63E3, [ 8679] = 0x63D0, [ 8680] = 0x63E1, [ 8681] = 0x63D6,
+-  [ 8682] = 0x63ED, [ 8683] = 0x63EE, [ 8684] = 0x6376, [ 8685] = 0x63F4,
+-  [ 8686] = 0x63EA, [ 8687] = 0x63DB, [ 8688] = 0x6452, [ 8689] = 0x63DA,
+-  [ 8690] = 0x63F9, [ 8691] = 0x655E, [ 8692] = 0x6566, [ 8693] = 0x6562,
+-  [ 8694] = 0x6563, [ 8695] = 0x6591, [ 8696] = 0x6590, [ 8697] = 0x65AF,
+-  [ 8698] = 0x666E, [ 8699] = 0x6670, [ 8700] = 0x6674, [ 8701] = 0x6676,
+-  [ 8702] = 0x666F, [ 8703] = 0x6691, [ 8704] = 0x667A, [ 8705] = 0x667E,
+-  [ 8706] = 0x6677, [ 8707] = 0x66FE, [ 8708] = 0x66FF, [ 8709] = 0x671F,
+-  [ 8710] = 0x671D, [ 8711] = 0x68FA, [ 8712] = 0x68D5, [ 8713] = 0x68E0,
+-  [ 8714] = 0x68D8, [ 8715] = 0x68D7, [ 8716] = 0x6905, [ 8717] = 0x68DF,
+-  [ 8718] = 0x68F5, [ 8719] = 0x68EE, [ 8720] = 0x68E7, [ 8721] = 0x68F9,
+-  [ 8722] = 0x68D2, [ 8723] = 0x68F2, [ 8724] = 0x68E3, [ 8725] = 0x68CB,
+-  [ 8726] = 0x68CD, [ 8727] = 0x690D, [ 8728] = 0x6912, [ 8729] = 0x690E,
+-  [ 8730] = 0x68C9, [ 8731] = 0x68DA, [ 8732] = 0x696E, [ 8733] = 0x68FB,
+-  [ 8734] = 0x6B3E, [ 8735] = 0x6B3A, [ 8736] = 0x6B3D, [ 8737] = 0x6B98,
+-  [ 8738] = 0x6B96, [ 8739] = 0x6BBC, [ 8740] = 0x6BEF, [ 8741] = 0x6C2E,
+-  [ 8742] = 0x6C2F, [ 8743] = 0x6C2C, [ 8744] = 0x6E2F, [ 8745] = 0x6E38,
+-  [ 8746] = 0x6E54, [ 8747] = 0x6E21, [ 8748] = 0x6E32, [ 8749] = 0x6E67,
+-  [ 8750] = 0x6E4A, [ 8751] = 0x6E20, [ 8752] = 0x6E25, [ 8753] = 0x6E23,
+-  [ 8754] = 0x6E1B, [ 8755] = 0x6E5B, [ 8756] = 0x6E58, [ 8757] = 0x6E24,
+-  [ 8758] = 0x6E56, [ 8759] = 0x6E6E, [ 8760] = 0x6E2D, [ 8761] = 0x6E26,
+-  [ 8762] = 0x6E6F, [ 8763] = 0x6E34, [ 8764] = 0x6E4D, [ 8765] = 0x6E3A,
+-  [ 8766] = 0x6E2C, [ 8767] = 0x6E43, [ 8768] = 0x6E1D, [ 8769] = 0x6E3E,
+-  [ 8770] = 0x6ECB, [ 8775] = 0x6E89, [ 8776] = 0x6E19, [ 8777] = 0x6E4E,
+-  [ 8778] = 0x6E63, [ 8779] = 0x6E44, [ 8780] = 0x6E72, [ 8781] = 0x6E69,
+-  [ 8782] = 0x6E5F, [ 8783] = 0x7119, [ 8784] = 0x711A, [ 8785] = 0x7126,
+-  [ 8786] = 0x7130, [ 8787] = 0x7121, [ 8788] = 0x7136, [ 8789] = 0x716E,
+-  [ 8790] = 0x711C, [ 8791] = 0x724C, [ 8792] = 0x7284, [ 8793] = 0x7280,
+-  [ 8794] = 0x7336, [ 8795] = 0x7325, [ 8796] = 0x7334, [ 8797] = 0x7329,
+-  [ 8798] = 0x743A, [ 8799] = 0x742A, [ 8800] = 0x7433, [ 8801] = 0x7422,
+-  [ 8802] = 0x7425, [ 8803] = 0x7435, [ 8804] = 0x7436, [ 8805] = 0x7434,
+-  [ 8806] = 0x742F, [ 8807] = 0x741B, [ 8808] = 0x7426, [ 8809] = 0x7428,
+-  [ 8810] = 0x7525, [ 8811] = 0x7526, [ 8812] = 0x756B, [ 8813] = 0x756A,
+-  [ 8814] = 0x75E2, [ 8815] = 0x75DB, [ 8816] = 0x75E3, [ 8817] = 0x75D9,
+-  [ 8818] = 0x75D8, [ 8819] = 0x75DE, [ 8820] = 0x75E0, [ 8821] = 0x767B,
+-  [ 8822] = 0x767C, [ 8823] = 0x7696, [ 8824] = 0x7693, [ 8825] = 0x76B4,
+-  [ 8826] = 0x76DC, [ 8827] = 0x774F, [ 8828] = 0x77ED, [ 8829] = 0x785D,
+-  [ 8830] = 0x786C, [ 8831] = 0x786F, [ 8832] = 0x7A0D, [ 8833] = 0x7A08,
+-  [ 8834] = 0x7A0B, [ 8835] = 0x7A05, [ 8836] = 0x7A00, [ 8837] = 0x7A98,
+-  [ 8872] = 0x7A97, [ 8873] = 0x7A96, [ 8874] = 0x7AE5, [ 8875] = 0x7AE3,
+-  [ 8876] = 0x7B49, [ 8877] = 0x7B56, [ 8878] = 0x7B46, [ 8879] = 0x7B50,
+-  [ 8880] = 0x7B52, [ 8881] = 0x7B54, [ 8882] = 0x7B4D, [ 8883] = 0x7B4B,
+-  [ 8884] = 0x7B4F, [ 8885] = 0x7B51, [ 8886] = 0x7C9F, [ 8887] = 0x7CA5,
+-  [ 8888] = 0x7D5E, [ 8889] = 0x7D50, [ 8890] = 0x7D68, [ 8891] = 0x7D55,
+-  [ 8892] = 0x7D2B, [ 8893] = 0x7D6E, [ 8894] = 0x7D72, [ 8895] = 0x7D61,
+-  [ 8896] = 0x7D66, [ 8897] = 0x7D62, [ 8898] = 0x7D70, [ 8899] = 0x7D73,
+-  [ 8900] = 0x5584, [ 8901] = 0x7FD4, [ 8902] = 0x7FD5, [ 8903] = 0x800B,
+-  [ 8904] = 0x8052, [ 8905] = 0x8085, [ 8906] = 0x8155, [ 8907] = 0x8154,
+-  [ 8908] = 0x814B, [ 8909] = 0x8151, [ 8910] = 0x814E, [ 8911] = 0x8139,
+-  [ 8912] = 0x8146, [ 8913] = 0x813E, [ 8914] = 0x814C, [ 8915] = 0x8153,
+-  [ 8916] = 0x8174, [ 8917] = 0x8212, [ 8918] = 0x821C, [ 8919] = 0x83E9,
+-  [ 8920] = 0x8403, [ 8921] = 0x83F8, [ 8922] = 0x840D, [ 8923] = 0x83E0,
+-  [ 8924] = 0x83C5, [ 8925] = 0x840B, [ 8926] = 0x83C1, [ 8927] = 0x83EF,
+-  [ 8928] = 0x83F1, [ 8929] = 0x83F4, [ 8930] = 0x8457, [ 8931] = 0x840A,
+-  [ 8932] = 0x83F0, [ 8933] = 0x840C, [ 8934] = 0x83CC, [ 8935] = 0x83FD,
+-  [ 8936] = 0x83F2, [ 8937] = 0x83CA, [ 8938] = 0x8438, [ 8939] = 0x840E,
+-  [ 8940] = 0x8404, [ 8941] = 0x83DC, [ 8942] = 0x8407, [ 8943] = 0x83D4,
+-  [ 8944] = 0x83DF, [ 8945] = 0x865B, [ 8946] = 0x86DF, [ 8947] = 0x86D9,
+-  [ 8948] = 0x86ED, [ 8949] = 0x86D4, [ 8950] = 0x86DB, [ 8951] = 0x86E4,
+-  [ 8952] = 0x86D0, [ 8953] = 0x86DE, [ 8954] = 0x8857, [ 8955] = 0x88C1,
+-  [ 8956] = 0x88C2, [ 8957] = 0x88B1, [ 8958] = 0x8983, [ 8959] = 0x8996,
+-  [ 8960] = 0x8A3B, [ 8961] = 0x8A60, [ 8962] = 0x8A55, [ 8963] = 0x8A5E,
+-  [ 8964] = 0x8A3C, [ 8965] = 0x8A41, [ 8970] = 0x8A54, [ 8971] = 0x8A5B,
+-  [ 8972] = 0x8A50, [ 8973] = 0x8A46, [ 8974] = 0x8A34, [ 8975] = 0x8A3A,
+-  [ 8976] = 0x8A36, [ 8977] = 0x8A56, [ 8978] = 0x8C61, [ 8979] = 0x8C82,
+-  [ 8980] = 0x8CAF, [ 8981] = 0x8CBC, [ 8982] = 0x8CB3, [ 8983] = 0x8CBD,
+-  [ 8984] = 0x8CC1, [ 8985] = 0x8CBB, [ 8986] = 0x8CC0, [ 8987] = 0x8CB4,
+-  [ 8988] = 0x8CB7, [ 8989] = 0x8CB6, [ 8990] = 0x8CBF, [ 8991] = 0x8CB8,
+-  [ 8992] = 0x8D8A, [ 8993] = 0x8D85, [ 8994] = 0x8D81, [ 8995] = 0x8DCE,
+-  [ 8996] = 0x8DDD, [ 8997] = 0x8DCB, [ 8998] = 0x8DDA, [ 8999] = 0x8DD1,
+-  [ 9000] = 0x8DCC, [ 9001] = 0x8DDB, [ 9002] = 0x8DC6, [ 9003] = 0x8EFB,
+-  [ 9004] = 0x8EF8, [ 9005] = 0x8EFC, [ 9006] = 0x8F9C, [ 9007] = 0x902E,
+-  [ 9008] = 0x9035, [ 9009] = 0x9031, [ 9010] = 0x9038, [ 9011] = 0x9032,
+-  [ 9012] = 0x9036, [ 9013] = 0x9102, [ 9014] = 0x90F5, [ 9015] = 0x9109,
+-  [ 9016] = 0x90FE, [ 9017] = 0x9163, [ 9018] = 0x9165, [ 9019] = 0x91CF,
+-  [ 9020] = 0x9214, [ 9021] = 0x9215, [ 9022] = 0x9223, [ 9023] = 0x9209,
+-  [ 9024] = 0x921E, [ 9025] = 0x920D, [ 9026] = 0x9210, [ 9027] = 0x9207,
+-  [ 9028] = 0x9211, [ 9029] = 0x9594, [ 9030] = 0x958F, [ 9031] = 0x958B,
+-  [ 9032] = 0x9591, [ 9067] = 0x9593, [ 9068] = 0x9592, [ 9069] = 0x958E,
+-  [ 9070] = 0x968A, [ 9071] = 0x968E, [ 9072] = 0x968B, [ 9073] = 0x967D,
+-  [ 9074] = 0x9685, [ 9075] = 0x9686, [ 9076] = 0x968D, [ 9077] = 0x9672,
+-  [ 9078] = 0x9684, [ 9079] = 0x96C1, [ 9080] = 0x96C5, [ 9081] = 0x96C4,
+-  [ 9082] = 0x96C6, [ 9083] = 0x96C7, [ 9084] = 0x96EF, [ 9085] = 0x96F2,
+-  [ 9086] = 0x97CC, [ 9087] = 0x9805, [ 9088] = 0x9806, [ 9089] = 0x9808,
+-  [ 9090] = 0x98E7, [ 9091] = 0x98EA, [ 9092] = 0x98EF, [ 9093] = 0x98E9,
+-  [ 9094] = 0x98F2, [ 9095] = 0x98ED, [ 9096] = 0x99AE, [ 9097] = 0x99AD,
+-  [ 9098] = 0x9EC3, [ 9099] = 0x9ECD, [ 9100] = 0x9ED1, [ 9101] = 0x4E82,
+-  [ 9102] = 0x50AD, [ 9103] = 0x50B5, [ 9104] = 0x50B2, [ 9105] = 0x50B3,
+-  [ 9106] = 0x50C5, [ 9107] = 0x50BE, [ 9108] = 0x50AC, [ 9109] = 0x50B7,
+-  [ 9110] = 0x50BB, [ 9111] = 0x50AF, [ 9112] = 0x50C7, [ 9113] = 0x527F,
+-  [ 9114] = 0x5277, [ 9115] = 0x527D, [ 9116] = 0x52DF, [ 9117] = 0x52E6,
+-  [ 9118] = 0x52E4, [ 9119] = 0x52E2, [ 9120] = 0x52E3, [ 9121] = 0x532F,
+-  [ 9122] = 0x55DF, [ 9123] = 0x55E8, [ 9124] = 0x55D3, [ 9125] = 0x55E6,
+-  [ 9126] = 0x55CE, [ 9127] = 0x55DC, [ 9128] = 0x55C7, [ 9129] = 0x55D1,
+-  [ 9130] = 0x55E3, [ 9131] = 0x55E4, [ 9132] = 0x55EF, [ 9133] = 0x55DA,
+-  [ 9134] = 0x55E1, [ 9135] = 0x55C5, [ 9136] = 0x55C6, [ 9137] = 0x55E5,
+-  [ 9138] = 0x55C9, [ 9139] = 0x5712, [ 9140] = 0x5713, [ 9141] = 0x585E,
+-  [ 9142] = 0x5851, [ 9143] = 0x5858, [ 9144] = 0x5857, [ 9145] = 0x585A,
+-  [ 9146] = 0x5854, [ 9147] = 0x586B, [ 9148] = 0x584C, [ 9149] = 0x586D,
+-  [ 9150] = 0x584A, [ 9151] = 0x5862, [ 9152] = 0x5852, [ 9153] = 0x584B,
+-  [ 9154] = 0x5967, [ 9155] = 0x5AC1, [ 9156] = 0x5AC9, [ 9157] = 0x5ACC,
+-  [ 9158] = 0x5ABE, [ 9159] = 0x5ABD, [ 9160] = 0x5ABC, [ 9165] = 0x5AB3,
+-  [ 9166] = 0x5AC2, [ 9167] = 0x5AB2, [ 9168] = 0x5D69, [ 9169] = 0x5D6F,
+-  [ 9170] = 0x5E4C, [ 9171] = 0x5E79, [ 9172] = 0x5EC9, [ 9173] = 0x5EC8,
+-  [ 9174] = 0x5F12, [ 9175] = 0x5F59, [ 9176] = 0x5FAC, [ 9177] = 0x5FAE,
+-  [ 9178] = 0x611A, [ 9179] = 0x610F, [ 9180] = 0x6148, [ 9181] = 0x611F,
+-  [ 9182] = 0x60F3, [ 9183] = 0x611B, [ 9184] = 0x60F9, [ 9185] = 0x6101,
+-  [ 9186] = 0x6108, [ 9187] = 0x614E, [ 9188] = 0x614C, [ 9189] = 0x6144,
+-  [ 9190] = 0x614D, [ 9191] = 0x613E, [ 9192] = 0x6134, [ 9193] = 0x6127,
+-  [ 9194] = 0x610D, [ 9195] = 0x6106, [ 9196] = 0x6137, [ 9197] = 0x6221,
+-  [ 9198] = 0x6222, [ 9199] = 0x6413, [ 9200] = 0x643E, [ 9201] = 0x641E,
+-  [ 9202] = 0x642A, [ 9203] = 0x642D, [ 9204] = 0x643D, [ 9205] = 0x642C,
+-  [ 9206] = 0x640F, [ 9207] = 0x641C, [ 9208] = 0x6414, [ 9209] = 0x640D,
+-  [ 9210] = 0x6436, [ 9211] = 0x6416, [ 9212] = 0x6417, [ 9213] = 0x6406,
+-  [ 9214] = 0x656C, [ 9215] = 0x659F, [ 9216] = 0x65B0, [ 9217] = 0x6697,
+-  [ 9218] = 0x6689, [ 9219] = 0x6687, [ 9220] = 0x6688, [ 9221] = 0x6696,
+-  [ 9222] = 0x6684, [ 9223] = 0x6698, [ 9224] = 0x668D, [ 9225] = 0x6703,
+-  [ 9226] = 0x6994, [ 9227] = 0x696D, [ 9262] = 0x695A, [ 9263] = 0x6977,
+-  [ 9264] = 0x6960, [ 9265] = 0x6954, [ 9266] = 0x6975, [ 9267] = 0x6930,
+-  [ 9268] = 0x6982, [ 9269] = 0x694A, [ 9270] = 0x6968, [ 9271] = 0x696B,
+-  [ 9272] = 0x695E, [ 9273] = 0x6953, [ 9274] = 0x6979, [ 9275] = 0x6986,
+-  [ 9276] = 0x695D, [ 9277] = 0x6963, [ 9278] = 0x695B, [ 9279] = 0x6B47,
+-  [ 9280] = 0x6B72, [ 9281] = 0x6BC0, [ 9282] = 0x6BBF, [ 9283] = 0x6BD3,
+-  [ 9284] = 0x6BFD, [ 9285] = 0x6EA2, [ 9286] = 0x6EAF, [ 9287] = 0x6ED3,
+-  [ 9288] = 0x6EB6, [ 9289] = 0x6EC2, [ 9290] = 0x6E90, [ 9291] = 0x6E9D,
+-  [ 9292] = 0x6EC7, [ 9293] = 0x6EC5, [ 9294] = 0x6EA5, [ 9295] = 0x6E98,
+-  [ 9296] = 0x6EBC, [ 9297] = 0x6EBA, [ 9298] = 0x6EAB, [ 9299] = 0x6ED1,
+-  [ 9300] = 0x6E96, [ 9301] = 0x6E9C, [ 9302] = 0x6EC4, [ 9303] = 0x6ED4,
+-  [ 9304] = 0x6EAA, [ 9305] = 0x6EA7, [ 9306] = 0x6EB4, [ 9307] = 0x714E,
+-  [ 9308] = 0x7159, [ 9309] = 0x7169, [ 9310] = 0x7164, [ 9311] = 0x7149,
+-  [ 9312] = 0x7167, [ 9313] = 0x715C, [ 9314] = 0x716C, [ 9315] = 0x7166,
+-  [ 9316] = 0x714C, [ 9317] = 0x7165, [ 9318] = 0x715E, [ 9319] = 0x7146,
+-  [ 9320] = 0x7168, [ 9321] = 0x7156, [ 9322] = 0x723A, [ 9323] = 0x7252,
+-  [ 9324] = 0x7337, [ 9325] = 0x7345, [ 9326] = 0x733F, [ 9327] = 0x733E,
+-  [ 9328] = 0x746F, [ 9329] = 0x745A, [ 9330] = 0x7455, [ 9331] = 0x745F,
+-  [ 9332] = 0x745E, [ 9333] = 0x7441, [ 9334] = 0x743F, [ 9335] = 0x7459,
+-  [ 9336] = 0x745B, [ 9337] = 0x745C, [ 9338] = 0x7576, [ 9339] = 0x7578,
+-  [ 9340] = 0x7600, [ 9341] = 0x75F0, [ 9342] = 0x7601, [ 9343] = 0x75F2,
+-  [ 9344] = 0x75F1, [ 9345] = 0x75FA, [ 9346] = 0x75FF, [ 9347] = 0x75F4,
+-  [ 9348] = 0x75F3, [ 9349] = 0x76DE, [ 9350] = 0x76DF, [ 9351] = 0x775B,
+-  [ 9352] = 0x776B, [ 9353] = 0x7766, [ 9354] = 0x775E, [ 9355] = 0x7763,
+-  [ 9360] = 0x7779, [ 9361] = 0x776A, [ 9362] = 0x776C, [ 9363] = 0x775C,
+-  [ 9364] = 0x7765, [ 9365] = 0x7768, [ 9366] = 0x7762, [ 9367] = 0x77EE,
+-  [ 9368] = 0x788E, [ 9369] = 0x78B0, [ 9370] = 0x7897, [ 9371] = 0x7898,
+-  [ 9372] = 0x788C, [ 9373] = 0x7889, [ 9374] = 0x787C, [ 9375] = 0x7891,
+-  [ 9376] = 0x7893, [ 9377] = 0x787F, [ 9378] = 0x797A, [ 9379] = 0x797F,
+-  [ 9380] = 0x7981, [ 9381] = 0x842C, [ 9382] = 0x79BD, [ 9383] = 0x7A1C,
+-  [ 9384] = 0x7A1A, [ 9385] = 0x7A20, [ 9386] = 0x7A14, [ 9387] = 0x7A1F,
+-  [ 9388] = 0x7A1E, [ 9389] = 0x7A9F, [ 9390] = 0x7AA0, [ 9391] = 0x7B77,
+-  [ 9392] = 0x7BC0, [ 9393] = 0x7B60, [ 9394] = 0x7B6E, [ 9395] = 0x7B67,
+-  [ 9396] = 0x7CB1, [ 9397] = 0x7CB3, [ 9398] = 0x7CB5, [ 9399] = 0x7D93,
+-  [ 9400] = 0x7D79, [ 9401] = 0x7D91, [ 9402] = 0x7D81, [ 9403] = 0x7D8F,
+-  [ 9404] = 0x7D5B, [ 9405] = 0x7F6E, [ 9406] = 0x7F69, [ 9407] = 0x7F6A,
+-  [ 9408] = 0x7F72, [ 9409] = 0x7FA9, [ 9410] = 0x7FA8, [ 9411] = 0x7FA4,
+-  [ 9412] = 0x8056, [ 9413] = 0x8058, [ 9414] = 0x8086, [ 9415] = 0x8084,
+-  [ 9416] = 0x8171, [ 9417] = 0x8170, [ 9418] = 0x8178, [ 9419] = 0x8165,
+-  [ 9420] = 0x816E, [ 9421] = 0x8173, [ 9422] = 0x816B, [ 9457] = 0x8179,
+-  [ 9458] = 0x817A, [ 9459] = 0x8166, [ 9460] = 0x8205, [ 9461] = 0x8247,
+-  [ 9462] = 0x8482, [ 9463] = 0x8477, [ 9464] = 0x843D, [ 9465] = 0x8431,
+-  [ 9466] = 0x8475, [ 9467] = 0x8466, [ 9468] = 0x846B, [ 9469] = 0x8449,
+-  [ 9470] = 0x846C, [ 9471] = 0x845B, [ 9472] = 0x843C, [ 9473] = 0x8435,
+-  [ 9474] = 0x8461, [ 9475] = 0x8463, [ 9476] = 0x8469, [ 9477] = 0x846D,
+-  [ 9478] = 0x8446, [ 9479] = 0x865E, [ 9480] = 0x865C, [ 9481] = 0x865F,
+-  [ 9482] = 0x86F9, [ 9483] = 0x8713, [ 9484] = 0x8708, [ 9485] = 0x8707,
+-  [ 9486] = 0x8700, [ 9487] = 0x86FE, [ 9488] = 0x86FB, [ 9489] = 0x8702,
+-  [ 9490] = 0x8703, [ 9491] = 0x8706, [ 9492] = 0x870A, [ 9493] = 0x8859,
+-  [ 9494] = 0x88DF, [ 9495] = 0x88D4, [ 9496] = 0x88D9, [ 9497] = 0x88DC,
+-  [ 9498] = 0x88D8, [ 9499] = 0x88DD, [ 9500] = 0x88E1, [ 9501] = 0x88CA,
+-  [ 9502] = 0x88D5, [ 9503] = 0x88D2, [ 9504] = 0x899C, [ 9505] = 0x89E3,
+-  [ 9506] = 0x8A6B, [ 9507] = 0x8A72, [ 9508] = 0x8A73, [ 9509] = 0x8A66,
+-  [ 9510] = 0x8A69, [ 9511] = 0x8A70, [ 9512] = 0x8A87, [ 9513] = 0x8A7C,
+-  [ 9514] = 0x8A63, [ 9515] = 0x8AA0, [ 9516] = 0x8A71, [ 9517] = 0x8A85,
+-  [ 9518] = 0x8A6D, [ 9519] = 0x8A62, [ 9520] = 0x8A6E, [ 9521] = 0x8A6C,
+-  [ 9522] = 0x8A79, [ 9523] = 0x8A7B, [ 9524] = 0x8A3E, [ 9525] = 0x8A68,
+-  [ 9526] = 0x8C62, [ 9527] = 0x8C8A, [ 9528] = 0x8C89, [ 9529] = 0x8CCA,
+-  [ 9530] = 0x8CC7, [ 9531] = 0x8CC8, [ 9532] = 0x8CC4, [ 9533] = 0x8CB2,
+-  [ 9534] = 0x8CC3, [ 9535] = 0x8CC2, [ 9536] = 0x8CC5, [ 9537] = 0x8DE1,
+-  [ 9538] = 0x8DDF, [ 9539] = 0x8DE8, [ 9540] = 0x8DEF, [ 9541] = 0x8DF3,
+-  [ 9542] = 0x8DFA, [ 9543] = 0x8DEA, [ 9544] = 0x8DE4, [ 9545] = 0x8DE6,
+-  [ 9546] = 0x8EB2, [ 9547] = 0x8F03, [ 9548] = 0x8F09, [ 9549] = 0x8EFE,
+-  [ 9550] = 0x8F0A, [ 9555] = 0x8F9F, [ 9556] = 0x8FB2, [ 9557] = 0x904B,
+-  [ 9558] = 0x904A, [ 9559] = 0x9053, [ 9560] = 0x9042, [ 9561] = 0x9054,
+-  [ 9562] = 0x903C, [ 9563] = 0x9055, [ 9564] = 0x9050, [ 9565] = 0x9047,
+-  [ 9566] = 0x904F, [ 9567] = 0x904E, [ 9568] = 0x904D, [ 9569] = 0x9051,
+-  [ 9570] = 0x903E, [ 9571] = 0x9041, [ 9572] = 0x9112, [ 9573] = 0x9117,
+-  [ 9574] = 0x916C, [ 9575] = 0x916A, [ 9576] = 0x9169, [ 9577] = 0x91C9,
+-  [ 9578] = 0x9237, [ 9579] = 0x9257, [ 9580] = 0x9238, [ 9581] = 0x923D,
+-  [ 9582] = 0x9240, [ 9583] = 0x923E, [ 9584] = 0x925B, [ 9585] = 0x924B,
+-  [ 9586] = 0x9264, [ 9587] = 0x9251, [ 9588] = 0x9234, [ 9589] = 0x9249,
+-  [ 9590] = 0x924D, [ 9591] = 0x9245, [ 9592] = 0x9239, [ 9593] = 0x923F,
+-  [ 9594] = 0x925A, [ 9595] = 0x9598, [ 9596] = 0x9698, [ 9597] = 0x9694,
+-  [ 9598] = 0x9695, [ 9599] = 0x96CD, [ 9600] = 0x96CB, [ 9601] = 0x96C9,
+-  [ 9602] = 0x96CA, [ 9603] = 0x96F7, [ 9604] = 0x96FB, [ 9605] = 0x96F9,
+-  [ 9606] = 0x96F6, [ 9607] = 0x9756, [ 9608] = 0x9774, [ 9609] = 0x9776,
+-  [ 9610] = 0x9810, [ 9611] = 0x9811, [ 9612] = 0x9813, [ 9613] = 0x980A,
+-  [ 9614] = 0x9812, [ 9615] = 0x980C, [ 9616] = 0x98FC, [ 9617] = 0x98F4,
+-  [ 9652] = 0x98FD, [ 9653] = 0x98FE, [ 9654] = 0x99B3, [ 9655] = 0x99B1,
+-  [ 9656] = 0x99B4, [ 9657] = 0x9AE1, [ 9658] = 0x9CE9, [ 9659] = 0x9E82,
+-  [ 9660] = 0x9F0E, [ 9661] = 0x9F13, [ 9662] = 0x9F20, [ 9663] = 0x50E7,
+-  [ 9664] = 0x50EE, [ 9665] = 0x50E5, [ 9666] = 0x50D6, [ 9667] = 0x50ED,
+-  [ 9668] = 0x50DA, [ 9669] = 0x50D5, [ 9670] = 0x50CF, [ 9671] = 0x50D1,
+-  [ 9672] = 0x50F1, [ 9673] = 0x50CE, [ 9674] = 0x50E9, [ 9675] = 0x5162,
+-  [ 9676] = 0x51F3, [ 9677] = 0x5283, [ 9678] = 0x5282, [ 9679] = 0x5331,
+-  [ 9680] = 0x53AD, [ 9681] = 0x55FE, [ 9682] = 0x5600, [ 9683] = 0x561B,
+-  [ 9684] = 0x5617, [ 9685] = 0x55FD, [ 9686] = 0x5614, [ 9687] = 0x5606,
+-  [ 9688] = 0x5609, [ 9689] = 0x560D, [ 9690] = 0x560E, [ 9691] = 0x55F7,
+-  [ 9692] = 0x5616, [ 9693] = 0x561F, [ 9694] = 0x5608, [ 9695] = 0x5610,
+-  [ 9696] = 0x55F6, [ 9697] = 0x5718, [ 9698] = 0x5716, [ 9699] = 0x5875,
+-  [ 9700] = 0x587E, [ 9701] = 0x5883, [ 9702] = 0x5893, [ 9703] = 0x588A,
+-  [ 9704] = 0x5879, [ 9705] = 0x5885, [ 9706] = 0x587D, [ 9707] = 0x58FD,
+-  [ 9708] = 0x5925, [ 9709] = 0x5922, [ 9710] = 0x5924, [ 9711] = 0x596A,
+-  [ 9712] = 0x5969, [ 9713] = 0x5AE1, [ 9714] = 0x5AE6, [ 9715] = 0x5AE9,
+-  [ 9716] = 0x5AD7, [ 9717] = 0x5AD6, [ 9718] = 0x5AD8, [ 9719] = 0x5AE3,
+-  [ 9720] = 0x5B75, [ 9721] = 0x5BDE, [ 9722] = 0x5BE7, [ 9723] = 0x5BE1,
+-  [ 9724] = 0x5BE5, [ 9725] = 0x5BE6, [ 9726] = 0x5BE8, [ 9727] = 0x5BE2,
+-  [ 9728] = 0x5BE4, [ 9729] = 0x5BDF, [ 9730] = 0x5C0D, [ 9731] = 0x5C62,
+-  [ 9732] = 0x5D84, [ 9733] = 0x5D87, [ 9734] = 0x5E5B, [ 9735] = 0x5E63,
+-  [ 9736] = 0x5E55, [ 9737] = 0x5E57, [ 9738] = 0x5E54, [ 9739] = 0x5ED3,
+-  [ 9740] = 0x5ED6, [ 9741] = 0x5F0A, [ 9742] = 0x5F46, [ 9743] = 0x5F70,
+-  [ 9744] = 0x5FB9, [ 9745] = 0x6147, [ 9750] = 0x613F, [ 9751] = 0x614B,
+-  [ 9752] = 0x6177, [ 9753] = 0x6162, [ 9754] = 0x6163, [ 9755] = 0x615F,
+-  [ 9756] = 0x615A, [ 9757] = 0x6158, [ 9758] = 0x6175, [ 9759] = 0x622A,
+-  [ 9760] = 0x6487, [ 9761] = 0x6458, [ 9762] = 0x6454, [ 9763] = 0x64A4,
+-  [ 9764] = 0x6478, [ 9765] = 0x645F, [ 9766] = 0x647A, [ 9767] = 0x6451,
+-  [ 9768] = 0x6467, [ 9769] = 0x6434, [ 9770] = 0x646D, [ 9771] = 0x647B,
+-  [ 9772] = 0x6572, [ 9773] = 0x65A1, [ 9774] = 0x65D7, [ 9775] = 0x65D6,
+-  [ 9776] = 0x66A2, [ 9777] = 0x66A8, [ 9778] = 0x669D, [ 9779] = 0x699C,
+-  [ 9780] = 0x69A8, [ 9781] = 0x6995, [ 9782] = 0x69C1, [ 9783] = 0x69AE,
+-  [ 9784] = 0x69D3, [ 9785] = 0x69CB, [ 9786] = 0x699B, [ 9787] = 0x69B7,
+-  [ 9788] = 0x69BB, [ 9789] = 0x69AB, [ 9790] = 0x69B4, [ 9791] = 0x69D0,
+-  [ 9792] = 0x69CD, [ 9793] = 0x69AD, [ 9794] = 0x69CC, [ 9795] = 0x69A6,
+-  [ 9796] = 0x69C3, [ 9797] = 0x69A3, [ 9798] = 0x6B49, [ 9799] = 0x6B4C,
+-  [ 9800] = 0x6C33, [ 9801] = 0x6F33, [ 9802] = 0x6F14, [ 9803] = 0x6EFE,
+-  [ 9804] = 0x6F13, [ 9805] = 0x6EF4, [ 9806] = 0x6F29, [ 9807] = 0x6F3E,
+-  [ 9808] = 0x6F20, [ 9809] = 0x6F2C, [ 9810] = 0x6F0F, [ 9811] = 0x6F02,
+-  [ 9812] = 0x6F22, [ 9847] = 0x6EFF, [ 9848] = 0x6EEF, [ 9849] = 0x6F06,
+-  [ 9850] = 0x6F31, [ 9851] = 0x6F38, [ 9852] = 0x6F32, [ 9853] = 0x6F23,
+-  [ 9854] = 0x6F15, [ 9855] = 0x6F2B, [ 9856] = 0x6F2F, [ 9857] = 0x6F88,
+-  [ 9858] = 0x6F2A, [ 9859] = 0x6EEC, [ 9860] = 0x6F01, [ 9861] = 0x6EF2,
+-  [ 9862] = 0x6ECC, [ 9863] = 0x6EF7, [ 9864] = 0x7194, [ 9865] = 0x7199,
+-  [ 9866] = 0x717D, [ 9867] = 0x718A, [ 9868] = 0x7184, [ 9869] = 0x7192,
+-  [ 9870] = 0x723E, [ 9871] = 0x7292, [ 9872] = 0x7296, [ 9873] = 0x7344,
+-  [ 9874] = 0x7350, [ 9875] = 0x7464, [ 9876] = 0x7463, [ 9877] = 0x746A,
+-  [ 9878] = 0x7470, [ 9879] = 0x746D, [ 9880] = 0x7504, [ 9881] = 0x7591,
+-  [ 9882] = 0x7627, [ 9883] = 0x760D, [ 9884] = 0x760B, [ 9885] = 0x7609,
+-  [ 9886] = 0x7613, [ 9887] = 0x76E1, [ 9888] = 0x76E3, [ 9889] = 0x7784,
+-  [ 9890] = 0x777D, [ 9891] = 0x777F, [ 9892] = 0x7761, [ 9893] = 0x78C1,
+-  [ 9894] = 0x789F, [ 9895] = 0x78A7, [ 9896] = 0x78B3, [ 9897] = 0x78A9,
+-  [ 9898] = 0x78A3, [ 9899] = 0x798E, [ 9900] = 0x798F, [ 9901] = 0x798D,
+-  [ 9902] = 0x7A2E, [ 9903] = 0x7A31, [ 9904] = 0x7AAA, [ 9905] = 0x7AA9,
+-  [ 9906] = 0x7AED, [ 9907] = 0x7AEF, [ 9908] = 0x7BA1, [ 9909] = 0x7B95,
+-  [ 9910] = 0x7B8B, [ 9911] = 0x7B75, [ 9912] = 0x7B97, [ 9913] = 0x7B9D,
+-  [ 9914] = 0x7B94, [ 9915] = 0x7B8F, [ 9916] = 0x7BB8, [ 9917] = 0x7B87,
+-  [ 9918] = 0x7B84, [ 9919] = 0x7CB9, [ 9920] = 0x7CBD, [ 9921] = 0x7CBE,
+-  [ 9922] = 0x7DBB, [ 9923] = 0x7DB0, [ 9924] = 0x7D9C, [ 9925] = 0x7DBD,
+-  [ 9926] = 0x7DBE, [ 9927] = 0x7DA0, [ 9928] = 0x7DCA, [ 9929] = 0x7DB4,
+-  [ 9930] = 0x7DB2, [ 9931] = 0x7DB1, [ 9932] = 0x7DBA, [ 9933] = 0x7DA2,
+-  [ 9934] = 0x7DBF, [ 9935] = 0x7DB5, [ 9936] = 0x7DB8, [ 9937] = 0x7DAD,
+-  [ 9938] = 0x7DD2, [ 9939] = 0x7DC7, [ 9940] = 0x7DAC, [ 9945] = 0x7F70,
+-  [ 9946] = 0x7FE0, [ 9947] = 0x7FE1, [ 9948] = 0x7FDF, [ 9949] = 0x805E,
+-  [ 9950] = 0x805A, [ 9951] = 0x8087, [ 9952] = 0x8150, [ 9953] = 0x8180,
+-  [ 9954] = 0x818F, [ 9955] = 0x8188, [ 9956] = 0x818A, [ 9957] = 0x817F,
+-  [ 9958] = 0x8182, [ 9959] = 0x81E7, [ 9960] = 0x81FA, [ 9961] = 0x8207,
+-  [ 9962] = 0x8214, [ 9963] = 0x821E, [ 9964] = 0x824B, [ 9965] = 0x84C9,
+-  [ 9966] = 0x84BF, [ 9967] = 0x84C6, [ 9968] = 0x84C4, [ 9969] = 0x8499,
+-  [ 9970] = 0x849E, [ 9971] = 0x84B2, [ 9972] = 0x849C, [ 9973] = 0x84CB,
+-  [ 9974] = 0x84B8, [ 9975] = 0x84C0, [ 9976] = 0x84D3, [ 9977] = 0x8490,
+-  [ 9978] = 0x84BC, [ 9979] = 0x84D1, [ 9980] = 0x84CA, [ 9981] = 0x873F,
+-  [ 9982] = 0x871C, [ 9983] = 0x873B, [ 9984] = 0x8722, [ 9985] = 0x8725,
+-  [ 9986] = 0x8734, [ 9987] = 0x8718, [ 9988] = 0x8755, [ 9989] = 0x8737,
+-  [ 9990] = 0x8729, [ 9991] = 0x88F3, [ 9992] = 0x8902, [ 9993] = 0x88F4,
+-  [ 9994] = 0x88F9, [ 9995] = 0x88F8, [ 9996] = 0x88FD, [ 9997] = 0x88E8,
+-  [ 9998] = 0x891A, [ 9999] = 0x88EF, [10000] = 0x8AA6, [10001] = 0x8A8C,
+-  [10002] = 0x8A9E, [10003] = 0x8AA3, [10004] = 0x8A8D, [10005] = 0x8AA1,
+-  [10006] = 0x8A93, [10007] = 0x8AA4, [10042] = 0x8AAA, [10043] = 0x8AA5,
+-  [10044] = 0x8AA8, [10045] = 0x8A98, [10046] = 0x8A91, [10047] = 0x8A9A,
+-  [10048] = 0x8AA7, [10049] = 0x8C6A, [10050] = 0x8C8D, [10051] = 0x8C8C,
+-  [10052] = 0x8CD3, [10053] = 0x8CD1, [10054] = 0x8CD2, [10055] = 0x8D6B,
+-  [10056] = 0x8D99, [10057] = 0x8D95, [10058] = 0x8DFC, [10059] = 0x8F14,
+-  [10060] = 0x8F12, [10061] = 0x8F15, [10062] = 0x8F13, [10063] = 0x8FA3,
+-  [10064] = 0x9060, [10065] = 0x9058, [10066] = 0x905C, [10067] = 0x9063,
+-  [10068] = 0x9059, [10069] = 0x905E, [10070] = 0x9062, [10071] = 0x905D,
+-  [10072] = 0x905B, [10073] = 0x9119, [10074] = 0x9118, [10075] = 0x911E,
+-  [10076] = 0x9175, [10077] = 0x9178, [10078] = 0x9177, [10079] = 0x9174,
+-  [10080] = 0x9278, [10081] = 0x9280, [10082] = 0x9285, [10083] = 0x9298,
+-  [10084] = 0x9296, [10085] = 0x927B, [10086] = 0x9293, [10087] = 0x929C,
+-  [10088] = 0x92A8, [10089] = 0x927C, [10090] = 0x9291, [10091] = 0x95A1,
+-  [10092] = 0x95A8, [10093] = 0x95A9, [10094] = 0x95A3, [10095] = 0x95A5,
+-  [10096] = 0x95A4, [10097] = 0x9699, [10098] = 0x969C, [10099] = 0x969B,
+-  [10100] = 0x96CC, [10101] = 0x96D2, [10102] = 0x9700, [10103] = 0x977C,
+-  [10104] = 0x9785, [10105] = 0x97F6, [10106] = 0x9817, [10107] = 0x9818,
+-  [10108] = 0x98AF, [10109] = 0x98B1, [10110] = 0x9903, [10111] = 0x9905,
+-  [10112] = 0x990C, [10113] = 0x9909, [10114] = 0x99C1, [10115] = 0x9AAF,
+-  [10116] = 0x9AB0, [10117] = 0x9AE6, [10118] = 0x9B41, [10119] = 0x9B42,
+-  [10120] = 0x9CF4, [10121] = 0x9CF6, [10122] = 0x9CF3, [10123] = 0x9EBC,
+-  [10124] = 0x9F3B, [10125] = 0x9F4A, [10126] = 0x5104, [10127] = 0x5100,
+-  [10128] = 0x50FB, [10129] = 0x50F5, [10130] = 0x50F9, [10131] = 0x5102,
+-  [10132] = 0x5108, [10133] = 0x5109, [10134] = 0x5105, [10135] = 0x51DC,
+-  [10140] = 0x5287, [10141] = 0x5288, [10142] = 0x5289, [10143] = 0x528D,
+-  [10144] = 0x528A, [10145] = 0x52F0, [10146] = 0x53B2, [10147] = 0x562E,
+-  [10148] = 0x563B, [10149] = 0x5639, [10150] = 0x5632, [10151] = 0x563F,
+-  [10152] = 0x5634, [10153] = 0x5629, [10154] = 0x5653, [10155] = 0x564E,
+-  [10156] = 0x5657, [10157] = 0x5674, [10158] = 0x5636, [10159] = 0x562F,
+-  [10160] = 0x5630, [10161] = 0x5880, [10162] = 0x589F, [10163] = 0x589E,
+-  [10164] = 0x58B3, [10165] = 0x589C, [10166] = 0x58AE, [10167] = 0x58A9,
+-  [10168] = 0x58A6, [10169] = 0x596D, [10170] = 0x5B09, [10171] = 0x5AFB,
+-  [10172] = 0x5B0B, [10173] = 0x5AF5, [10174] = 0x5B0C, [10175] = 0x5B08,
+-  [10176] = 0x5BEE, [10177] = 0x5BEC, [10178] = 0x5BE9, [10179] = 0x5BEB,
+-  [10180] = 0x5C64, [10181] = 0x5C65, [10182] = 0x5D9D, [10183] = 0x5D94,
+-  [10184] = 0x5E62, [10185] = 0x5E5F, [10186] = 0x5E61, [10187] = 0x5EE2,
+-  [10188] = 0x5EDA, [10189] = 0x5EDF, [10190] = 0x5EDD, [10191] = 0x5EE3,
+-  [10192] = 0x5EE0, [10193] = 0x5F48, [10194] = 0x5F71, [10195] = 0x5FB7,
+-  [10196] = 0x5FB5, [10197] = 0x6176, [10198] = 0x6167, [10199] = 0x616E,
+-  [10200] = 0x615D, [10201] = 0x6155, [10202] = 0x6182, [10237] = 0x617C,
+-  [10238] = 0x6170, [10239] = 0x616B, [10240] = 0x617E, [10241] = 0x61A7,
+-  [10242] = 0x6190, [10243] = 0x61AB, [10244] = 0x618E, [10245] = 0x61AC,
+-  [10246] = 0x619A, [10247] = 0x61A4, [10248] = 0x6194, [10249] = 0x61AE,
+-  [10250] = 0x622E, [10251] = 0x6469, [10252] = 0x646F, [10253] = 0x6479,
+-  [10254] = 0x649E, [10255] = 0x64B2, [10256] = 0x6488, [10257] = 0x6490,
+-  [10258] = 0x64B0, [10259] = 0x64A5, [10260] = 0x6493, [10261] = 0x6495,
+-  [10262] = 0x64A9, [10263] = 0x6492, [10264] = 0x64AE, [10265] = 0x64AD,
+-  [10266] = 0x64AB, [10267] = 0x649A, [10268] = 0x64AC, [10269] = 0x6499,
+-  [10270] = 0x64A2, [10271] = 0x64B3, [10272] = 0x6575, [10273] = 0x6577,
+-  [10274] = 0x6578, [10275] = 0x66AE, [10276] = 0x66AB, [10277] = 0x66B4,
+-  [10278] = 0x66B1, [10279] = 0x6A23, [10280] = 0x6A1F, [10281] = 0x69E8,
+-  [10282] = 0x6A01, [10283] = 0x6A1E, [10284] = 0x6A19, [10285] = 0x69FD,
+-  [10286] = 0x6A21, [10287] = 0x6A13, [10288] = 0x6A0A, [10289] = 0x69F3,
+-  [10290] = 0x6A02, [10291] = 0x6A05, [10292] = 0x69ED, [10293] = 0x6A11,
+-  [10294] = 0x6B50, [10295] = 0x6B4E, [10296] = 0x6BA4, [10297] = 0x6BC5,
+-  [10298] = 0x6BC6, [10299] = 0x6F3F, [10300] = 0x6F7C, [10301] = 0x6F84,
+-  [10302] = 0x6F51, [10303] = 0x6F66, [10304] = 0x6F54, [10305] = 0x6F86,
+-  [10306] = 0x6F6D, [10307] = 0x6F5B, [10308] = 0x6F78, [10309] = 0x6F6E,
+-  [10310] = 0x6F8E, [10311] = 0x6F7A, [10312] = 0x6F70, [10313] = 0x6F64,
+-  [10314] = 0x6F97, [10315] = 0x6F58, [10316] = 0x6ED5, [10317] = 0x6F6F,
+-  [10318] = 0x6F60, [10319] = 0x6F5F, [10320] = 0x719F, [10321] = 0x71AC,
+-  [10322] = 0x71B1, [10323] = 0x71A8, [10324] = 0x7256, [10325] = 0x729B,
+-  [10326] = 0x734E, [10327] = 0x7357, [10328] = 0x7469, [10329] = 0x748B,
+-  [10330] = 0x7483, [10335] = 0x747E, [10336] = 0x7480, [10337] = 0x757F,
+-  [10338] = 0x7620, [10339] = 0x7629, [10340] = 0x761F, [10341] = 0x7624,
+-  [10342] = 0x7626, [10343] = 0x7621, [10344] = 0x7622, [10345] = 0x769A,
+-  [10346] = 0x76BA, [10347] = 0x76E4, [10348] = 0x778E, [10349] = 0x7787,
+-  [10350] = 0x778C, [10351] = 0x7791, [10352] = 0x778B, [10353] = 0x78CB,
+-  [10354] = 0x78C5, [10355] = 0x78BA, [10356] = 0x78CA, [10357] = 0x78BE,
+-  [10358] = 0x78D5, [10359] = 0x78BC, [10360] = 0x78D0, [10361] = 0x7A3F,
+-  [10362] = 0x7A3C, [10363] = 0x7A40, [10364] = 0x7A3D, [10365] = 0x7A37,
+-  [10366] = 0x7A3B, [10367] = 0x7AAF, [10368] = 0x7AAE, [10369] = 0x7BAD,
+-  [10370] = 0x7BB1, [10371] = 0x7BC4, [10372] = 0x7BB4, [10373] = 0x7BC6,
+-  [10374] = 0x7BC7, [10375] = 0x7BC1, [10376] = 0x7BA0, [10377] = 0x7BCC,
+-  [10378] = 0x7CCA, [10379] = 0x7DE0, [10380] = 0x7DF4, [10381] = 0x7DEF,
+-  [10382] = 0x7DFB, [10383] = 0x7DD8, [10384] = 0x7DEC, [10385] = 0x7DDD,
+-  [10386] = 0x7DE8, [10387] = 0x7DE3, [10388] = 0x7DDA, [10389] = 0x7DDE,
+-  [10390] = 0x7DE9, [10391] = 0x7D9E, [10392] = 0x7DD9, [10393] = 0x7DF2,
+-  [10394] = 0x7DF9, [10395] = 0x7F75, [10396] = 0x7F77, [10397] = 0x7FAF,
+-  [10432] = 0x7FE9, [10433] = 0x8026, [10434] = 0x819B, [10435] = 0x819C,
+-  [10436] = 0x819D, [10437] = 0x81A0, [10438] = 0x819A, [10439] = 0x8198,
+-  [10440] = 0x8517, [10441] = 0x853D, [10442] = 0x851A, [10443] = 0x84EE,
+-  [10444] = 0x852C, [10445] = 0x852D, [10446] = 0x8513, [10447] = 0x8511,
+-  [10448] = 0x8523, [10449] = 0x8521, [10450] = 0x8514, [10451] = 0x84EC,
+-  [10452] = 0x8525, [10453] = 0x84FF, [10454] = 0x8506, [10455] = 0x8782,
+-  [10456] = 0x8774, [10457] = 0x8776, [10458] = 0x8760, [10459] = 0x8766,
+-  [10460] = 0x8778, [10461] = 0x8768, [10462] = 0x8759, [10463] = 0x8757,
+-  [10464] = 0x874C, [10465] = 0x8753, [10466] = 0x885B, [10467] = 0x885D,
+-  [10468] = 0x8910, [10469] = 0x8907, [10470] = 0x8912, [10471] = 0x8913,
+-  [10472] = 0x8915, [10473] = 0x890A, [10474] = 0x8ABC, [10475] = 0x8AD2,
+-  [10476] = 0x8AC7, [10477] = 0x8AC4, [10478] = 0x8A95, [10479] = 0x8ACB,
+-  [10480] = 0x8AF8, [10481] = 0x8AB2, [10482] = 0x8AC9, [10483] = 0x8AC2,
+-  [10484] = 0x8ABF, [10485] = 0x8AB0, [10486] = 0x8AD6, [10487] = 0x8ACD,
+-  [10488] = 0x8AB6, [10489] = 0x8AB9, [10490] = 0x8ADB, [10491] = 0x8C4C,
+-  [10492] = 0x8C4E, [10493] = 0x8C6C, [10494] = 0x8CE0, [10495] = 0x8CDE,
+-  [10496] = 0x8CE6, [10497] = 0x8CE4, [10498] = 0x8CEC, [10499] = 0x8CED,
+-  [10500] = 0x8CE2, [10501] = 0x8CE3, [10502] = 0x8CDC, [10503] = 0x8CEA,
+-  [10504] = 0x8CE1, [10505] = 0x8D6D, [10506] = 0x8D9F, [10507] = 0x8DA3,
+-  [10508] = 0x8E2B, [10509] = 0x8E10, [10510] = 0x8E1D, [10511] = 0x8E22,
+-  [10512] = 0x8E0F, [10513] = 0x8E29, [10514] = 0x8E1F, [10515] = 0x8E21,
+-  [10516] = 0x8E1E, [10517] = 0x8EBA, [10518] = 0x8F1D, [10519] = 0x8F1B,
+-  [10520] = 0x8F1F, [10521] = 0x8F29, [10522] = 0x8F26, [10523] = 0x8F2A,
+-  [10524] = 0x8F1C, [10525] = 0x8F1E, [10530] = 0x8F25, [10531] = 0x9069,
+-  [10532] = 0x906E, [10533] = 0x9068, [10534] = 0x906D, [10535] = 0x9077,
+-  [10536] = 0x9130, [10537] = 0x912D, [10538] = 0x9127, [10539] = 0x9131,
+-  [10540] = 0x9187, [10541] = 0x9189, [10542] = 0x918B, [10543] = 0x9183,
+-  [10544] = 0x92C5, [10545] = 0x92BB, [10546] = 0x92B7, [10547] = 0x92EA,
+-  [10548] = 0x92AC, [10549] = 0x92E4, [10550] = 0x92C1, [10551] = 0x92B3,
+-  [10552] = 0x92BC, [10553] = 0x92D2, [10554] = 0x92C7, [10555] = 0x92F0,
+-  [10556] = 0x92B2, [10557] = 0x95AD, [10558] = 0x95B1, [10559] = 0x9704,
+-  [10560] = 0x9706, [10561] = 0x9707, [10562] = 0x9709, [10563] = 0x9760,
+-  [10564] = 0x978D, [10565] = 0x978B, [10566] = 0x978F, [10567] = 0x9821,
+-  [10568] = 0x982B, [10569] = 0x981C, [10570] = 0x98B3, [10571] = 0x990A,
+-  [10572] = 0x9913, [10573] = 0x9912, [10574] = 0x9918, [10575] = 0x99DD,
+-  [10576] = 0x99D0, [10577] = 0x99DF, [10578] = 0x99DB, [10579] = 0x99D1,
+-  [10580] = 0x99D5, [10581] = 0x99D2, [10582] = 0x99D9, [10583] = 0x9AB7,
+-  [10584] = 0x9AEE, [10585] = 0x9AEF, [10586] = 0x9B27, [10587] = 0x9B45,
+-  [10588] = 0x9B44, [10589] = 0x9B77, [10590] = 0x9B6F, [10591] = 0x9D06,
+-  [10592] = 0x9D09, [10627] = 0x9D03, [10628] = 0x9EA9, [10629] = 0x9EBE,
+-  [10630] = 0x9ECE, [10631] = 0x58A8, [10632] = 0x9F52, [10633] = 0x5112,
+-  [10634] = 0x5118, [10635] = 0x5114, [10636] = 0x5110, [10637] = 0x5115,
+-  [10638] = 0x5180, [10639] = 0x51AA, [10640] = 0x51DD, [10641] = 0x5291,
+-  [10642] = 0x5293, [10643] = 0x52F3, [10644] = 0x5659, [10645] = 0x566B,
+-  [10646] = 0x5679, [10647] = 0x5669, [10648] = 0x5664, [10649] = 0x5678,
+-  [10650] = 0x566A, [10651] = 0x5668, [10652] = 0x5665, [10653] = 0x5671,
+-  [10654] = 0x566F, [10655] = 0x566C, [10656] = 0x5662, [10657] = 0x5676,
+-  [10658] = 0x58C1, [10659] = 0x58BE, [10660] = 0x58C7, [10661] = 0x58C5,
+-  [10662] = 0x596E, [10663] = 0x5B1D, [10664] = 0x5B34, [10665] = 0x5B78,
+-  [10666] = 0x5BF0, [10667] = 0x5C0E, [10668] = 0x5F4A, [10669] = 0x61B2,
+-  [10670] = 0x6191, [10671] = 0x61A9, [10672] = 0x618A, [10673] = 0x61CD,
+-  [10674] = 0x61B6, [10675] = 0x61BE, [10676] = 0x61CA, [10677] = 0x61C8,
+-  [10678] = 0x6230, [10679] = 0x64C5, [10680] = 0x64C1, [10681] = 0x64CB,
+-  [10682] = 0x64BB, [10683] = 0x64BC, [10684] = 0x64DA, [10685] = 0x64C4,
+-  [10686] = 0x64C7, [10687] = 0x64C2, [10688] = 0x64CD, [10689] = 0x64BF,
+-  [10690] = 0x64D2, [10691] = 0x64D4, [10692] = 0x64BE, [10693] = 0x6574,
+-  [10694] = 0x66C6, [10695] = 0x66C9, [10696] = 0x66B9, [10697] = 0x66C4,
+-  [10698] = 0x66C7, [10699] = 0x66B8, [10700] = 0x6A3D, [10701] = 0x6A38,
+-  [10702] = 0x6A3A, [10703] = 0x6A59, [10704] = 0x6A6B, [10705] = 0x6A58,
+-  [10706] = 0x6A39, [10707] = 0x6A44, [10708] = 0x6A62, [10709] = 0x6A61,
+-  [10710] = 0x6A4B, [10711] = 0x6A47, [10712] = 0x6A35, [10713] = 0x6A5F,
+-  [10714] = 0x6A48, [10715] = 0x6B59, [10716] = 0x6B77, [10717] = 0x6C05,
+-  [10718] = 0x6FC2, [10719] = 0x6FB1, [10720] = 0x6FA1, [10725] = 0x6FC3,
+-  [10726] = 0x6FA4, [10727] = 0x6FC1, [10728] = 0x6FA7, [10729] = 0x6FB3,
+-  [10730] = 0x6FC0, [10731] = 0x6FB9, [10732] = 0x6FB6, [10733] = 0x6FA6,
+-  [10734] = 0x6FA0, [10735] = 0x6FB4, [10736] = 0x71BE, [10737] = 0x71C9,
+-  [10738] = 0x71D0, [10739] = 0x71D2, [10740] = 0x71C8, [10741] = 0x71D5,
+-  [10742] = 0x71B9, [10743] = 0x71CE, [10744] = 0x71D9, [10745] = 0x71DC,
+-  [10746] = 0x71C3, [10747] = 0x71C4, [10748] = 0x7368, [10749] = 0x749C,
+-  [10750] = 0x74A3, [10751] = 0x7498, [10752] = 0x749F, [10753] = 0x749E,
+-  [10754] = 0x74E2, [10755] = 0x750C, [10756] = 0x750D, [10757] = 0x7634,
+-  [10758] = 0x7638, [10759] = 0x763A, [10760] = 0x76E7, [10761] = 0x76E5,
+-  [10762] = 0x77A0, [10763] = 0x779E, [10764] = 0x779F, [10765] = 0x77A5,
+-  [10766] = 0x78E8, [10767] = 0x78DA, [10768] = 0x78EC, [10769] = 0x78E7,
+-  [10770] = 0x79A6, [10771] = 0x7A4D, [10772] = 0x7A4E, [10773] = 0x7A46,
+-  [10774] = 0x7A4C, [10775] = 0x7A4B, [10776] = 0x7ABA, [10777] = 0x7BD9,
+-  [10778] = 0x7C11, [10779] = 0x7BC9, [10780] = 0x7BE4, [10781] = 0x7BDB,
+-  [10782] = 0x7BE1, [10783] = 0x7BE9, [10784] = 0x7BE6, [10785] = 0x7CD5,
+-  [10786] = 0x7CD6, [10787] = 0x7E0A, [10822] = 0x7E11, [10823] = 0x7E08,
+-  [10824] = 0x7E1B, [10825] = 0x7E23, [10826] = 0x7E1E, [10827] = 0x7E1D,
+-  [10828] = 0x7E09, [10829] = 0x7E10, [10830] = 0x7F79, [10831] = 0x7FB2,
+-  [10832] = 0x7FF0, [10833] = 0x7FF1, [10834] = 0x7FEE, [10835] = 0x8028,
+-  [10836] = 0x81B3, [10837] = 0x81A9, [10838] = 0x81A8, [10839] = 0x81FB,
+-  [10840] = 0x8208, [10841] = 0x8258, [10842] = 0x8259, [10843] = 0x854A,
+-  [10844] = 0x8559, [10845] = 0x8548, [10846] = 0x8568, [10847] = 0x8569,
+-  [10848] = 0x8543, [10849] = 0x8549, [10850] = 0x856D, [10851] = 0x856A,
+-  [10852] = 0x855E, [10853] = 0x8783, [10854] = 0x879F, [10855] = 0x879E,
+-  [10856] = 0x87A2, [10857] = 0x878D, [10858] = 0x8861, [10859] = 0x892A,
+-  [10860] = 0x8932, [10861] = 0x8925, [10862] = 0x892B, [10863] = 0x8921,
+-  [10864] = 0x89AA, [10865] = 0x89A6, [10866] = 0x8AE6, [10867] = 0x8AFA,
+-  [10868] = 0x8AEB, [10869] = 0x8AF1, [10870] = 0x8B00, [10871] = 0x8ADC,
+-  [10872] = 0x8AE7, [10873] = 0x8AEE, [10874] = 0x8AFE, [10875] = 0x8B01,
+-  [10876] = 0x8B02, [10877] = 0x8AF7, [10878] = 0x8AED, [10879] = 0x8AF3,
+-  [10880] = 0x8AF6, [10881] = 0x8AFC, [10882] = 0x8C6B, [10883] = 0x8C6D,
+-  [10884] = 0x8C93, [10885] = 0x8CF4, [10886] = 0x8E44, [10887] = 0x8E31,
+-  [10888] = 0x8E34, [10889] = 0x8E42, [10890] = 0x8E39, [10891] = 0x8E35,
+-  [10892] = 0x8F3B, [10893] = 0x8F2F, [10894] = 0x8F38, [10895] = 0x8F33,
+-  [10896] = 0x8FA8, [10897] = 0x8FA6, [10898] = 0x9075, [10899] = 0x9074,
+-  [10900] = 0x9078, [10901] = 0x9072, [10902] = 0x907C, [10903] = 0x907A,
+-  [10904] = 0x9134, [10905] = 0x9192, [10906] = 0x9320, [10907] = 0x9336,
+-  [10908] = 0x92F8, [10909] = 0x9333, [10910] = 0x932F, [10911] = 0x9322,
+-  [10912] = 0x92FC, [10913] = 0x932B, [10914] = 0x9304, [10915] = 0x931A,
+-  [10920] = 0x9310, [10921] = 0x9326, [10922] = 0x9321, [10923] = 0x9315,
+-  [10924] = 0x932E, [10925] = 0x9319, [10926] = 0x95BB, [10927] = 0x96A7,
+-  [10928] = 0x96A8, [10929] = 0x96AA, [10930] = 0x96D5, [10931] = 0x970E,
+-  [10932] = 0x9711, [10933] = 0x9716, [10934] = 0x970D, [10935] = 0x9713,
+-  [10936] = 0x970F, [10937] = 0x975B, [10938] = 0x975C, [10939] = 0x9766,
+-  [10940] = 0x9798, [10941] = 0x9830, [10942] = 0x9838, [10943] = 0x983B,
+-  [10944] = 0x9837, [10945] = 0x982D, [10946] = 0x9839, [10947] = 0x9824,
+-  [10948] = 0x9910, [10949] = 0x9928, [10950] = 0x991E, [10951] = 0x991B,
+-  [10952] = 0x9921, [10953] = 0x991A, [10954] = 0x99ED, [10955] = 0x99E2,
+-  [10956] = 0x99F1, [10957] = 0x9AB8, [10958] = 0x9ABC, [10959] = 0x9AFB,
+-  [10960] = 0x9AED, [10961] = 0x9B28, [10962] = 0x9B91, [10963] = 0x9D15,
+-  [10964] = 0x9D23, [10965] = 0x9D26, [10966] = 0x9D28, [10967] = 0x9D12,
+-  [10968] = 0x9D1B, [10969] = 0x9ED8, [10970] = 0x9ED4, [10971] = 0x9F8D,
+-  [10972] = 0x9F9C, [10973] = 0x512A, [10974] = 0x511F, [10975] = 0x5121,
+-  [10976] = 0x5132, [10977] = 0x52F5, [10978] = 0x568E, [10979] = 0x5680,
+-  [10980] = 0x5690, [10981] = 0x5685, [10982] = 0x5687, [11017] = 0x568F,
+-  [11018] = 0x58D5, [11019] = 0x58D3, [11020] = 0x58D1, [11021] = 0x58CE,
+-  [11022] = 0x5B30, [11023] = 0x5B2A, [11024] = 0x5B24, [11025] = 0x5B7A,
+-  [11026] = 0x5C37, [11027] = 0x5C68, [11028] = 0x5DBC, [11029] = 0x5DBA,
+-  [11030] = 0x5DBD, [11031] = 0x5DB8, [11032] = 0x5E6B, [11033] = 0x5F4C,
+-  [11034] = 0x5FBD, [11035] = 0x61C9, [11036] = 0x61C2, [11037] = 0x61C7,
+-  [11038] = 0x61E6, [11039] = 0x61CB, [11040] = 0x6232, [11041] = 0x6234,
+-  [11042] = 0x64CE, [11043] = 0x64CA, [11044] = 0x64D8, [11045] = 0x64E0,
+-  [11046] = 0x64F0, [11047] = 0x64E6, [11048] = 0x64EC, [11049] = 0x64F1,
+-  [11050] = 0x64E2, [11051] = 0x64ED, [11052] = 0x6582, [11053] = 0x6583,
+-  [11054] = 0x66D9, [11055] = 0x66D6, [11056] = 0x6A80, [11057] = 0x6A94,
+-  [11058] = 0x6A84, [11059] = 0x6AA2, [11060] = 0x6A9C, [11061] = 0x6ADB,
+-  [11062] = 0x6AA3, [11063] = 0x6A7E, [11064] = 0x6A97, [11065] = 0x6A90,
+-  [11066] = 0x6AA0, [11067] = 0x6B5C, [11068] = 0x6BAE, [11069] = 0x6BDA,
+-  [11070] = 0x6C08, [11071] = 0x6FD8, [11072] = 0x6FF1, [11073] = 0x6FDF,
+-  [11074] = 0x6FE0, [11075] = 0x6FDB, [11076] = 0x6FE4, [11077] = 0x6FEB,
+-  [11078] = 0x6FEF, [11079] = 0x6F80, [11080] = 0x6FEC, [11081] = 0x6FE1,
+-  [11082] = 0x6FE9, [11083] = 0x6FD5, [11084] = 0x6FEE, [11085] = 0x6FF0,
+-  [11086] = 0x71E7, [11087] = 0x71DF, [11088] = 0x71EE, [11089] = 0x71E6,
+-  [11090] = 0x71E5, [11091] = 0x71ED, [11092] = 0x71EC, [11093] = 0x71F4,
+-  [11094] = 0x71E0, [11095] = 0x7235, [11096] = 0x7246, [11097] = 0x7370,
+-  [11098] = 0x7372, [11099] = 0x74A9, [11100] = 0x74B0, [11101] = 0x74A6,
+-  [11102] = 0x74A8, [11103] = 0x7646, [11104] = 0x7642, [11105] = 0x764C,
+-  [11106] = 0x76EA, [11107] = 0x77B3, [11108] = 0x77AA, [11109] = 0x77B0,
+-  [11110] = 0x77AC, [11115] = 0x77A7, [11116] = 0x77AD, [11117] = 0x77EF,
+-  [11118] = 0x78F7, [11119] = 0x78FA, [11120] = 0x78F4, [11121] = 0x78EF,
+-  [11122] = 0x7901, [11123] = 0x79A7, [11124] = 0x79AA, [11125] = 0x7A57,
+-  [11126] = 0x7ABF, [11127] = 0x7C07, [11128] = 0x7C0D, [11129] = 0x7BFE,
+-  [11130] = 0x7BF7, [11131] = 0x7C0C, [11132] = 0x7BE0, [11133] = 0x7CE0,
+-  [11134] = 0x7CDC, [11135] = 0x7CDE, [11136] = 0x7CE2, [11137] = 0x7CDF,
+-  [11138] = 0x7CD9, [11139] = 0x7CDD, [11140] = 0x7E2E, [11141] = 0x7E3E,
+-  [11142] = 0x7E46, [11143] = 0x7E37, [11144] = 0x7E32, [11145] = 0x7E43,
+-  [11146] = 0x7E2B, [11147] = 0x7E3D, [11148] = 0x7E31, [11149] = 0x7E45,
+-  [11150] = 0x7E41, [11151] = 0x7E34, [11152] = 0x7E39, [11153] = 0x7E48,
+-  [11154] = 0x7E35, [11155] = 0x7E3F, [11156] = 0x7E2F, [11157] = 0x7F44,
+-  [11158] = 0x7FF3, [11159] = 0x7FFC, [11160] = 0x8071, [11161] = 0x8072,
+-  [11162] = 0x8070, [11163] = 0x806F, [11164] = 0x8073, [11165] = 0x81C6,
+-  [11166] = 0x81C3, [11167] = 0x81BA, [11168] = 0x81C2, [11169] = 0x81C0,
+-  [11170] = 0x81BF, [11171] = 0x81BD, [11172] = 0x81C9, [11173] = 0x81BE,
+-  [11174] = 0x81E8, [11175] = 0x8209, [11176] = 0x8271, [11177] = 0x85AA,
+-  [11212] = 0x8584, [11213] = 0x857E, [11214] = 0x859C, [11215] = 0x8591,
+-  [11216] = 0x8594, [11217] = 0x85AF, [11218] = 0x859B, [11219] = 0x8587,
+-  [11220] = 0x85A8, [11221] = 0x858A, [11222] = 0x8667, [11223] = 0x87C0,
+-  [11224] = 0x87D1, [11225] = 0x87B3, [11226] = 0x87D2, [11227] = 0x87C6,
+-  [11228] = 0x87AB, [11229] = 0x87BB, [11230] = 0x87BA, [11231] = 0x87C8,
+-  [11232] = 0x87CB, [11233] = 0x893B, [11234] = 0x8936, [11235] = 0x8944,
+-  [11236] = 0x8938, [11237] = 0x893D, [11238] = 0x89AC, [11239] = 0x8B0E,
+-  [11240] = 0x8B17, [11241] = 0x8B19, [11242] = 0x8B1B, [11243] = 0x8B0A,
+-  [11244] = 0x8B20, [11245] = 0x8B1D, [11246] = 0x8B04, [11247] = 0x8B10,
+-  [11248] = 0x8C41, [11249] = 0x8C3F, [11250] = 0x8C73, [11251] = 0x8CFA,
+-  [11252] = 0x8CFD, [11253] = 0x8CFC, [11254] = 0x8CF8, [11255] = 0x8CFB,
+-  [11256] = 0x8DA8, [11257] = 0x8E49, [11258] = 0x8E4B, [11259] = 0x8E48,
+-  [11260] = 0x8E4A, [11261] = 0x8F44, [11262] = 0x8F3E, [11263] = 0x8F42,
+-  [11264] = 0x8F45, [11265] = 0x8F3F, [11266] = 0x907F, [11267] = 0x907D,
+-  [11268] = 0x9084, [11269] = 0x9081, [11270] = 0x9082, [11271] = 0x9080,
+-  [11272] = 0x9139, [11273] = 0x91A3, [11274] = 0x919E, [11275] = 0x919C,
+-  [11276] = 0x934D, [11277] = 0x9382, [11278] = 0x9328, [11279] = 0x9375,
+-  [11280] = 0x934A, [11281] = 0x9365, [11282] = 0x934B, [11283] = 0x9318,
+-  [11284] = 0x937E, [11285] = 0x936C, [11286] = 0x935B, [11287] = 0x9370,
+-  [11288] = 0x935A, [11289] = 0x9354, [11290] = 0x95CA, [11291] = 0x95CB,
+-  [11292] = 0x95CC, [11293] = 0x95C8, [11294] = 0x95C6, [11295] = 0x96B1,
+-  [11296] = 0x96B8, [11297] = 0x96D6, [11298] = 0x971C, [11299] = 0x971E,
+-  [11300] = 0x97A0, [11301] = 0x97D3, [11302] = 0x9846, [11303] = 0x98B6,
+-  [11304] = 0x9935, [11305] = 0x9A01, [11310] = 0x99FF, [11311] = 0x9BAE,
+-  [11312] = 0x9BAB, [11313] = 0x9BAA, [11314] = 0x9BAD, [11315] = 0x9D3B,
+-  [11316] = 0x9D3F, [11317] = 0x9E8B, [11318] = 0x9ECF, [11319] = 0x9EDE,
+-  [11320] = 0x9EDC, [11321] = 0x9EDD, [11322] = 0x9EDB, [11323] = 0x9F3E,
+-  [11324] = 0x9F4B, [11325] = 0x53E2, [11326] = 0x5695, [11327] = 0x56AE,
+-  [11328] = 0x58D9, [11329] = 0x58D8, [11330] = 0x5B38, [11331] = 0x5F5D,
+-  [11332] = 0x61E3, [11333] = 0x6233, [11334] = 0x64F4, [11335] = 0x64F2,
+-  [11336] = 0x64FE, [11337] = 0x6506, [11338] = 0x64FA, [11339] = 0x64FB,
+-  [11340] = 0x64F7, [11341] = 0x65B7, [11342] = 0x66DC, [11343] = 0x6726,
+-  [11344] = 0x6AB3, [11345] = 0x6AAC, [11346] = 0x6AC3, [11347] = 0x6ABB,
+-  [11348] = 0x6AB8, [11349] = 0x6AC2, [11350] = 0x6AAE, [11351] = 0x6AAF,
+-  [11352] = 0x6B5F, [11353] = 0x6B78, [11354] = 0x6BAF, [11355] = 0x7009,
+-  [11356] = 0x700B, [11357] = 0x6FFE, [11358] = 0x7006, [11359] = 0x6FFA,
+-  [11360] = 0x7011, [11361] = 0x700F, [11362] = 0x71FB, [11363] = 0x71FC,
+-  [11364] = 0x71FE, [11365] = 0x71F8, [11366] = 0x7377, [11367] = 0x7375,
+-  [11368] = 0x74A7, [11369] = 0x74BF, [11370] = 0x7515, [11371] = 0x7656,
+-  [11372] = 0x7658, [11407] = 0x7652, [11408] = 0x77BD, [11409] = 0x77BF,
+-  [11410] = 0x77BB, [11411] = 0x77BC, [11412] = 0x790E, [11413] = 0x79AE,
+-  [11414] = 0x7A61, [11415] = 0x7A62, [11416] = 0x7A60, [11417] = 0x7AC4,
+-  [11418] = 0x7AC5, [11419] = 0x7C2B, [11420] = 0x7C27, [11421] = 0x7C2A,
+-  [11422] = 0x7C1E, [11423] = 0x7C23, [11424] = 0x7C21, [11425] = 0x7CE7,
+-  [11426] = 0x7E54, [11427] = 0x7E55, [11428] = 0x7E5E, [11429] = 0x7E5A,
+-  [11430] = 0x7E61, [11431] = 0x7E52, [11432] = 0x7E59, [11433] = 0x7F48,
+-  [11434] = 0x7FF9, [11435] = 0x7FFB, [11436] = 0x8077, [11437] = 0x8076,
+-  [11438] = 0x81CD, [11439] = 0x81CF, [11440] = 0x820A, [11441] = 0x85CF,
+-  [11442] = 0x85A9, [11443] = 0x85CD, [11444] = 0x85D0, [11445] = 0x85C9,
+-  [11446] = 0x85B0, [11447] = 0x85BA, [11448] = 0x85B9, [11449] = 0x85A6,
+-  [11450] = 0x87EF, [11451] = 0x87EC, [11452] = 0x87F2, [11453] = 0x87E0,
+-  [11454] = 0x8986, [11455] = 0x89B2, [11456] = 0x89F4, [11457] = 0x8B28,
+-  [11458] = 0x8B39, [11459] = 0x8B2C, [11460] = 0x8B2B, [11461] = 0x8C50,
+-  [11462] = 0x8D05, [11463] = 0x8E59, [11464] = 0x8E63, [11465] = 0x8E66,
+-  [11466] = 0x8E64, [11467] = 0x8E5F, [11468] = 0x8E55, [11469] = 0x8EC0,
+-  [11470] = 0x8F49, [11471] = 0x8F4D, [11472] = 0x9087, [11473] = 0x9083,
+-  [11474] = 0x9088, [11475] = 0x91AB, [11476] = 0x91AC, [11477] = 0x91D0,
+-  [11478] = 0x9394, [11479] = 0x938A, [11480] = 0x9396, [11481] = 0x93A2,
+-  [11482] = 0x93B3, [11483] = 0x93AE, [11484] = 0x93AC, [11485] = 0x93B0,
+-  [11486] = 0x9398, [11487] = 0x939A, [11488] = 0x9397, [11489] = 0x95D4,
+-  [11490] = 0x95D6, [11491] = 0x95D0, [11492] = 0x95D5, [11493] = 0x96E2,
+-  [11494] = 0x96DC, [11495] = 0x96D9, [11496] = 0x96DB, [11497] = 0x96DE,
+-  [11498] = 0x9724, [11499] = 0x97A3, [11500] = 0x97A6, [11505] = 0x97AD,
+-  [11506] = 0x97F9, [11507] = 0x984D, [11508] = 0x984F, [11509] = 0x984C,
+-  [11510] = 0x984E, [11511] = 0x9853, [11512] = 0x98BA, [11513] = 0x993E,
+-  [11514] = 0x993F, [11515] = 0x993D, [11516] = 0x992E, [11517] = 0x99A5,
+-  [11518] = 0x9A0E, [11519] = 0x9AC1, [11520] = 0x9B03, [11521] = 0x9B06,
+-  [11522] = 0x9B4F, [11523] = 0x9B4E, [11524] = 0x9B4D, [11525] = 0x9BCA,
+-  [11526] = 0x9BC9, [11527] = 0x9BFD, [11528] = 0x9BC8, [11529] = 0x9BC0,
+-  [11530] = 0x9D51, [11531] = 0x9D5D, [11532] = 0x9D60, [11533] = 0x9EE0,
+-  [11534] = 0x9F15, [11535] = 0x9F2C, [11536] = 0x5133, [11537] = 0x56A5,
+-  [11538] = 0x58DE, [11539] = 0x58DF, [11540] = 0x58E2, [11541] = 0x5BF5,
+-  [11542] = 0x9F90, [11543] = 0x5EEC, [11544] = 0x61F2, [11545] = 0x61F7,
+-  [11546] = 0x61F6, [11547] = 0x61F5, [11548] = 0x6500, [11549] = 0x650F,
+-  [11550] = 0x66E0, [11551] = 0x66DD, [11552] = 0x6AE5, [11553] = 0x6ADD,
+-  [11554] = 0x6ADA, [11555] = 0x6AD3, [11556] = 0x701B, [11557] = 0x701F,
+-  [11558] = 0x7028, [11559] = 0x701A, [11560] = 0x701D, [11561] = 0x7015,
+-  [11562] = 0x7018, [11563] = 0x7206, [11564] = 0x720D, [11565] = 0x7258,
+-  [11566] = 0x72A2, [11567] = 0x7378, [11602] = 0x737A, [11603] = 0x74BD,
+-  [11604] = 0x74CA, [11605] = 0x74E3, [11606] = 0x7587, [11607] = 0x7586,
+-  [11608] = 0x765F, [11609] = 0x7661, [11610] = 0x77C7, [11611] = 0x7919,
+-  [11612] = 0x79B1, [11613] = 0x7A6B, [11614] = 0x7A69, [11615] = 0x7C3E,
+-  [11616] = 0x7C3F, [11617] = 0x7C38, [11618] = 0x7C3D, [11619] = 0x7C37,
+-  [11620] = 0x7C40, [11621] = 0x7E6B, [11622] = 0x7E6D, [11623] = 0x7E79,
+-  [11624] = 0x7E69, [11625] = 0x7E6A, [11626] = 0x7F85, [11627] = 0x7E73,
+-  [11628] = 0x7FB6, [11629] = 0x7FB9, [11630] = 0x7FB8, [11631] = 0x81D8,
+-  [11632] = 0x85E9, [11633] = 0x85DD, [11634] = 0x85EA, [11635] = 0x85D5,
+-  [11636] = 0x85E4, [11637] = 0x85E5, [11638] = 0x85F7, [11639] = 0x87FB,
+-  [11640] = 0x8805, [11641] = 0x880D, [11642] = 0x87F9, [11643] = 0x87FE,
+-  [11644] = 0x8960, [11645] = 0x895F, [11646] = 0x8956, [11647] = 0x895E,
+-  [11648] = 0x8B41, [11649] = 0x8B5C, [11650] = 0x8B58, [11651] = 0x8B49,
+-  [11652] = 0x8B5A, [11653] = 0x8B4E, [11654] = 0x8B4F, [11655] = 0x8B46,
+-  [11656] = 0x8B59, [11657] = 0x8D08, [11658] = 0x8D0A, [11659] = 0x8E7C,
+-  [11660] = 0x8E72, [11661] = 0x8E87, [11662] = 0x8E76, [11663] = 0x8E6C,
+-  [11664] = 0x8E7A, [11665] = 0x8E74, [11666] = 0x8F54, [11667] = 0x8F4E,
+-  [11668] = 0x8FAD, [11669] = 0x908A, [11670] = 0x908B, [11671] = 0x91B1,
+-  [11672] = 0x91AE, [11673] = 0x93E1, [11674] = 0x93D1, [11675] = 0x93DF,
+-  [11676] = 0x93C3, [11677] = 0x93C8, [11678] = 0x93DC, [11679] = 0x93DD,
+-  [11680] = 0x93D6, [11681] = 0x93E2, [11682] = 0x93CD, [11683] = 0x93D8,
+-  [11684] = 0x93E4, [11685] = 0x93D7, [11686] = 0x93E8, [11687] = 0x95DC,
+-  [11688] = 0x96B4, [11689] = 0x96E3, [11690] = 0x972A, [11691] = 0x9727,
+-  [11692] = 0x9761, [11693] = 0x97DC, [11694] = 0x97FB, [11695] = 0x985E,
+-  [11700] = 0x9858, [11701] = 0x985B, [11702] = 0x98BC, [11703] = 0x9945,
+-  [11704] = 0x9949, [11705] = 0x9A16, [11706] = 0x9A19, [11707] = 0x9B0D,
+-  [11708] = 0x9BE8, [11709] = 0x9BE7, [11710] = 0x9BD6, [11711] = 0x9BDB,
+-  [11712] = 0x9D89, [11713] = 0x9D61, [11714] = 0x9D72, [11715] = 0x9D6A,
+-  [11716] = 0x9D6C, [11717] = 0x9E92, [11718] = 0x9E97, [11719] = 0x9E93,
+-  [11720] = 0x9EB4, [11721] = 0x52F8, [11722] = 0x56A8, [11723] = 0x56B7,
+-  [11724] = 0x56B6, [11725] = 0x56B4, [11726] = 0x56BC, [11727] = 0x58E4,
+-  [11728] = 0x5B40, [11729] = 0x5B43, [11730] = 0x5B7D, [11731] = 0x5BF6,
+-  [11732] = 0x5DC9, [11733] = 0x61F8, [11734] = 0x61FA, [11735] = 0x6518,
+-  [11736] = 0x6514, [11737] = 0x6519, [11738] = 0x66E6, [11739] = 0x6727,
+-  [11740] = 0x6AEC, [11741] = 0x703E, [11742] = 0x7030, [11743] = 0x7032,
+-  [11744] = 0x7210, [11745] = 0x737B, [11746] = 0x74CF, [11747] = 0x7662,
+-  [11748] = 0x7665, [11749] = 0x7926, [11750] = 0x792A, [11751] = 0x792C,
+-  [11752] = 0x792B, [11753] = 0x7AC7, [11754] = 0x7AF6, [11755] = 0x7C4C,
+-  [11756] = 0x7C43, [11757] = 0x7C4D, [11758] = 0x7CEF, [11759] = 0x7CF0,
+-  [11760] = 0x8FAE, [11761] = 0x7E7D, [11762] = 0x7E7C, [11797] = 0x7E82,
+-  [11798] = 0x7F4C, [11799] = 0x8000, [11800] = 0x81DA, [11801] = 0x8266,
+-  [11802] = 0x85FB, [11803] = 0x85F9, [11804] = 0x8611, [11805] = 0x85FA,
+-  [11806] = 0x8606, [11807] = 0x860B, [11808] = 0x8607, [11809] = 0x860A,
+-  [11810] = 0x8814, [11811] = 0x8815, [11812] = 0x8964, [11813] = 0x89BA,
+-  [11814] = 0x89F8, [11815] = 0x8B70, [11816] = 0x8B6C, [11817] = 0x8B66,
+-  [11818] = 0x8B6F, [11819] = 0x8B5F, [11820] = 0x8B6B, [11821] = 0x8D0F,
+-  [11822] = 0x8D0D, [11823] = 0x8E89, [11824] = 0x8E81, [11825] = 0x8E85,
+-  [11826] = 0x8E82, [11827] = 0x91B4, [11828] = 0x91CB, [11829] = 0x9418,
+-  [11830] = 0x9403, [11831] = 0x93FD, [11832] = 0x95E1, [11833] = 0x9730,
+-  [11834] = 0x98C4, [11835] = 0x9952, [11836] = 0x9951, [11837] = 0x99A8,
+-  [11838] = 0x9A2B, [11839] = 0x9A30, [11840] = 0x9A37, [11841] = 0x9A35,
+-  [11842] = 0x9C13, [11843] = 0x9C0D, [11844] = 0x9E79, [11845] = 0x9EB5,
+-  [11846] = 0x9EE8, [11847] = 0x9F2F, [11848] = 0x9F5F, [11849] = 0x9F63,
+-  [11850] = 0x9F61, [11851] = 0x5137, [11852] = 0x5138, [11853] = 0x56C1,
+-  [11854] = 0x56C0, [11855] = 0x56C2, [11856] = 0x5914, [11857] = 0x5C6C,
+-  [11858] = 0x5DCD, [11859] = 0x61FC, [11860] = 0x61FE, [11861] = 0x651D,
+-  [11862] = 0x651C, [11863] = 0x6595, [11864] = 0x66E9, [11865] = 0x6AFB,
+-  [11866] = 0x6B04, [11867] = 0x6AFA, [11868] = 0x6BB2, [11869] = 0x704C,
+-  [11870] = 0x721B, [11871] = 0x72A7, [11872] = 0x74D6, [11873] = 0x74D4,
+-  [11874] = 0x7669, [11875] = 0x77D3, [11876] = 0x7C50, [11877] = 0x7E8F,
+-  [11878] = 0x7E8C, [11879] = 0x7FBC, [11880] = 0x8617, [11881] = 0x862D,
+-  [11882] = 0x861A, [11883] = 0x8823, [11884] = 0x8822, [11885] = 0x8821,
+-  [11886] = 0x881F, [11887] = 0x896A, [11888] = 0x896C, [11889] = 0x89BD,
+-  [11890] = 0x8B74, [11895] = 0x8B77, [11896] = 0x8B7D, [11897] = 0x8D13,
+-  [11898] = 0x8E8A, [11899] = 0x8E8D, [11900] = 0x8E8B, [11901] = 0x8F5F,
+-  [11902] = 0x8FAF, [11903] = 0x91BA, [11904] = 0x942E, [11905] = 0x9433,
+-  [11906] = 0x9435, [11907] = 0x943A, [11908] = 0x9438, [11909] = 0x9432,
+-  [11910] = 0x942B, [11911] = 0x95E2, [11912] = 0x9738, [11913] = 0x9739,
+-  [11914] = 0x9732, [11915] = 0x97FF, [11916] = 0x9867, [11917] = 0x9865,
+-  [11918] = 0x9957, [11919] = 0x9A45, [11920] = 0x9A43, [11921] = 0x9A40,
+-  [11922] = 0x9A3E, [11923] = 0x9ACF, [11924] = 0x9B54, [11925] = 0x9B51,
+-  [11926] = 0x9C2D, [11927] = 0x9C25, [11928] = 0x9DAF, [11929] = 0x9DB4,
+-  [11930] = 0x9DC2, [11931] = 0x9DB8, [11932] = 0x9E9D, [11933] = 0x9EEF,
+-  [11934] = 0x9F19, [11935] = 0x9F5C, [11936] = 0x9F66, [11937] = 0x9F67,
+-  [11938] = 0x513C, [11939] = 0x513B, [11940] = 0x56C8, [11941] = 0x56CA,
+-  [11942] = 0x56C9, [11943] = 0x5B7F, [11944] = 0x5DD4, [11945] = 0x5DD2,
+-  [11946] = 0x5F4E, [11947] = 0x61FF, [11948] = 0x6524, [11949] = 0x6B0A,
+-  [11950] = 0x6B61, [11951] = 0x7051, [11952] = 0x7058, [11953] = 0x7380,
+-  [11954] = 0x74E4, [11955] = 0x758A, [11956] = 0x766E, [11957] = 0x766C,
+-  [11992] = 0x79B3, [11993] = 0x7C60, [11994] = 0x7C5F, [11995] = 0x807E,
+-  [11996] = 0x807D, [11997] = 0x81DF, [11998] = 0x8972, [11999] = 0x896F,
+-  [12000] = 0x89FC, [12001] = 0x8B80, [12002] = 0x8D16, [12003] = 0x8D17,
+-  [12004] = 0x8E91, [12005] = 0x8E93, [12006] = 0x8F61, [12007] = 0x9148,
+-  [12008] = 0x9444, [12009] = 0x9451, [12010] = 0x9452, [12011] = 0x973D,
+-  [12012] = 0x973E, [12013] = 0x97C3, [12014] = 0x97C1, [12015] = 0x986B,
+-  [12016] = 0x9955, [12017] = 0x9A55, [12018] = 0x9A4D, [12019] = 0x9AD2,
+-  [12020] = 0x9B1A, [12021] = 0x9C49, [12022] = 0x9C31, [12023] = 0x9C3E,
+-  [12024] = 0x9C3B, [12025] = 0x9DD3, [12026] = 0x9DD7, [12027] = 0x9F34,
+-  [12028] = 0x9F6C, [12029] = 0x9F6A, [12030] = 0x9F94, [12031] = 0x56CC,
+-  [12032] = 0x5DD6, [12033] = 0x6200, [12034] = 0x6523, [12035] = 0x652B,
+-  [12036] = 0x652A, [12037] = 0x66EC, [12038] = 0x6B10, [12039] = 0x74DA,
+-  [12040] = 0x7ACA, [12041] = 0x7C64, [12042] = 0x7C63, [12043] = 0x7C65,
+-  [12044] = 0x7E93, [12045] = 0x7E96, [12046] = 0x7E94, [12047] = 0x81E2,
+-  [12048] = 0x8638, [12049] = 0x863F, [12050] = 0x8831, [12051] = 0x8B8A,
+-  [12052] = 0x9090, [12053] = 0x908F, [12054] = 0x9463, [12055] = 0x9460,
+-  [12056] = 0x9464, [12057] = 0x9768, [12058] = 0x986F, [12059] = 0x995C,
+-  [12060] = 0x9A5A, [12061] = 0x9A5B, [12062] = 0x9A57, [12063] = 0x9AD3,
+-  [12064] = 0x9AD4, [12065] = 0x9AD1, [12066] = 0x9C54, [12067] = 0x9C57,
+-  [12068] = 0x9C56, [12069] = 0x9DE5, [12070] = 0x9E9F, [12071] = 0x9EF4,
+-  [12072] = 0x56D1, [12073] = 0x58E9, [12074] = 0x652C, [12075] = 0x705E,
+-  [12076] = 0x7671, [12077] = 0x7672, [12078] = 0x77D7, [12079] = 0x7F50,
+-  [12080] = 0x7F88, [12081] = 0x8836, [12082] = 0x8839, [12083] = 0x8862,
+-  [12084] = 0x8B93, [12085] = 0x8B92, [12090] = 0x8B96, [12091] = 0x8277,
+-  [12092] = 0x8D1B, [12093] = 0x91C0, [12094] = 0x946A, [12095] = 0x9742,
+-  [12096] = 0x9748, [12097] = 0x9744, [12098] = 0x97C6, [12099] = 0x9870,
+-  [12100] = 0x9A5F, [12101] = 0x9B22, [12102] = 0x9B58, [12103] = 0x9C5F,
+-  [12104] = 0x9DF9, [12105] = 0x9DFA, [12106] = 0x9E7C, [12107] = 0x9E7D,
+-  [12108] = 0x9F07, [12109] = 0x9F77, [12110] = 0x9F72, [12111] = 0x5EF3,
+-  [12112] = 0x6B16, [12113] = 0x7063, [12114] = 0x7C6C, [12115] = 0x7C6E,
+-  [12116] = 0x883B, [12117] = 0x89C0, [12118] = 0x8EA1, [12119] = 0x91C1,
+-  [12120] = 0x9472, [12121] = 0x9470, [12122] = 0x9871, [12123] = 0x995E,
+-  [12124] = 0x9AD6, [12125] = 0x9B23, [12126] = 0x9ECC, [12127] = 0x7064,
+-  [12128] = 0x77DA, [12129] = 0x8B9A, [12130] = 0x9477, [12131] = 0x97C9,
+-  [12132] = 0x9A62, [12133] = 0x9A65, [12134] = 0x7E9C, [12135] = 0x8B9C,
+-  [12136] = 0x8EAA, [12137] = 0x91C5, [12138] = 0x947D, [12139] = 0x947E,
+-  [12140] = 0x947C, [12141] = 0x9C77, [12142] = 0x9C78, [12143] = 0x9EF7,
+-  [12144] = 0x8C54, [12145] = 0x947F, [12146] = 0x9E1A, [12147] = 0x7228,
+-  [12148] = 0x9A6A, [12149] = 0x9B31, [12150] = 0x9E1B, [12151] = 0x9E1E,
+-  [12152] = 0x7C72, [12187] = 0x2460, [12188] = 0x2461, [12189] = 0x2462,
+-  [12190] = 0x2463, [12191] = 0x2464, [12192] = 0x2465, [12193] = 0x2466,
+-  [12194] = 0x2467, [12195] = 0x2468, [12196] = 0x2469, [12197] = 0x2474,
+-  [12198] = 0x2475, [12199] = 0x2476, [12200] = 0x2477, [12201] = 0x2478,
+-  [12202] = 0x2479, [12203] = 0x247A, [12204] = 0x247B, [12205] = 0x247C,
+-  [12206] = 0x247D, [12207] = 0x2170, [12208] = 0x2171, [12209] = 0x2172,
+-  [12210] = 0x2173, [12211] = 0x2174, [12212] = 0x2175, [12213] = 0x2176,
+-  [12214] = 0x2177, [12215] = 0x2178, [12216] = 0x2179, [12217] = 0x4E36,
+-  [12218] = 0x4E3F, [12219] = 0x4E85, [12220] = 0x4EA0, [12221] = 0x5182,
+-  [12222] = 0x5196, [12223] = 0x51AB, [12224] = 0x52F9, [12225] = 0x5338,
+-  [12226] = 0x5369, [12227] = 0x53B6, [12228] = 0x590A, [12229] = 0x5B80,
+-  [12230] = 0x5DDB, [12231] = 0x2F33, [12232] = 0x5E7F, [12234] = 0x5F50,
+-  [12235] = 0x5F61, [12236] = 0x6534, [12238] = 0x7592, [12240] = 0x8FB5,
+-  [12242] = 0x00A8, [12243] = 0x02C6, [12244] = 0x30FD, [12245] = 0x30FE,
+-  [12246] = 0x309D, [12247] = 0x309E, [12250] = 0x3005, [12251] = 0x3006,
+-  [12252] = 0x3007, [12253] = 0x30FC, [12254] = 0xFF3B, [12255] = 0xFF3D,
+-  [12256] = 0x273D, [12257] = 0x3041, [12258] = 0x3042, [12259] = 0x3043,
+-  [12260] = 0x3044, [12261] = 0x3045, [12262] = 0x3046, [12263] = 0x3047,
+-  [12264] = 0x3048, [12265] = 0x3049, [12266] = 0x304A, [12267] = 0x304B,
+-  [12268] = 0x304C, [12269] = 0x304D, [12270] = 0x304E, [12271] = 0x304F,
+-  [12272] = 0x3050, [12273] = 0x3051, [12274] = 0x3052, [12275] = 0x3053,
+-  [12276] = 0x3054, [12277] = 0x3055, [12278] = 0x3056, [12279] = 0x3057,
+-  [12280] = 0x3058, [12285] = 0x3059, [12286] = 0x305A, [12287] = 0x305B,
+-  [12288] = 0x305C, [12289] = 0x305D, [12290] = 0x305E, [12291] = 0x305F,
+-  [12292] = 0x3060, [12293] = 0x3061, [12294] = 0x3062, [12295] = 0x3063,
+-  [12296] = 0x3064, [12297] = 0x3065, [12298] = 0x3066, [12299] = 0x3067,
+-  [12300] = 0x3068, [12301] = 0x3069, [12302] = 0x306A, [12303] = 0x306B,
+-  [12304] = 0x306C, [12305] = 0x306D, [12306] = 0x306E, [12307] = 0x306F,
+-  [12308] = 0x3070, [12309] = 0x3071, [12310] = 0x3072, [12311] = 0x3073,
+-  [12312] = 0x3074, [12313] = 0x3075, [12314] = 0x3076, [12315] = 0x3077,
+-  [12316] = 0x3078, [12317] = 0x3079, [12318] = 0x307A, [12319] = 0x307B,
+-  [12320] = 0x307C, [12321] = 0x307D, [12322] = 0x307E, [12323] = 0x307F,
+-  [12324] = 0x3080, [12325] = 0x3081, [12326] = 0x3082, [12327] = 0x3083,
+-  [12328] = 0x3084, [12329] = 0x3085, [12330] = 0x3086, [12331] = 0x3087,
+-  [12332] = 0x3088, [12333] = 0x3089, [12334] = 0x308A, [12335] = 0x308B,
+-  [12336] = 0x308C, [12337] = 0x308D, [12338] = 0x308E, [12339] = 0x308F,
+-  [12340] = 0x3090, [12341] = 0x3091, [12342] = 0x3092, [12343] = 0x3093,
+-  [12344] = 0x30A1, [12345] = 0x30A2, [12346] = 0x30A3, [12347] = 0x30A4,
+-  [12382] = 0x30A5, [12383] = 0x30A6, [12384] = 0x30A7, [12385] = 0x30A8,
+-  [12386] = 0x30A9, [12387] = 0x30AA, [12388] = 0x30AB, [12389] = 0x30AC,
+-  [12390] = 0x30AD, [12391] = 0x30AE, [12392] = 0x30AF, [12393] = 0x30B0,
+-  [12394] = 0x30B1, [12395] = 0x30B2, [12396] = 0x30B3, [12397] = 0x30B4,
+-  [12398] = 0x30B5, [12399] = 0x30B6, [12400] = 0x30B7, [12401] = 0x30B8,
+-  [12402] = 0x30B9, [12403] = 0x30BA, [12404] = 0x30BB, [12405] = 0x30BC,
+-  [12406] = 0x30BD, [12407] = 0x30BE, [12408] = 0x30BF, [12409] = 0x30C0,
+-  [12410] = 0x30C1, [12411] = 0x30C2, [12412] = 0x30C3, [12413] = 0x30C4,
+-  [12414] = 0x30C5, [12415] = 0x30C6, [12416] = 0x30C7, [12417] = 0x30C8,
+-  [12418] = 0x30C9, [12419] = 0x30CA, [12420] = 0x30CB, [12421] = 0x30CC,
+-  [12422] = 0x30CD, [12423] = 0x30CE, [12424] = 0x30CF, [12425] = 0x30D0,
+-  [12426] = 0x30D1, [12427] = 0x30D2, [12428] = 0x30D3, [12429] = 0x30D4,
+-  [12430] = 0x30D5, [12431] = 0x30D6, [12432] = 0x30D7, [12433] = 0x30D8,
+-  [12434] = 0x30D9, [12435] = 0x30DA, [12436] = 0x30DB, [12437] = 0x30DC,
+-  [12438] = 0x30DD, [12439] = 0x30DE, [12440] = 0x30DF, [12441] = 0x30E0,
+-  [12442] = 0x30E1, [12443] = 0x30E2, [12444] = 0x30E3, [12445] = 0x30E4,
+-  [12446] = 0x30E5, [12447] = 0x30E6, [12448] = 0x30E7, [12449] = 0x30E8,
+-  [12450] = 0x30E9, [12451] = 0x30EA, [12452] = 0x30EB, [12453] = 0x30EC,
+-  [12454] = 0x30ED, [12455] = 0x30EE, [12456] = 0x30EF, [12457] = 0x30F0,
+-  [12458] = 0x30F1, [12459] = 0x30F2, [12460] = 0x30F3, [12461] = 0x30F4,
+-  [12462] = 0x30F5, [12463] = 0x30F6, [12464] = 0x0410, [12465] = 0x0411,
+-  [12466] = 0x0412, [12467] = 0x0413, [12468] = 0x0414, [12469] = 0x0415,
+-  [12470] = 0x0401, [12471] = 0x0416, [12472] = 0x0417, [12473] = 0x0418,
+-  [12474] = 0x0419, [12475] = 0x041A, [12480] = 0x041B, [12481] = 0x041C,
+-  [12482] = 0x041D, [12483] = 0x041E, [12484] = 0x041F, [12485] = 0x0420,
+-  [12486] = 0x0421, [12487] = 0x0422, [12488] = 0x0423, [12489] = 0x0424,
+-  [12490] = 0x0425, [12491] = 0x0426, [12492] = 0x0427, [12493] = 0x0428,
+-  [12494] = 0x0429, [12495] = 0x042A, [12496] = 0x042B, [12497] = 0x042C,
+-  [12498] = 0x042D, [12499] = 0x042E, [12500] = 0x042F, [12501] = 0x0430,
+-  [12502] = 0x0431, [12503] = 0x0432, [12504] = 0x0433, [12505] = 0x0434,
+-  [12506] = 0x0435, [12507] = 0x0451, [12508] = 0x0436, [12509] = 0x0437,
+-  [12510] = 0x0438, [12511] = 0x0439, [12512] = 0x043A, [12513] = 0x043B,
+-  [12514] = 0x043C, [12515] = 0x043D, [12516] = 0x043E, [12517] = 0x043F,
+-  [12518] = 0x0440, [12519] = 0x0441, [12520] = 0x0442, [12521] = 0x0443,
+-  [12522] = 0x0444, [12523] = 0x0445, [12524] = 0x0446, [12525] = 0x0447,
+-  [12526] = 0x0448, [12527] = 0x0449, [12528] = 0x044A, [12529] = 0x044B,
+-  [12530] = 0x044C, [12531] = 0x044D, [12532] = 0x044E, [12533] = 0x044F,
+-  [12534] = 0x21E7, [12535] = 0x21B8, [12536] = 0x21B9, [12537] = 0xF7E5,
+-  [12538] = 0xF7E6, [12539] = 0x4E5A, [12540] = 0xF7E8, [12541] = 0x5202,
+-  [12542] = 0xF7EA, [12577] = 0xF7EB, [12578] = 0x5188, [12579] = 0xF7ED,
+-  [12580] = 0xF7EE, [12621] = 0xFFE2, [12622] = 0xFFE4, [12623] = 0xFF07,
+-  [12624] = 0xFF02, [12625] = 0x3231, [12626] = 0x2116, [12627] = 0x2121,
+-  [12628] = 0x309B, [12629] = 0x309C, [12630] = 0x2E80, [12631] = 0x2E84,
+-  [12632] = 0x2E86, [12633] = 0x2E87, [12634] = 0x2E88, [12635] = 0x2E8A,
+-  [12636] = 0x2E8C, [12637] = 0x2E8D, [12638] = 0x2E95, [12639] = 0x2E9C,
+-  [12640] = 0x2E9D, [12641] = 0x2EA5, [12642] = 0x2EA7, [12643] = 0x2EAA,
+-  [12644] = 0x2EAC, [12645] = 0x2EAE, [12646] = 0x2EB6, [12647] = 0x2EBC,
+-  [12648] = 0x2EBE, [12649] = 0x2EC6, [12650] = 0x2ECA, [12651] = 0x2ECC,
+-  [12652] = 0x2ECD, [12653] = 0x2ECF, [12654] = 0x2ED6, [12655] = 0x2ED7,
+-  [12656] = 0x2EDE, [12657] = 0x2EE3, [12661] = 0x0283, [12662] = 0x0250,
+-  [12663] = 0x025B, [12664] = 0x0254, [12665] = 0x0275, [12666] = 0x0153,
+-  [12667] = 0x00F8, [12668] = 0x014B, [12669] = 0x028A, [12670] = 0x026A,
+-  [12675] = 0x4E42, [12676] = 0x4E5C, [12677] = 0x51F5, [12678] = 0x531A,
+-  [12679] = 0x5382, [12680] = 0x4E07, [12681] = 0x4E0C, [12682] = 0x4E47,
+-  [12683] = 0x4E8D, [12684] = 0x56D7, [12685] = 0xFA0C, [12686] = 0x5C6E,
+-  [12687] = 0x5F73, [12688] = 0x4E0F, [12689] = 0x5187, [12690] = 0x4E0E,
+-  [12691] = 0x4E2E, [12692] = 0x4E93, [12693] = 0x4EC2, [12694] = 0x4EC9,
+-  [12695] = 0x4EC8, [12696] = 0x5198, [12697] = 0x52FC, [12698] = 0x536C,
+-  [12699] = 0x53B9, [12700] = 0x5720, [12701] = 0x5903, [12702] = 0x592C,
+-  [12703] = 0x5C10, [12704] = 0x5DFF, [12705] = 0x65E1, [12706] = 0x6BB3,
+-  [12707] = 0x6BCC, [12708] = 0x6C14, [12709] = 0x723F, [12710] = 0x4E31,
+-  [12711] = 0x4E3C, [12712] = 0x4EE8, [12713] = 0x4EDC, [12714] = 0x4EE9,
+-  [12715] = 0x4EE1, [12716] = 0x4EDD, [12717] = 0x4EDA, [12718] = 0x520C,
+-  [12719] = 0x531C, [12720] = 0x534C, [12721] = 0x5722, [12722] = 0x5723,
+-  [12723] = 0x5917, [12724] = 0x592F, [12725] = 0x5B81, [12726] = 0x5B84,
+-  [12727] = 0x5C12, [12728] = 0x5C3B, [12729] = 0x5C74, [12730] = 0x5C73,
+-  [12731] = 0x5E04, [12732] = 0x5E80, [12733] = 0x5E82, [12734] = 0x5FC9,
+-  [12735] = 0x6209, [12736] = 0x6250, [12737] = 0x6C15, [12772] = 0x6C36,
+-  [12773] = 0x6C43, [12774] = 0x6C3F, [12775] = 0x6C3B, [12776] = 0x72AE,
+-  [12777] = 0x72B0, [12778] = 0x738A, [12779] = 0x79B8, [12780] = 0x808A,
+-  [12781] = 0x961E, [12782] = 0x4F0E, [12783] = 0x4F18, [12784] = 0x4F2C,
+-  [12785] = 0x4EF5, [12786] = 0x4F14, [12787] = 0x4EF1, [12788] = 0x4F00,
+-  [12789] = 0x4EF7, [12790] = 0x4F08, [12791] = 0x4F1D, [12792] = 0x4F02,
+-  [12793] = 0x4F05, [12794] = 0x4F22, [12795] = 0x4F13, [12796] = 0x4F04,
+-  [12797] = 0x4EF4, [12798] = 0x4F12, [12799] = 0x51B1, [12800] = 0x5213,
+-  [12801] = 0x5209, [12802] = 0x5210, [12803] = 0x52A6, [12804] = 0x5322,
+-  [12805] = 0x531F, [12806] = 0x534D, [12807] = 0x538A, [12808] = 0x5407,
+-  [12809] = 0x56E1, [12810] = 0x56DF, [12811] = 0x572E, [12812] = 0x572A,
+-  [12813] = 0x5734, [12814] = 0x593C, [12815] = 0x5980, [12816] = 0x597C,
+-  [12817] = 0x5985, [12818] = 0x597B, [12819] = 0x597E, [12820] = 0x5977,
+-  [12821] = 0x597F, [12822] = 0x5B56, [12823] = 0x5C15, [12824] = 0x5C25,
+-  [12825] = 0x5C7C, [12826] = 0x5C7A, [12827] = 0x5C7B, [12828] = 0x5C7E,
+-  [12829] = 0x5DDF, [12830] = 0x5E75, [12831] = 0x5E84, [12832] = 0x5F02,
+-  [12833] = 0x5F1A, [12834] = 0x5F74, [12835] = 0x5FD5, [12836] = 0x5FD4,
+-  [12837] = 0x5FCF, [12838] = 0x625C, [12839] = 0x625E, [12840] = 0x6264,
+-  [12841] = 0x6261, [12842] = 0x6266, [12843] = 0x6262, [12844] = 0x6259,
+-  [12845] = 0x6260, [12846] = 0x625A, [12847] = 0x6265, [12848] = 0x65EF,
+-  [12849] = 0x65EE, [12850] = 0x673E, [12851] = 0x6739, [12852] = 0x6738,
+-  [12853] = 0x673B, [12854] = 0x673A, [12855] = 0x673F, [12856] = 0x673C,
+-  [12857] = 0x6733, [12858] = 0x6C18, [12859] = 0x6C46, [12860] = 0x6C52,
+-  [12861] = 0x6C5C, [12862] = 0x6C4F, [12863] = 0x6C4A, [12864] = 0x6C54,
+-  [12865] = 0x6C4B, [12870] = 0x6C4C, [12871] = 0x7071, [12872] = 0x725E,
+-  [12873] = 0x72B4, [12874] = 0x72B5, [12875] = 0x738E, [12876] = 0x752A,
+-  [12877] = 0x767F, [12878] = 0x7A75, [12879] = 0x7F51, [12880] = 0x8278,
+-  [12881] = 0x827C, [12882] = 0x8280, [12883] = 0x827D, [12884] = 0x827F,
+-  [12885] = 0x864D, [12886] = 0x897E, [12887] = 0x9099, [12888] = 0x9097,
+-  [12889] = 0x9098, [12890] = 0x909B, [12891] = 0x9094, [12892] = 0x9622,
+-  [12893] = 0x9624, [12894] = 0x9620, [12895] = 0x9623, [12896] = 0x4F56,
+-  [12897] = 0x4F3B, [12898] = 0x4F62, [12899] = 0x4F49, [12900] = 0x4F53,
+-  [12901] = 0x4F64, [12902] = 0x4F3E, [12903] = 0x4F67, [12904] = 0x4F52,
+-  [12905] = 0x4F5F, [12906] = 0x4F41, [12907] = 0x4F58, [12908] = 0x4F2D,
+-  [12909] = 0x4F33, [12910] = 0x4F3F, [12911] = 0x4F61, [12912] = 0x518F,
+-  [12913] = 0x51B9, [12914] = 0x521C, [12915] = 0x521E, [12916] = 0x5221,
+-  [12917] = 0x52AD, [12918] = 0x52AE, [12919] = 0x5309, [12920] = 0x5363,
+-  [12921] = 0x5372, [12922] = 0x538E, [12923] = 0x538F, [12924] = 0x5430,
+-  [12925] = 0x5437, [12926] = 0x542A, [12927] = 0x5454, [12928] = 0x5445,
+-  [12929] = 0x5419, [12930] = 0x541C, [12931] = 0x5425, [12932] = 0x5418,
+-  [12967] = 0x543D, [12968] = 0x544F, [12969] = 0x5441, [12970] = 0x5428,
+-  [12971] = 0x5424, [12972] = 0x5447, [12973] = 0x56EE, [12974] = 0x56E7,
+-  [12975] = 0x56E5, [12976] = 0x5741, [12977] = 0x5745, [12978] = 0x574C,
+-  [12979] = 0x5749, [12980] = 0x574B, [12981] = 0x5752, [12982] = 0x5906,
+-  [12983] = 0x5940, [12984] = 0x59A6, [12985] = 0x5998, [12986] = 0x59A0,
+-  [12987] = 0x5997, [12988] = 0x598E, [12989] = 0x59A2, [12990] = 0x5990,
+-  [12991] = 0x598F, [12992] = 0x59A7, [12993] = 0x59A1, [12994] = 0x5B8E,
+-  [12995] = 0x5B92, [12996] = 0x5C28, [12997] = 0x5C2A, [12998] = 0x5C8D,
+-  [12999] = 0x5C8F, [13000] = 0x5C88, [13001] = 0x5C8B, [13002] = 0x5C89,
+-  [13003] = 0x5C92, [13004] = 0x5C8A, [13005] = 0x5C86, [13006] = 0x5C93,
+-  [13007] = 0x5C95, [13008] = 0x5DE0, [13009] = 0x5E0A, [13010] = 0x5E0E,
+-  [13011] = 0x5E8B, [13012] = 0x5E89, [13013] = 0x5E8C, [13014] = 0x5E88,
+-  [13015] = 0x5E8D, [13016] = 0x5F05, [13017] = 0x5F1D, [13018] = 0x5F78,
+-  [13019] = 0x5F76, [13020] = 0x5FD2, [13021] = 0x5FD1, [13022] = 0x5FD0,
+-  [13023] = 0x5FED, [13024] = 0x5FE8, [13025] = 0x5FEE, [13026] = 0x5FF3,
+-  [13027] = 0x5FE1, [13028] = 0x5FE4, [13029] = 0x5FE3, [13030] = 0x5FFA,
+-  [13031] = 0x5FEF, [13032] = 0x5FF7, [13033] = 0x5FFB, [13034] = 0x6000,
+-  [13035] = 0x5FF4, [13036] = 0x623A, [13037] = 0x6283, [13038] = 0x628C,
+-  [13039] = 0x628E, [13040] = 0x628F, [13041] = 0x6294, [13042] = 0x6287,
+-  [13043] = 0x6271, [13044] = 0x627B, [13045] = 0x627A, [13046] = 0x6270,
+-  [13047] = 0x6281, [13048] = 0x6288, [13049] = 0x6277, [13050] = 0x627D,
+-  [13051] = 0x6272, [13052] = 0x6274, [13053] = 0x6537, [13054] = 0x65F0,
+-  [13055] = 0x65F4, [13056] = 0x65F3, [13057] = 0x65F2, [13058] = 0x65F5,
+-  [13059] = 0x6745, [13060] = 0x6747, [13065] = 0x6759, [13066] = 0x6755,
+-  [13067] = 0x674C, [13068] = 0x6748, [13069] = 0x675D, [13070] = 0x674D,
+-  [13071] = 0x675A, [13072] = 0x674B, [13073] = 0x6BD0, [13074] = 0x6C19,
+-  [13075] = 0x6C1A, [13076] = 0x6C78, [13077] = 0x6C67, [13078] = 0x6C6B,
+-  [13079] = 0x6C84, [13080] = 0x6C8B, [13081] = 0x6C8F, [13082] = 0x6C71,
+-  [13083] = 0x6C6F, [13084] = 0x6C69, [13085] = 0x6C9A, [13086] = 0x6C6D,
+-  [13087] = 0x6C87, [13088] = 0x6C95, [13089] = 0x6C9C, [13090] = 0x6C66,
+-  [13091] = 0x6C73, [13092] = 0x6C65, [13093] = 0x6C7B, [13094] = 0x6C8E,
+-  [13095] = 0x7074, [13096] = 0x707A, [13097] = 0x7263, [13098] = 0x72BF,
+-  [13099] = 0x72BD, [13100] = 0x72C3, [13101] = 0x72C6, [13102] = 0x72C1,
+-  [13103] = 0x72BA, [13104] = 0x72C5, [13105] = 0x7395, [13106] = 0x7397,
+-  [13107] = 0x7393, [13108] = 0x7394, [13109] = 0x7392, [13110] = 0x753A,
+-  [13111] = 0x7539, [13112] = 0x7594, [13113] = 0x7595, [13114] = 0x7681,
+-  [13115] = 0x793D, [13116] = 0x8034, [13117] = 0x8095, [13118] = 0x8099,
+-  [13119] = 0x8090, [13120] = 0x8092, [13121] = 0x809C, [13122] = 0x8290,
+-  [13123] = 0x828F, [13124] = 0x8285, [13125] = 0x828E, [13126] = 0x8291,
+-  [13127] = 0x8293, [13162] = 0x828A, [13163] = 0x8283, [13164] = 0x8284,
+-  [13165] = 0x8C78, [13166] = 0x8FC9, [13167] = 0x8FBF, [13168] = 0x909F,
+-  [13169] = 0x90A1, [13170] = 0x90A5, [13171] = 0x909E, [13172] = 0x90A7,
+-  [13173] = 0x90A0, [13174] = 0x9630, [13175] = 0x9628, [13176] = 0x962F,
+-  [13177] = 0x962D, [13178] = 0x4E33, [13179] = 0x4F98, [13180] = 0x4F7C,
+-  [13181] = 0x4F85, [13182] = 0x4F7D, [13183] = 0x4F80, [13184] = 0x4F87,
+-  [13185] = 0x4F76, [13186] = 0x4F74, [13187] = 0x4F89, [13188] = 0x4F84,
+-  [13189] = 0x4F77, [13190] = 0x4F4C, [13191] = 0x4F97, [13192] = 0x4F6A,
+-  [13193] = 0x4F9A, [13194] = 0x4F79, [13195] = 0x4F81, [13196] = 0x4F78,
+-  [13197] = 0x4F90, [13198] = 0x4F9C, [13199] = 0x4F94, [13200] = 0x4F9E,
+-  [13201] = 0x4F92, [13202] = 0x4F82, [13203] = 0x4F95, [13204] = 0x4F6B,
+-  [13205] = 0x4F6E, [13206] = 0x519E, [13207] = 0x51BC, [13208] = 0x51BE,
+-  [13209] = 0x5235, [13210] = 0x5232, [13211] = 0x5233, [13212] = 0x5246,
+-  [13213] = 0x5231, [13214] = 0x52BC, [13215] = 0x530A, [13216] = 0x530B,
+-  [13217] = 0x533C, [13218] = 0x5392, [13219] = 0x5394, [13220] = 0x5487,
+-  [13221] = 0x547F, [13222] = 0x5481, [13223] = 0x5491, [13224] = 0x5482,
+-  [13225] = 0x5488, [13226] = 0x546B, [13227] = 0x547A, [13228] = 0x547E,
+-  [13229] = 0x5465, [13230] = 0x546C, [13231] = 0x5474, [13232] = 0x5466,
+-  [13233] = 0x548D, [13234] = 0x546F, [13235] = 0x5461, [13236] = 0x5460,
+-  [13237] = 0x5498, [13238] = 0x5463, [13239] = 0x5467, [13240] = 0x5464,
+-  [13241] = 0x56F7, [13242] = 0x56F9, [13243] = 0x576F, [13244] = 0x5772,
+-  [13245] = 0x576D, [13246] = 0x576B, [13247] = 0x5771, [13248] = 0x5770,
+-  [13249] = 0x5776, [13250] = 0x5780, [13251] = 0x5775, [13252] = 0x577B,
+-  [13253] = 0x5773, [13254] = 0x5774, [13255] = 0x5762, [13260] = 0x5768,
+-  [13261] = 0x577D, [13262] = 0x590C, [13263] = 0x5945, [13264] = 0x59B5,
+-  [13265] = 0x59BA, [13266] = 0x59CF, [13267] = 0x59CE, [13268] = 0x59B2,
+-  [13269] = 0x59CC, [13270] = 0x59C1, [13271] = 0x59B6, [13272] = 0x59BC,
+-  [13273] = 0x59C3, [13274] = 0x59D6, [13275] = 0x59B1, [13276] = 0x59BD,
+-  [13277] = 0x59C0, [13278] = 0x59C8, [13279] = 0x59B4, [13280] = 0x59C7,
+-  [13281] = 0x5B62, [13282] = 0x5B65, [13283] = 0x5B93, [13284] = 0x5B95,
+-  [13285] = 0x5C44, [13286] = 0x5C47, [13287] = 0x5CAE, [13288] = 0x5CA4,
+-  [13289] = 0x5CA0, [13290] = 0x5CB5, [13291] = 0x5CAF, [13292] = 0x5CA8,
+-  [13293] = 0x5CAC, [13294] = 0x5C9F, [13295] = 0x5CA3, [13296] = 0x5CAD,
+-  [13297] = 0x5CA2, [13298] = 0x5CAA, [13299] = 0x5CA7, [13300] = 0x5C9D,
+-  [13301] = 0x5CA5, [13302] = 0x5CB6, [13303] = 0x5CB0, [13304] = 0x5CA6,
+-  [13305] = 0x5E17, [13306] = 0x5E14, [13307] = 0x5E19, [13308] = 0x5F28,
+-  [13309] = 0x5F22, [13310] = 0x5F23, [13311] = 0x5F24, [13312] = 0x5F54,
+-  [13313] = 0x5F82, [13314] = 0x5F7E, [13315] = 0x5F7D, [13316] = 0x5FDE,
+-  [13317] = 0x5FE5, [13318] = 0x602D, [13319] = 0x6026, [13320] = 0x6019,
+-  [13321] = 0x6032, [13322] = 0x600B, [13357] = 0x6034, [13358] = 0x600A,
+-  [13359] = 0x6017, [13360] = 0x6033, [13361] = 0x601A, [13362] = 0x601E,
+-  [13363] = 0x602C, [13364] = 0x6022, [13365] = 0x600D, [13366] = 0x6010,
+-  [13367] = 0x602E, [13368] = 0x6013, [13369] = 0x6011, [13370] = 0x600C,
+-  [13371] = 0x6009, [13372] = 0x601C, [13373] = 0x6214, [13374] = 0x623D,
+-  [13375] = 0x62AD, [13376] = 0x62B4, [13377] = 0x62D1, [13378] = 0x62BE,
+-  [13379] = 0x62AA, [13380] = 0x62B6, [13381] = 0x62CA, [13382] = 0x62AE,
+-  [13383] = 0x62B3, [13384] = 0x62AF, [13385] = 0x62BB, [13386] = 0x62A9,
+-  [13387] = 0x62B0, [13388] = 0x62B8, [13389] = 0x653D, [13390] = 0x65A8,
+-  [13391] = 0x65BB, [13392] = 0x6609, [13393] = 0x65FC, [13394] = 0x6604,
+-  [13395] = 0x6612, [13396] = 0x6608, [13397] = 0x65FB, [13398] = 0x6603,
+-  [13399] = 0x660B, [13400] = 0x660D, [13401] = 0x6605, [13402] = 0x65FD,
+-  [13403] = 0x6611, [13404] = 0x6610, [13405] = 0x66F6, [13406] = 0x670A,
+-  [13407] = 0x6785, [13408] = 0x676C, [13409] = 0x678E, [13410] = 0x6792,
+-  [13411] = 0x6776, [13412] = 0x677B, [13413] = 0x6798, [13414] = 0x6786,
+-  [13415] = 0x6784, [13416] = 0x6774, [13417] = 0x678D, [13418] = 0x678C,
+-  [13419] = 0x677A, [13420] = 0x679F, [13421] = 0x6791, [13422] = 0x6799,
+-  [13423] = 0x6783, [13424] = 0x677D, [13425] = 0x6781, [13426] = 0x6778,
+-  [13427] = 0x6779, [13428] = 0x6794, [13429] = 0x6B25, [13430] = 0x6B80,
+-  [13431] = 0x6B7E, [13432] = 0x6BDE, [13433] = 0x6C1D, [13434] = 0x6C93,
+-  [13435] = 0x6CEC, [13436] = 0x6CEB, [13437] = 0x6CEE, [13438] = 0x6CD9,
+-  [13439] = 0x6CB6, [13440] = 0x6CD4, [13441] = 0x6CAD, [13442] = 0x6CE7,
+-  [13443] = 0x6CB7, [13444] = 0x6CD0, [13445] = 0x6CC2, [13446] = 0x6CBA,
+-  [13447] = 0x6CC3, [13448] = 0x6CC6, [13449] = 0x6CED, [13450] = 0x6CF2,
+-  [13455] = 0x6CD2, [13456] = 0x6CDD, [13457] = 0x6CB4, [13458] = 0x6C8A,
+-  [13459] = 0x6C9D, [13460] = 0x6C80, [13461] = 0x6CDE, [13462] = 0x6CC0,
+-  [13463] = 0x6D30, [13464] = 0x6CCD, [13465] = 0x6CC7, [13466] = 0x6CB0,
+-  [13467] = 0x6CF9, [13468] = 0x6CCF, [13469] = 0x6CE9, [13470] = 0x6CD1,
+-  [13471] = 0x7094, [13472] = 0x7098, [13473] = 0x7085, [13474] = 0x7093,
+-  [13475] = 0x7086, [13476] = 0x7084, [13477] = 0x7091, [13478] = 0x7096,
+-  [13479] = 0x7082, [13480] = 0x709A, [13481] = 0x7083, [13482] = 0x726A,
+-  [13483] = 0x72D6, [13484] = 0x72CB, [13485] = 0x72D8, [13486] = 0x72C9,
+-  [13487] = 0x72DC, [13488] = 0x72D2, [13489] = 0x72D4, [13490] = 0x72DA,
+-  [13491] = 0x72CC, [13492] = 0x72D1, [13493] = 0x73A4, [13494] = 0x73A1,
+-  [13495] = 0x73AD, [13496] = 0x73A6, [13497] = 0x73A2, [13498] = 0x73A0,
+-  [13499] = 0x73AC, [13500] = 0x739D, [13501] = 0x74DD, [13502] = 0x74E8,
+-  [13503] = 0x753F, [13504] = 0x7540, [13505] = 0x753E, [13506] = 0x758C,
+-  [13507] = 0x7598, [13508] = 0x76AF, [13509] = 0x76F3, [13510] = 0x76F1,
+-  [13511] = 0x76F0, [13512] = 0x76F5, [13513] = 0x77F8, [13514] = 0x77FC,
+-  [13515] = 0x77F9, [13516] = 0x77FB, [13517] = 0x77FA, [13552] = 0x77F7,
+-  [13553] = 0x7942, [13554] = 0x793F, [13555] = 0x79C5, [13556] = 0x7A78,
+-  [13557] = 0x7A7B, [13558] = 0x7AFB, [13559] = 0x7C75, [13560] = 0x7CFD,
+-  [13561] = 0x8035, [13562] = 0x808F, [13563] = 0x80AE, [13564] = 0x80A3,
+-  [13565] = 0x80B8, [13566] = 0x80B5, [13567] = 0x80AD, [13568] = 0x8220,
+-  [13569] = 0x82A0, [13570] = 0x82C0, [13571] = 0x82AB, [13572] = 0x829A,
+-  [13573] = 0x8298, [13574] = 0x829B, [13575] = 0x82B5, [13576] = 0x82A7,
+-  [13577] = 0x82AE, [13578] = 0x82BC, [13579] = 0x829E, [13580] = 0x82BA,
+-  [13581] = 0x82B4, [13582] = 0x82A8, [13583] = 0x82A1, [13584] = 0x82A9,
+-  [13585] = 0x82C2, [13586] = 0x82A4, [13587] = 0x82C3, [13588] = 0x82B6,
+-  [13589] = 0x82A2, [13590] = 0x8670, [13591] = 0x866F, [13592] = 0x866D,
+-  [13593] = 0x866E, [13594] = 0x8C56, [13595] = 0x8FD2, [13596] = 0x8FCB,
+-  [13597] = 0x8FD3, [13598] = 0x8FCD, [13599] = 0x8FD6, [13600] = 0x8FD5,
+-  [13601] = 0x8FD7, [13602] = 0x90B2, [13603] = 0x90B4, [13604] = 0x90AF,
+-  [13605] = 0x90B3, [13606] = 0x90B0, [13607] = 0x9639, [13608] = 0x963D,
+-  [13609] = 0x963C, [13610] = 0x963A, [13611] = 0x9643, [13612] = 0x4FCD,
+-  [13613] = 0x4FC5, [13614] = 0x4FD3, [13615] = 0x4FB2, [13616] = 0x4FC9,
+-  [13617] = 0x4FCB, [13618] = 0x4FC1, [13619] = 0x4FD4, [13620] = 0x4FDC,
+-  [13621] = 0x4FD9, [13622] = 0x4FBB, [13623] = 0x4FB3, [13624] = 0x4FDB,
+-  [13625] = 0x4FC7, [13626] = 0x4FD6, [13627] = 0x4FBA, [13628] = 0x4FC0,
+-  [13629] = 0x4FB9, [13630] = 0x4FEC, [13631] = 0x5244, [13632] = 0x5249,
+-  [13633] = 0x52C0, [13634] = 0x52C2, [13635] = 0x533D, [13636] = 0x537C,
+-  [13637] = 0x5397, [13638] = 0x5396, [13639] = 0x5399, [13640] = 0x5398,
+-  [13641] = 0x54BA, [13642] = 0x54A1, [13643] = 0x54AD, [13644] = 0x54A5,
+-  [13645] = 0x54CF, [13650] = 0x54C3, [13651] = 0x830D, [13652] = 0x54B7,
+-  [13653] = 0x54AE, [13654] = 0x54D6, [13655] = 0x54B6, [13656] = 0x54C5,
+-  [13657] = 0x54C6, [13658] = 0x54A0, [13659] = 0x5470, [13660] = 0x54BC,
+-  [13661] = 0x54A2, [13662] = 0x54BE, [13663] = 0x5472, [13664] = 0x54DE,
+-  [13665] = 0x54B0, [13666] = 0x57B5, [13667] = 0x579E, [13668] = 0x579F,
+-  [13669] = 0x57A4, [13670] = 0x578C, [13671] = 0x5797, [13672] = 0x579D,
+-  [13673] = 0x579B, [13674] = 0x5794, [13675] = 0x5798, [13676] = 0x578F,
+-  [13677] = 0x5799, [13678] = 0x57A5, [13679] = 0x579A, [13680] = 0x5795,
+-  [13681] = 0x58F4, [13682] = 0x590D, [13683] = 0x5953, [13684] = 0x59E1,
+-  [13685] = 0x59DE, [13686] = 0x59EE, [13687] = 0x5A00, [13688] = 0x59F1,
+-  [13689] = 0x59DD, [13690] = 0x59FA, [13691] = 0x59FD, [13692] = 0x59FC,
+-  [13693] = 0x59F6, [13694] = 0x59E4, [13695] = 0x59F2, [13696] = 0x59F7,
+-  [13697] = 0x59DB, [13698] = 0x59E9, [13699] = 0x59F3, [13700] = 0x59F5,
+-  [13701] = 0x59E0, [13702] = 0x59FE, [13703] = 0x59F4, [13704] = 0x59ED,
+-  [13705] = 0x5BA8, [13706] = 0x5C4C, [13707] = 0x5CD0, [13708] = 0x5CD8,
+-  [13709] = 0x5CCC, [13710] = 0x5CD7, [13711] = 0x5CCB, [13712] = 0x5CDB,
+-  [13747] = 0x5CDE, [13748] = 0x5CDA, [13749] = 0x5CC9, [13750] = 0x5CC7,
+-  [13751] = 0x5CCA, [13752] = 0x5CD6, [13753] = 0x5CD3, [13754] = 0x5CD4,
+-  [13755] = 0x5CCF, [13756] = 0x5CC8, [13757] = 0x5CC6, [13758] = 0x5CCE,
+-  [13759] = 0x5CDF, [13760] = 0x5CF8, [13761] = 0x5DF9, [13762] = 0x5E21,
+-  [13763] = 0x5E22, [13764] = 0x5E23, [13765] = 0x5E20, [13766] = 0x5E24,
+-  [13767] = 0x5EB0, [13768] = 0x5EA4, [13769] = 0x5EA2, [13770] = 0x5E9B,
+-  [13771] = 0x5EA3, [13772] = 0x5EA5, [13773] = 0x5F07, [13774] = 0x5F2E,
+-  [13775] = 0x5F56, [13776] = 0x5F86, [13777] = 0x6037, [13778] = 0x6039,
+-  [13779] = 0x6054, [13780] = 0x6072, [13781] = 0x605E, [13782] = 0x6045,
+-  [13783] = 0x6053, [13784] = 0x6047, [13785] = 0x6049, [13786] = 0x605B,
+-  [13787] = 0x604C, [13788] = 0x6040, [13789] = 0x6042, [13790] = 0x605F,
+-  [13791] = 0x6024, [13792] = 0x6044, [13793] = 0x6058, [13794] = 0x6066,
+-  [13795] = 0x606E, [13796] = 0x6242, [13797] = 0x6243, [13798] = 0x62CF,
+-  [13799] = 0x630D, [13800] = 0x630B, [13801] = 0x62F5, [13802] = 0x630E,
+-  [13803] = 0x6303, [13804] = 0x62EB, [13805] = 0x62F9, [13806] = 0x630F,
+-  [13807] = 0x630C, [13808] = 0x62F8, [13809] = 0x62F6, [13810] = 0x6300,
+-  [13811] = 0x6313, [13812] = 0x6314, [13813] = 0x62FA, [13814] = 0x6315,
+-  [13815] = 0x62FB, [13816] = 0x62F0, [13817] = 0x6541, [13818] = 0x6543,
+-  [13819] = 0x65AA, [13820] = 0x65BF, [13821] = 0x6636, [13822] = 0x6621,
+-  [13823] = 0x6632, [13824] = 0x6635, [13825] = 0x661C, [13826] = 0x6626,
+-  [13827] = 0x6622, [13828] = 0x6633, [13829] = 0x662B, [13830] = 0x663A,
+-  [13831] = 0x661D, [13832] = 0x6634, [13833] = 0x6639, [13834] = 0x662E,
+-  [13835] = 0x670F, [13836] = 0x6710, [13837] = 0x67C1, [13838] = 0x67F2,
+-  [13839] = 0x67C8, [13840] = 0x67BA, [13845] = 0x67DC, [13846] = 0x67BB,
+-  [13847] = 0x67F8, [13848] = 0x67D8, [13849] = 0x67C0, [13850] = 0x67B7,
+-  [13851] = 0x67C5, [13852] = 0x67EB, [13853] = 0x67E4, [13854] = 0x67DF,
+-  [13855] = 0x67B5, [13856] = 0x67CD, [13857] = 0x67B3, [13858] = 0x67F7,
+-  [13859] = 0x67F6, [13860] = 0x67EE, [13861] = 0x67E3, [13862] = 0x67C2,
+-  [13863] = 0x67B9, [13864] = 0x67CE, [13865] = 0x67E7, [13866] = 0x67F0,
+-  [13867] = 0x67B2, [13868] = 0x67FC, [13869] = 0x67C6, [13870] = 0x67ED,
+-  [13871] = 0x67CC, [13872] = 0x67AE, [13873] = 0x67E6, [13874] = 0x67DB,
+-  [13875] = 0x67FA, [13876] = 0x67C9, [13877] = 0x67CA, [13878] = 0x67C3,
+-  [13879] = 0x67EA, [13880] = 0x67CB, [13881] = 0x6B28, [13882] = 0x6B82,
+-  [13883] = 0x6B84, [13884] = 0x6BB6, [13885] = 0x6BD6, [13886] = 0x6BD8,
+-  [13887] = 0x6BE0, [13888] = 0x6C20, [13889] = 0x6C21, [13890] = 0x6D28,
+-  [13891] = 0x6D34, [13892] = 0x6D2D, [13893] = 0x6D1F, [13894] = 0x6D3C,
+-  [13895] = 0x6D3F, [13896] = 0x6D12, [13897] = 0x6D0A, [13898] = 0x6CDA,
+-  [13899] = 0x6D33, [13900] = 0x6D04, [13901] = 0x6D19, [13902] = 0x6D3A,
+-  [13903] = 0x6D1A, [13904] = 0x6D11, [13905] = 0x6D00, [13906] = 0x6D1D,
+-  [13907] = 0x6D42, [13942] = 0x6D01, [13943] = 0x6D18, [13944] = 0x6D37,
+-  [13945] = 0x6D03, [13946] = 0x6D0F, [13947] = 0x6D40, [13948] = 0x6D07,
+-  [13949] = 0x6D20, [13950] = 0x6D2C, [13951] = 0x6D08, [13952] = 0x6D22,
+-  [13953] = 0x6D09, [13954] = 0x6D10, [13955] = 0x70B7, [13956] = 0x709F,
+-  [13957] = 0x70BE, [13958] = 0x70B1, [13959] = 0x70B0, [13960] = 0x70A1,
+-  [13961] = 0x70B4, [13962] = 0x70B5, [13963] = 0x70A9, [13964] = 0x7241,
+-  [13965] = 0x7249, [13966] = 0x724A, [13967] = 0x726C, [13968] = 0x7270,
+-  [13969] = 0x7273, [13970] = 0x726E, [13971] = 0x72CA, [13972] = 0x72E4,
+-  [13973] = 0x72E8, [13974] = 0x72EB, [13975] = 0x72DF, [13976] = 0x72EA,
+-  [13977] = 0x72E6, [13978] = 0x72E3, [13979] = 0x7385, [13980] = 0x73CC,
+-  [13981] = 0x73C2, [13982] = 0x73C8, [13983] = 0x73C5, [13984] = 0x73B9,
+-  [13985] = 0x73B6, [13986] = 0x73B5, [13987] = 0x73B4, [13988] = 0x73EB,
+-  [13989] = 0x73BF, [13990] = 0x73C7, [13991] = 0x73BE, [13992] = 0x73C3,
+-  [13993] = 0x73C6, [13994] = 0x73B8, [13995] = 0x73CB, [13996] = 0x74EC,
+-  [13997] = 0x74EE, [13998] = 0x752E, [13999] = 0x7547, [14000] = 0x7548,
+-  [14001] = 0x75A7, [14002] = 0x75AA, [14003] = 0x7679, [14004] = 0x76C4,
+-  [14005] = 0x7708, [14006] = 0x7703, [14007] = 0x7704, [14008] = 0x7705,
+-  [14009] = 0x770A, [14010] = 0x76F7, [14011] = 0x76FB, [14012] = 0x76FA,
+-  [14013] = 0x77E7, [14014] = 0x77E8, [14015] = 0x7806, [14016] = 0x7811,
+-  [14017] = 0x7812, [14018] = 0x7805, [14019] = 0x7810, [14020] = 0x780F,
+-  [14021] = 0x780E, [14022] = 0x7809, [14023] = 0x7803, [14024] = 0x7813,
+-  [14025] = 0x794A, [14026] = 0x794C, [14027] = 0x794B, [14028] = 0x7945,
+-  [14029] = 0x7944, [14030] = 0x79D5, [14031] = 0x79CD, [14032] = 0x79CF,
+-  [14033] = 0x79D6, [14034] = 0x79CE, [14035] = 0x7A80, [14040] = 0x7A7E,
+-  [14041] = 0x7AD1, [14042] = 0x7B00, [14043] = 0x7B01, [14044] = 0x7C7A,
+-  [14045] = 0x7C78, [14046] = 0x7C79, [14047] = 0x7C7F, [14048] = 0x7C80,
+-  [14049] = 0x7C81, [14050] = 0x7D03, [14051] = 0x7D08, [14052] = 0x7D01,
+-  [14053] = 0x7F58, [14054] = 0x7F91, [14055] = 0x7F8D, [14056] = 0x7FBE,
+-  [14057] = 0x8007, [14058] = 0x800E, [14059] = 0x800F, [14060] = 0x8014,
+-  [14061] = 0x8037, [14062] = 0x80D8, [14063] = 0x80C7, [14064] = 0x80E0,
+-  [14065] = 0x80D1, [14066] = 0x80C8, [14067] = 0x80C2, [14068] = 0x80D0,
+-  [14069] = 0x80C5, [14070] = 0x80E3, [14071] = 0x80D9, [14072] = 0x80DC,
+-  [14073] = 0x80CA, [14074] = 0x80D5, [14075] = 0x80C9, [14076] = 0x80CF,
+-  [14077] = 0x80D7, [14078] = 0x80E6, [14079] = 0x80CD, [14080] = 0x81FF,
+-  [14081] = 0x8221, [14082] = 0x8294, [14083] = 0x82D9, [14084] = 0x82FE,
+-  [14085] = 0x82F9, [14086] = 0x8307, [14087] = 0x82E8, [14088] = 0x8300,
+-  [14089] = 0x82D5, [14090] = 0x833A, [14091] = 0x82EB, [14092] = 0x82D6,
+-  [14093] = 0x82F4, [14094] = 0x82EC, [14095] = 0x82E1, [14096] = 0x82F2,
+-  [14097] = 0x82F5, [14098] = 0x830C, [14099] = 0x82FB, [14100] = 0x82F6,
+-  [14101] = 0x82F0, [14102] = 0x82EA, [14137] = 0x82E4, [14138] = 0x82E0,
+-  [14139] = 0x82FA, [14140] = 0x82F3, [14141] = 0x82ED, [14142] = 0x8677,
+-  [14143] = 0x8674, [14144] = 0x867C, [14145] = 0x8673, [14146] = 0x8841,
+-  [14147] = 0x884E, [14148] = 0x8867, [14149] = 0x886A, [14150] = 0x8869,
+-  [14151] = 0x89D3, [14152] = 0x8A04, [14153] = 0x8A07, [14154] = 0x8D72,
+-  [14155] = 0x8FE3, [14156] = 0x8FE1, [14157] = 0x8FEE, [14158] = 0x8FE0,
+-  [14159] = 0x90F1, [14160] = 0x90BD, [14161] = 0x90BF, [14162] = 0x90D5,
+-  [14163] = 0x90C5, [14164] = 0x90BE, [14165] = 0x90C7, [14166] = 0x90CB,
+-  [14167] = 0x90C8, [14168] = 0x91D4, [14169] = 0x91D3, [14170] = 0x9654,
+-  [14171] = 0x964F, [14172] = 0x9651, [14173] = 0x9653, [14174] = 0x964A,
+-  [14175] = 0x964E, [14176] = 0x501E, [14177] = 0x5005, [14178] = 0x5007,
+-  [14179] = 0x5013, [14180] = 0x5022, [14181] = 0x5030, [14182] = 0x501B,
+-  [14183] = 0x4FF5, [14184] = 0x4FF4, [14185] = 0x5033, [14186] = 0x5037,
+-  [14187] = 0x502C, [14188] = 0x4FF6, [14189] = 0x4FF7, [14190] = 0x5017,
+-  [14191] = 0x501C, [14192] = 0x5020, [14193] = 0x5027, [14194] = 0x5035,
+-  [14195] = 0x502F, [14196] = 0x5031, [14197] = 0x500E, [14198] = 0x515A,
+-  [14199] = 0x5194, [14200] = 0x5193, [14201] = 0x51CA, [14202] = 0x51C4,
+-  [14203] = 0x51C5, [14204] = 0x51C8, [14205] = 0x51CE, [14206] = 0x5261,
+-  [14207] = 0x525A, [14208] = 0x5252, [14209] = 0x525E, [14210] = 0x525F,
+-  [14211] = 0x5255, [14212] = 0x5262, [14213] = 0x52CD, [14214] = 0x530E,
+-  [14215] = 0x539E, [14216] = 0x5526, [14217] = 0x54E2, [14218] = 0x5517,
+-  [14219] = 0x5512, [14220] = 0x54E7, [14221] = 0x54F3, [14222] = 0x54E4,
+-  [14223] = 0x551A, [14224] = 0x54FF, [14225] = 0x5504, [14226] = 0x5508,
+-  [14227] = 0x54EB, [14228] = 0x5511, [14229] = 0x5505, [14230] = 0x54F1,
+-  [14235] = 0x550A, [14236] = 0x54FB, [14237] = 0x54F7, [14238] = 0x54F8,
+-  [14239] = 0x54E0, [14240] = 0x550E, [14241] = 0x5503, [14242] = 0x550B,
+-  [14243] = 0x5701, [14244] = 0x5702, [14245] = 0x57CC, [14246] = 0x5832,
+-  [14247] = 0x57D5, [14248] = 0x57D2, [14249] = 0x57BA, [14250] = 0x57C6,
+-  [14251] = 0x57BD, [14252] = 0x57BC, [14253] = 0x57B8, [14254] = 0x57B6,
+-  [14255] = 0x57BF, [14256] = 0x57C7, [14257] = 0x57D0, [14258] = 0x57B9,
+-  [14259] = 0x57C1, [14260] = 0x590E, [14261] = 0x594A, [14262] = 0x5A19,
+-  [14263] = 0x5A16, [14264] = 0x5A2D, [14265] = 0x5A2E, [14266] = 0x5A15,
+-  [14267] = 0x5A0F, [14268] = 0x5A17, [14269] = 0x5A0A, [14270] = 0x5A1E,
+-  [14271] = 0x5A33, [14272] = 0x5B6C, [14273] = 0x5BA7, [14274] = 0x5BAD,
+-  [14275] = 0x5BAC, [14276] = 0x5C03, [14277] = 0x5C56, [14278] = 0x5C54,
+-  [14279] = 0x5CEC, [14280] = 0x5CFF, [14281] = 0x5CEE, [14282] = 0x5CF1,
+-  [14283] = 0x5CF7, [14284] = 0x5D00, [14285] = 0x5CF9, [14286] = 0x5E29,
+-  [14287] = 0x5E28, [14288] = 0x5EA8, [14289] = 0x5EAE, [14290] = 0x5EAA,
+-  [14291] = 0x5EAC, [14292] = 0x5F33, [14293] = 0x5F30, [14294] = 0x5F67,
+-  [14295] = 0x605D, [14296] = 0x605A, [14297] = 0x6067, [14332] = 0x6041,
+-  [14333] = 0x60A2, [14334] = 0x6088, [14335] = 0x6080, [14336] = 0x6092,
+-  [14337] = 0x6081, [14338] = 0x609D, [14339] = 0x6083, [14340] = 0x6095,
+-  [14341] = 0x609B, [14342] = 0x6097, [14343] = 0x6087, [14344] = 0x609C,
+-  [14345] = 0x608E, [14346] = 0x6219, [14347] = 0x6246, [14348] = 0x62F2,
+-  [14349] = 0x6310, [14350] = 0x6356, [14351] = 0x632C, [14352] = 0x6344,
+-  [14353] = 0x6345, [14354] = 0x6336, [14355] = 0x6343, [14356] = 0x63E4,
+-  [14357] = 0x6339, [14358] = 0x634B, [14359] = 0x634A, [14360] = 0x633C,
+-  [14361] = 0x6329, [14362] = 0x6341, [14363] = 0x6334, [14364] = 0x6358,
+-  [14365] = 0x6354, [14366] = 0x6359, [14367] = 0x632D, [14368] = 0x6347,
+-  [14369] = 0x6333, [14370] = 0x635A, [14371] = 0x6351, [14372] = 0x6338,
+-  [14373] = 0x6357, [14374] = 0x6340, [14375] = 0x6348, [14376] = 0x654A,
+-  [14377] = 0x6546, [14378] = 0x65C6, [14379] = 0x65C3, [14380] = 0x65C4,
+-  [14381] = 0x65C2, [14382] = 0x664A, [14383] = 0x665F, [14384] = 0x6647,
+-  [14385] = 0x6651, [14386] = 0x6712, [14387] = 0x6713, [14388] = 0x681F,
+-  [14389] = 0x681A, [14390] = 0x6849, [14391] = 0x6832, [14392] = 0x6833,
+-  [14393] = 0x683B, [14394] = 0x684B, [14395] = 0x684F, [14396] = 0x6816,
+-  [14397] = 0x6831, [14398] = 0x681C, [14399] = 0x6835, [14400] = 0x682B,
+-  [14401] = 0x682D, [14402] = 0x682F, [14403] = 0x684E, [14404] = 0x6844,
+-  [14405] = 0x6834, [14406] = 0x681D, [14407] = 0x6812, [14408] = 0x6814,
+-  [14409] = 0x6826, [14410] = 0x6828, [14411] = 0x682E, [14412] = 0x684D,
+-  [14413] = 0x683A, [14414] = 0x6825, [14415] = 0x6820, [14416] = 0x6B2C,
+-  [14417] = 0x6B2F, [14418] = 0x6B2D, [14419] = 0x6B31, [14420] = 0x6B34,
+-  [14421] = 0x6B6D, [14422] = 0x8082, [14423] = 0x6B88, [14424] = 0x6BE6,
+-  [14425] = 0x6BE4, [14430] = 0x6BE8, [14431] = 0x6BE3, [14432] = 0x6BE2,
+-  [14433] = 0x6BE7, [14434] = 0x6C25, [14435] = 0x6D7A, [14436] = 0x6D63,
+-  [14437] = 0x6D64, [14438] = 0x6D76, [14439] = 0x6D0D, [14440] = 0x6D61,
+-  [14441] = 0x6D92, [14442] = 0x6D58, [14443] = 0x6D62, [14444] = 0x6D6D,
+-  [14445] = 0x6D6F, [14446] = 0x6D91, [14447] = 0x6D8D, [14448] = 0x6DEF,
+-  [14449] = 0x6D7F, [14450] = 0x6D86, [14451] = 0x6D5E, [14452] = 0x6D67,
+-  [14453] = 0x6D60, [14454] = 0x6D97, [14455] = 0x6D70, [14456] = 0x6D7C,
+-  [14457] = 0x6D5F, [14458] = 0x6D82, [14459] = 0x6D98, [14460] = 0x6D2F,
+-  [14461] = 0x6D68, [14462] = 0x6D8B, [14463] = 0x6D7E, [14464] = 0x6D80,
+-  [14465] = 0x6D84, [14466] = 0x6D16, [14467] = 0x6D83, [14468] = 0x6D7B,
+-  [14469] = 0x6D7D, [14470] = 0x6D75, [14471] = 0x6D90, [14472] = 0x70DC,
+-  [14473] = 0x70D3, [14474] = 0x70D1, [14475] = 0x70DD, [14476] = 0x70CB,
+-  [14477] = 0x7F39, [14478] = 0x70E2, [14479] = 0x70D7, [14480] = 0x70D2,
+-  [14481] = 0x70DE, [14482] = 0x70E0, [14483] = 0x70D4, [14484] = 0x70CD,
+-  [14485] = 0x70C5, [14486] = 0x70C6, [14487] = 0x70C7, [14488] = 0x70DA,
+-  [14489] = 0x70CE, [14490] = 0x70E1, [14491] = 0x7242, [14492] = 0x7278,
+-  [14527] = 0x7277, [14528] = 0x7276, [14529] = 0x7300, [14530] = 0x72FA,
+-  [14531] = 0x72F4, [14532] = 0x72FE, [14533] = 0x72F6, [14534] = 0x72F3,
+-  [14535] = 0x72FB, [14536] = 0x7301, [14537] = 0x73D3, [14538] = 0x73D9,
+-  [14539] = 0x73E5, [14540] = 0x73D6, [14541] = 0x73BC, [14542] = 0x73E7,
+-  [14543] = 0x73E3, [14544] = 0x73E9, [14545] = 0x73DC, [14546] = 0x73D2,
+-  [14547] = 0x73DB, [14548] = 0x73D4, [14549] = 0x73DD, [14550] = 0x73DA,
+-  [14551] = 0x73D7, [14552] = 0x73D8, [14553] = 0x73E8, [14554] = 0x74DE,
+-  [14555] = 0x74DF, [14556] = 0x74F4, [14557] = 0x74F5, [14558] = 0x7521,
+-  [14559] = 0x755B, [14560] = 0x755F, [14561] = 0x75B0, [14562] = 0x75C1,
+-  [14563] = 0x75BB, [14564] = 0x75C4, [14565] = 0x75C0, [14566] = 0x75BF,
+-  [14567] = 0x75B6, [14568] = 0x75BA, [14569] = 0x768A, [14570] = 0x76C9,
+-  [14571] = 0x771D, [14572] = 0x771B, [14573] = 0x7710, [14574] = 0x7713,
+-  [14575] = 0x7712, [14576] = 0x7723, [14577] = 0x7711, [14578] = 0x7715,
+-  [14579] = 0x7719, [14580] = 0x771A, [14581] = 0x7722, [14582] = 0x7727,
+-  [14583] = 0x7823, [14584] = 0x782C, [14585] = 0x7822, [14586] = 0x7835,
+-  [14587] = 0x782F, [14588] = 0x7828, [14589] = 0x782E, [14590] = 0x782B,
+-  [14591] = 0x7821, [14592] = 0x7829, [14593] = 0x7833, [14594] = 0x782A,
+-  [14595] = 0x7831, [14596] = 0x7954, [14597] = 0x795B, [14598] = 0x794F,
+-  [14599] = 0x795C, [14600] = 0x7953, [14601] = 0x7952, [14602] = 0x7951,
+-  [14603] = 0x79EB, [14604] = 0x79EC, [14605] = 0x79E0, [14606] = 0x79EE,
+-  [14607] = 0x79ED, [14608] = 0x79EA, [14609] = 0x79DC, [14610] = 0x79DE,
+-  [14611] = 0x79DD, [14612] = 0x7A86, [14613] = 0x7A89, [14614] = 0x7A85,
+-  [14615] = 0x7A8B, [14616] = 0x7A8C, [14617] = 0x7A8A, [14618] = 0x7A87,
+-  [14619] = 0x7AD8, [14620] = 0x7B10, [14625] = 0x7B04, [14626] = 0x7B13,
+-  [14627] = 0x7B05, [14628] = 0x7B0F, [14629] = 0x7B08, [14630] = 0x7B0A,
+-  [14631] = 0x7B0E, [14632] = 0x7B09, [14633] = 0x7B12, [14634] = 0x7C84,
+-  [14635] = 0x7C91, [14636] = 0x7C8A, [14637] = 0x7C8C, [14638] = 0x7C88,
+-  [14639] = 0x7C8D, [14640] = 0x7C85, [14641] = 0x7D1E, [14642] = 0x7D1D,
+-  [14643] = 0x7D11, [14644] = 0x7D0E, [14645] = 0x7D18, [14646] = 0x7D16,
+-  [14647] = 0x7D13, [14648] = 0x7D1F, [14649] = 0x7D12, [14650] = 0x7D0F,
+-  [14651] = 0x7D0C, [14652] = 0x7F5C, [14653] = 0x7F61, [14654] = 0x7F5E,
+-  [14655] = 0x7F60, [14656] = 0x7F5D, [14657] = 0x7F5B, [14658] = 0x7F96,
+-  [14659] = 0x7F92, [14660] = 0x7FC3, [14661] = 0x7FC2, [14662] = 0x7FC0,
+-  [14663] = 0x8016, [14664] = 0x803E, [14665] = 0x8039, [14666] = 0x80FA,
+-  [14667] = 0x80F2, [14668] = 0x80F9, [14669] = 0x80F5, [14670] = 0x8101,
+-  [14671] = 0x80FB, [14672] = 0x8100, [14673] = 0x8201, [14674] = 0x822F,
+-  [14675] = 0x8225, [14676] = 0x8333, [14677] = 0x832D, [14678] = 0x8344,
+-  [14679] = 0x8319, [14680] = 0x8351, [14681] = 0x8325, [14682] = 0x8356,
+-  [14683] = 0x833F, [14684] = 0x8341, [14685] = 0x8326, [14686] = 0x831C,
+-  [14687] = 0x8322, [14722] = 0x8342, [14723] = 0x834E, [14724] = 0x831B,
+-  [14725] = 0x832A, [14726] = 0x8308, [14727] = 0x833C, [14728] = 0x834D,
+-  [14729] = 0x8316, [14730] = 0x8324, [14731] = 0x8320, [14732] = 0x8337,
+-  [14733] = 0x832F, [14734] = 0x8329, [14735] = 0x8347, [14736] = 0x8345,
+-  [14737] = 0x834C, [14738] = 0x8353, [14739] = 0x831E, [14740] = 0x832C,
+-  [14741] = 0x834B, [14742] = 0x8327, [14743] = 0x8348, [14744] = 0x8653,
+-  [14745] = 0x8652, [14746] = 0x86A2, [14747] = 0x86A8, [14748] = 0x8696,
+-  [14749] = 0x868D, [14750] = 0x8691, [14751] = 0x869E, [14752] = 0x8687,
+-  [14753] = 0x8697, [14754] = 0x8686, [14755] = 0x868B, [14756] = 0x869A,
+-  [14757] = 0x8685, [14758] = 0x86A5, [14759] = 0x8699, [14760] = 0x86A1,
+-  [14761] = 0x86A7, [14762] = 0x8695, [14763] = 0x8698, [14764] = 0x868E,
+-  [14765] = 0x869D, [14766] = 0x8690, [14767] = 0x8694, [14768] = 0x8843,
+-  [14769] = 0x8844, [14770] = 0x886D, [14771] = 0x8875, [14772] = 0x8876,
+-  [14773] = 0x8872, [14774] = 0x8880, [14775] = 0x8871, [14776] = 0x887F,
+-  [14777] = 0x886F, [14778] = 0x8883, [14779] = 0x887E, [14780] = 0x8874,
+-  [14781] = 0x887C, [14782] = 0x8A12, [14783] = 0x8C47, [14784] = 0x8C57,
+-  [14785] = 0x8C7B, [14786] = 0x8CA4, [14787] = 0x8CA3, [14788] = 0x8D76,
+-  [14789] = 0x8D78, [14790] = 0x8DB5, [14791] = 0x8DB7, [14792] = 0x8DB6,
+-  [14793] = 0x8ED1, [14794] = 0x8ED3, [14795] = 0x8FFE, [14796] = 0x8FF5,
+-  [14797] = 0x9002, [14798] = 0x8FFF, [14799] = 0x8FFB, [14800] = 0x9004,
+-  [14801] = 0x8FFC, [14802] = 0x8FF6, [14803] = 0x90D6, [14804] = 0x90E0,
+-  [14805] = 0x90D9, [14806] = 0x90DA, [14807] = 0x90E3, [14808] = 0x90DF,
+-  [14809] = 0x90E5, [14810] = 0x90D8, [14811] = 0x90DB, [14812] = 0x90D7,
+-  [14813] = 0x90DC, [14814] = 0x90E4, [14815] = 0x9150, [14820] = 0x914E,
+-  [14821] = 0x914F, [14822] = 0x91D5, [14823] = 0x91E2, [14824] = 0x91DA,
+-  [14825] = 0x965C, [14826] = 0x965F, [14827] = 0x96BC, [14828] = 0x98E3,
+-  [14829] = 0x9ADF, [14830] = 0x9B2F, [14831] = 0x4E7F, [14832] = 0x5070,
+-  [14833] = 0x506A, [14834] = 0x5061, [14835] = 0x505E, [14836] = 0x5060,
+-  [14837] = 0x5053, [14838] = 0x504B, [14839] = 0x505D, [14840] = 0x5072,
+-  [14841] = 0x5048, [14842] = 0x504D, [14843] = 0x5041, [14844] = 0x505B,
+-  [14845] = 0x504A, [14846] = 0x5062, [14847] = 0x5015, [14848] = 0x5045,
+-  [14849] = 0x505F, [14850] = 0x5069, [14851] = 0x506B, [14852] = 0x5063,
+-  [14853] = 0x5064, [14854] = 0x5046, [14855] = 0x5040, [14856] = 0x506E,
+-  [14857] = 0x5073, [14858] = 0x5057, [14859] = 0x5051, [14860] = 0x51D0,
+-  [14861] = 0x526B, [14862] = 0x526D, [14863] = 0x526C, [14864] = 0x526E,
+-  [14865] = 0x52D6, [14866] = 0x52D3, [14867] = 0x532D, [14868] = 0x539C,
+-  [14869] = 0x5575, [14870] = 0x5576, [14871] = 0x553C, [14872] = 0x554D,
+-  [14873] = 0x5550, [14874] = 0x5534, [14875] = 0x552A, [14876] = 0x5551,
+-  [14877] = 0x5562, [14878] = 0x5536, [14879] = 0x5535, [14880] = 0x5530,
+-  [14881] = 0x5552, [14882] = 0x5545, [14917] = 0x550C, [14918] = 0x5532,
+-  [14919] = 0x5565, [14920] = 0x554E, [14921] = 0x5539, [14922] = 0x5548,
+-  [14923] = 0x552D, [14924] = 0x553B, [14925] = 0x5540, [14926] = 0x554B,
+-  [14927] = 0x570A, [14928] = 0x5707, [14929] = 0x57FB, [14930] = 0x5814,
+-  [14931] = 0x57E2, [14932] = 0x57F6, [14933] = 0x57DC, [14934] = 0x57F4,
+-  [14935] = 0x5800, [14936] = 0x57ED, [14937] = 0x57FD, [14938] = 0x5808,
+-  [14939] = 0x57F8, [14940] = 0x580B, [14941] = 0x57F3, [14942] = 0x57CF,
+-  [14943] = 0x5807, [14944] = 0x57EE, [14945] = 0x57E3, [14946] = 0x57F2,
+-  [14947] = 0x57E5, [14948] = 0x57EC, [14949] = 0x57E1, [14950] = 0x580E,
+-  [14951] = 0x57FC, [14952] = 0x5810, [14953] = 0x57E7, [14954] = 0x5801,
+-  [14955] = 0x580C, [14956] = 0x57F1, [14957] = 0x57E9, [14958] = 0x57F0,
+-  [14959] = 0x580D, [14960] = 0x5804, [14961] = 0x595C, [14962] = 0x5A60,
+-  [14963] = 0x5A58, [14964] = 0x5A55, [14965] = 0x5A67, [14966] = 0x5A5E,
+-  [14967] = 0x5A38, [14968] = 0x5A35, [14969] = 0x5A6D, [14970] = 0x5A50,
+-  [14971] = 0x5A5F, [14972] = 0x5A65, [14973] = 0x5A6C, [14974] = 0x5A53,
+-  [14975] = 0x5A64, [14976] = 0x5A57, [14977] = 0x5A43, [14978] = 0x5A5D,
+-  [14979] = 0x5A52, [14980] = 0x5A44, [14981] = 0x5A5B, [14982] = 0x5A48,
+-  [14983] = 0x5A8E, [14984] = 0x5A3E, [14985] = 0x5A4D, [14986] = 0x5A39,
+-  [14987] = 0x5A4C, [14988] = 0x5A70, [14989] = 0x5A69, [14990] = 0x5A47,
+-  [14991] = 0x5A51, [14992] = 0x5A56, [14993] = 0x5A42, [14994] = 0x5A5C,
+-  [14995] = 0x5B72, [14996] = 0x5B6E, [14997] = 0x5BC1, [14998] = 0x5BC0,
+-  [14999] = 0x5C59, [15000] = 0x5D1E, [15001] = 0x5D0B, [15002] = 0x5D1D,
+-  [15003] = 0x5D1A, [15004] = 0x5D20, [15005] = 0x5D0C, [15006] = 0x5D28,
+-  [15007] = 0x5D0D, [15008] = 0x5D26, [15009] = 0x5D25, [15010] = 0x5D0F,
+-  [15015] = 0x5D30, [15016] = 0x5D12, [15017] = 0x5D23, [15018] = 0x5D1F,
+-  [15019] = 0x5D2E, [15020] = 0x5E3E, [15021] = 0x5E34, [15022] = 0x5EB1,
+-  [15023] = 0x5EB4, [15024] = 0x5EB9, [15025] = 0x5EB2, [15026] = 0x5EB3,
+-  [15027] = 0x5F36, [15028] = 0x5F38, [15029] = 0x5F9B, [15030] = 0x5F96,
+-  [15031] = 0x5F9F, [15032] = 0x608A, [15033] = 0x6090, [15034] = 0x6086,
+-  [15035] = 0x60BE, [15036] = 0x60B0, [15037] = 0x60BA, [15038] = 0x60D3,
+-  [15039] = 0x60D4, [15040] = 0x60CF, [15041] = 0x60E4, [15042] = 0x60D9,
+-  [15043] = 0x60DD, [15044] = 0x60C8, [15045] = 0x60B1, [15046] = 0x60DB,
+-  [15047] = 0x60B7, [15048] = 0x60CA, [15049] = 0x60BF, [15050] = 0x60C3,
+-  [15051] = 0x60CD, [15052] = 0x60C0, [15053] = 0x6332, [15054] = 0x6365,
+-  [15055] = 0x638A, [15056] = 0x6382, [15057] = 0x637D, [15058] = 0x63BD,
+-  [15059] = 0x639E, [15060] = 0x63AD, [15061] = 0x639D, [15062] = 0x6397,
+-  [15063] = 0x63AB, [15064] = 0x638E, [15065] = 0x636F, [15066] = 0x6387,
+-  [15067] = 0x6390, [15068] = 0x636E, [15069] = 0x63AF, [15070] = 0x6375,
+-  [15071] = 0x639C, [15072] = 0x636D, [15073] = 0x63AE, [15074] = 0x637C,
+-  [15075] = 0x63A4, [15076] = 0x633B, [15077] = 0x639F, [15112] = 0x6378,
+-  [15113] = 0x6385, [15114] = 0x6381, [15115] = 0x6391, [15116] = 0x638D,
+-  [15117] = 0x6370, [15118] = 0x6553, [15119] = 0x65CD, [15120] = 0x6665,
+-  [15121] = 0x6661, [15122] = 0x665B, [15123] = 0x6659, [15124] = 0x665C,
+-  [15125] = 0x6662, [15126] = 0x6718, [15127] = 0x6879, [15128] = 0x6887,
+-  [15129] = 0x6890, [15130] = 0x689C, [15131] = 0x686D, [15132] = 0x686E,
+-  [15133] = 0x68AE, [15134] = 0x68AB, [15135] = 0x6956, [15136] = 0x686F,
+-  [15137] = 0x68A3, [15138] = 0x68AC, [15139] = 0x68A9, [15140] = 0x6875,
+-  [15141] = 0x6874, [15142] = 0x68B2, [15143] = 0x688F, [15144] = 0x6877,
+-  [15145] = 0x6892, [15146] = 0x687C, [15147] = 0x686B, [15148] = 0x6872,
+-  [15149] = 0x68AA, [15150] = 0x6880, [15151] = 0x6871, [15152] = 0x687E,
+-  [15153] = 0x689B, [15154] = 0x6896, [15155] = 0x688B, [15156] = 0x68A0,
+-  [15157] = 0x6889, [15158] = 0x68A4, [15159] = 0x6878, [15160] = 0x687B,
+-  [15161] = 0x6891, [15162] = 0x688C, [15163] = 0x688A, [15164] = 0x687D,
+-  [15165] = 0x6B36, [15166] = 0x6B33, [15167] = 0x6B37, [15168] = 0x6B38,
+-  [15169] = 0x6B91, [15170] = 0x6B8F, [15171] = 0x6B8D, [15172] = 0x6B8E,
+-  [15173] = 0x6B8C, [15174] = 0x6C2A, [15175] = 0x6DC0, [15176] = 0x6DAB,
+-  [15177] = 0x6DB4, [15178] = 0x6DB3, [15179] = 0x6E74, [15180] = 0x6DAC,
+-  [15181] = 0x6DE9, [15182] = 0x6DE2, [15183] = 0x6DB7, [15184] = 0x6DF6,
+-  [15185] = 0x6DD4, [15186] = 0x6E00, [15187] = 0x6DC8, [15188] = 0x6DE0,
+-  [15189] = 0x6DDF, [15190] = 0x6DD6, [15191] = 0x6DBE, [15192] = 0x6DE5,
+-  [15193] = 0x6DDC, [15194] = 0x6DDD, [15195] = 0x6DDB, [15196] = 0x6DF4,
+-  [15197] = 0x6DCA, [15198] = 0x6DBD, [15199] = 0x6DED, [15200] = 0x6DF0,
+-  [15201] = 0x6DBA, [15202] = 0x6DD5, [15203] = 0x6DC2, [15204] = 0x6DCF,
+-  [15205] = 0x6DC9, [15210] = 0x6DD0, [15211] = 0x6DF2, [15212] = 0x6DD3,
+-  [15213] = 0x6DFD, [15214] = 0x6DD7, [15215] = 0x6DCD, [15216] = 0x6DE3,
+-  [15217] = 0x6DBB, [15218] = 0x70FA, [15219] = 0x710D, [15220] = 0x70F7,
+-  [15221] = 0x7117, [15222] = 0x70F4, [15223] = 0x710C, [15224] = 0x70F0,
+-  [15225] = 0x7104, [15226] = 0x70F3, [15227] = 0x7110, [15228] = 0x70FC,
+-  [15229] = 0x70FF, [15230] = 0x7106, [15231] = 0x7113, [15232] = 0x7100,
+-  [15233] = 0x70F8, [15234] = 0x70F6, [15235] = 0x710B, [15236] = 0x7102,
+-  [15237] = 0x710E, [15238] = 0x727E, [15239] = 0x727B, [15240] = 0x727C,
+-  [15241] = 0x727F, [15242] = 0x731D, [15243] = 0x7317, [15244] = 0x7307,
+-  [15245] = 0x7311, [15246] = 0x7318, [15247] = 0x730A, [15248] = 0x7308,
+-  [15249] = 0x72FF, [15250] = 0x730F, [15251] = 0x731E, [15252] = 0x7388,
+-  [15253] = 0x73F6, [15254] = 0x73F8, [15255] = 0x73F5, [15256] = 0x7404,
+-  [15257] = 0x7401, [15258] = 0x73FD, [15259] = 0x7407, [15260] = 0x7400,
+-  [15261] = 0x73FA, [15262] = 0x73FC, [15263] = 0x73FF, [15264] = 0x740C,
+-  [15265] = 0x740B, [15266] = 0x73F4, [15267] = 0x7408, [15268] = 0x7564,
+-  [15269] = 0x7563, [15270] = 0x75CE, [15271] = 0x75D2, [15272] = 0x75CF,
+-  [15307] = 0x75CB, [15308] = 0x75CC, [15309] = 0x75D1, [15310] = 0x75D0,
+-  [15311] = 0x768F, [15312] = 0x7689, [15313] = 0x76D3, [15314] = 0x7739,
+-  [15315] = 0x772F, [15316] = 0x772D, [15317] = 0x7731, [15318] = 0x7732,
+-  [15319] = 0x7734, [15320] = 0x7733, [15321] = 0x773D, [15322] = 0x7725,
+-  [15323] = 0x773B, [15324] = 0x7735, [15325] = 0x7848, [15326] = 0x7852,
+-  [15327] = 0x7849, [15328] = 0x784D, [15329] = 0x784A, [15330] = 0x784C,
+-  [15331] = 0x7826, [15332] = 0x7845, [15333] = 0x7850, [15334] = 0x7964,
+-  [15335] = 0x7967, [15336] = 0x7969, [15337] = 0x796A, [15338] = 0x7963,
+-  [15339] = 0x796B, [15340] = 0x7961, [15341] = 0x79BB, [15342] = 0x79FA,
+-  [15343] = 0x79F8, [15344] = 0x79F6, [15345] = 0x79F7, [15346] = 0x7A8F,
+-  [15347] = 0x7A94, [15348] = 0x7A90, [15349] = 0x7B35, [15350] = 0x7B47,
+-  [15351] = 0x7B34, [15352] = 0x7B25, [15353] = 0x7B30, [15354] = 0x7B22,
+-  [15355] = 0x7B24, [15356] = 0x7B33, [15357] = 0x7B18, [15358] = 0x7B2A,
+-  [15359] = 0x7B1D, [15360] = 0x7B31, [15361] = 0x7B2B, [15362] = 0x7B2D,
+-  [15363] = 0x7B2F, [15364] = 0x7B32, [15365] = 0x7B38, [15366] = 0x7B1A,
+-  [15367] = 0x7B23, [15368] = 0x7C94, [15369] = 0x7C98, [15370] = 0x7C96,
+-  [15371] = 0x7CA3, [15372] = 0x7D35, [15373] = 0x7D3D, [15374] = 0x7D38,
+-  [15375] = 0x7D36, [15376] = 0x7D3A, [15377] = 0x7D45, [15378] = 0x7D2C,
+-  [15379] = 0x7D29, [15380] = 0x7D41, [15381] = 0x7D47, [15382] = 0x7D3E,
+-  [15383] = 0x7D3F, [15384] = 0x7D4A, [15385] = 0x7D3B, [15386] = 0x7D28,
+-  [15387] = 0x7F63, [15388] = 0x7F95, [15389] = 0x7F9C, [15390] = 0x7F9D,
+-  [15391] = 0x7F9B, [15392] = 0x7FCA, [15393] = 0x7FCB, [15394] = 0x7FCD,
+-  [15395] = 0x7FD0, [15396] = 0x7FD1, [15397] = 0x7FC7, [15398] = 0x7FCF,
+-  [15399] = 0x7FC9, [15400] = 0x801F, [15405] = 0x801E, [15406] = 0x801B,
+-  [15407] = 0x8047, [15408] = 0x8043, [15409] = 0x8048, [15410] = 0x8118,
+-  [15411] = 0x8125, [15412] = 0x8119, [15413] = 0x811B, [15414] = 0x812D,
+-  [15415] = 0x811F, [15416] = 0x812C, [15417] = 0x811E, [15418] = 0x8121,
+-  [15419] = 0x8115, [15420] = 0x8127, [15421] = 0x811D, [15422] = 0x8122,
+-  [15423] = 0x8211, [15424] = 0x8238, [15425] = 0x8233, [15426] = 0x823A,
+-  [15427] = 0x8234, [15428] = 0x8232, [15429] = 0x8274, [15430] = 0x8390,
+-  [15431] = 0x83A3, [15432] = 0x83A8, [15433] = 0x838D, [15434] = 0x837A,
+-  [15435] = 0x8373, [15436] = 0x83A4, [15437] = 0x8374, [15438] = 0x838F,
+-  [15439] = 0x8381, [15440] = 0x8395, [15441] = 0x8399, [15442] = 0x8375,
+-  [15443] = 0x8394, [15444] = 0x83A9, [15445] = 0x837D, [15446] = 0x8383,
+-  [15447] = 0x838C, [15448] = 0x839D, [15449] = 0x839B, [15450] = 0x83AA,
+-  [15451] = 0x838B, [15452] = 0x837E, [15453] = 0x83A5, [15454] = 0x83AF,
+-  [15455] = 0x8388, [15456] = 0x8397, [15457] = 0x83B0, [15458] = 0x837F,
+-  [15459] = 0x83A6, [15460] = 0x8387, [15461] = 0x83AE, [15462] = 0x8376,
+-  [15463] = 0x839A, [15464] = 0x8659, [15465] = 0x8656, [15466] = 0x86BF,
+-  [15467] = 0x86B7, [15502] = 0x86C2, [15503] = 0x86C1, [15504] = 0x86C5,
+-  [15505] = 0x86BA, [15506] = 0x86B0, [15507] = 0x86C8, [15508] = 0x86B9,
+-  [15509] = 0x86B3, [15510] = 0x86B8, [15511] = 0x86CC, [15512] = 0x86B4,
+-  [15513] = 0x86BB, [15514] = 0x86BC, [15515] = 0x86C3, [15516] = 0x86BD,
+-  [15517] = 0x86BE, [15518] = 0x8852, [15519] = 0x8889, [15520] = 0x8895,
+-  [15521] = 0x88A8, [15522] = 0x88A2, [15523] = 0x88AA, [15524] = 0x889A,
+-  [15525] = 0x8891, [15526] = 0x88A1, [15527] = 0x889F, [15528] = 0x8898,
+-  [15529] = 0x88A7, [15530] = 0x8899, [15531] = 0x889B, [15532] = 0x8897,
+-  [15533] = 0x88A4, [15534] = 0x88AC, [15535] = 0x888C, [15536] = 0x8893,
+-  [15537] = 0x888E, [15538] = 0x8982, [15539] = 0x89D6, [15540] = 0x89D9,
+-  [15541] = 0x89D5, [15542] = 0x8A30, [15543] = 0x8A27, [15544] = 0x8A2C,
+-  [15545] = 0x8A1E, [15546] = 0x8C39, [15547] = 0x8C3B, [15548] = 0x8C5C,
+-  [15549] = 0x8C5D, [15550] = 0x8C7D, [15551] = 0x8CA5, [15552] = 0x8D7D,
+-  [15553] = 0x8D7B, [15554] = 0x8D79, [15555] = 0x8DBC, [15556] = 0x8DC2,
+-  [15557] = 0x8DB9, [15558] = 0x8DBF, [15559] = 0x8DC1, [15560] = 0x8ED8,
+-  [15561] = 0x8EDE, [15562] = 0x8EDD, [15563] = 0x8EDC, [15564] = 0x8ED7,
+-  [15565] = 0x8EE0, [15566] = 0x8EE1, [15567] = 0x9024, [15568] = 0x900B,
+-  [15569] = 0x9011, [15570] = 0x901C, [15571] = 0x900C, [15572] = 0x9021,
+-  [15573] = 0x90EF, [15574] = 0x90EA, [15575] = 0x90F0, [15576] = 0x90F4,
+-  [15577] = 0x90F2, [15578] = 0x90F3, [15579] = 0x90D4, [15580] = 0x90EB,
+-  [15581] = 0x90EC, [15582] = 0x90E9, [15583] = 0x9156, [15584] = 0x9158,
+-  [15585] = 0x915A, [15586] = 0x9153, [15587] = 0x9155, [15588] = 0x91EC,
+-  [15589] = 0x91F4, [15590] = 0x91F1, [15591] = 0x91F3, [15592] = 0x91F8,
+-  [15593] = 0x91E4, [15594] = 0x91F9, [15595] = 0x91EA, [15600] = 0x91EB,
+-  [15601] = 0x91F7, [15602] = 0x91E8, [15603] = 0x91EE, [15604] = 0x957A,
+-  [15605] = 0x9586, [15606] = 0x9588, [15607] = 0x967C, [15608] = 0x966D,
+-  [15609] = 0x966B, [15610] = 0x9671, [15611] = 0x966F, [15612] = 0x96BF,
+-  [15613] = 0x976A, [15614] = 0x9804, [15615] = 0x98E5, [15616] = 0x9997,
+-  [15617] = 0x509B, [15618] = 0x5095, [15619] = 0x5094, [15620] = 0x509E,
+-  [15621] = 0x508B, [15622] = 0x50A3, [15623] = 0x5083, [15624] = 0x508C,
+-  [15625] = 0x508E, [15626] = 0x509D, [15627] = 0x5068, [15628] = 0x509C,
+-  [15629] = 0x5092, [15630] = 0x5082, [15631] = 0x5087, [15632] = 0x515F,
+-  [15633] = 0x51D4, [15634] = 0x5312, [15635] = 0x5311, [15636] = 0x53A4,
+-  [15637] = 0x53A7, [15638] = 0x5591, [15639] = 0x55A8, [15640] = 0x55A5,
+-  [15641] = 0x55AD, [15642] = 0x5577, [15643] = 0x5645, [15644] = 0x55A2,
+-  [15645] = 0x5593, [15646] = 0x5588, [15647] = 0x558F, [15648] = 0x55B5,
+-  [15649] = 0x5581, [15650] = 0x55A3, [15651] = 0x5592, [15652] = 0x55A4,
+-  [15653] = 0x557D, [15654] = 0x558C, [15655] = 0x55A6, [15656] = 0x557F,
+-  [15657] = 0x5595, [15658] = 0x55A1, [15659] = 0x558E, [15660] = 0x570C,
+-  [15661] = 0x5829, [15662] = 0x5837, [15697] = 0x5819, [15698] = 0x581E,
+-  [15699] = 0x5827, [15700] = 0x5823, [15701] = 0x5828, [15702] = 0x57F5,
+-  [15703] = 0x5848, [15704] = 0x5825, [15705] = 0x581C, [15706] = 0x581B,
+-  [15707] = 0x5833, [15708] = 0x583F, [15709] = 0x5836, [15710] = 0x582E,
+-  [15711] = 0x5839, [15712] = 0x5838, [15713] = 0x582D, [15714] = 0x582C,
+-  [15715] = 0x583B, [15716] = 0x5961, [15717] = 0x5AAF, [15718] = 0x5A94,
+-  [15719] = 0x5A9F, [15720] = 0x5A7A, [15721] = 0x5AA2, [15722] = 0x5A9E,
+-  [15723] = 0x5A78, [15724] = 0x5AA6, [15725] = 0x5A7C, [15726] = 0x5AA5,
+-  [15727] = 0x5AAC, [15728] = 0x5A95, [15729] = 0x5AAE, [15730] = 0x5A37,
+-  [15731] = 0x5A84, [15732] = 0x5A8A, [15733] = 0x5A97, [15734] = 0x5A83,
+-  [15735] = 0x5A8B, [15736] = 0x5AA9, [15737] = 0x5A7B, [15738] = 0x5A7D,
+-  [15739] = 0x5A8C, [15740] = 0x5A9C, [15741] = 0x5A8F, [15742] = 0x5A93,
+-  [15743] = 0x5A9D, [15744] = 0x5BEA, [15745] = 0x5BCD, [15746] = 0x5BCB,
+-  [15747] = 0x5BD4, [15748] = 0x5BD1, [15749] = 0x5BCA, [15750] = 0x5BCE,
+-  [15751] = 0x5C0C, [15752] = 0x5C30, [15753] = 0x5D37, [15754] = 0x5D43,
+-  [15755] = 0x5D6B, [15756] = 0x5D41, [15757] = 0x5D4B, [15758] = 0x5D3F,
+-  [15759] = 0x5D35, [15760] = 0x5D51, [15761] = 0x5D4E, [15762] = 0x5D55,
+-  [15763] = 0x5D33, [15764] = 0x5D3A, [15765] = 0x5D52, [15766] = 0x5D3D,
+-  [15767] = 0x5D31, [15768] = 0x5D59, [15769] = 0x5D42, [15770] = 0x5D39,
+-  [15771] = 0x5D49, [15772] = 0x5D38, [15773] = 0x5D3C, [15774] = 0x5D32,
+-  [15775] = 0x5D36, [15776] = 0x5D40, [15777] = 0x5D45, [15778] = 0x5E44,
+-  [15779] = 0x5E41, [15780] = 0x5F58, [15781] = 0x5FA6, [15782] = 0x5FA5,
+-  [15783] = 0x5FAB, [15784] = 0x60C9, [15785] = 0x60B9, [15786] = 0x60CC,
+-  [15787] = 0x60E2, [15788] = 0x60CE, [15789] = 0x60C4, [15790] = 0x6114,
+-  [15795] = 0x60F2, [15796] = 0x610A, [15797] = 0x6116, [15798] = 0x6105,
+-  [15799] = 0x60F5, [15800] = 0x6113, [15801] = 0x60F8, [15802] = 0x60FC,
+-  [15803] = 0x60FE, [15804] = 0x60C1, [15805] = 0x6103, [15806] = 0x6118,
+-  [15807] = 0x611D, [15808] = 0x6110, [15809] = 0x60FF, [15810] = 0x6104,
+-  [15811] = 0x610B, [15812] = 0x624A, [15813] = 0x6394, [15814] = 0x63B1,
+-  [15815] = 0x63B0, [15816] = 0x63CE, [15817] = 0x63E5, [15818] = 0x63E8,
+-  [15819] = 0x63EF, [15820] = 0x63C3, [15821] = 0x649D, [15822] = 0x63F3,
+-  [15823] = 0x63CA, [15824] = 0x63E0, [15825] = 0x63F6, [15826] = 0x63D5,
+-  [15827] = 0x63F2, [15828] = 0x63F5, [15829] = 0x6461, [15830] = 0x63DF,
+-  [15831] = 0x63BE, [15832] = 0x63DD, [15833] = 0x63DC, [15834] = 0x63C4,
+-  [15835] = 0x63D8, [15836] = 0x63D3, [15837] = 0x63C2, [15838] = 0x63C7,
+-  [15839] = 0x63CC, [15840] = 0x63CB, [15841] = 0x63C8, [15842] = 0x63F0,
+-  [15843] = 0x63D7, [15844] = 0x63D9, [15845] = 0x6532, [15846] = 0x6567,
+-  [15847] = 0x656A, [15848] = 0x6564, [15849] = 0x655C, [15850] = 0x6568,
+-  [15851] = 0x6565, [15852] = 0x658C, [15853] = 0x659D, [15854] = 0x659E,
+-  [15855] = 0x65AE, [15856] = 0x65D0, [15857] = 0x65D2, [15892] = 0x667C,
+-  [15893] = 0x666C, [15894] = 0x667B, [15895] = 0x6680, [15896] = 0x6671,
+-  [15897] = 0x6679, [15898] = 0x666A, [15899] = 0x6672, [15900] = 0x6701,
+-  [15901] = 0x690C, [15902] = 0x68D3, [15903] = 0x6904, [15904] = 0x68DC,
+-  [15905] = 0x692A, [15906] = 0x68EC, [15907] = 0x68EA, [15908] = 0x68F1,
+-  [15909] = 0x690F, [15910] = 0x68D6, [15911] = 0x68F7, [15912] = 0x68EB,
+-  [15913] = 0x68E4, [15914] = 0x68F6, [15915] = 0x6913, [15916] = 0x6910,
+-  [15917] = 0x68F3, [15918] = 0x68E1, [15919] = 0x6907, [15920] = 0x68CC,
+-  [15921] = 0x6908, [15922] = 0x6970, [15923] = 0x68B4, [15924] = 0x6911,
+-  [15925] = 0x68EF, [15926] = 0x68C6, [15927] = 0x6914, [15928] = 0x68F8,
+-  [15929] = 0x68D0, [15930] = 0x68FD, [15931] = 0x68FC, [15932] = 0x68E8,
+-  [15933] = 0x690B, [15934] = 0x690A, [15935] = 0x6917, [15936] = 0x68CE,
+-  [15937] = 0x68C8, [15938] = 0x68DD, [15939] = 0x68DE, [15940] = 0x68E6,
+-  [15941] = 0x68F4, [15942] = 0x68D1, [15943] = 0x6906, [15944] = 0x68D4,
+-  [15945] = 0x68E9, [15946] = 0x6915, [15947] = 0x6925, [15948] = 0x68C7,
+-  [15949] = 0x6B39, [15950] = 0x6B3B, [15951] = 0x6B3F, [15952] = 0x6B3C,
+-  [15953] = 0x6B94, [15954] = 0x6B97, [15955] = 0x6B99, [15956] = 0x6B95,
+-  [15957] = 0x6BBD, [15958] = 0x6BF0, [15959] = 0x6BF2, [15960] = 0x6BF3,
+-  [15961] = 0x6C30, [15962] = 0x6DFC, [15963] = 0x6E46, [15964] = 0x6E47,
+-  [15965] = 0x6E1F, [15966] = 0x6E49, [15967] = 0x6E88, [15968] = 0x6E3C,
+-  [15969] = 0x6E3D, [15970] = 0x6E45, [15971] = 0x6E62, [15972] = 0x6E2B,
+-  [15973] = 0x6E3F, [15974] = 0x6E41, [15975] = 0x6E5D, [15976] = 0x6E73,
+-  [15977] = 0x6E1C, [15978] = 0x6E33, [15979] = 0x6E4B, [15980] = 0x6E40,
+-  [15981] = 0x6E51, [15982] = 0x6E3B, [15983] = 0x6E03, [15984] = 0x6E2E,
+-  [15985] = 0x6E5E, [15990] = 0x6E68, [15991] = 0x6E5C, [15992] = 0x6E61,
+-  [15993] = 0x6E31, [15994] = 0x6E28, [15995] = 0x6E60, [15996] = 0x6E71,
+-  [15997] = 0x6E6B, [15998] = 0x6E39, [15999] = 0x6E22, [16000] = 0x6E30,
+-  [16001] = 0x6E53, [16002] = 0x6E65, [16003] = 0x6E27, [16004] = 0x6E78,
+-  [16005] = 0x6E64, [16006] = 0x6E77, [16007] = 0x6E55, [16008] = 0x6E79,
+-  [16009] = 0x6E52, [16010] = 0x6E66, [16011] = 0x6E35, [16012] = 0x6E36,
+-  [16013] = 0x6E5A, [16014] = 0x7120, [16015] = 0x711E, [16016] = 0x712F,
+-  [16017] = 0x70FB, [16018] = 0x712E, [16019] = 0x7131, [16020] = 0x7123,
+-  [16021] = 0x7125, [16022] = 0x7122, [16023] = 0x7132, [16024] = 0x711F,
+-  [16025] = 0x7128, [16026] = 0x713A, [16027] = 0x711B, [16028] = 0x724B,
+-  [16029] = 0x725A, [16030] = 0x7288, [16031] = 0x7289, [16032] = 0x7286,
+-  [16033] = 0x7285, [16034] = 0x728B, [16035] = 0x7312, [16036] = 0x730B,
+-  [16037] = 0x7330, [16038] = 0x7322, [16039] = 0x7331, [16040] = 0x7333,
+-  [16041] = 0x7327, [16042] = 0x7332, [16043] = 0x732D, [16044] = 0x7326,
+-  [16045] = 0x7323, [16046] = 0x7335, [16047] = 0x730C, [16048] = 0x742E,
+-  [16049] = 0x742C, [16050] = 0x7430, [16051] = 0x742B, [16052] = 0x7416,
+-  [16087] = 0x741A, [16088] = 0x7421, [16089] = 0x742D, [16090] = 0x7431,
+-  [16091] = 0x7424, [16092] = 0x7423, [16093] = 0x741D, [16094] = 0x7429,
+-  [16095] = 0x7420, [16096] = 0x7432, [16097] = 0x74FB, [16098] = 0x752F,
+-  [16099] = 0x756F, [16100] = 0x756C, [16101] = 0x75E7, [16102] = 0x75DA,
+-  [16103] = 0x75E1, [16104] = 0x75E6, [16105] = 0x75DD, [16106] = 0x75DF,
+-  [16107] = 0x75E4, [16108] = 0x75D7, [16109] = 0x7695, [16110] = 0x7692,
+-  [16111] = 0x76DA, [16112] = 0x7746, [16113] = 0x7747, [16114] = 0x7744,
+-  [16115] = 0x774D, [16116] = 0x7745, [16117] = 0x774A, [16118] = 0x774E,
+-  [16119] = 0x774B, [16120] = 0x774C, [16121] = 0x77DE, [16122] = 0x77EC,
+-  [16123] = 0x7860, [16124] = 0x7864, [16125] = 0x7865, [16126] = 0x785C,
+-  [16127] = 0x786D, [16128] = 0x7871, [16129] = 0x786A, [16130] = 0x786E,
+-  [16131] = 0x7870, [16132] = 0x7869, [16133] = 0x7868, [16134] = 0x785E,
+-  [16135] = 0x7862, [16136] = 0x7974, [16137] = 0x7973, [16138] = 0x7972,
+-  [16139] = 0x7970, [16140] = 0x7A02, [16141] = 0x7A0A, [16142] = 0x7A03,
+-  [16143] = 0x7A0C, [16144] = 0x7A04, [16145] = 0x7A99, [16146] = 0x7AE6,
+-  [16147] = 0x7AE4, [16148] = 0x7B4A, [16149] = 0x7B3B, [16150] = 0x7B44,
+-  [16151] = 0x7B48, [16152] = 0x7B4C, [16153] = 0x7B4E, [16154] = 0x7B40,
+-  [16155] = 0x7B58, [16156] = 0x7B45, [16157] = 0x7CA2, [16158] = 0x7C9E,
+-  [16159] = 0x7CA8, [16160] = 0x7CA1, [16161] = 0x7D58, [16162] = 0x7D6F,
+-  [16163] = 0x7D63, [16164] = 0x7D53, [16165] = 0x7D56, [16166] = 0x7D67,
+-  [16167] = 0x7D6A, [16168] = 0x7D4F, [16169] = 0x7D6D, [16170] = 0x7D5C,
+-  [16171] = 0x7D6B, [16172] = 0x7D52, [16173] = 0x7D54, [16174] = 0x7D69,
+-  [16175] = 0x7D51, [16176] = 0x7D5F, [16177] = 0x7D4E, [16178] = 0x7F3E,
+-  [16179] = 0x7F3F, [16180] = 0x7F65, [16185] = 0x7F66, [16186] = 0x7FA2,
+-  [16187] = 0x7FA0, [16188] = 0x7FA1, [16189] = 0x7FD7, [16190] = 0x8051,
+-  [16191] = 0x804F, [16192] = 0x8050, [16193] = 0x80FE, [16194] = 0x80D4,
+-  [16195] = 0x8143, [16196] = 0x814A, [16197] = 0x8152, [16198] = 0x814F,
+-  [16199] = 0x8147, [16200] = 0x813D, [16201] = 0x814D, [16202] = 0x813A,
+-  [16203] = 0x81E6, [16204] = 0x81EE, [16205] = 0x81F7, [16206] = 0x81F8,
+-  [16207] = 0x81F9, [16208] = 0x8204, [16209] = 0x823C, [16210] = 0x823D,
+-  [16211] = 0x823F, [16212] = 0x8275, [16213] = 0x833B, [16214] = 0x83CF,
+-  [16215] = 0x83F9, [16216] = 0x8423, [16217] = 0x83C0, [16218] = 0x83E8,
+-  [16219] = 0x8412, [16220] = 0x83E7, [16221] = 0x83E4, [16222] = 0x83FC,
+-  [16223] = 0x83F6, [16224] = 0x8410, [16225] = 0x83C6, [16226] = 0x83C8,
+-  [16227] = 0x83EB, [16228] = 0x83E3, [16229] = 0x83BF, [16230] = 0x8401,
+-  [16231] = 0x83DD, [16232] = 0x83E5, [16233] = 0x83D8, [16234] = 0x83FF,
+-  [16235] = 0x83E1, [16236] = 0x83CB, [16237] = 0x83CE, [16238] = 0x83D6,
+-  [16239] = 0x83F5, [16240] = 0x83C9, [16241] = 0x8409, [16242] = 0x840F,
+-  [16243] = 0x83DE, [16244] = 0x8411, [16245] = 0x8406, [16246] = 0x83C2,
+-  [16247] = 0x83F3, [16282] = 0x83D5, [16283] = 0x83FA, [16284] = 0x83C7,
+-  [16285] = 0x83D1, [16286] = 0x83EA, [16287] = 0x8413, [16288] = 0x83C3,
+-  [16289] = 0x83EC, [16290] = 0x83EE, [16291] = 0x83C4, [16292] = 0x83FB,
+-  [16293] = 0x83D7, [16294] = 0x83E2, [16295] = 0x841B, [16296] = 0x83DB,
+-  [16297] = 0x83FE, [16298] = 0x86D8, [16299] = 0x86E2, [16300] = 0x86E6,
+-  [16301] = 0x86D3, [16302] = 0x86E3, [16303] = 0x86DA, [16304] = 0x86EA,
+-  [16305] = 0x86DD, [16306] = 0x86EB, [16307] = 0x86DC, [16308] = 0x86EC,
+-  [16309] = 0x86E9, [16310] = 0x86D7, [16311] = 0x86E8, [16312] = 0x86D1,
+-  [16313] = 0x8848, [16314] = 0x8856, [16315] = 0x8855, [16316] = 0x88BA,
+-  [16317] = 0x88D7, [16318] = 0x88B9, [16319] = 0x88B8, [16320] = 0x88C0,
+-  [16321] = 0x88BE, [16322] = 0x88B6, [16323] = 0x88BC, [16324] = 0x88B7,
+-  [16325] = 0x88BD, [16326] = 0x88B2, [16327] = 0x8901, [16328] = 0x88C9,
+-  [16329] = 0x8995, [16330] = 0x8998, [16331] = 0x8997, [16332] = 0x89DD,
+-  [16333] = 0x89DA, [16334] = 0x89DB, [16335] = 0x8A4E, [16336] = 0x8A4D,
+-  [16337] = 0x8A39, [16338] = 0x8A59, [16339] = 0x8A40, [16340] = 0x8A57,
+-  [16341] = 0x8A58, [16342] = 0x8A44, [16343] = 0x8A45, [16344] = 0x8A52,
+-  [16345] = 0x8A48, [16346] = 0x8A51, [16347] = 0x8A4A, [16348] = 0x8A4C,
+-  [16349] = 0x8A4F, [16350] = 0x8C5F, [16351] = 0x8C81, [16352] = 0x8C80,
+-  [16353] = 0x8CBA, [16354] = 0x8CBE, [16355] = 0x8CB0, [16356] = 0x8CB9,
+-  [16357] = 0x8CB5, [16358] = 0x8D84, [16359] = 0x8D80, [16360] = 0x8D89,
+-  [16361] = 0x8DD8, [16362] = 0x8DD3, [16363] = 0x8DCD, [16364] = 0x8DC7,
+-  [16365] = 0x8DD6, [16366] = 0x8DDC, [16367] = 0x8DCF, [16368] = 0x8DD5,
+-  [16369] = 0x8DD9, [16370] = 0x8DC8, [16371] = 0x8DD7, [16372] = 0x8DC5,
+-  [16373] = 0x8EEF, [16374] = 0x8EF7, [16375] = 0x8EFA, [16380] = 0x8EF9,
+-  [16381] = 0x8EE6, [16382] = 0x8EEE, [16383] = 0x8EE5, [16384] = 0x8EF5,
+-  [16385] = 0x8EE7, [16386] = 0x8EE8, [16387] = 0x8EF6, [16388] = 0x8EEB,
+-  [16389] = 0x8EF1, [16390] = 0x8EEC, [16391] = 0x8EF4, [16392] = 0x8EE9,
+-  [16393] = 0x902D, [16394] = 0x9034, [16395] = 0x902F, [16396] = 0x9106,
+-  [16397] = 0x912C, [16398] = 0x9104, [16399] = 0x90FF, [16400] = 0x90FC,
+-  [16401] = 0x9108, [16402] = 0x90F9, [16403] = 0x90FB, [16404] = 0x9101,
+-  [16405] = 0x9100, [16406] = 0x9107, [16407] = 0x9105, [16408] = 0x9103,
+-  [16409] = 0x9161, [16410] = 0x9164, [16411] = 0x915F, [16412] = 0x9162,
+-  [16413] = 0x9160, [16414] = 0x9201, [16415] = 0x920A, [16416] = 0x9225,
+-  [16417] = 0x9203, [16418] = 0x921A, [16419] = 0x9226, [16420] = 0x920F,
+-  [16421] = 0x920C, [16422] = 0x9200, [16423] = 0x9212, [16424] = 0x91FF,
+-  [16425] = 0x91FD, [16426] = 0x9206, [16427] = 0x9204, [16428] = 0x9227,
+-  [16429] = 0x9202, [16430] = 0x921C, [16431] = 0x9224, [16432] = 0x9219,
+-  [16433] = 0x9217, [16434] = 0x9205, [16435] = 0x9216, [16436] = 0x957B,
+-  [16437] = 0x958D, [16438] = 0x958C, [16439] = 0x9590, [16440] = 0x9687,
+-  [16441] = 0x967E, [16442] = 0x9688, [16477] = 0x9689, [16478] = 0x9683,
+-  [16479] = 0x9680, [16480] = 0x96C2, [16481] = 0x96C8, [16482] = 0x96C3,
+-  [16483] = 0x96F1, [16484] = 0x96F0, [16485] = 0x976C, [16486] = 0x9770,
+-  [16487] = 0x976E, [16488] = 0x9807, [16489] = 0x98A9, [16490] = 0x98EB,
+-  [16491] = 0x9CE6, [16492] = 0x9EF9, [16493] = 0x4E83, [16494] = 0x4E84,
+-  [16495] = 0x4EB6, [16496] = 0x50BD, [16497] = 0x50BF, [16498] = 0x50C6,
+-  [16499] = 0x50AE, [16500] = 0x50C4, [16501] = 0x50CA, [16502] = 0x50B4,
+-  [16503] = 0x50C8, [16504] = 0x50C2, [16505] = 0x50B0, [16506] = 0x50C1,
+-  [16507] = 0x50BA, [16508] = 0x50B1, [16509] = 0x50CB, [16510] = 0x50C9,
+-  [16511] = 0x50B6, [16512] = 0x50B8, [16513] = 0x51D7, [16514] = 0x527A,
+-  [16515] = 0x5278, [16516] = 0x527B, [16517] = 0x527C, [16518] = 0x55C3,
+-  [16519] = 0x55DB, [16520] = 0x55CC, [16521] = 0x55D0, [16522] = 0x55CB,
+-  [16523] = 0x55CA, [16524] = 0x55DD, [16525] = 0x55C0, [16526] = 0x55D4,
+-  [16527] = 0x55C4, [16528] = 0x55E9, [16529] = 0x55BF, [16530] = 0x55D2,
+-  [16531] = 0x558D, [16532] = 0x55CF, [16533] = 0x55D5, [16534] = 0x55E2,
+-  [16535] = 0x55D6, [16536] = 0x55C8, [16537] = 0x55F2, [16538] = 0x55CD,
+-  [16539] = 0x55D9, [16540] = 0x55C2, [16541] = 0x5714, [16542] = 0x5853,
+-  [16543] = 0x5868, [16544] = 0x5864, [16545] = 0x584F, [16546] = 0x584D,
+-  [16547] = 0x5849, [16548] = 0x586F, [16549] = 0x5855, [16550] = 0x584E,
+-  [16551] = 0x585D, [16552] = 0x5859, [16553] = 0x5865, [16554] = 0x585B,
+-  [16555] = 0x583D, [16556] = 0x5863, [16557] = 0x5871, [16558] = 0x58FC,
+-  [16559] = 0x5AC7, [16560] = 0x5AC4, [16561] = 0x5ACB, [16562] = 0x5ABA,
+-  [16563] = 0x5AB8, [16564] = 0x5AB1, [16565] = 0x5AB5, [16566] = 0x5AB0,
+-  [16567] = 0x5ABF, [16568] = 0x5AC8, [16569] = 0x5ABB, [16570] = 0x5AC6,
+-  [16575] = 0x5AB7, [16576] = 0x5AC0, [16577] = 0x5ACA, [16578] = 0x5AB4,
+-  [16579] = 0x5AB6, [16580] = 0x5ACD, [16581] = 0x5AB9, [16582] = 0x5A90,
+-  [16583] = 0x5BD6, [16584] = 0x5BD8, [16585] = 0x5BD9, [16586] = 0x5C1F,
+-  [16587] = 0x5C33, [16588] = 0x5D71, [16589] = 0x5D63, [16590] = 0x5D4A,
+-  [16591] = 0x5D65, [16592] = 0x5D72, [16593] = 0x5D6C, [16594] = 0x5D5E,
+-  [16595] = 0x5D68, [16596] = 0x5D67, [16597] = 0x5D62, [16598] = 0x5DF0,
+-  [16599] = 0x5E4F, [16600] = 0x5E4E, [16601] = 0x5E4A, [16602] = 0x5E4D,
+-  [16603] = 0x5E4B, [16604] = 0x5EC5, [16605] = 0x5ECC, [16606] = 0x5EC6,
+-  [16607] = 0x5ECB, [16608] = 0x5EC7, [16609] = 0x5F40, [16610] = 0x5FAF,
+-  [16611] = 0x5FAD, [16612] = 0x60F7, [16613] = 0x6149, [16614] = 0x614A,
+-  [16615] = 0x612B, [16616] = 0x6145, [16617] = 0x6136, [16618] = 0x6132,
+-  [16619] = 0x612E, [16620] = 0x6146, [16621] = 0x612F, [16622] = 0x614F,
+-  [16623] = 0x6129, [16624] = 0x6140, [16625] = 0x6220, [16626] = 0x9168,
+-  [16627] = 0x6223, [16628] = 0x6225, [16629] = 0x6224, [16630] = 0x63C5,
+-  [16631] = 0x63F1, [16632] = 0x63EB, [16633] = 0x6410, [16634] = 0x6412,
+-  [16635] = 0x6409, [16636] = 0x6420, [16637] = 0x6424, [16672] = 0x6433,
+-  [16673] = 0x6443, [16674] = 0x641F, [16675] = 0x6415, [16676] = 0x6418,
+-  [16677] = 0x6439, [16678] = 0x6437, [16679] = 0x6422, [16680] = 0x6423,
+-  [16681] = 0x640C, [16682] = 0x6426, [16683] = 0x6430, [16684] = 0x6428,
+-  [16685] = 0x6441, [16686] = 0x6435, [16687] = 0x642F, [16688] = 0x640A,
+-  [16689] = 0x641A, [16690] = 0x6440, [16691] = 0x6425, [16692] = 0x6427,
+-  [16693] = 0x640B, [16694] = 0x63E7, [16695] = 0x641B, [16696] = 0x642E,
+-  [16697] = 0x6421, [16698] = 0x640E, [16699] = 0x656F, [16700] = 0x6592,
+-  [16701] = 0x65D3, [16702] = 0x6686, [16703] = 0x668C, [16704] = 0x6695,
+-  [16705] = 0x6690, [16706] = 0x668B, [16707] = 0x668A, [16708] = 0x6699,
+-  [16709] = 0x6694, [16710] = 0x6678, [16711] = 0x6720, [16712] = 0x6966,
+-  [16713] = 0x695F, [16714] = 0x6938, [16715] = 0x694E, [16716] = 0x6962,
+-  [16717] = 0x6971, [16718] = 0x693F, [16719] = 0x6945, [16720] = 0x696A,
+-  [16721] = 0x6939, [16722] = 0x6942, [16723] = 0x6957, [16724] = 0x6959,
+-  [16725] = 0x697A, [16726] = 0x6948, [16727] = 0x6949, [16728] = 0x6935,
+-  [16729] = 0x696C, [16730] = 0x6933, [16731] = 0x693D, [16732] = 0x6965,
+-  [16733] = 0x68F0, [16734] = 0x6978, [16735] = 0x6934, [16736] = 0x6969,
+-  [16737] = 0x6940, [16738] = 0x696F, [16739] = 0x6944, [16740] = 0x6976,
+-  [16741] = 0x6958, [16742] = 0x6941, [16743] = 0x6974, [16744] = 0x694C,
+-  [16745] = 0x693B, [16746] = 0x694B, [16747] = 0x6937, [16748] = 0x695C,
+-  [16749] = 0x694F, [16750] = 0x6951, [16751] = 0x6932, [16752] = 0x6952,
+-  [16753] = 0x692F, [16754] = 0x697B, [16755] = 0x693C, [16756] = 0x6B46,
+-  [16757] = 0x6B45, [16758] = 0x6B43, [16759] = 0x6B42, [16760] = 0x6B48,
+-  [16761] = 0x6B41, [16762] = 0x6B9B, [16763] = 0xFA0D, [16764] = 0x6BFB,
+-  [16765] = 0x6BFC, [16770] = 0x6BF9, [16771] = 0x6BF7, [16772] = 0x6BF8,
+-  [16773] = 0x6E9B, [16774] = 0x6ED6, [16775] = 0x6EC8, [16776] = 0x6E8F,
+-  [16777] = 0x6EC0, [16778] = 0x6E9F, [16779] = 0x6E93, [16780] = 0x6E94,
+-  [16781] = 0x6EA0, [16782] = 0x6EB1, [16783] = 0x6EB9, [16784] = 0x6EC6,
+-  [16785] = 0x6ED2, [16786] = 0x6EBD, [16787] = 0x6EC1, [16788] = 0x6E9E,
+-  [16789] = 0x6EC9, [16790] = 0x6EB7, [16791] = 0x6EB0, [16792] = 0x6ECD,
+-  [16793] = 0x6EA6, [16794] = 0x6ECF, [16795] = 0x6EB2, [16796] = 0x6EBE,
+-  [16797] = 0x6EC3, [16798] = 0x6EDC, [16799] = 0x6ED8, [16800] = 0x6E99,
+-  [16801] = 0x6E92, [16802] = 0x6E8E, [16803] = 0x6E8D, [16804] = 0x6EA4,
+-  [16805] = 0x6EA1, [16806] = 0x6EBF, [16807] = 0x6EB3, [16808] = 0x6ED0,
+-  [16809] = 0x6ECA, [16810] = 0x6E97, [16811] = 0x6EAE, [16812] = 0x6EA3,
+-  [16813] = 0x7147, [16814] = 0x7154, [16815] = 0x7152, [16816] = 0x7163,
+-  [16817] = 0x7160, [16818] = 0x7141, [16819] = 0x715D, [16820] = 0x7162,
+-  [16821] = 0x7172, [16822] = 0x7178, [16823] = 0x716A, [16824] = 0x7161,
+-  [16825] = 0x7142, [16826] = 0x7158, [16827] = 0x7143, [16828] = 0x714B,
+-  [16829] = 0x7170, [16830] = 0x715F, [16831] = 0x7150, [16832] = 0x7153,
+-  [16867] = 0x7144, [16868] = 0x714D, [16869] = 0x715A, [16870] = 0x724F,
+-  [16871] = 0x728D, [16872] = 0x728C, [16873] = 0x7291, [16874] = 0x7290,
+-  [16875] = 0x728E, [16876] = 0x733C, [16877] = 0x7342, [16878] = 0x733B,
+-  [16879] = 0x733A, [16880] = 0x7340, [16881] = 0x734A, [16882] = 0x7349,
+-  [16883] = 0x7444, [16884] = 0x744A, [16885] = 0x744B, [16886] = 0x7452,
+-  [16887] = 0x7451, [16888] = 0x7457, [16889] = 0x7440, [16890] = 0x744F,
+-  [16891] = 0x7450, [16892] = 0x744E, [16893] = 0x7442, [16894] = 0x7446,
+-  [16895] = 0x744D, [16896] = 0x7454, [16897] = 0x74E1, [16898] = 0x74FF,
+-  [16899] = 0x74FE, [16900] = 0x74FD, [16901] = 0x751D, [16902] = 0x7579,
+-  [16903] = 0x7577, [16904] = 0x6983, [16905] = 0x75EF, [16906] = 0x760F,
+-  [16907] = 0x7603, [16908] = 0x75F7, [16909] = 0x75FE, [16910] = 0x75FC,
+-  [16911] = 0x75F9, [16912] = 0x75F8, [16913] = 0x7610, [16914] = 0x75FB,
+-  [16915] = 0x75F6, [16916] = 0x75ED, [16917] = 0x75F5, [16918] = 0x75FD,
+-  [16919] = 0x7699, [16920] = 0x76B5, [16921] = 0x76DD, [16922] = 0x7755,
+-  [16923] = 0x775F, [16924] = 0x7760, [16925] = 0x7752, [16926] = 0x7756,
+-  [16927] = 0x775A, [16928] = 0x7769, [16929] = 0x7767, [16930] = 0x7754,
+-  [16931] = 0x7759, [16932] = 0x776D, [16933] = 0x77E0, [16934] = 0x7887,
+-  [16935] = 0x789A, [16936] = 0x7894, [16937] = 0x788F, [16938] = 0x7884,
+-  [16939] = 0x7895, [16940] = 0x7885, [16941] = 0x7886, [16942] = 0x78A1,
+-  [16943] = 0x7883, [16944] = 0x7879, [16945] = 0x7899, [16946] = 0x7880,
+-  [16947] = 0x7896, [16948] = 0x787B, [16949] = 0x797C, [16950] = 0x7982,
+-  [16951] = 0x797D, [16952] = 0x7979, [16953] = 0x7A11, [16954] = 0x7A18,
+-  [16955] = 0x7A19, [16956] = 0x7A12, [16957] = 0x7A17, [16958] = 0x7A15,
+-  [16959] = 0x7A22, [16960] = 0x7A13, [16965] = 0x7A1B, [16966] = 0x7A10,
+-  [16967] = 0x7AA3, [16968] = 0x7AA2, [16969] = 0x7A9E, [16970] = 0x7AEB,
+-  [16971] = 0x7B66, [16972] = 0x7B64, [16973] = 0x7B6D, [16974] = 0x7B74,
+-  [16975] = 0x7B69, [16976] = 0x7B72, [16977] = 0x7B65, [16978] = 0x7B73,
+-  [16979] = 0x7B71, [16980] = 0x7B70, [16981] = 0x7B61, [16982] = 0x7B78,
+-  [16983] = 0x7B76, [16984] = 0x7B63, [16985] = 0x7CB2, [16986] = 0x7CB4,
+-  [16987] = 0x7CAF, [16988] = 0x7D88, [16989] = 0x7D86, [16990] = 0x7D80,
+-  [16991] = 0x7D8D, [16992] = 0x7D7F, [16993] = 0x7D85, [16994] = 0x7D7A,
+-  [16995] = 0x7D8E, [16996] = 0x7D7B, [16997] = 0x7D83, [16998] = 0x7D7C,
+-  [16999] = 0x7D8C, [17000] = 0x7D94, [17001] = 0x7D84, [17002] = 0x7D7D,
+-  [17003] = 0x7D92, [17004] = 0x7F6D, [17005] = 0x7F6B, [17006] = 0x7F67,
+-  [17007] = 0x7F68, [17008] = 0x7F6C, [17009] = 0x7FA6, [17010] = 0x7FA5,
+-  [17011] = 0x7FA7, [17012] = 0x7FDB, [17013] = 0x7FDC, [17014] = 0x8021,
+-  [17015] = 0x8164, [17016] = 0x8160, [17017] = 0x8177, [17018] = 0x815C,
+-  [17019] = 0x8169, [17020] = 0x815B, [17021] = 0x8162, [17022] = 0x8172,
+-  [17023] = 0x6721, [17024] = 0x815E, [17025] = 0x8176, [17026] = 0x8167,
+-  [17027] = 0x816F, [17062] = 0x8144, [17063] = 0x8161, [17064] = 0x821D,
+-  [17065] = 0x8249, [17066] = 0x8244, [17067] = 0x8240, [17068] = 0x8242,
+-  [17069] = 0x8245, [17070] = 0x84F1, [17071] = 0x843F, [17072] = 0x8456,
+-  [17073] = 0x8476, [17074] = 0x8479, [17075] = 0x848F, [17076] = 0x848D,
+-  [17077] = 0x8465, [17078] = 0x8451, [17079] = 0x8440, [17080] = 0x8486,
+-  [17081] = 0x8467, [17082] = 0x8430, [17083] = 0x844D, [17084] = 0x847D,
+-  [17085] = 0x845A, [17086] = 0x8459, [17087] = 0x8474, [17088] = 0x8473,
+-  [17089] = 0x845D, [17090] = 0x8507, [17091] = 0x845E, [17092] = 0x8437,
+-  [17093] = 0x843A, [17094] = 0x8434, [17095] = 0x847A, [17096] = 0x8443,
+-  [17097] = 0x8478, [17098] = 0x8432, [17099] = 0x8445, [17100] = 0x8429,
+-  [17101] = 0x83D9, [17102] = 0x844B, [17103] = 0x842F, [17104] = 0x8442,
+-  [17105] = 0x842D, [17106] = 0x845F, [17107] = 0x8470, [17108] = 0x8439,
+-  [17109] = 0x844E, [17110] = 0x844C, [17111] = 0x8452, [17112] = 0x846F,
+-  [17113] = 0x84C5, [17114] = 0x848E, [17115] = 0x843B, [17116] = 0x8447,
+-  [17117] = 0x8436, [17118] = 0x8433, [17119] = 0x8468, [17120] = 0x847E,
+-  [17121] = 0x8444, [17122] = 0x842B, [17123] = 0x8460, [17124] = 0x8454,
+-  [17125] = 0x846E, [17126] = 0x8450, [17127] = 0x870B, [17128] = 0x8704,
+-  [17129] = 0x86F7, [17130] = 0x870C, [17131] = 0x86FA, [17132] = 0x86D6,
+-  [17133] = 0x86F5, [17134] = 0x874D, [17135] = 0x86F8, [17136] = 0x870E,
+-  [17137] = 0x8709, [17138] = 0x8701, [17139] = 0x86F6, [17140] = 0x870D,
+-  [17141] = 0x8705, [17142] = 0x88D6, [17143] = 0x88CB, [17144] = 0x88CD,
+-  [17145] = 0x88CE, [17146] = 0x88DE, [17147] = 0x88DB, [17148] = 0x88DA,
+-  [17149] = 0x88CC, [17150] = 0x88D0, [17151] = 0x8985, [17152] = 0x899B,
+-  [17153] = 0x89DF, [17154] = 0x89E5, [17155] = 0x89E4, [17160] = 0x89E1,
+-  [17161] = 0x89E0, [17162] = 0x89E2, [17163] = 0x89DC, [17164] = 0x89E6,
+-  [17165] = 0x8A76, [17166] = 0x8A86, [17167] = 0x8A7F, [17168] = 0x8A61,
+-  [17169] = 0x8A3F, [17170] = 0x8A77, [17171] = 0x8A82, [17172] = 0x8A84,
+-  [17173] = 0x8A75, [17174] = 0x8A83, [17175] = 0x8A81, [17176] = 0x8A74,
+-  [17177] = 0x8A7A, [17178] = 0x8C3C, [17179] = 0x8C4B, [17180] = 0x8C4A,
+-  [17181] = 0x8C65, [17182] = 0x8C64, [17183] = 0x8C66, [17184] = 0x8C86,
+-  [17185] = 0x8C84, [17186] = 0x8C85, [17187] = 0x8CCC, [17188] = 0x8D68,
+-  [17189] = 0x8D69, [17190] = 0x8D91, [17191] = 0x8D8C, [17192] = 0x8D8E,
+-  [17193] = 0x8D8F, [17194] = 0x8D8D, [17195] = 0x8D93, [17196] = 0x8D94,
+-  [17197] = 0x8D90, [17198] = 0x8D92, [17199] = 0x8DF0, [17200] = 0x8DE0,
+-  [17201] = 0x8DEC, [17202] = 0x8DF1, [17203] = 0x8DEE, [17204] = 0x8DD0,
+-  [17205] = 0x8DE9, [17206] = 0x8DE3, [17207] = 0x8DE2, [17208] = 0x8DE7,
+-  [17209] = 0x8DF2, [17210] = 0x8DEB, [17211] = 0x8DF4, [17212] = 0x8F06,
+-  [17213] = 0x8EFF, [17214] = 0x8F01, [17215] = 0x8F00, [17216] = 0x8F05,
+-  [17217] = 0x8F07, [17218] = 0x8F08, [17219] = 0x8F02, [17220] = 0x8F0B,
+-  [17221] = 0x9052, [17222] = 0x903F, [17257] = 0x9044, [17258] = 0x9049,
+-  [17259] = 0x903D, [17260] = 0x9110, [17261] = 0x910D, [17262] = 0x910F,
+-  [17263] = 0x9111, [17264] = 0x9116, [17265] = 0x9114, [17266] = 0x910B,
+-  [17267] = 0x910E, [17268] = 0x916E, [17269] = 0x916F, [17270] = 0x9248,
+-  [17271] = 0x9252, [17272] = 0x9230, [17273] = 0x923A, [17274] = 0x9266,
+-  [17275] = 0x9233, [17276] = 0x9265, [17277] = 0x925E, [17278] = 0x9283,
+-  [17279] = 0x922E, [17280] = 0x924A, [17281] = 0x9246, [17282] = 0x926D,
+-  [17283] = 0x926C, [17284] = 0x924F, [17285] = 0x9260, [17286] = 0x9267,
+-  [17287] = 0x926F, [17288] = 0x9236, [17289] = 0x9261, [17290] = 0x9270,
+-  [17291] = 0x9231, [17292] = 0x9254, [17293] = 0x9263, [17294] = 0x9250,
+-  [17295] = 0x9272, [17296] = 0x924E, [17297] = 0x9253, [17298] = 0x924C,
+-  [17299] = 0x9256, [17300] = 0x9232, [17301] = 0x959F, [17302] = 0x959C,
+-  [17303] = 0x959E, [17304] = 0x959B, [17305] = 0x9692, [17306] = 0x9693,
+-  [17307] = 0x9691, [17308] = 0x9697, [17309] = 0x96CE, [17310] = 0x96FA,
+-  [17311] = 0x96FD, [17312] = 0x96F8, [17313] = 0x96F5, [17314] = 0x9773,
+-  [17315] = 0x9777, [17316] = 0x9778, [17317] = 0x9772, [17318] = 0x980F,
+-  [17319] = 0x980D, [17320] = 0x980E, [17321] = 0x98AC, [17322] = 0x98F6,
+-  [17323] = 0x98F9, [17324] = 0x99AF, [17325] = 0x99B2, [17326] = 0x99B0,
+-  [17327] = 0x99B5, [17328] = 0x9AAD, [17329] = 0x9AAB, [17330] = 0x9B5B,
+-  [17331] = 0x9CEA, [17332] = 0x9CED, [17333] = 0x9CE7, [17334] = 0x9E80,
+-  [17335] = 0x9EFD, [17336] = 0x50E6, [17337] = 0x50D4, [17338] = 0x50D7,
+-  [17339] = 0x50E8, [17340] = 0x50F3, [17341] = 0x50DB, [17342] = 0x50EA,
+-  [17343] = 0x50DD, [17344] = 0x50E4, [17345] = 0x50D3, [17346] = 0x50EC,
+-  [17347] = 0x50F0, [17348] = 0x50EF, [17349] = 0x50E3, [17350] = 0x50E0,
+-  [17355] = 0x51D8, [17356] = 0x5280, [17357] = 0x5281, [17358] = 0x52E9,
+-  [17359] = 0x52EB, [17360] = 0x5330, [17361] = 0x53AC, [17362] = 0x5627,
+-  [17363] = 0x5615, [17364] = 0x560C, [17365] = 0x5612, [17366] = 0x55FC,
+-  [17367] = 0x560F, [17368] = 0x561C, [17369] = 0x5601, [17370] = 0x5613,
+-  [17371] = 0x5602, [17372] = 0x55FA, [17373] = 0x561D, [17374] = 0x5604,
+-  [17375] = 0x55FF, [17376] = 0x55F9, [17377] = 0x5889, [17378] = 0x587C,
+-  [17379] = 0x5890, [17380] = 0x5898, [17381] = 0x5886, [17382] = 0x5881,
+-  [17383] = 0x587F, [17384] = 0x5874, [17385] = 0x588B, [17386] = 0x587A,
+-  [17387] = 0x5887, [17388] = 0x5891, [17389] = 0x588E, [17390] = 0x5876,
+-  [17391] = 0x5882, [17392] = 0x5888, [17393] = 0x587B, [17394] = 0x5894,
+-  [17395] = 0x588F, [17396] = 0x58FE, [17397] = 0x596B, [17398] = 0x5ADC,
+-  [17399] = 0x5AEE, [17400] = 0x5AE5, [17401] = 0x5AD5, [17402] = 0x5AEA,
+-  [17403] = 0x5ADA, [17404] = 0x5AED, [17405] = 0x5AEB, [17406] = 0x5AF3,
+-  [17407] = 0x5AE2, [17408] = 0x5AE0, [17409] = 0x5ADB, [17410] = 0x5AEC,
+-  [17411] = 0x5ADE, [17412] = 0x5ADD, [17413] = 0x5AD9, [17414] = 0x5AE8,
+-  [17415] = 0x5ADF, [17416] = 0x5B77, [17417] = 0x5BE0, [17452] = 0x5BE3,
+-  [17453] = 0x5C63, [17454] = 0x5D82, [17455] = 0x5D80, [17456] = 0x5D7D,
+-  [17457] = 0x5D86, [17458] = 0x5D7A, [17459] = 0x5D81, [17460] = 0x5D77,
+-  [17461] = 0x5D8A, [17462] = 0x5D89, [17463] = 0x5D88, [17464] = 0x5D7E,
+-  [17465] = 0x5D7C, [17466] = 0x5D8D, [17467] = 0x5D79, [17468] = 0x5D7F,
+-  [17469] = 0x5E58, [17470] = 0x5E59, [17471] = 0x5E53, [17472] = 0x5ED8,
+-  [17473] = 0x5ED1, [17474] = 0x5ED7, [17475] = 0x5ECE, [17476] = 0x5EDC,
+-  [17477] = 0x5ED5, [17478] = 0x5ED9, [17479] = 0x5ED2, [17480] = 0x5ED4,
+-  [17481] = 0x5F44, [17482] = 0x5F43, [17483] = 0x5F6F, [17484] = 0x5FB6,
+-  [17485] = 0x612C, [17486] = 0x6128, [17487] = 0x6141, [17488] = 0x615E,
+-  [17489] = 0x6171, [17490] = 0x6173, [17491] = 0x6152, [17492] = 0x6153,
+-  [17493] = 0x6172, [17494] = 0x616C, [17495] = 0x6180, [17496] = 0x6174,
+-  [17497] = 0x6154, [17498] = 0x617A, [17499] = 0x615B, [17500] = 0x6165,
+-  [17501] = 0x613B, [17502] = 0x616A, [17503] = 0x6161, [17504] = 0x6156,
+-  [17505] = 0x6229, [17506] = 0x6227, [17507] = 0x622B, [17508] = 0x642B,
+-  [17509] = 0x644D, [17510] = 0x645B, [17511] = 0x645D, [17512] = 0x6474,
+-  [17513] = 0x6476, [17514] = 0x6472, [17515] = 0x6473, [17516] = 0x647D,
+-  [17517] = 0x6475, [17518] = 0x6466, [17519] = 0x64A6, [17520] = 0x644E,
+-  [17521] = 0x6482, [17522] = 0x645E, [17523] = 0x645C, [17524] = 0x644B,
+-  [17525] = 0x6453, [17526] = 0x6460, [17527] = 0x6450, [17528] = 0x647F,
+-  [17529] = 0x643F, [17530] = 0x646C, [17531] = 0x646B, [17532] = 0x6459,
+-  [17533] = 0x6465, [17534] = 0x6477, [17535] = 0x6573, [17536] = 0x65A0,
+-  [17537] = 0x66A1, [17538] = 0x66A0, [17539] = 0x669F, [17540] = 0x6705,
+-  [17541] = 0x6704, [17542] = 0x6722, [17543] = 0x69B1, [17544] = 0x69B6,
+-  [17545] = 0x69C9, [17550] = 0x69A0, [17551] = 0x69CE, [17552] = 0x6996,
+-  [17553] = 0x69B0, [17554] = 0x69AC, [17555] = 0x69BC, [17556] = 0x6991,
+-  [17557] = 0x6999, [17558] = 0x698E, [17559] = 0x69A7, [17560] = 0x698D,
+-  [17561] = 0x69A9, [17562] = 0x69BE, [17563] = 0x69AF, [17564] = 0x69BF,
+-  [17565] = 0x69C4, [17566] = 0x69BD, [17567] = 0x69A4, [17568] = 0x69D4,
+-  [17569] = 0x69B9, [17570] = 0x69CA, [17571] = 0x699A, [17572] = 0x69CF,
+-  [17573] = 0x69B3, [17574] = 0x6993, [17575] = 0x69AA, [17576] = 0x69A1,
+-  [17577] = 0x699E, [17578] = 0x69D9, [17579] = 0x6997, [17580] = 0x6990,
+-  [17581] = 0x69C2, [17582] = 0x69B5, [17583] = 0x69A5, [17584] = 0x69C6,
+-  [17585] = 0x6B4A, [17586] = 0x6B4D, [17587] = 0x6B4B, [17588] = 0x6B9E,
+-  [17589] = 0x6B9F, [17590] = 0x6BA0, [17591] = 0x6BC3, [17592] = 0x6BC4,
+-  [17593] = 0x6BFE, [17594] = 0x6ECE, [17595] = 0x6EF5, [17596] = 0x6EF1,
+-  [17597] = 0x6F03, [17598] = 0x6F25, [17599] = 0x6EF8, [17600] = 0x6F37,
+-  [17601] = 0x6EFB, [17602] = 0x6F2E, [17603] = 0x6F09, [17604] = 0x6F4E,
+-  [17605] = 0x6F19, [17606] = 0x6F1A, [17607] = 0x6F27, [17608] = 0x6F18,
+-  [17609] = 0x6F3B, [17610] = 0x6F12, [17611] = 0x6EED, [17612] = 0x6F0A,
+-  [17647] = 0x6F36, [17648] = 0x6F73, [17649] = 0x6EF9, [17650] = 0x6EEE,
+-  [17651] = 0x6F2D, [17652] = 0x6F40, [17653] = 0x6F30, [17654] = 0x6F3C,
+-  [17655] = 0x6F35, [17656] = 0x6EEB, [17657] = 0x6F07, [17658] = 0x6F0E,
+-  [17659] = 0x6F43, [17660] = 0x6F05, [17661] = 0x6EFD, [17662] = 0x6EF6,
+-  [17663] = 0x6F39, [17664] = 0x6F1C, [17665] = 0x6EFC, [17666] = 0x6F3A,
+-  [17667] = 0x6F1F, [17668] = 0x6F0D, [17669] = 0x6F1E, [17670] = 0x6F08,
+-  [17671] = 0x6F21, [17672] = 0x7187, [17673] = 0x7190, [17674] = 0x7189,
+-  [17675] = 0x7180, [17676] = 0x7185, [17677] = 0x7182, [17678] = 0x718F,
+-  [17679] = 0x717B, [17680] = 0x7186, [17681] = 0x7181, [17682] = 0x7197,
+-  [17683] = 0x7244, [17684] = 0x7253, [17685] = 0x7297, [17686] = 0x7295,
+-  [17687] = 0x7293, [17688] = 0x7343, [17689] = 0x734D, [17690] = 0x7351,
+-  [17691] = 0x734C, [17692] = 0x7462, [17693] = 0x7473, [17694] = 0x7471,
+-  [17695] = 0x7475, [17696] = 0x7472, [17697] = 0x7467, [17698] = 0x746E,
+-  [17699] = 0x7500, [17700] = 0x7502, [17701] = 0x7503, [17702] = 0x757D,
+-  [17703] = 0x7590, [17704] = 0x7616, [17705] = 0x7608, [17706] = 0x760C,
+-  [17707] = 0x7615, [17708] = 0x7611, [17709] = 0x760A, [17710] = 0x7614,
+-  [17711] = 0x76B8, [17712] = 0x7781, [17713] = 0x777C, [17714] = 0x7785,
+-  [17715] = 0x7782, [17716] = 0x776E, [17717] = 0x7780, [17718] = 0x776F,
+-  [17719] = 0x777E, [17720] = 0x7783, [17721] = 0x78B2, [17722] = 0x78AA,
+-  [17723] = 0x78B4, [17724] = 0x78AD, [17725] = 0x78A8, [17726] = 0x787E,
+-  [17727] = 0x78AB, [17728] = 0x789E, [17729] = 0x78A5, [17730] = 0x78A0,
+-  [17731] = 0x78AC, [17732] = 0x78A2, [17733] = 0x78A4, [17734] = 0x7998,
+-  [17735] = 0x798A, [17736] = 0x798B, [17737] = 0x7996, [17738] = 0x7995,
+-  [17739] = 0x7994, [17740] = 0x7993, [17745] = 0x7997, [17746] = 0x7988,
+-  [17747] = 0x7992, [17748] = 0x7990, [17749] = 0x7A2B, [17750] = 0x7A4A,
+-  [17751] = 0x7A30, [17752] = 0x7A2F, [17753] = 0x7A28, [17754] = 0x7A26,
+-  [17755] = 0x7AA8, [17756] = 0x7AAB, [17757] = 0x7AAC, [17758] = 0x7AEE,
+-  [17759] = 0x7B88, [17760] = 0x7B9C, [17761] = 0x7B8A, [17762] = 0x7B91,
+-  [17763] = 0x7B90, [17764] = 0x7B96, [17765] = 0x7B8D, [17766] = 0x7B8C,
+-  [17767] = 0x7B9B, [17768] = 0x7B8E, [17769] = 0x7B85, [17770] = 0x7B98,
+-  [17771] = 0x5284, [17772] = 0x7B99, [17773] = 0x7BA4, [17774] = 0x7B82,
+-  [17775] = 0x7CBB, [17776] = 0x7CBF, [17777] = 0x7CBC, [17778] = 0x7CBA,
+-  [17779] = 0x7DA7, [17780] = 0x7DB7, [17781] = 0x7DC2, [17782] = 0x7DA3,
+-  [17783] = 0x7DAA, [17784] = 0x7DC1, [17785] = 0x7DC0, [17786] = 0x7DC5,
+-  [17787] = 0x7D9D, [17788] = 0x7DCE, [17789] = 0x7DC4, [17790] = 0x7DC6,
+-  [17791] = 0x7DCB, [17792] = 0x7DCC, [17793] = 0x7DAF, [17794] = 0x7DB9,
+-  [17795] = 0x7D96, [17796] = 0x7DBC, [17797] = 0x7D9F, [17798] = 0x7DA6,
+-  [17799] = 0x7DAE, [17800] = 0x7DA9, [17801] = 0x7DA1, [17802] = 0x7DC9,
+-  [17803] = 0x7F73, [17804] = 0x7FE2, [17805] = 0x7FE3, [17806] = 0x7FE5,
+-  [17807] = 0x7FDE, [17842] = 0x8024, [17843] = 0x805D, [17844] = 0x805C,
+-  [17845] = 0x8189, [17846] = 0x8186, [17847] = 0x8183, [17848] = 0x8187,
+-  [17849] = 0x818D, [17850] = 0x818C, [17851] = 0x818B, [17852] = 0x8215,
+-  [17853] = 0x8497, [17854] = 0x84A4, [17855] = 0x84A1, [17856] = 0x849F,
+-  [17857] = 0x84BA, [17858] = 0x84CE, [17859] = 0x84C2, [17860] = 0x84AC,
+-  [17861] = 0x84AE, [17862] = 0x84AB, [17863] = 0x84B9, [17864] = 0x84B4,
+-  [17865] = 0x84C1, [17866] = 0x84CD, [17867] = 0x84AA, [17868] = 0x849A,
+-  [17869] = 0x84B1, [17870] = 0x84D0, [17871] = 0x849D, [17872] = 0x84A7,
+-  [17873] = 0x84BB, [17874] = 0x84A2, [17875] = 0x8494, [17876] = 0x84C7,
+-  [17877] = 0x84CC, [17878] = 0x849B, [17879] = 0x84A9, [17880] = 0x84AF,
+-  [17881] = 0x84A8, [17882] = 0x84D6, [17883] = 0x8498, [17884] = 0x84B6,
+-  [17885] = 0x84CF, [17886] = 0x84A0, [17887] = 0x84D7, [17888] = 0x84D4,
+-  [17889] = 0x84D2, [17890] = 0x84DB, [17891] = 0x84B0, [17892] = 0x8491,
+-  [17893] = 0x8661, [17894] = 0x8733, [17895] = 0x8723, [17896] = 0x8728,
+-  [17897] = 0x876B, [17898] = 0x8740, [17899] = 0x872E, [17900] = 0x871E,
+-  [17901] = 0x8721, [17902] = 0x8719, [17903] = 0x871B, [17904] = 0x8743,
+-  [17905] = 0x872C, [17906] = 0x8741, [17907] = 0x873E, [17908] = 0x8746,
+-  [17909] = 0x8720, [17910] = 0x8732, [17911] = 0x872A, [17912] = 0x872D,
+-  [17913] = 0x873C, [17914] = 0x8712, [17915] = 0x873A, [17916] = 0x8731,
+-  [17917] = 0x8735, [17918] = 0x8742, [17919] = 0x8726, [17920] = 0x8727,
+-  [17921] = 0x8738, [17922] = 0x8724, [17923] = 0x871A, [17924] = 0x8730,
+-  [17925] = 0x8711, [17926] = 0x88F7, [17927] = 0x88E7, [17928] = 0x88F1,
+-  [17929] = 0x88F2, [17930] = 0x88FA, [17931] = 0x88FE, [17932] = 0x88EE,
+-  [17933] = 0x88FC, [17934] = 0x88F6, [17935] = 0x88FB, [17940] = 0x88F0,
+-  [17941] = 0x88EC, [17942] = 0x88EB, [17943] = 0x899D, [17944] = 0x89A1,
+-  [17945] = 0x899F, [17946] = 0x899E, [17947] = 0x89E9, [17948] = 0x89EB,
+-  [17949] = 0x89E8, [17950] = 0x8AAB, [17951] = 0x8A99, [17952] = 0x8A8B,
+-  [17953] = 0x8A92, [17954] = 0x8A8F, [17955] = 0x8A96, [17956] = 0x8C3D,
+-  [17957] = 0x8C68, [17958] = 0x8C69, [17959] = 0x8CD5, [17960] = 0x8CCF,
+-  [17961] = 0x8CD7, [17962] = 0x8D96, [17963] = 0x8E09, [17964] = 0x8E02,
+-  [17965] = 0x8DFF, [17966] = 0x8E0D, [17967] = 0x8DFD, [17968] = 0x8E0A,
+-  [17969] = 0x8E03, [17970] = 0x8E07, [17971] = 0x8E06, [17972] = 0x8E05,
+-  [17973] = 0x8DFE, [17974] = 0x8E00, [17975] = 0x8E04, [17976] = 0x8F10,
+-  [17977] = 0x8F11, [17978] = 0x8F0E, [17979] = 0x8F0D, [17980] = 0x9123,
+-  [17981] = 0x911C, [17982] = 0x9120, [17983] = 0x9122, [17984] = 0x911F,
+-  [17985] = 0x911D, [17986] = 0x911A, [17987] = 0x9124, [17988] = 0x9121,
+-  [17989] = 0x911B, [17990] = 0x917A, [17991] = 0x9172, [17992] = 0x9179,
+-  [17993] = 0x9173, [17994] = 0x92A5, [17995] = 0x92A4, [17996] = 0x9276,
+-  [17997] = 0x929B, [17998] = 0x927A, [17999] = 0x92A0, [18000] = 0x9294,
+-  [18001] = 0x92AA, [18002] = 0x928D, [18037] = 0x92A6, [18038] = 0x929A,
+-  [18039] = 0x92AB, [18040] = 0x9279, [18041] = 0x9297, [18042] = 0x927F,
+-  [18043] = 0x92A3, [18044] = 0x92EE, [18045] = 0x928E, [18046] = 0x9282,
+-  [18047] = 0x9295, [18048] = 0x92A2, [18049] = 0x927D, [18050] = 0x9288,
+-  [18051] = 0x92A1, [18052] = 0x928A, [18053] = 0x9286, [18054] = 0x928C,
+-  [18055] = 0x9299, [18056] = 0x92A7, [18057] = 0x927E, [18058] = 0x9287,
+-  [18059] = 0x92A9, [18060] = 0x929D, [18061] = 0x928B, [18062] = 0x922D,
+-  [18063] = 0x969E, [18064] = 0x96A1, [18065] = 0x96FF, [18066] = 0x9758,
+-  [18067] = 0x977D, [18068] = 0x977A, [18069] = 0x977E, [18070] = 0x9783,
+-  [18071] = 0x9780, [18072] = 0x9782, [18073] = 0x977B, [18074] = 0x9784,
+-  [18075] = 0x9781, [18076] = 0x977F, [18077] = 0x97CE, [18078] = 0x97CD,
+-  [18079] = 0x9816, [18080] = 0x98AD, [18081] = 0x98AE, [18082] = 0x9902,
+-  [18083] = 0x9900, [18084] = 0x9907, [18085] = 0x999D, [18086] = 0x999C,
+-  [18087] = 0x99C3, [18088] = 0x99B9, [18089] = 0x99BB, [18090] = 0x99BA,
+-  [18091] = 0x99C2, [18092] = 0x99BD, [18093] = 0x99C7, [18094] = 0x9AB1,
+-  [18095] = 0x9AE3, [18096] = 0x9AE7, [18097] = 0x9B3E, [18098] = 0x9B3F,
+-  [18099] = 0x9B60, [18100] = 0x9B61, [18101] = 0x9B5F, [18102] = 0x9CF1,
+-  [18103] = 0x9CF2, [18104] = 0x9CF5, [18105] = 0x9EA7, [18106] = 0x50FF,
+-  [18107] = 0x5103, [18108] = 0x5130, [18109] = 0x50F8, [18110] = 0x5106,
+-  [18111] = 0x5107, [18112] = 0x50F6, [18113] = 0x50FE, [18114] = 0x510B,
+-  [18115] = 0x510C, [18116] = 0x50FD, [18117] = 0x510A, [18118] = 0x528B,
+-  [18119] = 0x528C, [18120] = 0x52F1, [18121] = 0x52EF, [18122] = 0x5648,
+-  [18123] = 0x5642, [18124] = 0x564C, [18125] = 0x5635, [18126] = 0x5641,
+-  [18127] = 0x564A, [18128] = 0x5649, [18129] = 0x5646, [18130] = 0x5658,
+-  [18135] = 0x565A, [18136] = 0x5640, [18137] = 0x5633, [18138] = 0x563D,
+-  [18139] = 0x562C, [18140] = 0x563E, [18141] = 0x5638, [18142] = 0x562A,
+-  [18143] = 0x563A, [18144] = 0x571A, [18145] = 0x58AB, [18146] = 0x589D,
+-  [18147] = 0x58B1, [18148] = 0x58A0, [18149] = 0x58A3, [18150] = 0x58AF,
+-  [18151] = 0x58AC, [18152] = 0x58A5, [18153] = 0x58A1, [18154] = 0x58FF,
+-  [18155] = 0x5AFF, [18156] = 0x5AF4, [18157] = 0x5AFD, [18158] = 0x5AF7,
+-  [18159] = 0x5AF6, [18160] = 0x5B03, [18161] = 0x5AF8, [18162] = 0x5B02,
+-  [18163] = 0x5AF9, [18164] = 0x5B01, [18165] = 0x5B07, [18166] = 0x5B05,
+-  [18167] = 0x5B0F, [18168] = 0x5C67, [18169] = 0x5D99, [18170] = 0x5D97,
+-  [18171] = 0x5D9F, [18172] = 0x5D92, [18173] = 0x5DA2, [18174] = 0x5D93,
+-  [18175] = 0x5D95, [18176] = 0x5DA0, [18177] = 0x5D9C, [18178] = 0x5DA1,
+-  [18179] = 0x5D9A, [18180] = 0x5D9E, [18181] = 0x5E69, [18182] = 0x5E5D,
+-  [18183] = 0x5E60, [18184] = 0x5E5C, [18185] = 0x7DF3, [18186] = 0x5EDB,
+-  [18187] = 0x5EDE, [18188] = 0x5EE1, [18189] = 0x5F49, [18190] = 0x5FB2,
+-  [18191] = 0x618B, [18192] = 0x6183, [18193] = 0x6179, [18194] = 0x61B1,
+-  [18195] = 0x61B0, [18196] = 0x61A2, [18197] = 0x6189, [18232] = 0x619B,
+-  [18233] = 0x6193, [18234] = 0x61AF, [18235] = 0x61AD, [18236] = 0x619F,
+-  [18237] = 0x6192, [18238] = 0x61AA, [18239] = 0x61A1, [18240] = 0x618D,
+-  [18241] = 0x6166, [18242] = 0x61B3, [18243] = 0x622D, [18244] = 0x646E,
+-  [18245] = 0x6470, [18246] = 0x6496, [18247] = 0x64A0, [18248] = 0x6485,
+-  [18249] = 0x6497, [18250] = 0x649C, [18251] = 0x648F, [18252] = 0x648B,
+-  [18253] = 0x648A, [18254] = 0x648C, [18255] = 0x64A3, [18256] = 0x649F,
+-  [18257] = 0x6468, [18258] = 0x64B1, [18259] = 0x6498, [18260] = 0x6576,
+-  [18261] = 0x657A, [18262] = 0x6579, [18263] = 0x657B, [18264] = 0x65B2,
+-  [18265] = 0x65B3, [18266] = 0x66B5, [18267] = 0x66B0, [18268] = 0x66A9,
+-  [18269] = 0x66B2, [18270] = 0x66B7, [18271] = 0x66AA, [18272] = 0x66AF,
+-  [18273] = 0x6A00, [18274] = 0x6A06, [18275] = 0x6A17, [18276] = 0x69E5,
+-  [18277] = 0x69F8, [18278] = 0x6A15, [18279] = 0x69F1, [18280] = 0x69E4,
+-  [18281] = 0x6A20, [18282] = 0x69FF, [18283] = 0x69EC, [18284] = 0x69E2,
+-  [18285] = 0x6A1B, [18286] = 0x6A1D, [18287] = 0x69FE, [18288] = 0x6A27,
+-  [18289] = 0x69F2, [18290] = 0x69EE, [18291] = 0x6A14, [18292] = 0x69F7,
+-  [18293] = 0x69E7, [18294] = 0x6A40, [18295] = 0x6A08, [18296] = 0x69E6,
+-  [18297] = 0x69FB, [18298] = 0x6A0D, [18299] = 0x69FC, [18300] = 0x69EB,
+-  [18301] = 0x6A09, [18302] = 0x6A04, [18303] = 0x6A18, [18304] = 0x6A25,
+-  [18305] = 0x6A0F, [18306] = 0x69F6, [18307] = 0x6A26, [18308] = 0x6A07,
+-  [18309] = 0x69F4, [18310] = 0x6A16, [18311] = 0x6B51, [18312] = 0x6BA5,
+-  [18313] = 0x6BA3, [18314] = 0x6BA2, [18315] = 0x6BA6, [18316] = 0x6C01,
+-  [18317] = 0x6C00, [18318] = 0x6BFF, [18319] = 0x6C02, [18320] = 0x6F41,
+-  [18321] = 0x6F26, [18322] = 0x6F7E, [18323] = 0x6F87, [18324] = 0x6FC6,
+-  [18325] = 0x6F92, [18330] = 0x6F8D, [18331] = 0x6F89, [18332] = 0x6F8C,
+-  [18333] = 0x6F62, [18334] = 0x6F4F, [18335] = 0x6F85, [18336] = 0x6F5A,
+-  [18337] = 0x6F96, [18338] = 0x6F76, [18339] = 0x6F6C, [18340] = 0x6F82,
+-  [18341] = 0x6F55, [18342] = 0x6F72, [18343] = 0x6F52, [18344] = 0x6F50,
+-  [18345] = 0x6F57, [18346] = 0x6F94, [18347] = 0x6F93, [18348] = 0x6F5D,
+-  [18349] = 0x6F00, [18350] = 0x6F61, [18351] = 0x6F6B, [18352] = 0x6F7D,
+-  [18353] = 0x6F67, [18354] = 0x6F90, [18355] = 0x6F53, [18356] = 0x6F8B,
+-  [18357] = 0x6F69, [18358] = 0x6F7F, [18359] = 0x6F95, [18360] = 0x6F63,
+-  [18361] = 0x6F77, [18362] = 0x6F6A, [18363] = 0x6F7B, [18364] = 0x71B2,
+-  [18365] = 0x71AF, [18366] = 0x719B, [18367] = 0x71B0, [18368] = 0x71A0,
+-  [18369] = 0x719A, [18370] = 0x71A9, [18371] = 0x71B5, [18372] = 0x719D,
+-  [18373] = 0x71A5, [18374] = 0x719E, [18375] = 0x71A4, [18376] = 0x71A1,
+-  [18377] = 0x71AA, [18378] = 0x719C, [18379] = 0x71A7, [18380] = 0x71B3,
+-  [18381] = 0x7298, [18382] = 0x729A, [18383] = 0x7358, [18384] = 0x7352,
+-  [18385] = 0x735E, [18386] = 0x735F, [18387] = 0x7360, [18388] = 0x735D,
+-  [18389] = 0x735B, [18390] = 0x7361, [18391] = 0x735A, [18392] = 0x7359,
+-  [18427] = 0x7362, [18428] = 0x7487, [18429] = 0x7489, [18430] = 0x748A,
+-  [18431] = 0x7486, [18432] = 0x7481, [18433] = 0x747D, [18434] = 0x7485,
+-  [18435] = 0x7488, [18436] = 0x747C, [18437] = 0x7479, [18438] = 0x7508,
+-  [18439] = 0x7507, [18440] = 0x757E, [18441] = 0x7625, [18442] = 0x761E,
+-  [18443] = 0x7619, [18444] = 0x761D, [18445] = 0x761C, [18446] = 0x7623,
+-  [18447] = 0x761A, [18448] = 0x7628, [18449] = 0x761B, [18450] = 0x769C,
+-  [18451] = 0x769D, [18452] = 0x769E, [18453] = 0x769B, [18454] = 0x778D,
+-  [18455] = 0x778F, [18456] = 0x7789, [18457] = 0x7788, [18458] = 0x78CD,
+-  [18459] = 0x78BB, [18460] = 0x78CF, [18461] = 0x78CC, [18462] = 0x78D1,
+-  [18463] = 0x78CE, [18464] = 0x78D4, [18465] = 0x78C8, [18466] = 0x78C3,
+-  [18467] = 0x78C4, [18468] = 0x78C9, [18469] = 0x799A, [18470] = 0x79A1,
+-  [18471] = 0x79A0, [18472] = 0x799C, [18473] = 0x79A2, [18474] = 0x799B,
+-  [18475] = 0x6B76, [18476] = 0x7A39, [18477] = 0x7AB2, [18478] = 0x7AB4,
+-  [18479] = 0x7AB3, [18480] = 0x7BB7, [18481] = 0x7BCB, [18482] = 0x7BBE,
+-  [18483] = 0x7BAC, [18484] = 0x7BCE, [18485] = 0x7BAF, [18486] = 0x7BB9,
+-  [18487] = 0x7BCA, [18488] = 0x7BB5, [18489] = 0x7CC5, [18490] = 0x7CC8,
+-  [18491] = 0x7CCC, [18492] = 0x7CCB, [18493] = 0x7DF7, [18494] = 0x7DDB,
+-  [18495] = 0x7DEA, [18496] = 0x7DE7, [18497] = 0x7DD7, [18498] = 0x7DE1,
+-  [18499] = 0x7E03, [18500] = 0x7DFA, [18501] = 0x7DE6, [18502] = 0x7DF6,
+-  [18503] = 0x7DF1, [18504] = 0x7DF0, [18505] = 0x7DEE, [18506] = 0x7DDF,
+-  [18507] = 0x7F76, [18508] = 0x7FAC, [18509] = 0x7FB0, [18510] = 0x7FAD,
+-  [18511] = 0x7FED, [18512] = 0x7FEB, [18513] = 0x7FEA, [18514] = 0x7FEC,
+-  [18515] = 0x7FE6, [18516] = 0x7FE8, [18517] = 0x8064, [18518] = 0x8067,
+-  [18519] = 0x81A3, [18520] = 0x819F, [18525] = 0x819E, [18526] = 0x8195,
+-  [18527] = 0x81A2, [18528] = 0x8199, [18529] = 0x8197, [18530] = 0x8216,
+-  [18531] = 0x824F, [18532] = 0x8253, [18533] = 0x8252, [18534] = 0x8250,
+-  [18535] = 0x824E, [18536] = 0x8251, [18537] = 0x8524, [18538] = 0x853B,
+-  [18539] = 0x850F, [18540] = 0x8500, [18541] = 0x8529, [18542] = 0x850E,
+-  [18543] = 0x8509, [18544] = 0x850D, [18545] = 0x851F, [18546] = 0x850A,
+-  [18547] = 0x8527, [18548] = 0x851C, [18549] = 0x84FB, [18550] = 0x852B,
+-  [18551] = 0x84FA, [18552] = 0x8508, [18553] = 0x850C, [18554] = 0x84F4,
+-  [18555] = 0x852A, [18556] = 0x84F2, [18557] = 0x8515, [18558] = 0x84F7,
+-  [18559] = 0x84EB, [18560] = 0x84F3, [18561] = 0x84FC, [18562] = 0x8512,
+-  [18563] = 0x84EA, [18564] = 0x84E9, [18565] = 0x8516, [18566] = 0x84FE,
+-  [18567] = 0x8528, [18568] = 0x851D, [18569] = 0x852E, [18570] = 0x8502,
+-  [18571] = 0x84FD, [18572] = 0x851E, [18573] = 0x84F6, [18574] = 0x8531,
+-  [18575] = 0x8526, [18576] = 0x84E7, [18577] = 0x84E8, [18578] = 0x84F0,
+-  [18579] = 0x84EF, [18580] = 0x84F9, [18581] = 0x8518, [18582] = 0x8520,
+-  [18583] = 0x8530, [18584] = 0x850B, [18585] = 0x8519, [18586] = 0x852F,
+-  [18587] = 0x8662, [18622] = 0x8756, [18623] = 0x8763, [18624] = 0x8764,
+-  [18625] = 0x8777, [18626] = 0x87E1, [18627] = 0x8773, [18628] = 0x8758,
+-  [18629] = 0x8754, [18630] = 0x875B, [18631] = 0x8752, [18632] = 0x8761,
+-  [18633] = 0x875A, [18634] = 0x8751, [18635] = 0x875E, [18636] = 0x876D,
+-  [18637] = 0x876A, [18638] = 0x8750, [18639] = 0x874E, [18640] = 0x875F,
+-  [18641] = 0x875D, [18642] = 0x876F, [18643] = 0x876C, [18644] = 0x877A,
+-  [18645] = 0x876E, [18646] = 0x875C, [18647] = 0x8765, [18648] = 0x874F,
+-  [18649] = 0x877B, [18650] = 0x8775, [18651] = 0x8762, [18652] = 0x8767,
+-  [18653] = 0x8769, [18654] = 0x885A, [18655] = 0x8905, [18656] = 0x890C,
+-  [18657] = 0x8914, [18658] = 0x890B, [18659] = 0x8917, [18660] = 0x8918,
+-  [18661] = 0x8919, [18662] = 0x8906, [18663] = 0x8916, [18664] = 0x8911,
+-  [18665] = 0x890E, [18666] = 0x8909, [18667] = 0x89A2, [18668] = 0x89A4,
+-  [18669] = 0x89A3, [18670] = 0x89ED, [18671] = 0x89F0, [18672] = 0x89EC,
+-  [18673] = 0x8ACF, [18674] = 0x8AC6, [18675] = 0x8AB8, [18676] = 0x8AD3,
+-  [18677] = 0x8AD1, [18678] = 0x8AD4, [18679] = 0x8AD5, [18680] = 0x8ABB,
+-  [18681] = 0x8AD7, [18682] = 0x8ABE, [18683] = 0x8AC0, [18684] = 0x8AC5,
+-  [18685] = 0x8AD8, [18686] = 0x8AC3, [18687] = 0x8ABA, [18688] = 0x8ABD,
+-  [18689] = 0x8AD9, [18690] = 0x8C3E, [18691] = 0x8C4D, [18692] = 0x8C8F,
+-  [18693] = 0x8CE5, [18694] = 0x8CDF, [18695] = 0x8CD9, [18696] = 0x8CE8,
+-  [18697] = 0x8CDA, [18698] = 0x8CDD, [18699] = 0x8CE7, [18700] = 0x8DA0,
+-  [18701] = 0x8D9C, [18702] = 0x8DA1, [18703] = 0x8D9B, [18704] = 0x8E20,
+-  [18705] = 0x8E23, [18706] = 0x8E25, [18707] = 0x8E24, [18708] = 0x8E2E,
+-  [18709] = 0x8E15, [18710] = 0x8E1B, [18711] = 0x8E16, [18712] = 0x8E11,
+-  [18713] = 0x8E19, [18714] = 0x8E26, [18715] = 0x8E27, [18720] = 0x8E14,
+-  [18721] = 0x8E12, [18722] = 0x8E18, [18723] = 0x8E13, [18724] = 0x8E1C,
+-  [18725] = 0x8E17, [18726] = 0x8E1A, [18727] = 0x8F2C, [18728] = 0x8F24,
+-  [18729] = 0x8F18, [18730] = 0x8F1A, [18731] = 0x8F20, [18732] = 0x8F23,
+-  [18733] = 0x8F16, [18734] = 0x8F17, [18735] = 0x9073, [18736] = 0x9070,
+-  [18737] = 0x906F, [18738] = 0x9067, [18739] = 0x906B, [18740] = 0x912F,
+-  [18741] = 0x912B, [18742] = 0x9129, [18743] = 0x912A, [18744] = 0x9132,
+-  [18745] = 0x9126, [18746] = 0x912E, [18747] = 0x9185, [18748] = 0x9186,
+-  [18749] = 0x918A, [18750] = 0x9181, [18751] = 0x9182, [18752] = 0x9184,
+-  [18753] = 0x9180, [18754] = 0x92D0, [18755] = 0x92C3, [18756] = 0x92C4,
+-  [18757] = 0x92C0, [18758] = 0x92D9, [18759] = 0x92B6, [18760] = 0x92CF,
+-  [18761] = 0x92F1, [18762] = 0x92DF, [18763] = 0x92D8, [18764] = 0x92E9,
+-  [18765] = 0x92D7, [18766] = 0x92DD, [18767] = 0x92CC, [18768] = 0x92EF,
+-  [18769] = 0x92C2, [18770] = 0x92E8, [18771] = 0x92CA, [18772] = 0x92C8,
+-  [18773] = 0x92CE, [18774] = 0x92E6, [18775] = 0x92CD, [18776] = 0x92D5,
+-  [18777] = 0x92C9, [18778] = 0x92E0, [18779] = 0x92DE, [18780] = 0x92E7,
+-  [18781] = 0x92D1, [18782] = 0x92D3, [18817] = 0x92B5, [18818] = 0x92E1,
+-  [18819] = 0x92C6, [18820] = 0x92B4, [18821] = 0x957C, [18822] = 0x95AC,
+-  [18823] = 0x95AB, [18824] = 0x95AE, [18825] = 0x95B0, [18826] = 0x96A4,
+-  [18827] = 0x96A2, [18828] = 0x96D3, [18829] = 0x9705, [18830] = 0x9708,
+-  [18831] = 0x9702, [18832] = 0x975A, [18833] = 0x978A, [18834] = 0x978E,
+-  [18835] = 0x9788, [18836] = 0x97D0, [18837] = 0x97CF, [18838] = 0x981E,
+-  [18839] = 0x981D, [18840] = 0x9826, [18841] = 0x9829, [18842] = 0x9828,
+-  [18843] = 0x9820, [18844] = 0x981B, [18845] = 0x9827, [18846] = 0x98B2,
+-  [18847] = 0x9908, [18848] = 0x98FA, [18849] = 0x9911, [18850] = 0x9914,
+-  [18851] = 0x9916, [18852] = 0x9917, [18853] = 0x9915, [18854] = 0x99DC,
+-  [18855] = 0x99CD, [18856] = 0x99CF, [18857] = 0x99D3, [18858] = 0x99D4,
+-  [18859] = 0x99CE, [18860] = 0x99C9, [18861] = 0x99D6, [18862] = 0x99D8,
+-  [18863] = 0x99CB, [18864] = 0x99D7, [18865] = 0x99CC, [18866] = 0x9AB3,
+-  [18867] = 0x9AEC, [18868] = 0x9AEB, [18869] = 0x9AF3, [18870] = 0x9AF2,
+-  [18871] = 0x9AF1, [18872] = 0x9B46, [18873] = 0x9B43, [18874] = 0x9B67,
+-  [18875] = 0x9B74, [18876] = 0x9B71, [18877] = 0x9B66, [18878] = 0x9B76,
+-  [18879] = 0x9B75, [18880] = 0x9B70, [18881] = 0x9B68, [18882] = 0x9B64,
+-  [18883] = 0x9B6C, [18884] = 0x9CFC, [18885] = 0x9CFA, [18886] = 0x9CFD,
+-  [18887] = 0x9CFF, [18888] = 0x9CF7, [18889] = 0x9D07, [18890] = 0x9D00,
+-  [18891] = 0x9CF9, [18892] = 0x9CFB, [18893] = 0x9D08, [18894] = 0x9D05,
+-  [18895] = 0x9D04, [18896] = 0x9E83, [18897] = 0x9ED3, [18898] = 0x9F0F,
+-  [18899] = 0x9F10, [18900] = 0x511C, [18901] = 0x5113, [18902] = 0x5117,
+-  [18903] = 0x511A, [18904] = 0x5111, [18905] = 0x51DE, [18906] = 0x5334,
+-  [18907] = 0x53E1, [18908] = 0x5670, [18909] = 0x5660, [18910] = 0x566E,
+-  [18915] = 0x5673, [18916] = 0x5666, [18917] = 0x5663, [18918] = 0x566D,
+-  [18919] = 0x5672, [18920] = 0x565E, [18921] = 0x5677, [18922] = 0x571C,
+-  [18923] = 0x571B, [18924] = 0x58C8, [18925] = 0x58BD, [18926] = 0x58C9,
+-  [18927] = 0x58BF, [18928] = 0x58BA, [18929] = 0x58C2, [18930] = 0x58BC,
+-  [18931] = 0x58C6, [18932] = 0x5B17, [18933] = 0x5B19, [18934] = 0x5B1B,
+-  [18935] = 0x5B21, [18936] = 0x5B14, [18937] = 0x5B13, [18938] = 0x5B10,
+-  [18939] = 0x5B16, [18940] = 0x5B28, [18941] = 0x5B1A, [18942] = 0x5B20,
+-  [18943] = 0x5B1E, [18944] = 0x5BEF, [18945] = 0x5DAC, [18946] = 0x5DB1,
+-  [18947] = 0x5DA9, [18948] = 0x5DA7, [18949] = 0x5DB5, [18950] = 0x5DB0,
+-  [18951] = 0x5DAE, [18952] = 0x5DAA, [18953] = 0x5DA8, [18954] = 0x5DB2,
+-  [18955] = 0x5DAD, [18956] = 0x5DAF, [18957] = 0x5DB4, [18958] = 0x5E67,
+-  [18959] = 0x5E68, [18960] = 0x5E66, [18961] = 0x5E6F, [18962] = 0x5EE9,
+-  [18963] = 0x5EE7, [18964] = 0x5EE6, [18965] = 0x5EE8, [18966] = 0x5EE5,
+-  [18967] = 0x5F4B, [18968] = 0x5FBC, [18969] = 0x619D, [18970] = 0x61A8,
+-  [18971] = 0x6196, [18972] = 0x61C5, [18973] = 0x61B4, [18974] = 0x61C6,
+-  [18975] = 0x61C1, [18976] = 0x61CC, [18977] = 0x61BA, [19012] = 0x61BF,
+-  [19013] = 0x61B8, [19014] = 0x618C, [19015] = 0x64D7, [19016] = 0x64D6,
+-  [19017] = 0x64D0, [19018] = 0x64CF, [19019] = 0x64C9, [19020] = 0x64BD,
+-  [19021] = 0x6489, [19022] = 0x64C3, [19023] = 0x64DB, [19024] = 0x64F3,
+-  [19025] = 0x64D9, [19026] = 0x6533, [19027] = 0x657F, [19028] = 0x657C,
+-  [19029] = 0x65A2, [19030] = 0x66C8, [19031] = 0x66BE, [19032] = 0x66C0,
+-  [19033] = 0x66CA, [19034] = 0x66CB, [19035] = 0x66CF, [19036] = 0x66BD,
+-  [19037] = 0x66BB, [19038] = 0x66BA, [19039] = 0x66CC, [19040] = 0x6723,
+-  [19041] = 0x6A34, [19042] = 0x6A66, [19043] = 0x6A49, [19044] = 0x6A67,
+-  [19045] = 0x6A32, [19046] = 0x6A68, [19047] = 0x6A3E, [19048] = 0x6A5D,
+-  [19049] = 0x6A6D, [19050] = 0x6A76, [19051] = 0x6A5B, [19052] = 0x6A51,
+-  [19053] = 0x6A28, [19054] = 0x6A5A, [19055] = 0x6A3B, [19056] = 0x6A3F,
+-  [19057] = 0x6A41, [19058] = 0x6A6A, [19059] = 0x6A64, [19060] = 0x6A50,
+-  [19061] = 0x6A4F, [19062] = 0x6A54, [19063] = 0x6A6F, [19064] = 0x6A69,
+-  [19065] = 0x6A60, [19066] = 0x6A3C, [19067] = 0x6A5E, [19068] = 0x6A56,
+-  [19069] = 0x6A55, [19070] = 0x6A4D, [19071] = 0x6A4E, [19072] = 0x6A46,
+-  [19073] = 0x6B55, [19074] = 0x6B54, [19075] = 0x6B56, [19076] = 0x6BA7,
+-  [19077] = 0x6BAA, [19078] = 0x6BAB, [19079] = 0x6BC8, [19080] = 0x6BC7,
+-  [19081] = 0x6C04, [19082] = 0x6C03, [19083] = 0x6C06, [19084] = 0x6FAD,
+-  [19085] = 0x6FCB, [19086] = 0x6FA3, [19087] = 0x6FC7, [19088] = 0x6FBC,
+-  [19089] = 0x6FCE, [19090] = 0x6FC8, [19091] = 0x6F5E, [19092] = 0x6FC4,
+-  [19093] = 0x6FBD, [19094] = 0x6F9E, [19095] = 0x6FCA, [19096] = 0x6FA8,
+-  [19097] = 0x7004, [19098] = 0x6FA5, [19099] = 0x6FAE, [19100] = 0x6FBA,
+-  [19101] = 0x6FAC, [19102] = 0x6FAA, [19103] = 0x6FCF, [19104] = 0x6FBF,
+-  [19105] = 0x6FB8, [19110] = 0x6FA2, [19111] = 0x6FC9, [19112] = 0x6FAB,
+-  [19113] = 0x6FCD, [19114] = 0x6FAF, [19115] = 0x6FB2, [19116] = 0x6FB0,
+-  [19117] = 0x71C5, [19118] = 0x71C2, [19119] = 0x71BF, [19120] = 0x71B8,
+-  [19121] = 0x71D6, [19122] = 0x71C0, [19123] = 0x71C1, [19124] = 0x71CB,
+-  [19125] = 0x71D4, [19126] = 0x71CA, [19127] = 0x71C7, [19128] = 0x71CF,
+-  [19129] = 0x71BD, [19130] = 0x71D8, [19131] = 0x71BC, [19132] = 0x71C6,
+-  [19133] = 0x71DA, [19134] = 0x71DB, [19135] = 0x729D, [19136] = 0x729E,
+-  [19137] = 0x7369, [19138] = 0x7366, [19139] = 0x7367, [19140] = 0x736C,
+-  [19141] = 0x7365, [19142] = 0x736B, [19143] = 0x736A, [19144] = 0x747F,
+-  [19145] = 0x749A, [19146] = 0x74A0, [19147] = 0x7494, [19148] = 0x7492,
+-  [19149] = 0x7495, [19150] = 0x74A1, [19151] = 0x750B, [19152] = 0x7580,
+-  [19153] = 0x762F, [19154] = 0x762D, [19155] = 0x7631, [19156] = 0x763D,
+-  [19157] = 0x7633, [19158] = 0x763C, [19159] = 0x7635, [19160] = 0x7632,
+-  [19161] = 0x7630, [19162] = 0x76BB, [19163] = 0x76E6, [19164] = 0x779A,
+-  [19165] = 0x779D, [19166] = 0x77A1, [19167] = 0x779C, [19168] = 0x779B,
+-  [19169] = 0x77A2, [19170] = 0x77A3, [19171] = 0x7795, [19172] = 0x7799,
+-  [19207] = 0x7797, [19208] = 0x78DD, [19209] = 0x78E9, [19210] = 0x78E5,
+-  [19211] = 0x78EA, [19212] = 0x78DE, [19213] = 0x78E3, [19214] = 0x78DB,
+-  [19215] = 0x78E1, [19216] = 0x78E2, [19217] = 0x78ED, [19218] = 0x78DF,
+-  [19219] = 0x78E0, [19220] = 0x79A4, [19221] = 0x7A44, [19222] = 0x7A48,
+-  [19223] = 0x7A47, [19224] = 0x7AB6, [19225] = 0x7AB8, [19226] = 0x7AB5,
+-  [19227] = 0x7AB1, [19228] = 0x7AB7, [19229] = 0x7BDE, [19230] = 0x7BE3,
+-  [19231] = 0x7BE7, [19232] = 0x7BDD, [19233] = 0x7BD5, [19234] = 0x7BE5,
+-  [19235] = 0x7BDA, [19236] = 0x7BE8, [19237] = 0x7BF9, [19238] = 0x7BD4,
+-  [19239] = 0x7BEA, [19240] = 0x7BE2, [19241] = 0x7BDC, [19242] = 0x7BEB,
+-  [19243] = 0x7BD8, [19244] = 0x7BDF, [19245] = 0x7CD2, [19246] = 0x7CD4,
+-  [19247] = 0x7CD7, [19248] = 0x7CD0, [19249] = 0x7CD1, [19250] = 0x7E12,
+-  [19251] = 0x7E21, [19252] = 0x7E17, [19253] = 0x7E0C, [19254] = 0x7E1F,
+-  [19255] = 0x7E20, [19256] = 0x7E13, [19257] = 0x7E0E, [19258] = 0x7E1C,
+-  [19259] = 0x7E15, [19260] = 0x7E1A, [19261] = 0x7E22, [19262] = 0x7E0B,
+-  [19263] = 0x7E0F, [19264] = 0x7E16, [19265] = 0x7E0D, [19266] = 0x7E14,
+-  [19267] = 0x7E25, [19268] = 0x7E24, [19269] = 0x7F43, [19270] = 0x7F7B,
+-  [19271] = 0x7F7C, [19272] = 0x7F7A, [19273] = 0x7FB1, [19274] = 0x7FEF,
+-  [19275] = 0x802A, [19276] = 0x8029, [19277] = 0x806C, [19278] = 0x81B1,
+-  [19279] = 0x81A6, [19280] = 0x81AE, [19281] = 0x81B9, [19282] = 0x81B5,
+-  [19283] = 0x81AB, [19284] = 0x81B0, [19285] = 0x81AC, [19286] = 0x81B4,
+-  [19287] = 0x81B2, [19288] = 0x81B7, [19289] = 0x81A7, [19290] = 0x81F2,
+-  [19291] = 0x8255, [19292] = 0x8256, [19293] = 0x8257, [19294] = 0x8556,
+-  [19295] = 0x8545, [19296] = 0x856B, [19297] = 0x854D, [19298] = 0x8553,
+-  [19299] = 0x8561, [19300] = 0x8558, [19305] = 0x8540, [19306] = 0x8546,
+-  [19307] = 0x8564, [19308] = 0x8541, [19309] = 0x8562, [19310] = 0x8544,
+-  [19311] = 0x8551, [19312] = 0x8547, [19313] = 0x8563, [19314] = 0x853E,
+-  [19315] = 0x855B, [19316] = 0x8571, [19317] = 0x854E, [19318] = 0x856E,
+-  [19319] = 0x8575, [19320] = 0x8555, [19321] = 0x8567, [19322] = 0x8560,
+-  [19323] = 0x858C, [19324] = 0x8566, [19325] = 0x855D, [19326] = 0x8554,
+-  [19327] = 0x8565, [19328] = 0x856C, [19329] = 0x8663, [19330] = 0x8665,
+-  [19331] = 0x8664, [19332] = 0x879B, [19333] = 0x878F, [19334] = 0x8797,
+-  [19335] = 0x8793, [19336] = 0x8792, [19337] = 0x8788, [19338] = 0x8781,
+-  [19339] = 0x8796, [19340] = 0x8798, [19341] = 0x8779, [19342] = 0x8787,
+-  [19343] = 0x87A3, [19344] = 0x8785, [19345] = 0x8790, [19346] = 0x8791,
+-  [19347] = 0x879D, [19348] = 0x8784, [19349] = 0x8794, [19350] = 0x879C,
+-  [19351] = 0x879A, [19352] = 0x8789, [19353] = 0x891E, [19354] = 0x8926,
+-  [19355] = 0x8930, [19356] = 0x892D, [19357] = 0x892E, [19358] = 0x8927,
+-  [19359] = 0x8931, [19360] = 0x8922, [19361] = 0x8929, [19362] = 0x8923,
+-  [19363] = 0x892F, [19364] = 0x892C, [19365] = 0x891F, [19366] = 0x89F1,
+-  [19367] = 0x8AE0, [19402] = 0x8AE2, [19403] = 0x8AF2, [19404] = 0x8AF4,
+-  [19405] = 0x8AF5, [19406] = 0x8ADD, [19407] = 0x8B14, [19408] = 0x8AE4,
+-  [19409] = 0x8ADF, [19410] = 0x8AF0, [19411] = 0x8AC8, [19412] = 0x8ADE,
+-  [19413] = 0x8AE1, [19414] = 0x8AE8, [19415] = 0x8AFF, [19416] = 0x8AEF,
+-  [19417] = 0x8AFB, [19418] = 0x8C91, [19419] = 0x8C92, [19420] = 0x8C90,
+-  [19421] = 0x8CF5, [19422] = 0x8CEE, [19423] = 0x8CF1, [19424] = 0x8CF0,
+-  [19425] = 0x8CF3, [19426] = 0x8D6C, [19427] = 0x8D6E, [19428] = 0x8DA5,
+-  [19429] = 0x8DA7, [19430] = 0x8E33, [19431] = 0x8E3E, [19432] = 0x8E38,
+-  [19433] = 0x8E40, [19434] = 0x8E45, [19435] = 0x8E36, [19436] = 0x8E3C,
+-  [19437] = 0x8E3D, [19438] = 0x8E41, [19439] = 0x8E30, [19440] = 0x8E3F,
+-  [19441] = 0x8EBD, [19442] = 0x8F36, [19443] = 0x8F2E, [19444] = 0x8F35,
+-  [19445] = 0x8F32, [19446] = 0x8F39, [19447] = 0x8F37, [19448] = 0x8F34,
+-  [19449] = 0x9076, [19450] = 0x9079, [19451] = 0x907B, [19452] = 0x9086,
+-  [19453] = 0x90FA, [19454] = 0x9133, [19455] = 0x9135, [19456] = 0x9136,
+-  [19457] = 0x9193, [19458] = 0x9190, [19459] = 0x9191, [19460] = 0x918D,
+-  [19461] = 0x918F, [19462] = 0x9327, [19463] = 0x931E, [19464] = 0x9308,
+-  [19465] = 0x931F, [19466] = 0x9306, [19467] = 0x930F, [19468] = 0x937A,
+-  [19469] = 0x9338, [19470] = 0x933C, [19471] = 0x931B, [19472] = 0x9323,
+-  [19473] = 0x9312, [19474] = 0x9301, [19475] = 0x9346, [19476] = 0x932D,
+-  [19477] = 0x930E, [19478] = 0x930D, [19479] = 0x92CB, [19480] = 0x931D,
+-  [19481] = 0x92FA, [19482] = 0x9325, [19483] = 0x9313, [19484] = 0x92F9,
+-  [19485] = 0x92F7, [19486] = 0x9334, [19487] = 0x9302, [19488] = 0x9324,
+-  [19489] = 0x92FF, [19490] = 0x9329, [19491] = 0x9339, [19492] = 0x9335,
+-  [19493] = 0x932A, [19494] = 0x9314, [19495] = 0x930C, [19500] = 0x930B,
+-  [19501] = 0x92FE, [19502] = 0x9309, [19503] = 0x9300, [19504] = 0x92FB,
+-  [19505] = 0x9316, [19506] = 0x95BC, [19507] = 0x95CD, [19508] = 0x95BE,
+-  [19509] = 0x95B9, [19510] = 0x95BA, [19511] = 0x95B6, [19512] = 0x95BF,
+-  [19513] = 0x95B5, [19514] = 0x95BD, [19515] = 0x96A9, [19516] = 0x96D4,
+-  [19517] = 0x970B, [19518] = 0x9712, [19519] = 0x9710, [19520] = 0x9799,
+-  [19521] = 0x9797, [19522] = 0x9794, [19523] = 0x97F0, [19524] = 0x97F8,
+-  [19525] = 0x9835, [19526] = 0x982F, [19527] = 0x9832, [19528] = 0x9924,
+-  [19529] = 0x991F, [19530] = 0x9927, [19531] = 0x9929, [19532] = 0x999E,
+-  [19533] = 0x99EE, [19534] = 0x99EC, [19535] = 0x99E5, [19536] = 0x99E4,
+-  [19537] = 0x99F0, [19538] = 0x99E3, [19539] = 0x99EA, [19540] = 0x99E9,
+-  [19541] = 0x99E7, [19542] = 0x9AB9, [19543] = 0x9ABF, [19544] = 0x9AB4,
+-  [19545] = 0x9ABB, [19546] = 0x9AF6, [19547] = 0x9AFA, [19548] = 0x9AF9,
+-  [19549] = 0x9AF7, [19550] = 0x9B33, [19551] = 0x9B80, [19552] = 0x9B85,
+-  [19553] = 0x9B87, [19554] = 0x9B7C, [19555] = 0x9B7E, [19556] = 0x9B7B,
+-  [19557] = 0x9B82, [19558] = 0x9B93, [19559] = 0x9B92, [19560] = 0x9B90,
+-  [19561] = 0x9B7A, [19562] = 0x9B95, [19597] = 0x9B7D, [19598] = 0x9B88,
+-  [19599] = 0x9D25, [19600] = 0x9D17, [19601] = 0x9D20, [19602] = 0x9D1E,
+-  [19603] = 0x9D14, [19604] = 0x9D29, [19605] = 0x9D1D, [19606] = 0x9D18,
+-  [19607] = 0x9D22, [19608] = 0x9D10, [19609] = 0x9D19, [19610] = 0x9D1F,
+-  [19611] = 0x9E88, [19612] = 0x9E86, [19613] = 0x9E87, [19614] = 0x9EAE,
+-  [19615] = 0x9EAD, [19616] = 0x9ED5, [19617] = 0x9ED6, [19618] = 0x9EFA,
+-  [19619] = 0x9F12, [19620] = 0x9F3D, [19621] = 0x5126, [19622] = 0x5125,
+-  [19623] = 0x5122, [19624] = 0x5124, [19625] = 0x5120, [19626] = 0x5129,
+-  [19627] = 0x52F4, [19628] = 0x5693, [19629] = 0x568C, [19630] = 0x568D,
+-  [19631] = 0x5686, [19632] = 0x5684, [19633] = 0x5683, [19634] = 0x567E,
+-  [19635] = 0x5682, [19636] = 0x567F, [19637] = 0x5681, [19638] = 0x58D6,
+-  [19639] = 0x58D4, [19640] = 0x58CF, [19641] = 0x58D2, [19642] = 0x5B2D,
+-  [19643] = 0x5B25, [19644] = 0x5B32, [19645] = 0x5B23, [19646] = 0x5B2C,
+-  [19647] = 0x5B27, [19648] = 0x5B26, [19649] = 0x5B2F, [19650] = 0x5B2E,
+-  [19651] = 0x5B7B, [19652] = 0x5BF1, [19653] = 0x5BF2, [19654] = 0x5DB7,
+-  [19655] = 0x5E6C, [19656] = 0x5E6A, [19657] = 0x5FBE, [19658] = 0x5FBB,
+-  [19659] = 0x61C3, [19660] = 0x61B5, [19661] = 0x61BC, [19662] = 0x61E7,
+-  [19663] = 0x61E0, [19664] = 0x61E5, [19665] = 0x61E4, [19666] = 0x61E8,
+-  [19667] = 0x61DE, [19668] = 0x64EF, [19669] = 0x64E9, [19670] = 0x64E3,
+-  [19671] = 0x64EB, [19672] = 0x64E4, [19673] = 0x64E8, [19674] = 0x6581,
+-  [19675] = 0x6580, [19676] = 0x65B6, [19677] = 0x65DA, [19678] = 0x66D2,
+-  [19679] = 0x6A8D, [19680] = 0x6A96, [19681] = 0x6A81, [19682] = 0x6AA5,
+-  [19683] = 0x6A89, [19684] = 0x6A9F, [19685] = 0x6A9B, [19686] = 0x6AA1,
+-  [19687] = 0x6A9E, [19688] = 0x6A87, [19689] = 0x6A93, [19690] = 0x6A8E,
+-  [19695] = 0x6A95, [19696] = 0x6A83, [19697] = 0x6AA8, [19698] = 0x6AA4,
+-  [19699] = 0x6A91, [19700] = 0x6A7F, [19701] = 0x6AA6, [19702] = 0x6A9A,
+-  [19703] = 0x6A85, [19704] = 0x6A8C, [19705] = 0x6A92, [19706] = 0x6B5B,
+-  [19707] = 0x6BAD, [19708] = 0x6C09, [19709] = 0x6FCC, [19710] = 0x6FA9,
+-  [19711] = 0x6FF4, [19712] = 0x6FD4, [19713] = 0x6FE3, [19714] = 0x6FDC,
+-  [19715] = 0x6FED, [19716] = 0x6FE7, [19717] = 0x6FE6, [19718] = 0x6FDE,
+-  [19719] = 0x6FF2, [19720] = 0x6FDD, [19721] = 0x6FE2, [19722] = 0x6FE8,
+-  [19723] = 0x71E1, [19724] = 0x71F1, [19725] = 0x71E8, [19726] = 0x71F2,
+-  [19727] = 0x71E4, [19728] = 0x71F0, [19729] = 0x71E2, [19730] = 0x7373,
+-  [19731] = 0x736E, [19732] = 0x736F, [19733] = 0x7497, [19734] = 0x74B2,
+-  [19735] = 0x74AB, [19736] = 0x7490, [19737] = 0x74AA, [19738] = 0x74AD,
+-  [19739] = 0x74B1, [19740] = 0x74A5, [19741] = 0x74AF, [19742] = 0x7510,
+-  [19743] = 0x7511, [19744] = 0x7512, [19745] = 0x750F, [19746] = 0x7584,
+-  [19747] = 0x7643, [19748] = 0x7648, [19749] = 0x7649, [19750] = 0x7647,
+-  [19751] = 0x76A4, [19752] = 0x76E9, [19753] = 0x77B5, [19754] = 0x77AB,
+-  [19755] = 0x77B2, [19756] = 0x77B7, [19757] = 0x77B6, [19792] = 0x77B4,
+-  [19793] = 0x77B1, [19794] = 0x77A8, [19795] = 0x77F0, [19796] = 0x78F3,
+-  [19797] = 0x78FD, [19798] = 0x7902, [19799] = 0x78FB, [19800] = 0x78FC,
+-  [19801] = 0x78F2, [19802] = 0x7905, [19803] = 0x78F9, [19804] = 0x78FE,
+-  [19805] = 0x7904, [19806] = 0x79AB, [19807] = 0x79A8, [19808] = 0x7A5C,
+-  [19809] = 0x7A5B, [19810] = 0x7A56, [19811] = 0x7A58, [19812] = 0x7A54,
+-  [19813] = 0x7A5A, [19814] = 0x7ABE, [19815] = 0x7AC0, [19816] = 0x7AC1,
+-  [19817] = 0x7C05, [19818] = 0x7C0F, [19819] = 0x7BF2, [19820] = 0x7C00,
+-  [19821] = 0x7BFF, [19822] = 0x7BFB, [19823] = 0x7C0E, [19824] = 0x7BF4,
+-  [19825] = 0x7C0B, [19826] = 0x7BF3, [19827] = 0x7C02, [19828] = 0x7C09,
+-  [19829] = 0x7C03, [19830] = 0x7C01, [19831] = 0x7BF8, [19832] = 0x7BFD,
+-  [19833] = 0x7C06, [19834] = 0x7BF0, [19835] = 0x7BF1, [19836] = 0x7C10,
+-  [19837] = 0x7C0A, [19838] = 0x7CE8, [19839] = 0x7E2D, [19840] = 0x7E3C,
+-  [19841] = 0x7E42, [19842] = 0x7E33, [19843] = 0x9848, [19844] = 0x7E38,
+-  [19845] = 0x7E2A, [19846] = 0x7E49, [19847] = 0x7E40, [19848] = 0x7E47,
+-  [19849] = 0x7E29, [19850] = 0x7E4C, [19851] = 0x7E30, [19852] = 0x7E3B,
+-  [19853] = 0x7E36, [19854] = 0x7E44, [19855] = 0x7E3A, [19856] = 0x7F45,
+-  [19857] = 0x7F7F, [19858] = 0x7F7E, [19859] = 0x7F7D, [19860] = 0x7FF4,
+-  [19861] = 0x7FF2, [19862] = 0x802C, [19863] = 0x81BB, [19864] = 0x81C4,
+-  [19865] = 0x81CC, [19866] = 0x81CA, [19867] = 0x81C5, [19868] = 0x81C7,
+-  [19869] = 0x81BC, [19870] = 0x81E9, [19871] = 0x825B, [19872] = 0x825A,
+-  [19873] = 0x825C, [19874] = 0x8583, [19875] = 0x8580, [19876] = 0x858F,
+-  [19877] = 0x85A7, [19878] = 0x8595, [19879] = 0x85A0, [19880] = 0x858B,
+-  [19881] = 0x85A3, [19882] = 0x857B, [19883] = 0x85A4, [19884] = 0x859A,
+-  [19885] = 0x859E, [19890] = 0x8577, [19891] = 0x857C, [19892] = 0x8589,
+-  [19893] = 0x85A1, [19894] = 0x857A, [19895] = 0x8578, [19896] = 0x8557,
+-  [19897] = 0x858E, [19898] = 0x8596, [19899] = 0x8586, [19900] = 0x858D,
+-  [19901] = 0x8599, [19902] = 0x859D, [19903] = 0x8581, [19904] = 0x85A2,
+-  [19905] = 0x8582, [19906] = 0x8588, [19907] = 0x8585, [19908] = 0x8579,
+-  [19909] = 0x8576, [19910] = 0x8598, [19911] = 0x8590, [19912] = 0x859F,
+-  [19913] = 0x8668, [19914] = 0x87BE, [19915] = 0x87AA, [19916] = 0x87AD,
+-  [19917] = 0x87C5, [19918] = 0x87B0, [19919] = 0x87AC, [19920] = 0x87B9,
+-  [19921] = 0x87B5, [19922] = 0x87BC, [19923] = 0x87AE, [19924] = 0x87C9,
+-  [19925] = 0x87C3, [19926] = 0x87C2, [19927] = 0x87CC, [19928] = 0x87B7,
+-  [19929] = 0x87AF, [19930] = 0x87C4, [19931] = 0x87CA, [19932] = 0x87B4,
+-  [19933] = 0x87B6, [19934] = 0x87BF, [19935] = 0x87B8, [19936] = 0x87BD,
+-  [19937] = 0x87DE, [19938] = 0x87B2, [19939] = 0x8935, [19940] = 0x8933,
+-  [19941] = 0x893C, [19942] = 0x893E, [19943] = 0x8941, [19944] = 0x8952,
+-  [19945] = 0x8937, [19946] = 0x8942, [19947] = 0x89AD, [19948] = 0x89AF,
+-  [19949] = 0x89AE, [19950] = 0x89F2, [19951] = 0x89F3, [19952] = 0x8B1E,
+-  [19987] = 0x8B18, [19988] = 0x8B16, [19989] = 0x8B11, [19990] = 0x8B05,
+-  [19991] = 0x8B0B, [19992] = 0x8B22, [19993] = 0x8B0F, [19994] = 0x8B12,
+-  [19995] = 0x8B15, [19996] = 0x8B07, [19997] = 0x8B0D, [19998] = 0x8B08,
+-  [19999] = 0x8B06, [20000] = 0x8B1C, [20001] = 0x8B13, [20002] = 0x8B1A,
+-  [20003] = 0x8C4F, [20004] = 0x8C70, [20005] = 0x8C72, [20006] = 0x8C71,
+-  [20007] = 0x8C6F, [20008] = 0x8C95, [20009] = 0x8C94, [20010] = 0x8CF9,
+-  [20011] = 0x8D6F, [20012] = 0x8E4E, [20013] = 0x8E4D, [20014] = 0x8E53,
+-  [20015] = 0x8E50, [20016] = 0x8E4C, [20017] = 0x8E47, [20018] = 0x8F43,
+-  [20019] = 0x8F40, [20020] = 0x9085, [20021] = 0x907E, [20022] = 0x9138,
+-  [20023] = 0x919A, [20024] = 0x91A2, [20025] = 0x919B, [20026] = 0x9199,
+-  [20027] = 0x919F, [20028] = 0x91A1, [20029] = 0x919D, [20030] = 0x91A0,
+-  [20031] = 0x93A1, [20032] = 0x9383, [20033] = 0x93AF, [20034] = 0x9364,
+-  [20035] = 0x9356, [20036] = 0x9347, [20037] = 0x937C, [20038] = 0x9358,
+-  [20039] = 0x935C, [20040] = 0x9376, [20041] = 0x9349, [20042] = 0x9350,
+-  [20043] = 0x9351, [20044] = 0x9360, [20045] = 0x936D, [20046] = 0x938F,
+-  [20047] = 0x934C, [20048] = 0x936A, [20049] = 0x9379, [20050] = 0x9357,
+-  [20051] = 0x9355, [20052] = 0x9352, [20053] = 0x934F, [20054] = 0x9371,
+-  [20055] = 0x9377, [20056] = 0x937B, [20057] = 0x9361, [20058] = 0x935E,
+-  [20059] = 0x9363, [20060] = 0x9367, [20061] = 0x9380, [20062] = 0x934E,
+-  [20063] = 0x9359, [20064] = 0x95C7, [20065] = 0x95C0, [20066] = 0x95C9,
+-  [20067] = 0x95C3, [20068] = 0x95C5, [20069] = 0x95B7, [20070] = 0x96AE,
+-  [20071] = 0x96B0, [20072] = 0x96AC, [20073] = 0x9720, [20074] = 0x971F,
+-  [20075] = 0x9718, [20076] = 0x971D, [20077] = 0x9719, [20078] = 0x979A,
+-  [20079] = 0x97A1, [20080] = 0x979C, [20085] = 0x979E, [20086] = 0x979D,
+-  [20087] = 0x97D5, [20088] = 0x97D4, [20089] = 0x97F1, [20090] = 0x9841,
+-  [20091] = 0x9844, [20092] = 0x984A, [20093] = 0x9849, [20094] = 0x9845,
+-  [20095] = 0x9843, [20096] = 0x9925, [20097] = 0x992B, [20098] = 0x992C,
+-  [20099] = 0x992A, [20100] = 0x9933, [20101] = 0x9932, [20102] = 0x992F,
+-  [20103] = 0x992D, [20104] = 0x9931, [20105] = 0x9930, [20106] = 0x9998,
+-  [20107] = 0x99A3, [20108] = 0x99A1, [20109] = 0x9A02, [20110] = 0x99FA,
+-  [20111] = 0x99F4, [20112] = 0x99F7, [20113] = 0x99F9, [20114] = 0x99F8,
+-  [20115] = 0x99F6, [20116] = 0x99FB, [20117] = 0x99FD, [20118] = 0x99FE,
+-  [20119] = 0x99FC, [20120] = 0x9A03, [20121] = 0x9ABE, [20122] = 0x9AFE,
+-  [20123] = 0x9AFD, [20124] = 0x9B01, [20125] = 0x9AFC, [20126] = 0x9B48,
+-  [20127] = 0x9B9A, [20128] = 0x9BA8, [20129] = 0x9B9E, [20130] = 0x9B9B,
+-  [20131] = 0x9BA6, [20132] = 0x9BA1, [20133] = 0x9BA5, [20134] = 0x9BA4,
+-  [20135] = 0x9B86, [20136] = 0x9BA2, [20137] = 0x9BA0, [20138] = 0x9BAF,
+-  [20139] = 0x9D33, [20140] = 0x9D41, [20141] = 0x9D67, [20142] = 0x9D36,
+-  [20143] = 0x9D2E, [20144] = 0x9D2F, [20145] = 0x9D31, [20146] = 0x9D38,
+-  [20147] = 0x9D30, [20182] = 0x9D45, [20183] = 0x9D42, [20184] = 0x9D43,
+-  [20185] = 0x9D3E, [20186] = 0x9D37, [20187] = 0x9D40, [20188] = 0x9D3D,
+-  [20189] = 0x7FF5, [20190] = 0x9D2D, [20191] = 0x9E8A, [20192] = 0x9E89,
+-  [20193] = 0x9E8D, [20194] = 0x9EB0, [20195] = 0x9EC8, [20196] = 0x9EDA,
+-  [20197] = 0x9EFB, [20198] = 0x9EFF, [20199] = 0x9F24, [20200] = 0x9F23,
+-  [20201] = 0x9F22, [20202] = 0x9F54, [20203] = 0x9FA0, [20204] = 0x5131,
+-  [20205] = 0x512D, [20206] = 0x512E, [20207] = 0x5698, [20208] = 0x569C,
+-  [20209] = 0x5697, [20210] = 0x569A, [20211] = 0x569D, [20212] = 0x5699,
+-  [20213] = 0x5970, [20214] = 0x5B3C, [20215] = 0x5C69, [20216] = 0x5C6A,
+-  [20217] = 0x5DC0, [20218] = 0x5E6D, [20219] = 0x5E6E, [20220] = 0x61D8,
+-  [20221] = 0x61DF, [20222] = 0x61ED, [20223] = 0x61EE, [20224] = 0x61F1,
+-  [20225] = 0x61EA, [20226] = 0x61F0, [20227] = 0x61EB, [20228] = 0x61D6,
+-  [20229] = 0x61E9, [20230] = 0x64FF, [20231] = 0x6504, [20232] = 0x64FD,
+-  [20233] = 0x64F8, [20234] = 0x6501, [20235] = 0x6503, [20236] = 0x64FC,
+-  [20237] = 0x6594, [20238] = 0x65DB, [20239] = 0x66DA, [20240] = 0x66DB,
+-  [20241] = 0x66D8, [20242] = 0x6AC5, [20243] = 0x6AB9, [20244] = 0x6ABD,
+-  [20245] = 0x6AE1, [20246] = 0x6AC6, [20247] = 0x6ABA, [20248] = 0x6AB6,
+-  [20249] = 0x6AB7, [20250] = 0x6AC7, [20251] = 0x6AB4, [20252] = 0x6AAD,
+-  [20253] = 0x6B5E, [20254] = 0x6BC9, [20255] = 0x6C0B, [20256] = 0x7007,
+-  [20257] = 0x700C, [20258] = 0x700D, [20259] = 0x7001, [20260] = 0x7005,
+-  [20261] = 0x7014, [20262] = 0x700E, [20263] = 0x6FFF, [20264] = 0x7000,
+-  [20265] = 0x6FFB, [20266] = 0x7026, [20267] = 0x6FFC, [20268] = 0x6FF7,
+-  [20269] = 0x700A, [20270] = 0x7201, [20271] = 0x71FF, [20272] = 0x71F9,
+-  [20273] = 0x7203, [20274] = 0x71FD, [20275] = 0x7376, [20280] = 0x74B8,
+-  [20281] = 0x74C0, [20282] = 0x74B5, [20283] = 0x74C1, [20284] = 0x74BE,
+-  [20285] = 0x74B6, [20286] = 0x74BB, [20287] = 0x74C2, [20288] = 0x7514,
+-  [20289] = 0x7513, [20290] = 0x765C, [20291] = 0x7664, [20292] = 0x7659,
+-  [20293] = 0x7650, [20294] = 0x7653, [20295] = 0x7657, [20296] = 0x765A,
+-  [20297] = 0x76A6, [20298] = 0x76BD, [20299] = 0x76EC, [20300] = 0x77C2,
+-  [20301] = 0x77BA, [20302] = 0x78FF, [20303] = 0x790C, [20304] = 0x7913,
+-  [20305] = 0x7914, [20306] = 0x7909, [20307] = 0x7910, [20308] = 0x7912,
+-  [20309] = 0x7911, [20310] = 0x79AD, [20311] = 0x79AC, [20312] = 0x7A5F,
+-  [20313] = 0x7C1C, [20314] = 0x7C29, [20315] = 0x7C19, [20316] = 0x7C20,
+-  [20317] = 0x7C1F, [20318] = 0x7C2D, [20319] = 0x7C1D, [20320] = 0x7C26,
+-  [20321] = 0x7C28, [20322] = 0x7C22, [20323] = 0x7C25, [20324] = 0x7C30,
+-  [20325] = 0x7E5C, [20326] = 0x7E50, [20327] = 0x7E56, [20328] = 0x7E63,
+-  [20329] = 0x7E58, [20330] = 0x7E62, [20331] = 0x7E5F, [20332] = 0x7E51,
+-  [20333] = 0x7E60, [20334] = 0x7E57, [20335] = 0x7E53, [20336] = 0x7FB5,
+-  [20337] = 0x7FB3, [20338] = 0x7FF7, [20339] = 0x7FF8, [20340] = 0x8075,
+-  [20341] = 0x81D1, [20342] = 0x81D2, [20377] = 0x81D0, [20378] = 0x825F,
+-  [20379] = 0x825E, [20380] = 0x85B4, [20381] = 0x85C6, [20382] = 0x85C0,
+-  [20383] = 0x85C3, [20384] = 0x85C2, [20385] = 0x85B3, [20386] = 0x85B5,
+-  [20387] = 0x85BD, [20388] = 0x85C7, [20389] = 0x85C4, [20390] = 0x85BF,
+-  [20391] = 0x85CB, [20392] = 0x85CE, [20393] = 0x85C8, [20394] = 0x85C5,
+-  [20395] = 0x85B1, [20396] = 0x85B6, [20397] = 0x85D2, [20398] = 0x8624,
+-  [20399] = 0x85B8, [20400] = 0x85B7, [20401] = 0x85BE, [20402] = 0x8669,
+-  [20403] = 0x87E7, [20404] = 0x87E6, [20405] = 0x87E2, [20406] = 0x87DB,
+-  [20407] = 0x87EB, [20408] = 0x87EA, [20409] = 0x87E5, [20410] = 0x87DF,
+-  [20411] = 0x87F3, [20412] = 0x87E4, [20413] = 0x87D4, [20414] = 0x87DC,
+-  [20415] = 0x87D3, [20416] = 0x87ED, [20417] = 0x87D8, [20418] = 0x87E3,
+-  [20419] = 0x87A4, [20420] = 0x87D7, [20421] = 0x87D9, [20422] = 0x8801,
+-  [20423] = 0x87F4, [20424] = 0x87E8, [20425] = 0x87DD, [20426] = 0x8953,
+-  [20427] = 0x894B, [20428] = 0x894F, [20429] = 0x894C, [20430] = 0x8946,
+-  [20431] = 0x8950, [20432] = 0x8951, [20433] = 0x8949, [20434] = 0x8B2A,
+-  [20435] = 0x8B27, [20436] = 0x8B23, [20437] = 0x8B33, [20438] = 0x8B30,
+-  [20439] = 0x8B35, [20440] = 0x8B47, [20441] = 0x8B2F, [20442] = 0x8B3C,
+-  [20443] = 0x8B3E, [20444] = 0x8B31, [20445] = 0x8B25, [20446] = 0x8B37,
+-  [20447] = 0x8B26, [20448] = 0x8B36, [20449] = 0x8B2E, [20450] = 0x8B24,
+-  [20451] = 0x8B3B, [20452] = 0x8B3D, [20453] = 0x8B3A, [20454] = 0x8C42,
+-  [20455] = 0x8C75, [20456] = 0x8C99, [20457] = 0x8C98, [20458] = 0x8C97,
+-  [20459] = 0x8CFE, [20460] = 0x8D04, [20461] = 0x8D02, [20462] = 0x8D00,
+-  [20463] = 0x8E5C, [20464] = 0x8E62, [20465] = 0x8E60, [20466] = 0x8E57,
+-  [20467] = 0x8E56, [20468] = 0x8E5E, [20469] = 0x8E65, [20470] = 0x8E67,
+-  [20475] = 0x8E5B, [20476] = 0x8E5A, [20477] = 0x8E61, [20478] = 0x8E5D,
+-  [20479] = 0x8E69, [20480] = 0x8E54, [20481] = 0x8F46, [20482] = 0x8F47,
+-  [20483] = 0x8F48, [20484] = 0x8F4B, [20485] = 0x9128, [20486] = 0x913A,
+-  [20487] = 0x913B, [20488] = 0x913E, [20489] = 0x91A8, [20490] = 0x91A5,
+-  [20491] = 0x91A7, [20492] = 0x91AF, [20493] = 0x91AA, [20494] = 0x93B5,
+-  [20495] = 0x938C, [20496] = 0x9392, [20497] = 0x93B7, [20498] = 0x939B,
+-  [20499] = 0x939D, [20500] = 0x9389, [20501] = 0x93A7, [20502] = 0x938E,
+-  [20503] = 0x93AA, [20504] = 0x939E, [20505] = 0x93A6, [20506] = 0x9395,
+-  [20507] = 0x9388, [20508] = 0x9399, [20509] = 0x939F, [20510] = 0x938D,
+-  [20511] = 0x93B1, [20512] = 0x9391, [20513] = 0x93B2, [20514] = 0x93A4,
+-  [20515] = 0x93A8, [20516] = 0x93B4, [20517] = 0x93A3, [20518] = 0x93A5,
+-  [20519] = 0x95D2, [20520] = 0x95D3, [20521] = 0x95D1, [20522] = 0x96B3,
+-  [20523] = 0x96D7, [20524] = 0x96DA, [20525] = 0x5DC2, [20526] = 0x96DF,
+-  [20527] = 0x96D8, [20528] = 0x96DD, [20529] = 0x9723, [20530] = 0x9722,
+-  [20531] = 0x9725, [20532] = 0x97AC, [20533] = 0x97AE, [20534] = 0x97A8,
+-  [20535] = 0x97AB, [20536] = 0x97A4, [20537] = 0x97AA, [20572] = 0x97A2,
+-  [20573] = 0x97A5, [20574] = 0x97D7, [20575] = 0x97D9, [20576] = 0x97D6,
+-  [20577] = 0x97D8, [20578] = 0x97FA, [20579] = 0x9850, [20580] = 0x9851,
+-  [20581] = 0x9852, [20582] = 0x98B8, [20583] = 0x9941, [20584] = 0x993C,
+-  [20585] = 0x993A, [20586] = 0x9A0F, [20587] = 0x9A0B, [20588] = 0x9A09,
+-  [20589] = 0x9A0D, [20590] = 0x9A04, [20591] = 0x9A11, [20592] = 0x9A0A,
+-  [20593] = 0x9A05, [20594] = 0x9A07, [20595] = 0x9A06, [20596] = 0x9AC0,
+-  [20597] = 0x9ADC, [20598] = 0x9B08, [20599] = 0x9B04, [20600] = 0x9B05,
+-  [20601] = 0x9B29, [20602] = 0x9B35, [20603] = 0x9B4A, [20604] = 0x9B4C,
+-  [20605] = 0x9B4B, [20606] = 0x9BC7, [20607] = 0x9BC6, [20608] = 0x9BC3,
+-  [20609] = 0x9BBF, [20610] = 0x9BC1, [20611] = 0x9BB5, [20612] = 0x9BB8,
+-  [20613] = 0x9BD3, [20614] = 0x9BB6, [20615] = 0x9BC4, [20616] = 0x9BB9,
+-  [20617] = 0x9BBD, [20618] = 0x9D5C, [20619] = 0x9D53, [20620] = 0x9D4F,
+-  [20621] = 0x9D4A, [20622] = 0x9D5B, [20623] = 0x9D4B, [20624] = 0x9D59,
+-  [20625] = 0x9D56, [20626] = 0x9D4C, [20627] = 0x9D57, [20628] = 0x9D52,
+-  [20629] = 0x9D54, [20630] = 0x9D5F, [20631] = 0x9D58, [20632] = 0x9D5A,
+-  [20633] = 0x9E8E, [20634] = 0x9E8C, [20635] = 0x9EDF, [20636] = 0x9F01,
+-  [20637] = 0x9F00, [20638] = 0x9F16, [20639] = 0x9F25, [20640] = 0x9F2B,
+-  [20641] = 0x9F2A, [20642] = 0x9F29, [20643] = 0x9F28, [20644] = 0x9F4C,
+-  [20645] = 0x9F55, [20646] = 0x5134, [20647] = 0x5135, [20648] = 0x5296,
+-  [20649] = 0x52F7, [20650] = 0x53B4, [20651] = 0x56AB, [20652] = 0x56AD,
+-  [20653] = 0x56A6, [20654] = 0x56A7, [20655] = 0x56AA, [20656] = 0x56AC,
+-  [20657] = 0x58DA, [20658] = 0x58DD, [20659] = 0x58DB, [20660] = 0x5912,
+-  [20661] = 0x5B3D, [20662] = 0x5B3E, [20663] = 0x5B3F, [20664] = 0x5DC3,
+-  [20665] = 0x5E70, [20670] = 0x5FBF, [20671] = 0x61FB, [20672] = 0x6507,
+-  [20673] = 0x6510, [20674] = 0x650D, [20675] = 0x6509, [20676] = 0x650C,
+-  [20677] = 0x650E, [20678] = 0x6584, [20679] = 0x65DE, [20680] = 0x65DD,
+-  [20681] = 0x66DE, [20682] = 0x6AE7, [20683] = 0x6AE0, [20684] = 0x6ACC,
+-  [20685] = 0x6AD1, [20686] = 0x6AD9, [20687] = 0x6ACB, [20688] = 0x6ADF,
+-  [20689] = 0x6ADC, [20690] = 0x6AD0, [20691] = 0x6AEB, [20692] = 0x6ACF,
+-  [20693] = 0x6ACD, [20694] = 0x6ADE, [20695] = 0x6B60, [20696] = 0x6BB0,
+-  [20697] = 0x6C0C, [20698] = 0x7019, [20699] = 0x7027, [20700] = 0x7020,
+-  [20701] = 0x7016, [20702] = 0x702B, [20703] = 0x7021, [20704] = 0x7022,
+-  [20705] = 0x7023, [20706] = 0x7029, [20707] = 0x7017, [20708] = 0x7024,
+-  [20709] = 0x701C, [20710] = 0x702A, [20711] = 0x720C, [20712] = 0x720A,
+-  [20713] = 0x7207, [20714] = 0x7202, [20715] = 0x7205, [20716] = 0x72A5,
+-  [20717] = 0x72A6, [20718] = 0x72A4, [20719] = 0x72A3, [20720] = 0x72A1,
+-  [20721] = 0x74CB, [20722] = 0x74C5, [20723] = 0x74B7, [20724] = 0x74C3,
+-  [20725] = 0x7516, [20726] = 0x7660, [20727] = 0x77C9, [20728] = 0x77CA,
+-  [20729] = 0x77C4, [20730] = 0x77F1, [20731] = 0x791D, [20732] = 0x791B,
+-  [20767] = 0x7921, [20768] = 0x791C, [20769] = 0x7917, [20770] = 0x791E,
+-  [20771] = 0x79B0, [20772] = 0x7A67, [20773] = 0x7A68, [20774] = 0x7C33,
+-  [20775] = 0x7C3C, [20776] = 0x7C39, [20777] = 0x7C2C, [20778] = 0x7C3B,
+-  [20779] = 0x7CEC, [20780] = 0x7CEA, [20781] = 0x7E76, [20782] = 0x7E75,
+-  [20783] = 0x7E78, [20784] = 0x7E70, [20785] = 0x7E77, [20786] = 0x7E6F,
+-  [20787] = 0x7E7A, [20788] = 0x7E72, [20789] = 0x7E74, [20790] = 0x7E68,
+-  [20791] = 0x7F4B, [20792] = 0x7F4A, [20793] = 0x7F83, [20794] = 0x7F86,
+-  [20795] = 0x7FB7, [20796] = 0x7FFD, [20797] = 0x7FFE, [20798] = 0x8078,
+-  [20799] = 0x81D7, [20800] = 0x81D5, [20801] = 0x8264, [20802] = 0x8261,
+-  [20803] = 0x8263, [20804] = 0x85EB, [20805] = 0x85F1, [20806] = 0x85ED,
+-  [20807] = 0x85D9, [20808] = 0x85E1, [20809] = 0x85E8, [20810] = 0x85DA,
+-  [20811] = 0x85D7, [20812] = 0x85EC, [20813] = 0x85F2, [20814] = 0x85F8,
+-  [20815] = 0x85D8, [20816] = 0x85DF, [20817] = 0x85E3, [20818] = 0x85DC,
+-  [20819] = 0x85D1, [20820] = 0x85F0, [20821] = 0x85E6, [20822] = 0x85EF,
+-  [20823] = 0x85DE, [20824] = 0x85E2, [20825] = 0x8800, [20826] = 0x87FA,
+-  [20827] = 0x8803, [20828] = 0x87F6, [20829] = 0x87F7, [20830] = 0x8809,
+-  [20831] = 0x880C, [20832] = 0x880B, [20833] = 0x8806, [20834] = 0x87FC,
+-  [20835] = 0x8808, [20836] = 0x87FF, [20837] = 0x880A, [20838] = 0x8802,
+-  [20839] = 0x8962, [20840] = 0x895A, [20841] = 0x895B, [20842] = 0x8957,
+-  [20843] = 0x8961, [20844] = 0x895C, [20845] = 0x8958, [20846] = 0x895D,
+-  [20847] = 0x8959, [20848] = 0x8988, [20849] = 0x89B7, [20850] = 0x89B6,
+-  [20851] = 0x89F6, [20852] = 0x8B50, [20853] = 0x8B48, [20854] = 0x8B4A,
+-  [20855] = 0x8B40, [20856] = 0x8B53, [20857] = 0x8B56, [20858] = 0x8B54,
+-  [20859] = 0x8B4B, [20860] = 0x8B55, [20865] = 0x8B51, [20866] = 0x8B42,
+-  [20867] = 0x8B52, [20868] = 0x8B57, [20869] = 0x8C43, [20870] = 0x8C77,
+-  [20871] = 0x8C76, [20872] = 0x8C9A, [20873] = 0x8D06, [20874] = 0x8D07,
+-  [20875] = 0x8D09, [20876] = 0x8DAC, [20877] = 0x8DAA, [20878] = 0x8DAD,
+-  [20879] = 0x8DAB, [20880] = 0x8E6D, [20881] = 0x8E78, [20882] = 0x8E73,
+-  [20883] = 0x8E6A, [20884] = 0x8E6F, [20885] = 0x8E7B, [20886] = 0x8EC2,
+-  [20887] = 0x8F52, [20888] = 0x8F51, [20889] = 0x8F4F, [20890] = 0x8F50,
+-  [20891] = 0x8F53, [20892] = 0x8FB4, [20893] = 0x9140, [20894] = 0x913F,
+-  [20895] = 0x91B0, [20896] = 0x91AD, [20897] = 0x93DE, [20898] = 0x93C7,
+-  [20899] = 0x93CF, [20900] = 0x93C2, [20901] = 0x93DA, [20902] = 0x93D0,
+-  [20903] = 0x93F9, [20904] = 0x93EC, [20905] = 0x93CC, [20906] = 0x93D9,
+-  [20907] = 0x93A9, [20908] = 0x93E6, [20909] = 0x93CA, [20910] = 0x93D4,
+-  [20911] = 0x93EE, [20912] = 0x93E3, [20913] = 0x93D5, [20914] = 0x93C4,
+-  [20915] = 0x93CE, [20916] = 0x93C0, [20917] = 0x93D2, [20918] = 0x93E7,
+-  [20919] = 0x957D, [20920] = 0x95DA, [20921] = 0x95DB, [20922] = 0x96E1,
+-  [20923] = 0x9729, [20924] = 0x972B, [20925] = 0x972C, [20926] = 0x9728,
+-  [20927] = 0x9726, [20962] = 0x97B3, [20963] = 0x97B7, [20964] = 0x97B6,
+-  [20965] = 0x97DD, [20966] = 0x97DE, [20967] = 0x97DF, [20968] = 0x985C,
+-  [20969] = 0x9859, [20970] = 0x985D, [20971] = 0x9857, [20972] = 0x98BF,
+-  [20973] = 0x98BD, [20974] = 0x98BB, [20975] = 0x98BE, [20976] = 0x9948,
+-  [20977] = 0x9947, [20978] = 0x9943, [20979] = 0x99A6, [20980] = 0x99A7,
+-  [20981] = 0x9A1A, [20982] = 0x9A15, [20983] = 0x9A25, [20984] = 0x9A1D,
+-  [20985] = 0x9A24, [20986] = 0x9A1B, [20987] = 0x9A22, [20988] = 0x9A20,
+-  [20989] = 0x9A27, [20990] = 0x9A23, [20991] = 0x9A1E, [20992] = 0x9A1C,
+-  [20993] = 0x9A14, [20994] = 0x9AC2, [20995] = 0x9B0B, [20996] = 0x9B0A,
+-  [20997] = 0x9B0E, [20998] = 0x9B0C, [20999] = 0x9B37, [21000] = 0x9BEA,
+-  [21001] = 0x9BEB, [21002] = 0x9BE0, [21003] = 0x9BDE, [21004] = 0x9BE4,
+-  [21005] = 0x9BE6, [21006] = 0x9BE2, [21007] = 0x9BF0, [21008] = 0x9BD4,
+-  [21009] = 0x9BD7, [21010] = 0x9BEC, [21011] = 0x9BDC, [21012] = 0x9BD9,
+-  [21013] = 0x9BE5, [21014] = 0x9BD5, [21015] = 0x9BE1, [21016] = 0x9BDA,
+-  [21017] = 0x9D77, [21018] = 0x9D81, [21019] = 0x9D8A, [21020] = 0x9D84,
+-  [21021] = 0x9D88, [21022] = 0x9D71, [21023] = 0x9D80, [21024] = 0x9D78,
+-  [21025] = 0x9D86, [21026] = 0x9D8B, [21027] = 0x9D8C, [21028] = 0x9D7D,
+-  [21029] = 0x9D6B, [21030] = 0x9D74, [21031] = 0x9D75, [21032] = 0x9D70,
+-  [21033] = 0x9D69, [21034] = 0x9D85, [21035] = 0x9D73, [21036] = 0x9D7B,
+-  [21037] = 0x9D82, [21038] = 0x9D6F, [21039] = 0x9D79, [21040] = 0x9D7F,
+-  [21041] = 0x9D87, [21042] = 0x9D68, [21043] = 0x9E94, [21044] = 0x9E91,
+-  [21045] = 0x9EC0, [21046] = 0x9EFC, [21047] = 0x9F2D, [21048] = 0x9F40,
+-  [21049] = 0x9F41, [21050] = 0x9F4D, [21051] = 0x9F56, [21052] = 0x9F57,
+-  [21053] = 0x9F58, [21054] = 0x5337, [21055] = 0x56B2, [21060] = 0x56B5,
+-  [21061] = 0x56B3, [21062] = 0x58E3, [21063] = 0x5B45, [21064] = 0x5DC6,
+-  [21065] = 0x5DC7, [21066] = 0x5EEE, [21067] = 0x5EEF, [21068] = 0x5FC0,
+-  [21069] = 0x5FC1, [21070] = 0x61F9, [21071] = 0x6517, [21072] = 0x6516,
+-  [21073] = 0x6515, [21074] = 0x6513, [21075] = 0x65DF, [21076] = 0x66E8,
+-  [21077] = 0x66E3, [21078] = 0x66E4, [21079] = 0x6AF3, [21080] = 0x6AF0,
+-  [21081] = 0x6AEA, [21082] = 0x6AE8, [21083] = 0x6AF9, [21084] = 0x6AF1,
+-  [21085] = 0x6AEE, [21086] = 0x6AEF, [21087] = 0x703C, [21088] = 0x7035,
+-  [21089] = 0x702F, [21090] = 0x7037, [21091] = 0x7034, [21092] = 0x7031,
+-  [21093] = 0x7042, [21094] = 0x7038, [21095] = 0x703F, [21096] = 0x703A,
+-  [21097] = 0x7039, [21098] = 0x7040, [21099] = 0x703B, [21100] = 0x7033,
+-  [21101] = 0x7041, [21102] = 0x7213, [21103] = 0x7214, [21104] = 0x72A8,
+-  [21105] = 0x737D, [21106] = 0x737C, [21107] = 0x74BA, [21108] = 0x76AB,
+-  [21109] = 0x76AA, [21110] = 0x76BE, [21111] = 0x76ED, [21112] = 0x77CC,
+-  [21113] = 0x77CE, [21114] = 0x77CF, [21115] = 0x77CD, [21116] = 0x77F2,
+-  [21117] = 0x7925, [21118] = 0x7923, [21119] = 0x7927, [21120] = 0x7928,
+-  [21121] = 0x7924, [21122] = 0x7929, [21157] = 0x79B2, [21158] = 0x7A6E,
+-  [21159] = 0x7A6C, [21160] = 0x7A6D, [21161] = 0x7AF7, [21162] = 0x7C49,
+-  [21163] = 0x7C48, [21164] = 0x7C4A, [21165] = 0x7C47, [21166] = 0x7C45,
+-  [21167] = 0x7CEE, [21168] = 0x7E7B, [21169] = 0x7E7E, [21170] = 0x7E81,
+-  [21171] = 0x7E80, [21172] = 0x7FBA, [21173] = 0x7FFF, [21174] = 0x8079,
+-  [21175] = 0x81DB, [21176] = 0x81D9, [21177] = 0x820B, [21178] = 0x8268,
+-  [21179] = 0x8269, [21180] = 0x8622, [21181] = 0x85FF, [21182] = 0x8601,
+-  [21183] = 0x85FE, [21184] = 0x861B, [21185] = 0x8600, [21186] = 0x85F6,
+-  [21187] = 0x8604, [21188] = 0x8609, [21189] = 0x8605, [21190] = 0x860C,
+-  [21191] = 0x85FD, [21192] = 0x8819, [21193] = 0x8810, [21194] = 0x8811,
+-  [21195] = 0x8817, [21196] = 0x8813, [21197] = 0x8816, [21198] = 0x8963,
+-  [21199] = 0x8966, [21200] = 0x89B9, [21201] = 0x89F7, [21202] = 0x8B60,
+-  [21203] = 0x8B6A, [21204] = 0x8B5D, [21205] = 0x8B68, [21206] = 0x8B63,
+-  [21207] = 0x8B65, [21208] = 0x8B67, [21209] = 0x8B6D, [21210] = 0x8DAE,
+-  [21211] = 0x8E86, [21212] = 0x8E88, [21213] = 0x8E84, [21214] = 0x8F59,
+-  [21215] = 0x8F56, [21216] = 0x8F57, [21217] = 0x8F55, [21218] = 0x8F58,
+-  [21219] = 0x8F5A, [21220] = 0x908D, [21221] = 0x9143, [21222] = 0x9141,
+-  [21223] = 0x91B7, [21224] = 0x91B5, [21225] = 0x91B2, [21226] = 0x91B3,
+-  [21227] = 0x940B, [21228] = 0x9413, [21229] = 0x93FB, [21230] = 0x9420,
+-  [21231] = 0x940F, [21232] = 0x9414, [21233] = 0x93FE, [21234] = 0x9415,
+-  [21235] = 0x9410, [21236] = 0x9428, [21237] = 0x9419, [21238] = 0x940D,
+-  [21239] = 0x93F5, [21240] = 0x9400, [21241] = 0x93F7, [21242] = 0x9407,
+-  [21243] = 0x940E, [21244] = 0x9416, [21245] = 0x9412, [21246] = 0x93FA,
+-  [21247] = 0x9409, [21248] = 0x93F8, [21249] = 0x940A, [21250] = 0x93FF,
+-  [21255] = 0x93FC, [21256] = 0x940C, [21257] = 0x93F6, [21258] = 0x9411,
+-  [21259] = 0x9406, [21260] = 0x95DE, [21261] = 0x95E0, [21262] = 0x95DF,
+-  [21263] = 0x972E, [21264] = 0x972F, [21265] = 0x97B9, [21266] = 0x97BB,
+-  [21267] = 0x97FD, [21268] = 0x97FE, [21269] = 0x9860, [21270] = 0x9862,
+-  [21271] = 0x9863, [21272] = 0x985F, [21273] = 0x98C1, [21274] = 0x98C2,
+-  [21275] = 0x9950, [21276] = 0x994E, [21277] = 0x9959, [21278] = 0x994C,
+-  [21279] = 0x994B, [21280] = 0x9953, [21281] = 0x9A32, [21282] = 0x9A34,
+-  [21283] = 0x9A31, [21284] = 0x9A2C, [21285] = 0x9A2A, [21286] = 0x9A36,
+-  [21287] = 0x9A29, [21288] = 0x9A2E, [21289] = 0x9A38, [21290] = 0x9A2D,
+-  [21291] = 0x9AC7, [21292] = 0x9ACA, [21293] = 0x9AC6, [21294] = 0x9B10,
+-  [21295] = 0x9B12, [21296] = 0x9B11, [21297] = 0x9C0B, [21298] = 0x9C08,
+-  [21299] = 0x9BF7, [21300] = 0x9C05, [21301] = 0x9C12, [21302] = 0x9BF8,
+-  [21303] = 0x9C40, [21304] = 0x9C07, [21305] = 0x9C0E, [21306] = 0x9C06,
+-  [21307] = 0x9C17, [21308] = 0x9C14, [21309] = 0x9C09, [21310] = 0x9D9F,
+-  [21311] = 0x9D99, [21312] = 0x9DA4, [21313] = 0x9D9D, [21314] = 0x9D92,
+-  [21315] = 0x9D98, [21316] = 0x9D90, [21317] = 0x9D9B, [21352] = 0x9DA0,
+-  [21353] = 0x9D94, [21354] = 0x9D9C, [21355] = 0x9DAA, [21356] = 0x9D97,
+-  [21357] = 0x9DA1, [21358] = 0x9D9A, [21359] = 0x9DA2, [21360] = 0x9DA8,
+-  [21361] = 0x9D9E, [21362] = 0x9DA3, [21363] = 0x9DBF, [21364] = 0x9DA9,
+-  [21365] = 0x9D96, [21366] = 0x9DA6, [21367] = 0x9DA7, [21368] = 0x9E99,
+-  [21369] = 0x9E9B, [21370] = 0x9E9A, [21371] = 0x9EE5, [21372] = 0x9EE4,
+-  [21373] = 0x9EE7, [21374] = 0x9EE6, [21375] = 0x9F30, [21376] = 0x9F2E,
+-  [21377] = 0x9F5B, [21378] = 0x9F60, [21379] = 0x9F5E, [21380] = 0x9F5D,
+-  [21381] = 0x9F59, [21382] = 0x9F91, [21383] = 0x513A, [21384] = 0x5139,
+-  [21385] = 0x5298, [21386] = 0x5297, [21387] = 0x56C3, [21388] = 0x56BD,
+-  [21389] = 0x56BE, [21390] = 0x5B48, [21391] = 0x5B47, [21392] = 0x5DCB,
+-  [21393] = 0x5DCF, [21394] = 0x5EF1, [21395] = 0x61FD, [21396] = 0x651B,
+-  [21397] = 0x6B02, [21398] = 0x6AFC, [21399] = 0x6B03, [21400] = 0x6AF8,
+-  [21401] = 0x6B00, [21402] = 0x7043, [21403] = 0x7044, [21404] = 0x704A,
+-  [21405] = 0x7048, [21406] = 0x7049, [21407] = 0x7045, [21408] = 0x7046,
+-  [21409] = 0x721D, [21410] = 0x721A, [21411] = 0x7219, [21412] = 0x737E,
+-  [21413] = 0x7517, [21414] = 0x766A, [21415] = 0x77D0, [21416] = 0x792D,
+-  [21417] = 0x7931, [21418] = 0x792F, [21419] = 0x7C54, [21420] = 0x7C53,
+-  [21421] = 0x7CF2, [21422] = 0x7E8A, [21423] = 0x7E87, [21424] = 0x7E88,
+-  [21425] = 0x7E8B, [21426] = 0x7E86, [21427] = 0x7E8D, [21428] = 0x7F4D,
+-  [21429] = 0x7FBB, [21430] = 0x8030, [21431] = 0x81DD, [21432] = 0x8618,
+-  [21433] = 0x862A, [21434] = 0x8626, [21435] = 0x861F, [21436] = 0x8623,
+-  [21437] = 0x861C, [21438] = 0x8619, [21439] = 0x8627, [21440] = 0x862E,
+-  [21441] = 0x8621, [21442] = 0x8620, [21443] = 0x8629, [21444] = 0x861E,
+-  [21445] = 0x8625, [21450] = 0x8829, [21451] = 0x881D, [21452] = 0x881B,
+-  [21453] = 0x8820, [21454] = 0x8824, [21455] = 0x881C, [21456] = 0x882B,
+-  [21457] = 0x884A, [21458] = 0x896D, [21459] = 0x8969, [21460] = 0x896E,
+-  [21461] = 0x896B, [21462] = 0x89FA, [21463] = 0x8B79, [21464] = 0x8B78,
+-  [21465] = 0x8B45, [21466] = 0x8B7A, [21467] = 0x8B7B, [21468] = 0x8D10,
+-  [21469] = 0x8D14, [21470] = 0x8DAF, [21471] = 0x8E8E, [21472] = 0x8E8C,
+-  [21473] = 0x8F5E, [21474] = 0x8F5B, [21475] = 0x8F5D, [21476] = 0x9146,
+-  [21477] = 0x9144, [21478] = 0x9145, [21479] = 0x91B9, [21480] = 0x943F,
+-  [21481] = 0x943B, [21482] = 0x9436, [21483] = 0x9429, [21484] = 0x943D,
+-  [21485] = 0x943C, [21486] = 0x9430, [21487] = 0x9439, [21488] = 0x942A,
+-  [21489] = 0x9437, [21490] = 0x942C, [21491] = 0x9440, [21492] = 0x9431,
+-  [21493] = 0x95E5, [21494] = 0x95E4, [21495] = 0x95E3, [21496] = 0x9735,
+-  [21497] = 0x973A, [21498] = 0x97BF, [21499] = 0x97E1, [21500] = 0x9864,
+-  [21501] = 0x98C9, [21502] = 0x98C6, [21503] = 0x98C0, [21504] = 0x9958,
+-  [21505] = 0x9956, [21506] = 0x9A39, [21507] = 0x9A3D, [21508] = 0x9A46,
+-  [21509] = 0x9A44, [21510] = 0x9A42, [21511] = 0x9A41, [21512] = 0x9A3A,
+-  [21547] = 0x9A3F, [21548] = 0x9ACD, [21549] = 0x9B15, [21550] = 0x9B17,
+-  [21551] = 0x9B18, [21552] = 0x9B16, [21553] = 0x9B3A, [21554] = 0x9B52,
+-  [21555] = 0x9C2B, [21556] = 0x9C1D, [21557] = 0x9C1C, [21558] = 0x9C2C,
+-  [21559] = 0x9C23, [21560] = 0x9C28, [21561] = 0x9C29, [21562] = 0x9C24,
+-  [21563] = 0x9C21, [21564] = 0x9DB7, [21565] = 0x9DB6, [21566] = 0x9DBC,
+-  [21567] = 0x9DC1, [21568] = 0x9DC7, [21569] = 0x9DCA, [21570] = 0x9DCF,
+-  [21571] = 0x9DBE, [21572] = 0x9DC5, [21573] = 0x9DC3, [21574] = 0x9DBB,
+-  [21575] = 0x9DB5, [21576] = 0x9DCE, [21577] = 0x9DB9, [21578] = 0x9DBA,
+-  [21579] = 0x9DAC, [21580] = 0x9DC8, [21581] = 0x9DB1, [21582] = 0x9DAD,
+-  [21583] = 0x9DCC, [21584] = 0x9DB3, [21585] = 0x9DCD, [21586] = 0x9DB2,
+-  [21587] = 0x9E7A, [21588] = 0x9E9C, [21589] = 0x9EEB, [21590] = 0x9EEE,
+-  [21591] = 0x9EED, [21592] = 0x9F1B, [21593] = 0x9F18, [21594] = 0x9F1A,
+-  [21595] = 0x9F31, [21596] = 0x9F4E, [21597] = 0x9F65, [21598] = 0x9F64,
+-  [21599] = 0x9F92, [21600] = 0x4EB9, [21601] = 0x56C6, [21602] = 0x56C5,
+-  [21603] = 0x56CB, [21604] = 0x5971, [21605] = 0x5B4B, [21606] = 0x5B4C,
+-  [21607] = 0x5DD5, [21608] = 0x5DD1, [21609] = 0x5EF2, [21610] = 0x6521,
+-  [21611] = 0x6520, [21612] = 0x6526, [21613] = 0x6522, [21614] = 0x6B0B,
+-  [21615] = 0x6B08, [21616] = 0x6B09, [21617] = 0x6C0D, [21618] = 0x7055,
+-  [21619] = 0x7056, [21620] = 0x7057, [21621] = 0x7052, [21622] = 0x721E,
+-  [21623] = 0x721F, [21624] = 0x72A9, [21625] = 0x737F, [21626] = 0x74D8,
+-  [21627] = 0x74D5, [21628] = 0x74D9, [21629] = 0x74D7, [21630] = 0x766D,
+-  [21631] = 0x76AD, [21632] = 0x7935, [21633] = 0x79B4, [21634] = 0x7A70,
+-  [21635] = 0x7A71, [21636] = 0x7C57, [21637] = 0x7C5C, [21638] = 0x7C59,
+-  [21639] = 0x7C5B, [21640] = 0x7C5A, [21645] = 0x7CF4, [21646] = 0x7CF1,
+-  [21647] = 0x7E91, [21648] = 0x7F4F, [21649] = 0x7F87, [21650] = 0x81DE,
+-  [21651] = 0x826B, [21652] = 0x8634, [21653] = 0x8635, [21654] = 0x8633,
+-  [21655] = 0x862C, [21656] = 0x8632, [21657] = 0x8636, [21658] = 0x882C,
+-  [21659] = 0x8828, [21660] = 0x8826, [21661] = 0x882A, [21662] = 0x8825,
+-  [21663] = 0x8971, [21664] = 0x89BF, [21665] = 0x89BE, [21666] = 0x89FB,
+-  [21667] = 0x8B7E, [21668] = 0x8B84, [21669] = 0x8B82, [21670] = 0x8B86,
+-  [21671] = 0x8B85, [21672] = 0x8B7F, [21673] = 0x8D15, [21674] = 0x8E95,
+-  [21675] = 0x8E94, [21676] = 0x8E9A, [21677] = 0x8E92, [21678] = 0x8E90,
+-  [21679] = 0x8E96, [21680] = 0x8E97, [21681] = 0x8F60, [21682] = 0x8F62,
+-  [21683] = 0x9147, [21684] = 0x944C, [21685] = 0x9450, [21686] = 0x944A,
+-  [21687] = 0x944B, [21688] = 0x944F, [21689] = 0x9447, [21690] = 0x9445,
+-  [21691] = 0x9448, [21692] = 0x9449, [21693] = 0x9446, [21694] = 0x973F,
+-  [21695] = 0x97E3, [21696] = 0x986A, [21697] = 0x9869, [21698] = 0x98CB,
+-  [21699] = 0x9954, [21700] = 0x995B, [21701] = 0x9A4E, [21702] = 0x9A53,
+-  [21703] = 0x9A54, [21704] = 0x9A4C, [21705] = 0x9A4F, [21706] = 0x9A48,
+-  [21707] = 0x9A4A, [21742] = 0x9A49, [21743] = 0x9A52, [21744] = 0x9A50,
+-  [21745] = 0x9AD0, [21746] = 0x9B19, [21747] = 0x9B2B, [21748] = 0x9B3B,
+-  [21749] = 0x9B56, [21750] = 0x9B55, [21751] = 0x9C46, [21752] = 0x9C48,
+-  [21753] = 0x9C3F, [21754] = 0x9C44, [21755] = 0x9C39, [21756] = 0x9C33,
+-  [21757] = 0x9C41, [21758] = 0x9C3C, [21759] = 0x9C37, [21760] = 0x9C34,
+-  [21761] = 0x9C32, [21762] = 0x9C3D, [21763] = 0x9C36, [21764] = 0x9DDB,
+-  [21765] = 0x9DD2, [21766] = 0x9DDE, [21767] = 0x9DDA, [21768] = 0x9DCB,
+-  [21769] = 0x9DD0, [21770] = 0x9DDC, [21771] = 0x9DD1, [21772] = 0x9DDF,
+-  [21773] = 0x9DE9, [21774] = 0x9DD9, [21775] = 0x9DD8, [21776] = 0x9DD6,
+-  [21777] = 0x9DF5, [21778] = 0x9DD5, [21779] = 0x9DDD, [21780] = 0x9EB6,
+-  [21781] = 0x9EF0, [21782] = 0x9F35, [21783] = 0x9F33, [21784] = 0x9F32,
+-  [21785] = 0x9F42, [21786] = 0x9F6B, [21787] = 0x9F95, [21788] = 0x9FA2,
+-  [21789] = 0x513D, [21790] = 0x5299, [21791] = 0x58E8, [21792] = 0x58E7,
+-  [21793] = 0x5972, [21794] = 0x5B4D, [21795] = 0x5DD8, [21796] = 0x882F,
+-  [21797] = 0x5F4F, [21798] = 0x6201, [21799] = 0x6203, [21800] = 0x6204,
+-  [21801] = 0x6529, [21802] = 0x6525, [21803] = 0x6596, [21804] = 0x66EB,
+-  [21805] = 0x6B11, [21806] = 0x6B12, [21807] = 0x6B0F, [21808] = 0x6BCA,
+-  [21809] = 0x705B, [21810] = 0x705A, [21811] = 0x7222, [21812] = 0x7382,
+-  [21813] = 0x7381, [21814] = 0x7383, [21815] = 0x7670, [21816] = 0x77D4,
+-  [21817] = 0x7C67, [21818] = 0x7C66, [21819] = 0x7E95, [21820] = 0x826C,
+-  [21821] = 0x863A, [21822] = 0x8640, [21823] = 0x8639, [21824] = 0x863C,
+-  [21825] = 0x8631, [21826] = 0x863B, [21827] = 0x863E, [21828] = 0x8830,
+-  [21829] = 0x8832, [21830] = 0x882E, [21831] = 0x8833, [21832] = 0x8976,
+-  [21833] = 0x8974, [21834] = 0x8973, [21835] = 0x89FE, [21840] = 0x8B8C,
+-  [21841] = 0x8B8E, [21842] = 0x8B8B, [21843] = 0x8B88, [21844] = 0x8C45,
+-  [21845] = 0x8D19, [21846] = 0x8E98, [21847] = 0x8F64, [21848] = 0x8F63,
+-  [21849] = 0x91BC, [21850] = 0x9462, [21851] = 0x9455, [21852] = 0x945D,
+-  [21853] = 0x9457, [21854] = 0x945E, [21855] = 0x97C4, [21856] = 0x97C5,
+-  [21857] = 0x9800, [21858] = 0x9A56, [21859] = 0x9A59, [21860] = 0x9B1E,
+-  [21861] = 0x9B1F, [21862] = 0x9B20, [21863] = 0x9C52, [21864] = 0x9C58,
+-  [21865] = 0x9C50, [21866] = 0x9C4A, [21867] = 0x9C4D, [21868] = 0x9C4B,
+-  [21869] = 0x9C55, [21870] = 0x9C59, [21871] = 0x9C4C, [21872] = 0x9C4E,
+-  [21873] = 0x9DFB, [21874] = 0x9DF7, [21875] = 0x9DEF, [21876] = 0x9DE3,
+-  [21877] = 0x9DEB, [21878] = 0x9DF8, [21879] = 0x9DE4, [21880] = 0x9DF6,
+-  [21881] = 0x9DE1, [21882] = 0x9DEE, [21883] = 0x9DE6, [21884] = 0x9DF2,
+-  [21885] = 0x9DF0, [21886] = 0x9DE2, [21887] = 0x9DEC, [21888] = 0x9DF4,
+-  [21889] = 0x9DF3, [21890] = 0x9DE8, [21891] = 0x9DED, [21892] = 0x9EC2,
+-  [21893] = 0x9ED0, [21894] = 0x9EF2, [21895] = 0x9EF3, [21896] = 0x9F06,
+-  [21897] = 0x9F1C, [21898] = 0x9F38, [21899] = 0x9F37, [21900] = 0x9F36,
+-  [21901] = 0x9F43, [21902] = 0x9F4F, [21937] = 0x9F71, [21938] = 0x9F70,
+-  [21939] = 0x9F6E, [21940] = 0x9F6F, [21941] = 0x56D3, [21942] = 0x56CD,
+-  [21943] = 0x5B4E, [21944] = 0x5C6D, [21945] = 0x652D, [21946] = 0x66ED,
+-  [21947] = 0x66EE, [21948] = 0x6B13, [21949] = 0x705F, [21950] = 0x7061,
+-  [21951] = 0x705D, [21952] = 0x7060, [21953] = 0x7223, [21954] = 0x74DB,
+-  [21955] = 0x74E5, [21956] = 0x77D5, [21957] = 0x7938, [21958] = 0x79B7,
+-  [21959] = 0x79B6, [21960] = 0x7C6A, [21961] = 0x7E97, [21962] = 0x7F89,
+-  [21963] = 0x826D, [21964] = 0x8643, [21965] = 0x8838, [21966] = 0x8837,
+-  [21967] = 0x8835, [21968] = 0x884B, [21969] = 0x8B94, [21970] = 0x8B95,
+-  [21971] = 0x8E9E, [21972] = 0x8E9F, [21973] = 0x8EA0, [21974] = 0x8E9D,
+-  [21975] = 0x91BE, [21976] = 0x91BD, [21977] = 0x91C2, [21978] = 0x946B,
+-  [21979] = 0x9468, [21980] = 0x9469, [21981] = 0x96E5, [21982] = 0x9746,
+-  [21983] = 0x9743, [21984] = 0x9747, [21985] = 0x97C7, [21986] = 0x97E5,
+-  [21987] = 0x9A5E, [21988] = 0x9AD5, [21989] = 0x9B59, [21990] = 0x9C63,
+-  [21991] = 0x9C67, [21992] = 0x9C66, [21993] = 0x9C62, [21994] = 0x9C5E,
+-  [21995] = 0x9C60, [21996] = 0x9E02, [21997] = 0x9DFE, [21998] = 0x9E07,
+-  [21999] = 0x9E03, [22000] = 0x9E06, [22001] = 0x9E05, [22002] = 0x9E00,
+-  [22003] = 0x9E01, [22004] = 0x9E09, [22005] = 0x9DFF, [22006] = 0x9DFD,
+-  [22007] = 0x9E04, [22008] = 0x9EA0, [22009] = 0x9F1E, [22010] = 0x9F46,
+-  [22011] = 0x9F74, [22012] = 0x9F75, [22013] = 0x9F76, [22014] = 0x56D4,
+-  [22015] = 0x652E, [22016] = 0x65B8, [22017] = 0x6B18, [22018] = 0x6B19,
+-  [22019] = 0x6B17, [22020] = 0x6B1A, [22021] = 0x7062, [22022] = 0x7226,
+-  [22023] = 0x72AA, [22024] = 0x77D8, [22025] = 0x77D9, [22026] = 0x7939,
+-  [22027] = 0x7C69, [22028] = 0x7C6B, [22029] = 0x7CF6, [22030] = 0x7E9A,
+-  [22035] = 0x7E98, [22036] = 0x7E9B, [22037] = 0x7E99, [22038] = 0x81E0,
+-  [22039] = 0x81E1, [22040] = 0x8646, [22041] = 0x8647, [22042] = 0x8648,
+-  [22043] = 0x8979, [22044] = 0x897A, [22045] = 0x897C, [22046] = 0x897B,
+-  [22047] = 0x89FF, [22048] = 0x8B98, [22049] = 0x8B99, [22050] = 0x8EA5,
+-  [22051] = 0x8EA4, [22052] = 0x8EA3, [22053] = 0x946E, [22054] = 0x946D,
+-  [22055] = 0x946F, [22056] = 0x9471, [22057] = 0x9473, [22058] = 0x9749,
+-  [22059] = 0x9872, [22060] = 0x995F, [22061] = 0x9C68, [22062] = 0x9C6E,
+-  [22063] = 0x9C6D, [22064] = 0x9E0B, [22065] = 0x9E0D, [22066] = 0x9E10,
+-  [22067] = 0x9E0F, [22068] = 0x9E12, [22069] = 0x9E11, [22070] = 0x9EA1,
+-  [22071] = 0x9EF5, [22072] = 0x9F09, [22073] = 0x9F47, [22074] = 0x9F78,
+-  [22075] = 0x9F7B, [22076] = 0x9F7A, [22077] = 0x9F79, [22078] = 0x571E,
+-  [22079] = 0x7066, [22080] = 0x7C6F, [22081] = 0x883C, [22082] = 0x8DB2,
+-  [22083] = 0x8EA6, [22084] = 0x91C3, [22085] = 0x9474, [22086] = 0x9478,
+-  [22087] = 0x9476, [22088] = 0x9475, [22089] = 0x9A60, [22090] = 0x9C74,
+-  [22091] = 0x9C73, [22092] = 0x9C71, [22093] = 0x9C75, [22094] = 0x9E14,
+-  [22095] = 0x9E13, [22096] = 0x9EF6, [22097] = 0x9F0A, [22132] = 0x9FA4,
+-  [22133] = 0x7068, [22134] = 0x7065, [22135] = 0x7CF7, [22136] = 0x866A,
+-  [22137] = 0x883E, [22138] = 0x883D, [22139] = 0x883F, [22140] = 0x8B9E,
+-  [22141] = 0x8C9C, [22142] = 0x8EA9, [22143] = 0x8EC9, [22144] = 0x974B,
+-  [22145] = 0x9873, [22146] = 0x9874, [22147] = 0x98CC, [22148] = 0x9961,
+-  [22149] = 0x99AB, [22150] = 0x9A64, [22151] = 0x9A66, [22152] = 0x9A67,
+-  [22153] = 0x9B24, [22154] = 0x9E15, [22155] = 0x9E17, [22156] = 0x9F48,
+-  [22157] = 0x6207, [22158] = 0x6B1E, [22159] = 0x7227, [22160] = 0x864C,
+-  [22161] = 0x8EA8, [22162] = 0x9482, [22163] = 0x9480, [22164] = 0x9481,
+-  [22165] = 0x9A69, [22166] = 0x9A68, [22167] = 0x9B2E, [22168] = 0x9E19,
+-  [22169] = 0x7229, [22170] = 0x864B, [22171] = 0x8B9F, [22172] = 0x9483,
+-  [22173] = 0x9C79, [22174] = 0x9EB7, [22175] = 0x7675, [22176] = 0x9A6B,
+-  [22177] = 0x9C7A, [22178] = 0x9E1D, [22179] = 0x7069, [22180] = 0x706A,
+-  [22181] = 0x9EA4, [22182] = 0x9F7E, [22183] = 0x9F49, [22184] = 0x9F98,
+-  [22185] = 0x7881, [22186] = 0x92B9, [22187] = 0x88CF, [22188] = 0x58BB,
+-  [22189] = 0x6052, [22190] = 0x7CA7, [22191] = 0x5AFA, [22192] = 0x2554,
+-  [22193] = 0x2566, [22194] = 0x2557, [22195] = 0x2560, [22196] = 0x256C,
+-  [22197] = 0x2563, [22198] = 0x255A, [22199] = 0x2569, [22200] = 0x255D,
+-  [22201] = 0x2552, [22202] = 0x2564, [22203] = 0x2555, [22204] = 0x255E,
+-  [22205] = 0x256A, [22206] = 0x2561, [22207] = 0x2558, [22208] = 0x2567,
+-  [22209] = 0x255B, [22210] = 0x2553, [22211] = 0x2565, [22212] = 0x2556,
+-  [22213] = 0x255F, [22214] = 0x256B, [22215] = 0x2562, [22216] = 0x2559,
+-  [22217] = 0x2568, [22218] = 0x255C, [22219] = 0x2551, [22220] = 0x2550,
+-  [22221] = 0x256D, [22222] = 0x256E, [22223] = 0x2570, [22224] = 0x256F,
+-  [22225] = 0xFFED, [22230] = 0x20547, [22231] = 0x92DB, [22232] = 0x205DF,
+-  [22233] = 0xE003, [22234] = 0x854C, [22235] = 0x42B5, [22236] = 0x73EF,
+-  [22237] = 0x51B5, [22238] = 0x3649, [22239] = 0x24942, [22240] = 0x289E4,
+-  [22241] = 0x9344, [22242] = 0x219DB, [22243] = 0x82EE, [22244] = 0x23CC8,
+-  [22245] = 0x783C, [22246] = 0x6744, [22247] = 0x62DF, [22248] = 0x24933,
+-  [22249] = 0x289AA, [22250] = 0x202A0, [22251] = 0x26BB3, [22252] = 0x21305,
+-  [22253] = 0x4FAB, [22254] = 0xE018, [22255] = 0x5008, [22256] = 0x26D29,
+-  [22257] = 0xE01B, [22258] = 0x23600, [22259] = 0x24AB1, [22260] = 0x22513,
+-  [22262] = 0x2037E, [22263] = 0x5FA4, [22264] = 0x20380, [22265] = 0x20347,
+-  [22266] = 0x6EDB, [22267] = 0x2041F, [22269] = 0x5101, [22270] = 0x347A,
+-  [22271] = 0x510E, [22272] = 0x986C, [22273] = 0x3743, [22274] = 0x8416,
+-  [22275] = 0xE02D, [22276] = 0x20487, [22277] = 0x5160, [22278] = 0x233B4,
+-  [22279] = 0x516A, [22280] = 0x20BFF, [22281] = 0x220FC, [22282] = 0x202E5,
+-  [22283] = 0x22530, [22284] = 0x2058E, [22285] = 0x23233, [22286] = 0xE038,
+-  [22287] = 0x5B82, [22288] = 0x877D, [22289] = 0x205B3, [22290] = 0x23C99,
+-  [22291] = 0x51B2, [22292] = 0x51B8, [22327] = 0x9D34, [22328] = 0x51C9,
+-  [22329] = 0x51CF, [22330] = 0x51D1, [22331] = 0x3CDC, [22332] = 0x51D3,
+-  [22333] = 0x24AA6, [22334] = 0x51B3, [22335] = 0x51E2, [22336] = 0x5342,
+-  [22337] = 0x51ED, [22338] = 0x83CD, [22339] = 0x693E, [22340] = 0xE04C,
+-  [22341] = 0x5F7B, [22342] = 0x520B, [22343] = 0x5226, [22344] = 0x523C,
+-  [22345] = 0x52B5, [22346] = 0x5257, [22347] = 0x5294, [22348] = 0x52B9,
+-  [22349] = 0x52C5, [22350] = 0x7C15, [22351] = 0x8542, [22352] = 0x52E0,
+-  [22353] = 0x860D, [22354] = 0xE05A, [22356] = 0x28ADE, [22357] = 0x5549,
+-  [22358] = 0x6ED9, [22359] = 0x23F80, [22360] = 0x20954, [22361] = 0x23FEC,
+-  [22362] = 0x5333, [22364] = 0x20BE2, [22365] = 0x6CCB, [22366] = 0x21726,
+-  [22367] = 0x681B, [22368] = 0x73D5, [22369] = 0x604A, [22370] = 0x3EAA,
+-  [22371] = 0x38CC, [22372] = 0x216E8, [22373] = 0x71DD, [22374] = 0x44A2,
+-  [22375] = 0x536D, [22376] = 0x5374, [22377] = 0x286AB, [22378] = 0x537E,
+-  [22380] = 0x21596, [22381] = 0x21613, [22382] = 0x77E6, [22383] = 0x5393,
+-  [22384] = 0x28A9B, [22385] = 0x53A0, [22386] = 0x53AB, [22387] = 0x53AE,
+-  [22388] = 0x73A7, [22389] = 0x25772, [22390] = 0x3F59, [22391] = 0x739C,
+-  [22392] = 0x53C1, [22393] = 0x53C5, [22394] = 0x6C49, [22395] = 0x4E49,
+-  [22396] = 0x57FE, [22397] = 0x53D9, [22398] = 0x3AAB, [22399] = 0x20B8F,
+-  [22400] = 0x53E0, [22401] = 0x23FEB, [22402] = 0x22DA3, [22403] = 0x53F6,
+-  [22404] = 0x20C77, [22405] = 0x5413, [22406] = 0x7079, [22407] = 0x552B,
+-  [22408] = 0x6657, [22409] = 0x6D5B, [22410] = 0x546D, [22411] = 0x26B53,
+-  [22412] = 0xE094, [22413] = 0x555D, [22414] = 0x548F, [22415] = 0x54A4,
+-  [22416] = 0x47A6, [22417] = 0xE099, [22418] = 0xE09A, [22419] = 0x3DB4,
+-  [22420] = 0x20D4D, [22425] = 0x289BC, [22426] = 0x22698, [22427] = 0x5547,
+-  [22428] = 0x4CED, [22429] = 0x542F, [22430] = 0x7417, [22431] = 0x5586,
+-  [22432] = 0x55A9, [22434] = 0x218D7, [22435] = 0x2403A, [22436] = 0x4552,
+-  [22437] = 0x24435, [22438] = 0x66B3, [22439] = 0x210B4, [22440] = 0x5637,
+-  [22441] = 0x66CD, [22442] = 0x2328A, [22443] = 0x66A4, [22444] = 0x66AD,
+-  [22445] = 0x564D, [22446] = 0x564F, [22447] = 0x78F1, [22448] = 0x56F1,
+-  [22449] = 0x9787, [22450] = 0x53FE, [22451] = 0x5700, [22452] = 0x56EF,
+-  [22453] = 0x56ED, [22454] = 0x28B66, [22455] = 0x3623, [22456] = 0x2124F,
+-  [22457] = 0x5746, [22458] = 0x241A5, [22459] = 0x6C6E, [22460] = 0x708B,
+-  [22461] = 0x5742, [22462] = 0x36B1, [22463] = 0x26C7E, [22464] = 0x57E6,
+-  [22465] = 0xE0C5, [22466] = 0x5803, [22467] = 0x21454, [22468] = 0x24363,
+-  [22469] = 0x5826, [22470] = 0x24BF5, [22471] = 0x585C, [22472] = 0x58AA,
+-  [22473] = 0x3561, [22474] = 0x58E0, [22475] = 0x58DC, [22476] = 0xE0D0,
+-  [22477] = 0x58FB, [22478] = 0x5BFF, [22479] = 0x5743, [22480] = 0x2A150,
+-  [22481] = 0x24278, [22482] = 0x93D3, [22483] = 0x35A1, [22484] = 0x591F,
+-  [22485] = 0x68A6, [22486] = 0x36C3, [22487] = 0x6E59, [22522] = 0x2163E,
+-  [22523] = 0x5A24, [22524] = 0x5553, [22525] = 0x21692, [22526] = 0x8505,
+-  [22527] = 0x59C9, [22528] = 0x20D4E, [22529] = 0x26C81, [22530] = 0x26D2A,
+-  [22531] = 0x217DC, [22532] = 0x59D9, [22533] = 0x217FB, [22534] = 0x217B2,
+-  [22535] = 0x26DA6, [22536] = 0x6D71, [22537] = 0x21828, [22538] = 0x216D5,
+-  [22539] = 0x59F9, [22540] = 0x26E45, [22541] = 0x5AAB, [22542] = 0x5A63,
+-  [22543] = 0x36E6, [22544] = 0xE0F2, [22546] = 0x3708, [22547] = 0x5A96,
+-  [22548] = 0x7465, [22549] = 0x5AD3, [22550] = 0x26FA1, [22551] = 0xE0F9,
+-  [22552] = 0x3D85, [22553] = 0x21911, [22554] = 0x3732, [22555] = 0xE0FD,
+-  [22556] = 0x5E83, [22557] = 0x52D0, [22558] = 0x5B76, [22559] = 0x6588,
+-  [22560] = 0x5B7C, [22561] = 0x27A0E, [22562] = 0x4004, [22563] = 0x485D,
+-  [22564] = 0xE106, [22565] = 0x5BD5, [22566] = 0x6160, [22567] = 0xE109,
+-  [22568] = 0xE10A, [22569] = 0x205A5, [22570] = 0x5BF3, [22571] = 0x5B9D,
+-  [22572] = 0x4D10, [22573] = 0x5C05, [22574] = 0x21B44, [22575] = 0x5C13,
+-  [22576] = 0x73CE, [22577] = 0x5C14, [22578] = 0x21CA5, [22579] = 0x26B28,
+-  [22580] = 0x5C49, [22581] = 0x48DD, [22582] = 0x5C85, [22583] = 0x5CE9,
+-  [22584] = 0x5CEF, [22585] = 0x5D8B, [22586] = 0x21DF9, [22587] = 0x21E37,
+-  [22588] = 0x5D10, [22589] = 0x5D18, [22590] = 0x5D46, [22591] = 0x21EA4,
+-  [22592] = 0x5CBA, [22593] = 0x5DD7, [22594] = 0x82FC, [22595] = 0x382D,
+-  [22596] = 0x24901, [22597] = 0x22049, [22598] = 0x22173, [22599] = 0x8287,
+-  [22600] = 0x3836, [22601] = 0x3BC2, [22602] = 0x5E2E, [22603] = 0x6A8A,
+-  [22605] = 0x5E7A, [22606] = 0xE130, [22607] = 0x20CD3, [22608] = 0x53A6,
+-  [22609] = 0x4EB7, [22611] = 0x53A8, [22612] = 0x21771, [22613] = 0x5E09,
+-  [22614] = 0x5EF4, [22615] = 0x28482, [22620] = 0x5EF9, [22621] = 0x5EFB,
+-  [22622] = 0x38A0, [22623] = 0x5EFC, [22624] = 0x683E, [22625] = 0x941B,
+-  [22626] = 0x5F0D, [22627] = 0x201C1, [22628] = 0x2F894, [22629] = 0x3ADE,
+-  [22630] = 0x48AE, [22631] = 0x2133A, [22632] = 0x5F3A, [22633] = 0x26888,
+-  [22634] = 0x223D0, [22636] = 0x22471, [22637] = 0x5F63, [22638] = 0x97BD,
+-  [22639] = 0x26E6E, [22640] = 0x5F72, [22641] = 0x9340, [22642] = 0xE150,
+-  [22643] = 0x5FA7, [22644] = 0x5DB6, [22645] = 0x3D5F, [22646] = 0xE154,
+-  [22647] = 0x21F6A, [22648] = 0x270F8, [22649] = 0x22668, [22650] = 0x91D6,
+-  [22651] = 0x2029E, [22652] = 0x28A29, [22653] = 0x6031, [22654] = 0x6685,
+-  [22655] = 0xE15D, [22656] = 0x3963, [22657] = 0x3DC7, [22658] = 0x3639,
+-  [22659] = 0x5790, [22660] = 0x227B4, [22661] = 0x7971, [22662] = 0x3E40,
+-  [22663] = 0x609E, [22665] = 0x60B3, [22666] = 0xE168, [22667] = 0x2498F,
+-  [22668] = 0xE16A, [22669] = 0x74A4, [22670] = 0x50E1, [22671] = 0x5AA0,
+-  [22672] = 0x6164, [22673] = 0x8424, [22674] = 0x6142, [22675] = 0xE171,
+-  [22676] = 0x26ED2, [22677] = 0x6181, [22678] = 0x51F4, [22679] = 0xE175,
+-  [22680] = 0x6187, [22681] = 0x5BAA, [22682] = 0x23FB7, [22717] = 0x2285F,
+-  [22718] = 0x61D3, [22719] = 0x28B9D, [22720] = 0x2995D, [22721] = 0x61D0,
+-  [22722] = 0x3932, [22723] = 0x22980, [22724] = 0x228C1, [22725] = 0x6023,
+-  [22726] = 0x615C, [22727] = 0x651E, [22728] = 0x638B, [22729] = 0x20118,
+-  [22730] = 0x62C5, [22731] = 0x21770, [22732] = 0x62D5, [22733] = 0x22E0D,
+-  [22734] = 0x636C, [22735] = 0x249DF, [22736] = 0x3A17, [22737] = 0x6438,
+-  [22738] = 0x63F8, [22739] = 0xE18F, [22740] = 0x217FC, [22742] = 0x6F8A,
+-  [22743] = 0x22E36, [22744] = 0x9814, [22745] = 0x2408C, [22746] = 0x2571D,
+-  [22747] = 0x64E1, [22748] = 0x64E5, [22749] = 0x947B, [22750] = 0x3A66,
+-  [22751] = 0x643A, [22752] = 0x3A57, [22753] = 0x654D, [22754] = 0x6F16,
+-  [22755] = 0x24A28, [22756] = 0x24A23, [22757] = 0x6585, [22758] = 0x656D,
+-  [22759] = 0x655F, [22760] = 0x2307E, [22761] = 0x65B5, [22762] = 0x24940,
+-  [22763] = 0x4B37, [22764] = 0x65D1, [22765] = 0x40D8, [22766] = 0x21829,
+-  [22767] = 0x65E0, [22768] = 0x65E3, [22769] = 0x5FDF, [22770] = 0x23400,
+-  [22771] = 0x6618, [22772] = 0x231F7, [22773] = 0x231F8, [22774] = 0x6644,
+-  [22775] = 0x231A4, [22776] = 0x231A5, [22777] = 0x664B, [22778] = 0x20E75,
+-  [22779] = 0x6667, [22780] = 0x251E6, [22781] = 0x6673, [22783] = 0xE1BB,
+-  [22784] = 0x23231, [22785] = 0x285F4, [22786] = 0x231C8, [22787] = 0x25313,
+-  [22788] = 0x77C5, [22789] = 0x228F7, [22790] = 0x99A4, [22791] = 0x6702,
+-  [22792] = 0x2439C, [22793] = 0x24A21, [22794] = 0x3B2B, [22795] = 0x69FA,
+-  [22796] = 0x237C2, [22798] = 0x6767, [22799] = 0x6762, [22800] = 0xE1CC,
+-  [22801] = 0xE1CD, [22802] = 0x67D7, [22803] = 0x44E9, [22804] = 0x6822,
+-  [22805] = 0x6E50, [22806] = 0x923C, [22807] = 0x6801, [22808] = 0x233E6,
+-  [22809] = 0x26DA0, [22810] = 0x685D, [22815] = 0xE1D7, [22816] = 0x69E1,
+-  [22817] = 0x6A0B, [22818] = 0x28ADF, [22819] = 0x6973, [22820] = 0x68C3,
+-  [22821] = 0x235CD, [22822] = 0x6901, [22823] = 0x6900, [22824] = 0x3D32,
+-  [22825] = 0x3A01, [22826] = 0x2363C, [22827] = 0x3B80, [22828] = 0x67AC,
+-  [22829] = 0x6961, [22830] = 0x28A4A, [22831] = 0x42FC, [22832] = 0x6936,
+-  [22833] = 0x6998, [22834] = 0x3BA1, [22835] = 0x203C9, [22836] = 0x8363,
+-  [22837] = 0x5090, [22838] = 0x69F9, [22839] = 0xE1EF, [22840] = 0x2212A,
+-  [22841] = 0x6A45, [22842] = 0xE1F2, [22843] = 0x6A9D, [22844] = 0x3BF3,
+-  [22845] = 0x67B1, [22846] = 0x6AC8, [22847] = 0x2919C, [22848] = 0x3C0D,
+-  [22849] = 0x6B1D, [22850] = 0xE1FA, [22851] = 0x60DE, [22852] = 0x6B35,
+-  [22853] = 0x6B74, [22854] = 0xE1FE, [22855] = 0x6EB5, [22856] = 0x23ADB,
+-  [22857] = 0x203B5, [22858] = 0xE202, [22859] = 0x3740, [22860] = 0x5421,
+-  [22861] = 0x23B5A, [22862] = 0x6BE1, [22863] = 0x23EFC, [22864] = 0x6BDC,
+-  [22865] = 0x6C37, [22866] = 0x2248B, [22867] = 0xE20B, [22868] = 0x26B51,
+-  [22869] = 0x6C5A, [22870] = 0x8226, [22871] = 0x6C79, [22872] = 0x23DBC,
+-  [22873] = 0x44C5, [22874] = 0x23DBD, [22875] = 0x241A4, [22876] = 0x2490C,
+-  [22877] = 0x24900, [22912] = 0x23CC9, [22913] = 0x36E5, [22914] = 0x3CEB,
+-  [22915] = 0xE219, [22916] = 0x9B83, [22917] = 0x231F9, [22918] = 0xE21C,
+-  [22919] = 0x7F8F, [22920] = 0x6837, [22921] = 0x26D25, [22922] = 0x26DA1,
+-  [22923] = 0x26DEB, [22924] = 0x6D96, [22925] = 0x6D5C, [22926] = 0x6E7C,
+-  [22927] = 0x6F04, [22928] = 0x2497F, [22929] = 0xE227, [22930] = 0x26E72,
+-  [22931] = 0x8533, [22932] = 0x26F74, [22933] = 0x51C7, [22936] = 0x842E,
+-  [22937] = 0x28B21, [22939] = 0x23E2F, [22940] = 0x7453, [22941] = 0x23F82,
+-  [22942] = 0x79CC, [22943] = 0x6E4F, [22944] = 0x5A91, [22945] = 0x2304B,
+-  [22946] = 0x6FF8, [22947] = 0x370D, [22948] = 0x6F9D, [22949] = 0x23E30,
+-  [22950] = 0x6EFA, [22951] = 0x21497, [22952] = 0x2403D, [22953] = 0x4555,
+-  [22954] = 0x93F0, [22955] = 0x6F44, [22956] = 0x6F5C, [22957] = 0x3D4E,
+-  [22958] = 0x6F74, [22959] = 0xE245, [22960] = 0x3D3B, [22961] = 0x6F9F,
+-  [22962] = 0x24144, [22963] = 0x6FD3, [22964] = 0xE24A, [22965] = 0x24155,
+-  [22966] = 0x24039, [22967] = 0x25D20, [22968] = 0xE24E, [22969] = 0x2413F,
+-  [22970] = 0x51DF, [22971] = 0x24156, [22972] = 0x24157, [22973] = 0x24140,
+-  [22974] = 0x261DD, [22975] = 0x704B, [22976] = 0x707E, [22977] = 0x70A7,
+-  [22978] = 0x7081, [22979] = 0x70CC, [22980] = 0x70D5, [22981] = 0x70D6,
+-  [22982] = 0x70DF, [22983] = 0x4104, [22984] = 0x3DE8, [22985] = 0x71B4,
+-  [22986] = 0x7196, [22987] = 0x24277, [22988] = 0x712B, [22989] = 0x7145,
+-  [22990] = 0x5A88, [22991] = 0x714A, [22993] = 0x5C9C, [22994] = 0x24365,
+-  [22995] = 0x714F, [22996] = 0x9362, [22997] = 0xE26B, [22998] = 0x712C,
+-  [22999] = 0x2445A, [23000] = 0x24A27, [23001] = 0x24A22, [23002] = 0x71BA,
+-  [23003] = 0x28BE8, [23004] = 0x70BD, [23005] = 0x720E, [23010] = 0x9442,
+-  [23011] = 0x7215, [23012] = 0x5911, [23013] = 0x9443, [23014] = 0x7224,
+-  [23015] = 0x9341, [23016] = 0xE27A, [23017] = 0x722E, [23018] = 0x7240,
+-  [23019] = 0x24974, [23020] = 0x68BD, [23021] = 0x7255, [23022] = 0x7257,
+-  [23023] = 0x3E55, [23024] = 0xE282, [23025] = 0x680D, [23026] = 0x6F3D,
+-  [23027] = 0x7282, [23029] = 0x732B, [23030] = 0x24823, [23031] = 0x2882B,
+-  [23032] = 0x48ED, [23033] = 0x28804, [23034] = 0x7328, [23035] = 0x732E,
+-  [23036] = 0x73CF, [23037] = 0x73AA, [23038] = 0xE290, [23039] = 0x26A2E,
+-  [23040] = 0x73C9, [23041] = 0x7449, [23042] = 0x241E2, [23043] = 0x216E7,
+-  [23044] = 0x24A24, [23045] = 0x6623, [23046] = 0x36C5, [23047] = 0x249B7,
+-  [23048] = 0x2498D, [23049] = 0xE29B, [23050] = 0x73F7, [23051] = 0x7415,
+-  [23052] = 0x6903, [23053] = 0x24A26, [23054] = 0x7439, [23055] = 0xE2A1,
+-  [23056] = 0x3ED7, [23058] = 0x228AD, [23059] = 0x7460, [23060] = 0x28EB2,
+-  [23061] = 0x7447, [23062] = 0x73E4, [23063] = 0x7476, [23064] = 0x83B9,
+-  [23065] = 0x746C, [23066] = 0x3730, [23067] = 0x7474, [23068] = 0x93F1,
+-  [23069] = 0x6A2C, [23070] = 0x7482, [23071] = 0x4953, [23072] = 0xE2B2,
+-  [23107] = 0x2415F, [23108] = 0x24A79, [23109] = 0x28B8F, [23110] = 0x5B46,
+-  [23111] = 0xE2B7, [23112] = 0x2189E, [23113] = 0x74C8, [23114] = 0x21988,
+-  [23115] = 0x750E, [23117] = 0x751E, [23118] = 0x28ED9, [23119] = 0x21A4B,
+-  [23120] = 0x5BD7, [23121] = 0xE2C1, [23122] = 0x9385, [23123] = 0x754D,
+-  [23124] = 0x754A, [23125] = 0x7567, [23126] = 0x756E, [23127] = 0x24F82,
+-  [23128] = 0x3F04, [23129] = 0xE2C9, [23130] = 0x758E, [23131] = 0x745D,
+-  [23132] = 0x759E, [23133] = 0x75B4, [23134] = 0x7602, [23135] = 0x762C,
+-  [23136] = 0x7651, [23137] = 0x764F, [23138] = 0x766F, [23139] = 0x7676,
+-  [23140] = 0xE2D4, [23141] = 0x7690, [23142] = 0x81EF, [23143] = 0x37F8,
+-  [23144] = 0x26911, [23145] = 0x2690E, [23146] = 0x76A1, [23147] = 0x76A5,
+-  [23148] = 0x76B7, [23149] = 0x76CC, [23150] = 0x26F9F, [23151] = 0x8462,
+-  [23152] = 0x2509D, [23153] = 0x2517D, [23154] = 0xE2E2, [23155] = 0x771E,
+-  [23156] = 0x7726, [23157] = 0x7740, [23158] = 0x64AF, [23159] = 0x25220,
+-  [23160] = 0x7758, [23161] = 0x232AC, [23162] = 0x77AF, [23163] = 0xE2EB,
+-  [23164] = 0xE2EC, [23165] = 0x216C1, [23166] = 0x77F4, [23168] = 0xE2F0,
+-  [23169] = 0xE2F1, [23170] = 0x68CA, [23171] = 0x78AF, [23172] = 0x78C7,
+-  [23173] = 0x78D3, [23174] = 0x96A5, [23175] = 0x792E, [23176] = 0x255E0,
+-  [23177] = 0x78D7, [23178] = 0x7934, [23179] = 0x78B1, [23180] = 0x2760C,
+-  [23181] = 0x8FB8, [23182] = 0x8884, [23183] = 0x28B2B, [23184] = 0xE300,
+-  [23185] = 0x2261C, [23186] = 0x7986, [23187] = 0x8900, [23188] = 0x6902,
+-  [23189] = 0x7980, [23190] = 0x25857, [23191] = 0x799D, [23192] = 0x27B39,
+-  [23193] = 0x793C, [23194] = 0x79A9, [23195] = 0x6E2A, [23196] = 0x27126,
+-  [23197] = 0x3EA8, [23198] = 0x79C6, [23199] = 0x2910D, [23200] = 0x79D4
++  [    0] = 0x43F0, [    1] = 0x4C32, [    2] = 0x4603, [    3] = 0x45A6,
++  [    4] = 0x4578, [    5] = 0x27267, [    6] = 0x4D77, [    7] = 0x45B3,
++  [    8] = 0x27CB1, [    9] = 0x4CE2, [   10] = 0x27CC5, [   11] = 0x3B95,
++  [   12] = 0x4736, [   13] = 0x4744, [   14] = 0x4C47, [   15] = 0x4C40,
++  [   16] = 0x242BF, [   17] = 0x23617, [   18] = 0x27352, [   19] = 0x26E8B,
++  [   20] = 0x270D2, [   21] = 0x4C57, [   22] = 0x2A351, [   23] = 0x474F,
++  [   24] = 0x45DA, [   25] = 0x4C85, [   26] = 0x27C6C, [   27] = 0x4D07,
++  [   28] = 0x4AA4, [   29] = 0x46A1, [   30] = 0x26B23, [   31] = 0x7225,
++  [   32] = 0x25A54, [   33] = 0x21A63, [   34] = 0x23E06, [   35] = 0x23F61,
++  [   36] = 0x664D, [   37] = 0x56FB, [   39] = 0x7D95, [   40] = 0x591D,
++  [   41] = 0x28BB9, [   42] = 0x3DF4, [   43] = 0x9734, [   44] = 0x27BEF,
++  [   45] = 0x5BDB, [   46] = 0x21D5E, [   47] = 0x5AA4, [   48] = 0x3625,
++  [   49] = 0x29EB0, [   50] = 0x5AD1, [   51] = 0x5BB7, [   52] = 0x5CFC,
++  [   53] = 0x676E, [   54] = 0x8593, [   55] = 0x29945, [   56] = 0x7461,
++  [   57] = 0x749D, [   58] = 0x3875, [   59] = 0x21D53, [   60] = 0x2369E,
++  [   61] = 0x26021, [   62] = 0x3EEC, [   97] = 0x258DE, [   98] = 0x3AF5,
++  [   99] = 0x7AFC, [  100] = 0x9F97, [  101] = 0x24161, [  102] = 0x2890D,
++  [  103] = 0x231EA, [  104] = 0x20A8A, [  105] = 0x2325E, [  106] = 0x430A,
++  [  107] = 0x8484, [  108] = 0x9F96, [  109] = 0x942F, [  110] = 0x4930,
++  [  111] = 0x8613, [  112] = 0x5896, [  113] = 0x974A, [  114] = 0x9218,
++  [  115] = 0x79D0, [  116] = 0x7A32, [  117] = 0x6660, [  118] = 0x6A29,
++  [  119] = 0x889D, [  120] = 0x744C, [  121] = 0x7BC5, [  122] = 0x6782,
++  [  123] = 0x7A2C, [  124] = 0x524F, [  125] = 0x9046, [  126] = 0x34E6,
++  [  127] = 0x73C4, [  128] = 0x25DB9, [  129] = 0x74C6, [  130] = 0x9FC7,
++  [  131] = 0x57B3, [  132] = 0x492F, [  133] = 0x544C, [  134] = 0x4131,
++  [  135] = 0x2368E, [  136] = 0x5818, [  137] = 0x7A72, [  138] = 0x27B65,
++  [  139] = 0x8B8F, [  140] = 0x46AE, [  141] = 0x26E88, [  142] = 0x4181,
++  [  143] = 0x25D99, [  144] = 0x7BAE, [  145] = 0x224BC, [  146] = 0x9FC8,
++  [  147] = 0x224C1, [  148] = 0x224C9, [  149] = 0x224CC, [  150] = 0x9FC9,
++  [  151] = 0x8504, [  152] = 0x235BB, [  153] = 0x40B4, [  154] = 0x9FCA,
++  [  155] = 0x44E1, [  156] = 0x2ADFF, [  157] = 0x62C1, [  158] = 0x706E,
++  [  159] = 0x9FCB, [  195] = 0x31C0, [  196] = 0x31C1, [  197] = 0x31C2,
++  [  198] = 0x31C3, [  199] = 0x31C4, [  200] = 0x2010C, [  201] = 0x31C5,
++  [  202] = 0x200D1, [  203] = 0x200CD, [  204] = 0x31C6, [  205] = 0x31C7,
++  [  206] = 0x200CB, [  207] = 0x21FE8, [  208] = 0x31C8, [  209] = 0x200CA,
++  [  210] = 0x31C9, [  211] = 0x31CA, [  212] = 0x31CB, [  213] = 0x31CC,
++  [  214] = 0x2010E, [  215] = 0x31CD, [  216] = 0x31CE, [  217] = 0x0100,
++  [  218] = 0x00C1, [  219] = 0x01CD, [  220] = 0x00C0, [  221] = 0x0112,
++  [  222] = 0x00C9, [  223] = 0x011A, [  224] = 0x00C8, [  225] = 0x014C,
++  [  226] = 0x00D3, [  227] = 0x01D1, [  228] = 0x00D2, [  230] = 0x1EBE,
++  [  232] = 0x1EC0, [  233] = 0x00CA, [  234] = 0x0101, [  235] = 0x00E1,
++  [  236] = 0x01CE, [  237] = 0x00E0, [  238] = 0x0251, [  239] = 0x0113,
++  [  240] = 0x00E9, [  241] = 0x011B, [  242] = 0x00E8, [  243] = 0x012B,
++  [  244] = 0x00ED, [  245] = 0x01D0, [  246] = 0x00EC, [  247] = 0x014D,
++  [  248] = 0x00F3, [  249] = 0x01D2, [  250] = 0x00F2, [  251] = 0x016B,
++  [  252] = 0x00FA, [  253] = 0x01D4, [  254] = 0x00F9, [  255] = 0x01D6,
++  [  256] = 0x01D8, [  257] = 0x01DA, [  292] = 0x01DC, [  293] = 0x00FC,
++  [  295] = 0x1EBF, [  297] = 0x1EC1, [  298] = 0x00EA, [  299] = 0x0261,
++  [  300] = 0x23DA, [  301] = 0x23DB, [  390] = 0x2A3A9, [  391] = 0x21145,
++  [  393] = 0x650A, [  396] = 0x4E3D, [  397] = 0x6EDD, [  398] = 0x9D4E,
++  [  399] = 0x91DF, [  402] = 0x27735, [  403] = 0x6491, [  404] = 0x4F1A,
++  [  405] = 0x4F28, [  406] = 0x4FA8, [  407] = 0x5156, [  408] = 0x5174,
++  [  409] = 0x519C, [  410] = 0x51E4, [  411] = 0x52A1, [  412] = 0x52A8,
++  [  413] = 0x533B, [  414] = 0x534E, [  415] = 0x53D1, [  416] = 0x53D8,
++  [  417] = 0x56E2, [  418] = 0x58F0, [  419] = 0x5904, [  420] = 0x5907,
++  [  421] = 0x5932, [  422] = 0x5934, [  423] = 0x5B66, [  424] = 0x5B9E,
++  [  425] = 0x5B9F, [  426] = 0x5C9A, [  427] = 0x5E86, [  428] = 0x603B,
++  [  429] = 0x6589, [  430] = 0x67FE, [  431] = 0x6804, [  432] = 0x6865,
++  [  433] = 0x6D4E, [  434] = 0x70BC, [  435] = 0x7535, [  436] = 0x7EA4,
++  [  437] = 0x7EAC, [  438] = 0x7EBA, [  439] = 0x7EC7, [  440] = 0x7ECF,
++  [  441] = 0x7EDF, [  442] = 0x7F06, [  443] = 0x7F37, [  444] = 0x827A,
++  [  445] = 0x82CF, [  446] = 0x836F, [  447] = 0x89C6, [  448] = 0x8BBE,
++  [  449] = 0x8BE2, [  450] = 0x8F66, [  451] = 0x8F67, [  452] = 0x8F6E,
++  [  487] = 0x7411, [  488] = 0x7CFC, [  489] = 0x7DCD, [  490] = 0x6946,
++  [  491] = 0x7AC9, [  492] = 0x5227, [  497] = 0x918C, [  498] = 0x78B8,
++  [  499] = 0x915E, [  500] = 0x80BC, [  502] = 0x8D0B, [  503] = 0x80F6,
++  [  504] = 0x209E7, [  507] = 0x809F, [  508] = 0x9EC7, [  509] = 0x4CCD,
++  [  510] = 0x9DC9, [  511] = 0x9E0C, [  512] = 0x4C3E, [  513] = 0x29DF6,
++  [  514] = 0x2700E, [  515] = 0x9E0A, [  516] = 0x2A133, [  517] = 0x35C1,
++  [  519] = 0x6E9A, [  520] = 0x823E, [  521] = 0x7519, [  523] = 0x4911,
++  [  524] = 0x9A6C, [  525] = 0x9A8F, [  526] = 0x9F99, [  527] = 0x7987,
++  [  528] = 0x2846C, [  529] = 0x21DCA, [  530] = 0x205D0, [  531] = 0x22AE6,
++  [  532] = 0x4E24, [  533] = 0x4E81, [  534] = 0x4E80, [  535] = 0x4E87,
++  [  536] = 0x4EBF, [  537] = 0x4EEB, [  538] = 0x4F37, [  539] = 0x344C,
++  [  540] = 0x4FBD, [  541] = 0x3E48, [  542] = 0x5003, [  543] = 0x5088,
++  [  544] = 0x347D, [  545] = 0x3493, [  546] = 0x34A5, [  547] = 0x5186,
++  [  548] = 0x5905, [  549] = 0x51DB, [  550] = 0x51FC, [  551] = 0x5205,
++  [  552] = 0x4E89, [  553] = 0x5279, [  554] = 0x5290, [  555] = 0x5327,
++  [  556] = 0x35C7, [  557] = 0x53A9, [  558] = 0x3551, [  559] = 0x53B0,
++  [  560] = 0x3553, [  561] = 0x53C2, [  562] = 0x5423, [  563] = 0x356D,
++  [  564] = 0x3572, [  565] = 0x3681, [  566] = 0x5493, [  567] = 0x54A3,
++  [  568] = 0x54B4, [  569] = 0x54B9, [  570] = 0x54D0, [  571] = 0x54EF,
++  [  572] = 0x5518, [  573] = 0x5523, [  574] = 0x5528, [  575] = 0x3598,
++  [  576] = 0x553F, [  577] = 0x35A5, [  578] = 0x35BF, [  579] = 0x55D7,
++  [  580] = 0x35C5, [  585] = 0x27D84, [  586] = 0x5525, [  588] = 0x20C42,
++  [  589] = 0x20D15, [  590] = 0x2512B, [  591] = 0x5590, [  592] = 0x22CC6,
++  [  593] = 0x39EC, [  594] = 0x20341, [  595] = 0x8E46, [  596] = 0x24DB8,
++  [  597] = 0x294E5, [  598] = 0x4053, [  599] = 0x280BE, [  600] = 0x777A,
++  [  601] = 0x22C38, [  602] = 0x3A34, [  603] = 0x47D5, [  604] = 0x2815D,
++  [  605] = 0x269F2, [  606] = 0x24DEA, [  607] = 0x64DD, [  608] = 0x20D7C,
++  [  609] = 0x20FB4, [  610] = 0x20CD5, [  611] = 0x210F4, [  612] = 0x648D,
++  [  613] = 0x8E7E, [  614] = 0x20E96, [  615] = 0x20C0B, [  616] = 0x20F64,
++  [  617] = 0x22CA9, [  618] = 0x28256, [  619] = 0x244D3, [  621] = 0x20D46,
++  [  622] = 0x29A4D, [  623] = 0x280E9, [  624] = 0x47F4, [  625] = 0x24EA7,
++  [  626] = 0x22CC2, [  627] = 0x9AB2, [  628] = 0x3A67, [  629] = 0x295F4,
++  [  630] = 0x3FED, [  631] = 0x3506, [  632] = 0x252C7, [  633] = 0x297D4,
++  [  634] = 0x278C8, [  635] = 0x22D44, [  636] = 0x9D6E, [  637] = 0x9815,
++  [  639] = 0x43D9, [  640] = 0x260A5, [  641] = 0x64B4, [  642] = 0x54E3,
++  [  643] = 0x22D4C, [  644] = 0x22BCA, [  645] = 0x21077, [  646] = 0x39FB,
++  [  647] = 0x2106F, [  682] = 0x266DA, [  683] = 0x26716, [  684] = 0x279A0,
++  [  685] = 0x64EA, [  686] = 0x25052, [  687] = 0x20C43, [  688] = 0x8E68,
++  [  689] = 0x221A1, [  690] = 0x28B4C, [  691] = 0x20731, [  693] = 0x480B,
++  [  694] = 0x201A9, [  695] = 0x3FFA, [  696] = 0x5873, [  697] = 0x22D8D,
++  [  699] = 0x245C8, [  700] = 0x204FC, [  701] = 0x26097, [  702] = 0x20F4C,
++  [  703] = 0x20D96, [  704] = 0x5579, [  705] = 0x40BB, [  706] = 0x43BA,
++  [  708] = 0x4AB4, [  709] = 0x22A66, [  710] = 0x2109D, [  711] = 0x81AA,
++  [  712] = 0x98F5, [  713] = 0x20D9C, [  714] = 0x6379, [  715] = 0x39FE,
++  [  716] = 0x22775, [  717] = 0x8DC0, [  718] = 0x56A1, [  719] = 0x647C,
++  [  720] = 0x3E43, [  722] = 0x2A601, [  723] = 0x20E09, [  724] = 0x22ACF,
++  [  725] = 0x22CC9, [  727] = 0x210C8, [  728] = 0x239C2, [  729] = 0x3992,
++  [  730] = 0x3A06, [  731] = 0x2829B, [  732] = 0x3578, [  733] = 0x25E49,
++  [  734] = 0x220C7, [  735] = 0x5652, [  736] = 0x20F31, [  737] = 0x22CB2,
++  [  738] = 0x29720, [  739] = 0x34BC, [  740] = 0x6C3D, [  741] = 0x24E3B,
++  [  744] = 0x27574, [  745] = 0x22E8B, [  746] = 0x22208, [  747] = 0x2A65B,
++  [  748] = 0x28CCD, [  749] = 0x20E7A, [  750] = 0x20C34, [  751] = 0x2681C,
++  [  752] = 0x7F93, [  753] = 0x210CF, [  754] = 0x22803, [  755] = 0x22939,
++  [  756] = 0x35FB, [  757] = 0x251E3, [  758] = 0x20E8C, [  759] = 0x20F8D,
++  [  760] = 0x20EAA, [  761] = 0x3F93, [  762] = 0x20F30, [  763] = 0x20D47,
++  [  764] = 0x2114F, [  765] = 0x20E4C, [  767] = 0x20EAB, [  768] = 0x20BA9,
++  [  769] = 0x20D48, [  770] = 0x210C0, [  771] = 0x2113D, [  772] = 0x3FF9,
++  [  773] = 0x22696, [  774] = 0x6432, [  775] = 0x20FAD, [  780] = 0x233F4,
++  [  781] = 0x27639, [  782] = 0x22BCE, [  783] = 0x20D7E, [  784] = 0x20D7F,
++  [  785] = 0x22C51, [  786] = 0x22C55, [  787] = 0x3A18, [  788] = 0x20E98,
++  [  789] = 0x210C7, [  790] = 0x20F2E, [  791] = 0x2A632, [  792] = 0x26B50,
++  [  793] = 0x28CD2, [  794] = 0x28D99, [  795] = 0x28CCA, [  796] = 0x95AA,
++  [  797] = 0x54CC, [  798] = 0x82C4, [  799] = 0x55B9, [  801] = 0x29EC3,
++  [  802] = 0x9C26, [  803] = 0x9AB6, [  804] = 0x2775E, [  805] = 0x22DEE,
++  [  806] = 0x7140, [  807] = 0x816D, [  808] = 0x80EC, [  809] = 0x5C1C,
++  [  810] = 0x26572, [  811] = 0x8134, [  812] = 0x3797, [  813] = 0x535F,
++  [  814] = 0x280BD, [  815] = 0x91B6, [  816] = 0x20EFA, [  817] = 0x20E0F,
++  [  818] = 0x20E77, [  819] = 0x20EFB, [  820] = 0x35DD, [  821] = 0x24DEB,
++  [  822] = 0x3609, [  823] = 0x20CD6, [  824] = 0x56AF, [  825] = 0x227B5,
++  [  826] = 0x210C9, [  827] = 0x20E10, [  828] = 0x20E78, [  829] = 0x21078,
++  [  830] = 0x21148, [  831] = 0x28207, [  832] = 0x21455, [  833] = 0x20E79,
++  [  834] = 0x24E50, [  835] = 0x22DA4, [  836] = 0x5A54, [  837] = 0x2101D,
++  [  838] = 0x2101E, [  839] = 0x210F5, [  840] = 0x210F6, [  841] = 0x579C,
++  [  842] = 0x20E11, [  877] = 0x27694, [  878] = 0x282CD, [  879] = 0x20FB5,
++  [  880] = 0x20E7B, [  881] = 0x2517E, [  882] = 0x3703, [  883] = 0x20FB6,
++  [  884] = 0x21180, [  885] = 0x252D8, [  886] = 0x2A2BD, [  887] = 0x249DA,
++  [  888] = 0x2183A, [  889] = 0x24177, [  890] = 0x2827C, [  891] = 0x5899,
++  [  892] = 0x5268, [  893] = 0x361A, [  894] = 0x2573D, [  895] = 0x7BB2,
++  [  896] = 0x5B68, [  897] = 0x4800, [  898] = 0x4B2C, [  899] = 0x9F27,
++  [  900] = 0x49E7, [  901] = 0x9C1F, [  902] = 0x9B8D, [  903] = 0x25B74,
++  [  904] = 0x2313D, [  905] = 0x55FB, [  906] = 0x35F2, [  907] = 0x5689,
++  [  908] = 0x4E28, [  909] = 0x5902, [  910] = 0x21BC1, [  911] = 0x2F878,
++  [  912] = 0x9751, [  913] = 0x20086, [  914] = 0x4E5B, [  915] = 0x4EBB,
++  [  916] = 0x353E, [  917] = 0x5C23, [  918] = 0x5F51, [  919] = 0x5FC4,
++  [  920] = 0x38FA, [  921] = 0x624C, [  922] = 0x6535, [  923] = 0x6B7A,
++  [  924] = 0x6C35, [  925] = 0x6C3A, [  926] = 0x706C, [  927] = 0x722B,
++  [  928] = 0x4E2C, [  929] = 0x72AD, [  930] = 0x248E9, [  931] = 0x7F52,
++  [  932] = 0x793B, [  933] = 0x7CF9, [  934] = 0x7F53, [  935] = 0x2626A,
++  [  936] = 0x34C1, [  938] = 0x2634B, [  939] = 0x8002, [  940] = 0x8080,
++  [  941] = 0x26612, [  942] = 0x26951, [  943] = 0x535D, [  944] = 0x8864,
++  [  945] = 0x89C1, [  946] = 0x278B2, [  947] = 0x8BA0, [  948] = 0x8D1D,
++  [  949] = 0x9485, [  950] = 0x9578, [  951] = 0x957F, [  952] = 0x95E8,
++  [  953] = 0x28E0F, [  954] = 0x97E6, [  955] = 0x9875, [  956] = 0x98CE,
++  [  957] = 0x98DE, [  958] = 0x9963, [  959] = 0x29810, [  960] = 0x9C7C,
++  [  961] = 0x9E1F, [  962] = 0x9EC4, [  963] = 0x6B6F, [  964] = 0xF907,
++  [  965] = 0x4E37, [  966] = 0x20087, [  967] = 0x961D, [  968] = 0x6237,
++  [  969] = 0x94A2, [  975] = 0x503B, [  976] = 0x6DFE, [  977] = 0x29C73,
++  [  978] = 0x9FA6, [  979] = 0x3DC9, [  980] = 0x888F, [  981] = 0x2414E,
++  [  982] = 0x7077, [  983] = 0x5CF5, [  984] = 0x4B20, [  985] = 0x251CD,
++  [  986] = 0x3559, [  987] = 0x25D30, [  988] = 0x6122, [  989] = 0x28A32,
++  [  990] = 0x8FA7, [  991] = 0x91F6, [  992] = 0x7191, [  993] = 0x6719,
++  [  994] = 0x73BA, [  995] = 0x23281, [  996] = 0x2A107, [  997] = 0x3C8B,
++  [  998] = 0x21980, [  999] = 0x4B10, [ 1000] = 0x78E4, [ 1001] = 0x7402,
++  [ 1002] = 0x51AE, [ 1003] = 0x2870F, [ 1004] = 0x4009, [ 1005] = 0x6A63,
++  [ 1006] = 0x2A2BA, [ 1007] = 0x4223, [ 1008] = 0x860F, [ 1009] = 0x20A6F,
++  [ 1010] = 0x7A2A, [ 1011] = 0x29947, [ 1012] = 0x28AEA, [ 1013] = 0x9755,
++  [ 1014] = 0x704D, [ 1015] = 0x5324, [ 1016] = 0x2207E, [ 1017] = 0x93F4,
++  [ 1018] = 0x76D9, [ 1019] = 0x289E3, [ 1020] = 0x9FA7, [ 1021] = 0x77DD,
++  [ 1022] = 0x4EA3, [ 1023] = 0x4FF0, [ 1024] = 0x50BC, [ 1025] = 0x4E2F,
++  [ 1026] = 0x4F17, [ 1027] = 0x9FA8, [ 1028] = 0x5434, [ 1029] = 0x7D8B,
++  [ 1030] = 0x5892, [ 1031] = 0x58D0, [ 1032] = 0x21DB6, [ 1033] = 0x5E92,
++  [ 1034] = 0x5E99, [ 1035] = 0x5FC2, [ 1036] = 0x22712, [ 1037] = 0x658B,
++  [ 1072] = 0x233F9, [ 1073] = 0x6919, [ 1074] = 0x6A43, [ 1075] = 0x23C63,
++  [ 1076] = 0x6CFF, [ 1078] = 0x7200, [ 1079] = 0x24505, [ 1080] = 0x738C,
++  [ 1081] = 0x3EDB, [ 1082] = 0x24A13, [ 1083] = 0x5B15, [ 1084] = 0x74B9,
++  [ 1085] = 0x8B83, [ 1086] = 0x25CA4, [ 1087] = 0x25695, [ 1088] = 0x7A93,
++  [ 1089] = 0x7BEC, [ 1090] = 0x7CC3, [ 1091] = 0x7E6C, [ 1092] = 0x82F8,
++  [ 1093] = 0x8597, [ 1094] = 0x9FA9, [ 1095] = 0x8890, [ 1096] = 0x9FAA,
++  [ 1097] = 0x8EB9, [ 1098] = 0x9FAB, [ 1099] = 0x8FCF, [ 1100] = 0x855F,
++  [ 1101] = 0x99E0, [ 1102] = 0x9221, [ 1103] = 0x9FAC, [ 1104] = 0x28DB9,
++  [ 1105] = 0x2143F, [ 1106] = 0x4071, [ 1107] = 0x42A2, [ 1108] = 0x5A1A,
++  [ 1112] = 0x9868, [ 1113] = 0x676B, [ 1114] = 0x4276, [ 1115] = 0x573D,
++  [ 1117] = 0x85D6, [ 1118] = 0x2497B, [ 1119] = 0x82BF, [ 1120] = 0x2710D,
++  [ 1121] = 0x4C81, [ 1122] = 0x26D74, [ 1123] = 0x5D7B, [ 1124] = 0x26B15,
++  [ 1125] = 0x26FBE, [ 1126] = 0x9FAD, [ 1127] = 0x9FAE, [ 1128] = 0x5B96,
++  [ 1129] = 0x9FAF, [ 1130] = 0x66E7, [ 1131] = 0x7E5B, [ 1132] = 0x6E57,
++  [ 1133] = 0x79CA, [ 1134] = 0x3D88, [ 1135] = 0x44C3, [ 1136] = 0x23256,
++  [ 1137] = 0x22796, [ 1138] = 0x439A, [ 1139] = 0x4536, [ 1141] = 0x5CD5,
++  [ 1142] = 0x23B1A, [ 1143] = 0x8AF9, [ 1144] = 0x5C78, [ 1145] = 0x3D12,
++  [ 1146] = 0x23551, [ 1147] = 0x5D78, [ 1148] = 0x9FB2, [ 1149] = 0x7157,
++  [ 1150] = 0x4558, [ 1151] = 0x240EC, [ 1152] = 0x21E23, [ 1153] = 0x4C77,
++  [ 1154] = 0x3978, [ 1155] = 0x344A, [ 1156] = 0x201A4, [ 1157] = 0x26C41,
++  [ 1158] = 0x8ACC, [ 1159] = 0x4FB4, [ 1160] = 0x20239, [ 1161] = 0x59BF,
++  [ 1162] = 0x816C, [ 1163] = 0x9856, [ 1164] = 0x298FA, [ 1165] = 0x5F3B,
++  [ 1170] = 0x20B9F, [ 1172] = 0x221C1, [ 1173] = 0x2896D, [ 1174] = 0x4102,
++  [ 1175] = 0x46BB, [ 1176] = 0x29079, [ 1177] = 0x3F07, [ 1178] = 0x9FB3,
++  [ 1179] = 0x2A1B5, [ 1180] = 0x40F8, [ 1181] = 0x37D6, [ 1182] = 0x46F7,
++  [ 1183] = 0x26C46, [ 1184] = 0x417C, [ 1185] = 0x286B2, [ 1186] = 0x273FF,
++  [ 1187] = 0x456D, [ 1188] = 0x38D4, [ 1189] = 0x2549A, [ 1190] = 0x4561,
++  [ 1191] = 0x451B, [ 1192] = 0x4D89, [ 1193] = 0x4C7B, [ 1194] = 0x4D76,
++  [ 1195] = 0x45EA, [ 1196] = 0x3FC8, [ 1197] = 0x24B0F, [ 1198] = 0x3661,
++  [ 1199] = 0x44DE, [ 1200] = 0x44BD, [ 1201] = 0x41ED, [ 1202] = 0x5D3E,
++  [ 1203] = 0x5D48, [ 1204] = 0x5D56, [ 1205] = 0x3DFC, [ 1206] = 0x380F,
++  [ 1207] = 0x5DA4, [ 1208] = 0x5DB9, [ 1209] = 0x3820, [ 1210] = 0x3838,
++  [ 1211] = 0x5E42, [ 1212] = 0x5EBD, [ 1213] = 0x5F25, [ 1214] = 0x5F83,
++  [ 1215] = 0x3908, [ 1216] = 0x3914, [ 1217] = 0x393F, [ 1218] = 0x394D,
++  [ 1219] = 0x60D7, [ 1220] = 0x613D, [ 1221] = 0x5CE5, [ 1222] = 0x3989,
++  [ 1223] = 0x61B7, [ 1224] = 0x61B9, [ 1225] = 0x61CF, [ 1226] = 0x39B8,
++  [ 1227] = 0x622C, [ 1228] = 0x6290, [ 1229] = 0x62E5, [ 1230] = 0x6318,
++  [ 1231] = 0x39F8, [ 1232] = 0x56B1, [ 1267] = 0x3A03, [ 1268] = 0x63E2,
++  [ 1269] = 0x63FB, [ 1270] = 0x6407, [ 1271] = 0x645A, [ 1272] = 0x3A4B,
++  [ 1273] = 0x64C0, [ 1274] = 0x5D15, [ 1275] = 0x5621, [ 1276] = 0x9F9F,
++  [ 1277] = 0x3A97, [ 1278] = 0x6586, [ 1279] = 0x3ABD, [ 1280] = 0x65FF,
++  [ 1281] = 0x6653, [ 1282] = 0x3AF2, [ 1283] = 0x6692, [ 1284] = 0x3B22,
++  [ 1285] = 0x6716, [ 1286] = 0x3B42, [ 1287] = 0x67A4, [ 1288] = 0x6800,
++  [ 1289] = 0x3B58, [ 1290] = 0x684A, [ 1291] = 0x6884, [ 1292] = 0x3B72,
++  [ 1293] = 0x3B71, [ 1294] = 0x3B7B, [ 1295] = 0x6909, [ 1296] = 0x6943,
++  [ 1297] = 0x725C, [ 1298] = 0x6964, [ 1299] = 0x699F, [ 1300] = 0x6985,
++  [ 1301] = 0x3BBC, [ 1302] = 0x69D6, [ 1303] = 0x3BDD, [ 1304] = 0x6A65,
++  [ 1305] = 0x6A74, [ 1306] = 0x6A71, [ 1307] = 0x6A82, [ 1308] = 0x3BEC,
++  [ 1309] = 0x6A99, [ 1310] = 0x3BF2, [ 1311] = 0x6AAB, [ 1312] = 0x6AB5,
++  [ 1313] = 0x6AD4, [ 1314] = 0x6AF6, [ 1315] = 0x6B81, [ 1316] = 0x6BC1,
++  [ 1317] = 0x6BEA, [ 1318] = 0x6C75, [ 1319] = 0x6CAA, [ 1320] = 0x3CCB,
++  [ 1321] = 0x6D02, [ 1322] = 0x6D06, [ 1323] = 0x6D26, [ 1324] = 0x6D81,
++  [ 1325] = 0x3CEF, [ 1326] = 0x6DA4, [ 1327] = 0x6DB1, [ 1328] = 0x6E15,
++  [ 1329] = 0x6E18, [ 1330] = 0x6E29, [ 1331] = 0x6E86, [ 1332] = 0x289C0,
++  [ 1333] = 0x6EBB, [ 1334] = 0x6EE2, [ 1335] = 0x6EDA, [ 1336] = 0x9F7F,
++  [ 1337] = 0x6EE8, [ 1338] = 0x6EE9, [ 1339] = 0x6F24, [ 1340] = 0x6F34,
++  [ 1341] = 0x3D46, [ 1342] = 0x23F41, [ 1343] = 0x6F81, [ 1344] = 0x6FBE,
++  [ 1345] = 0x3D6A, [ 1346] = 0x3D75, [ 1347] = 0x71B7, [ 1348] = 0x5C99,
++  [ 1349] = 0x3D8A, [ 1350] = 0x702C, [ 1351] = 0x3D91, [ 1352] = 0x7050,
++  [ 1353] = 0x7054, [ 1354] = 0x706F, [ 1355] = 0x707F, [ 1356] = 0x7089,
++  [ 1357] = 0x20325, [ 1358] = 0x43C1, [ 1359] = 0x35F1, [ 1360] = 0x20ED8,
++  [ 1365] = 0x23ED7, [ 1366] = 0x57BE, [ 1367] = 0x26ED3, [ 1368] = 0x713E,
++  [ 1369] = 0x257E0, [ 1370] = 0x364E, [ 1371] = 0x69A2, [ 1372] = 0x28BE9,
++  [ 1373] = 0x5B74, [ 1374] = 0x7A49, [ 1375] = 0x258E1, [ 1376] = 0x294D9,
++  [ 1377] = 0x7A65, [ 1378] = 0x7A7D, [ 1379] = 0x259AC, [ 1380] = 0x7ABB,
++  [ 1381] = 0x7AB0, [ 1382] = 0x7AC2, [ 1383] = 0x7AC3, [ 1384] = 0x71D1,
++  [ 1385] = 0x2648D, [ 1386] = 0x41CA, [ 1387] = 0x7ADA, [ 1388] = 0x7ADD,
++  [ 1389] = 0x7AEA, [ 1390] = 0x41EF, [ 1391] = 0x54B2, [ 1392] = 0x25C01,
++  [ 1393] = 0x7B0B, [ 1394] = 0x7B55, [ 1395] = 0x7B29, [ 1396] = 0x2530E,
++  [ 1397] = 0x25CFE, [ 1398] = 0x7BA2, [ 1399] = 0x7B6F, [ 1400] = 0x839C,
++  [ 1401] = 0x25BB4, [ 1402] = 0x26C7F, [ 1403] = 0x7BD0, [ 1404] = 0x8421,
++  [ 1405] = 0x7B92, [ 1407] = 0x25D20, [ 1408] = 0x3DAD, [ 1409] = 0x25C65,
++  [ 1410] = 0x8492, [ 1411] = 0x7BFA, [ 1413] = 0x7C35, [ 1414] = 0x25CC1,
++  [ 1415] = 0x7C44, [ 1416] = 0x7C83, [ 1417] = 0x24882, [ 1418] = 0x7CA6,
++  [ 1419] = 0x667D, [ 1420] = 0x24578, [ 1421] = 0x7CC9, [ 1422] = 0x7CC7,
++  [ 1423] = 0x7CE6, [ 1424] = 0x7C74, [ 1425] = 0x7CF3, [ 1426] = 0x7CF5,
++  [ 1462] = 0x7E67, [ 1463] = 0x451D, [ 1464] = 0x26E44, [ 1465] = 0x7D5D,
++  [ 1466] = 0x26ED6, [ 1467] = 0x748D, [ 1468] = 0x7D89, [ 1469] = 0x7DAB,
++  [ 1470] = 0x7135, [ 1471] = 0x7DB3, [ 1473] = 0x24057, [ 1474] = 0x26029,
++  [ 1475] = 0x7DE4, [ 1476] = 0x3D13, [ 1477] = 0x7DF5, [ 1478] = 0x217F9,
++  [ 1479] = 0x7DE5, [ 1480] = 0x2836D, [ 1482] = 0x26121, [ 1483] = 0x2615A,
++  [ 1484] = 0x7E6E, [ 1485] = 0x7E92, [ 1486] = 0x432B, [ 1487] = 0x946C,
++  [ 1488] = 0x7E27, [ 1489] = 0x7F40, [ 1490] = 0x7F41, [ 1491] = 0x7F47,
++  [ 1492] = 0x7936, [ 1493] = 0x262D0, [ 1494] = 0x99E1, [ 1495] = 0x7F97,
++  [ 1496] = 0x26351, [ 1497] = 0x7FA3, [ 1498] = 0x21661, [ 1499] = 0x20068,
++  [ 1500] = 0x455C, [ 1501] = 0x23766, [ 1502] = 0x4503, [ 1503] = 0x2833A,
++  [ 1504] = 0x7FFA, [ 1505] = 0x26489, [ 1507] = 0x8008, [ 1508] = 0x801D,
++  [ 1510] = 0x802F, [ 1511] = 0x2A087, [ 1512] = 0x26CC3, [ 1513] = 0x803B,
++  [ 1514] = 0x803C, [ 1515] = 0x8061, [ 1516] = 0x22714, [ 1517] = 0x4989,
++  [ 1518] = 0x26626, [ 1519] = 0x23DE3, [ 1520] = 0x266E8, [ 1521] = 0x6725,
++  [ 1522] = 0x80A7, [ 1523] = 0x28A48, [ 1524] = 0x8107, [ 1525] = 0x811A,
++  [ 1526] = 0x58B0, [ 1527] = 0x226F6, [ 1528] = 0x6C7F, [ 1529] = 0x26498,
++  [ 1530] = 0x24FB8, [ 1531] = 0x64E7, [ 1532] = 0x2148A, [ 1533] = 0x8218,
++  [ 1534] = 0x2185E, [ 1535] = 0x6A53, [ 1536] = 0x24A65, [ 1537] = 0x24A95,
++  [ 1538] = 0x447A, [ 1539] = 0x8229, [ 1540] = 0x20B0D, [ 1541] = 0x26A52,
++  [ 1542] = 0x23D7E, [ 1543] = 0x4FF9, [ 1544] = 0x214FD, [ 1545] = 0x84E2,
++  [ 1546] = 0x8362, [ 1547] = 0x26B0A, [ 1548] = 0x249A7, [ 1549] = 0x23530,
++  [ 1550] = 0x21773, [ 1551] = 0x23DF8, [ 1552] = 0x82AA, [ 1553] = 0x691B,
++  [ 1554] = 0x2F994, [ 1555] = 0x41DB, [ 1560] = 0x854B, [ 1561] = 0x82D0,
++  [ 1562] = 0x831A, [ 1563] = 0x20E16, [ 1564] = 0x217B4, [ 1565] = 0x36C1,
++  [ 1566] = 0x2317D, [ 1567] = 0x2355A, [ 1568] = 0x827B, [ 1569] = 0x82E2,
++  [ 1570] = 0x8318, [ 1571] = 0x23E8B, [ 1572] = 0x26DA3, [ 1573] = 0x26B05,
++  [ 1574] = 0x26B97, [ 1575] = 0x235CE, [ 1576] = 0x3DBF, [ 1577] = 0x831D,
++  [ 1578] = 0x55EC, [ 1579] = 0x8385, [ 1580] = 0x450B, [ 1581] = 0x26DA5,
++  [ 1582] = 0x83AC, [ 1584] = 0x83D3, [ 1585] = 0x347E, [ 1586] = 0x26ED4,
++  [ 1587] = 0x6A57, [ 1588] = 0x855A, [ 1589] = 0x3496, [ 1590] = 0x26E42,
++  [ 1591] = 0x22EEF, [ 1592] = 0x8458, [ 1593] = 0x25BE4, [ 1594] = 0x8471,
++  [ 1595] = 0x3DD3, [ 1596] = 0x44E4, [ 1597] = 0x6AA7, [ 1598] = 0x844A,
++  [ 1599] = 0x23CB5, [ 1600] = 0x7958, [ 1602] = 0x26B96, [ 1603] = 0x26E77,
++  [ 1604] = 0x26E43, [ 1605] = 0x84DE, [ 1607] = 0x8391, [ 1608] = 0x44A0,
++  [ 1609] = 0x8493, [ 1610] = 0x84E4, [ 1611] = 0x25C91, [ 1612] = 0x4240,
++  [ 1613] = 0x25CC0, [ 1614] = 0x4543, [ 1615] = 0x8534, [ 1616] = 0x5AF2,
++  [ 1617] = 0x26E99, [ 1618] = 0x4527, [ 1619] = 0x8573, [ 1620] = 0x4516,
++  [ 1621] = 0x67BF, [ 1622] = 0x8616, [ 1657] = 0x28625, [ 1658] = 0x2863B,
++  [ 1659] = 0x85C1, [ 1660] = 0x27088, [ 1661] = 0x8602, [ 1662] = 0x21582,
++  [ 1663] = 0x270CD, [ 1664] = 0x2F9B2, [ 1665] = 0x456A, [ 1666] = 0x8628,
++  [ 1667] = 0x3648, [ 1668] = 0x218A2, [ 1669] = 0x53F7, [ 1670] = 0x2739A,
++  [ 1671] = 0x867E, [ 1672] = 0x8771, [ 1673] = 0x2A0F8, [ 1674] = 0x87EE,
++  [ 1675] = 0x22C27, [ 1676] = 0x87B1, [ 1677] = 0x87DA, [ 1678] = 0x880F,
++  [ 1679] = 0x5661, [ 1680] = 0x866C, [ 1681] = 0x6856, [ 1682] = 0x460F,
++  [ 1683] = 0x8845, [ 1684] = 0x8846, [ 1685] = 0x275E0, [ 1686] = 0x23DB9,
++  [ 1687] = 0x275E4, [ 1688] = 0x885E, [ 1689] = 0x889C, [ 1690] = 0x465B,
++  [ 1691] = 0x88B4, [ 1692] = 0x88B5, [ 1693] = 0x63C1, [ 1694] = 0x88C5,
++  [ 1695] = 0x7777, [ 1696] = 0x2770F, [ 1697] = 0x8987, [ 1698] = 0x898A,
++  [ 1701] = 0x89A7, [ 1702] = 0x89BC, [ 1703] = 0x28A25, [ 1704] = 0x89E7,
++  [ 1705] = 0x27924, [ 1706] = 0x27ABD, [ 1707] = 0x8A9C, [ 1708] = 0x7793,
++  [ 1709] = 0x91FE, [ 1710] = 0x8A90, [ 1711] = 0x27A59, [ 1712] = 0x7AE9,
++  [ 1713] = 0x27B3A, [ 1714] = 0x23F8F, [ 1715] = 0x4713, [ 1716] = 0x27B38,
++  [ 1717] = 0x717C, [ 1718] = 0x8B0C, [ 1719] = 0x8B1F, [ 1720] = 0x25430,
++  [ 1721] = 0x25565, [ 1722] = 0x8B3F, [ 1723] = 0x8B4C, [ 1724] = 0x8B4D,
++  [ 1725] = 0x8AA9, [ 1726] = 0x24A7A, [ 1727] = 0x8B90, [ 1728] = 0x8B9B,
++  [ 1729] = 0x8AAF, [ 1730] = 0x216DF, [ 1731] = 0x4615, [ 1732] = 0x884F,
++  [ 1733] = 0x8C9B, [ 1734] = 0x27D54, [ 1735] = 0x27D8F, [ 1736] = 0x2F9D4,
++  [ 1737] = 0x3725, [ 1738] = 0x27D53, [ 1739] = 0x8CD6, [ 1740] = 0x27D98,
++  [ 1741] = 0x27DBD, [ 1742] = 0x8D12, [ 1743] = 0x8D03, [ 1744] = 0x21910,
++  [ 1745] = 0x8CDB, [ 1746] = 0x705C, [ 1747] = 0x8D11, [ 1748] = 0x24CC9,
++  [ 1749] = 0x3ED0, [ 1755] = 0x8DA9, [ 1756] = 0x28002, [ 1757] = 0x21014,
++  [ 1758] = 0x2498A, [ 1759] = 0x3B7C, [ 1760] = 0x281BC, [ 1761] = 0x2710C,
++  [ 1762] = 0x7AE7, [ 1763] = 0x8EAD, [ 1764] = 0x8EB6, [ 1765] = 0x8EC3,
++  [ 1766] = 0x92D4, [ 1767] = 0x8F19, [ 1768] = 0x8F2D, [ 1769] = 0x28365,
++  [ 1770] = 0x28412, [ 1771] = 0x8FA5, [ 1772] = 0x9303, [ 1773] = 0x2A29F,
++  [ 1774] = 0x20A50, [ 1775] = 0x8FB3, [ 1776] = 0x492A, [ 1777] = 0x289DE,
++  [ 1778] = 0x2853D, [ 1779] = 0x23DBB, [ 1780] = 0x5EF8, [ 1781] = 0x23262,
++  [ 1782] = 0x8FF9, [ 1783] = 0x2A014, [ 1784] = 0x286BC, [ 1785] = 0x28501,
++  [ 1786] = 0x22325, [ 1787] = 0x3980, [ 1788] = 0x26ED7, [ 1789] = 0x9037,
++  [ 1790] = 0x2853C, [ 1791] = 0x27ABE, [ 1792] = 0x9061, [ 1793] = 0x2856C,
++  [ 1794] = 0x2860B, [ 1795] = 0x90A8, [ 1796] = 0x28713, [ 1797] = 0x90C4,
++  [ 1798] = 0x286E6, [ 1799] = 0x90AE, [ 1801] = 0x9167, [ 1802] = 0x3AF0,
++  [ 1803] = 0x91A9, [ 1804] = 0x91C4, [ 1805] = 0x7CAC, [ 1806] = 0x28933,
++  [ 1807] = 0x21E89, [ 1808] = 0x920E, [ 1809] = 0x6C9F, [ 1810] = 0x9241,
++  [ 1811] = 0x9262, [ 1812] = 0x255B9, [ 1814] = 0x28AC6, [ 1815] = 0x23C9B,
++  [ 1816] = 0x28B0C, [ 1817] = 0x255DB, [ 1852] = 0x20D31, [ 1853] = 0x932C,
++  [ 1854] = 0x936B, [ 1855] = 0x28AE1, [ 1856] = 0x28BEB, [ 1857] = 0x708F,
++  [ 1858] = 0x5AC3, [ 1859] = 0x28AE2, [ 1860] = 0x28AE5, [ 1861] = 0x4965,
++  [ 1862] = 0x9244, [ 1863] = 0x28BEC, [ 1864] = 0x28C39, [ 1865] = 0x28BFF,
++  [ 1866] = 0x9373, [ 1867] = 0x945B, [ 1868] = 0x8EBC, [ 1869] = 0x9585,
++  [ 1870] = 0x95A6, [ 1871] = 0x9426, [ 1872] = 0x95A0, [ 1873] = 0x6FF6,
++  [ 1874] = 0x42B9, [ 1875] = 0x2267A, [ 1876] = 0x286D8, [ 1877] = 0x2127C,
++  [ 1878] = 0x23E2E, [ 1879] = 0x49DF, [ 1880] = 0x6C1C, [ 1881] = 0x967B,
++  [ 1882] = 0x9696, [ 1883] = 0x416C, [ 1884] = 0x96A3, [ 1885] = 0x26ED5,
++  [ 1886] = 0x61DA, [ 1887] = 0x96B6, [ 1888] = 0x78F5, [ 1889] = 0x28AE0,
++  [ 1890] = 0x96BD, [ 1891] = 0x53CC, [ 1892] = 0x49A1, [ 1893] = 0x26CB8,
++  [ 1894] = 0x20274, [ 1895] = 0x26410, [ 1896] = 0x290AF, [ 1897] = 0x290E5,
++  [ 1898] = 0x24AD1, [ 1899] = 0x21915, [ 1900] = 0x2330A, [ 1901] = 0x9731,
++  [ 1902] = 0x8642, [ 1903] = 0x9736, [ 1904] = 0x4A0F, [ 1905] = 0x453D,
++  [ 1906] = 0x4585, [ 1907] = 0x24AE9, [ 1908] = 0x7075, [ 1909] = 0x5B41,
++  [ 1910] = 0x971B, [ 1912] = 0x291D5, [ 1913] = 0x9757, [ 1914] = 0x5B4A,
++  [ 1915] = 0x291EB, [ 1916] = 0x975F, [ 1917] = 0x9425, [ 1918] = 0x50D0,
++  [ 1919] = 0x230B7, [ 1920] = 0x230BC, [ 1921] = 0x9789, [ 1922] = 0x979F,
++  [ 1923] = 0x97B1, [ 1924] = 0x97BE, [ 1925] = 0x97C0, [ 1926] = 0x97D2,
++  [ 1927] = 0x97E0, [ 1928] = 0x2546C, [ 1929] = 0x97EE, [ 1930] = 0x741C,
++  [ 1931] = 0x29433, [ 1933] = 0x97F5, [ 1934] = 0x2941D, [ 1935] = 0x2797A,
++  [ 1936] = 0x4AD1, [ 1937] = 0x9834, [ 1938] = 0x9833, [ 1939] = 0x984B,
++  [ 1940] = 0x9866, [ 1941] = 0x3B0E, [ 1942] = 0x27175, [ 1943] = 0x3D51,
++  [ 1944] = 0x20630, [ 1945] = 0x2415C, [ 1950] = 0x25706, [ 1951] = 0x98CA,
++  [ 1952] = 0x98B7, [ 1953] = 0x98C8, [ 1954] = 0x98C7, [ 1955] = 0x4AFF,
++  [ 1956] = 0x26D27, [ 1957] = 0x216D3, [ 1958] = 0x55B0, [ 1959] = 0x98E1,
++  [ 1960] = 0x98E6, [ 1961] = 0x98EC, [ 1962] = 0x9378, [ 1963] = 0x9939,
++  [ 1964] = 0x24A29, [ 1965] = 0x4B72, [ 1966] = 0x29857, [ 1967] = 0x29905,
++  [ 1968] = 0x99F5, [ 1969] = 0x9A0C, [ 1970] = 0x9A3B, [ 1971] = 0x9A10,
++  [ 1972] = 0x9A58, [ 1973] = 0x25725, [ 1974] = 0x36C4, [ 1975] = 0x290B1,
++  [ 1976] = 0x29BD5, [ 1977] = 0x9AE0, [ 1978] = 0x9AE2, [ 1979] = 0x29B05,
++  [ 1980] = 0x9AF4, [ 1981] = 0x4C0E, [ 1982] = 0x9B14, [ 1983] = 0x9B2D,
++  [ 1984] = 0x28600, [ 1985] = 0x5034, [ 1986] = 0x9B34, [ 1987] = 0x269A8,
++  [ 1988] = 0x38C3, [ 1989] = 0x2307D, [ 1990] = 0x9B50, [ 1991] = 0x9B40,
++  [ 1992] = 0x29D3E, [ 1993] = 0x5A45, [ 1994] = 0x21863, [ 1995] = 0x9B8E,
++  [ 1996] = 0x2424B, [ 1997] = 0x9C02, [ 1998] = 0x9BFF, [ 1999] = 0x9C0C,
++  [ 2000] = 0x29E68, [ 2001] = 0x9DD4, [ 2002] = 0x29FB7, [ 2003] = 0x2A192,
++  [ 2004] = 0x2A1AB, [ 2005] = 0x2A0E1, [ 2006] = 0x2A123, [ 2007] = 0x2A1DF,
++  [ 2008] = 0x9D7E, [ 2009] = 0x9D83, [ 2010] = 0x2A134, [ 2011] = 0x9E0E,
++  [ 2012] = 0x6888, [ 2047] = 0x9DC4, [ 2048] = 0x2215B, [ 2049] = 0x2A193,
++  [ 2050] = 0x2A220, [ 2051] = 0x2193B, [ 2052] = 0x2A233, [ 2053] = 0x9D39,
++  [ 2054] = 0x2A0B9, [ 2055] = 0x2A2B4, [ 2056] = 0x9E90, [ 2057] = 0x9E95,
++  [ 2058] = 0x9E9E, [ 2059] = 0x9EA2, [ 2060] = 0x4D34, [ 2061] = 0x9EAA,
++  [ 2062] = 0x9EAF, [ 2063] = 0x24364, [ 2064] = 0x9EC1, [ 2065] = 0x3B60,
++  [ 2066] = 0x39E5, [ 2067] = 0x3D1D, [ 2068] = 0x4F32, [ 2069] = 0x37BE,
++  [ 2070] = 0x28C2B, [ 2071] = 0x9F02, [ 2072] = 0x9F08, [ 2073] = 0x4B96,
++  [ 2074] = 0x9424, [ 2075] = 0x26DA2, [ 2076] = 0x9F17, [ 2078] = 0x9F39,
++  [ 2079] = 0x569F, [ 2080] = 0x568A, [ 2081] = 0x9F45, [ 2082] = 0x99B8,
++  [ 2083] = 0x2908B, [ 2084] = 0x97F2, [ 2085] = 0x847F, [ 2086] = 0x9F62,
++  [ 2087] = 0x9F69, [ 2088] = 0x7ADC, [ 2089] = 0x9F8E, [ 2090] = 0x7216,
++  [ 2091] = 0x4BBE, [ 2092] = 0x24975, [ 2093] = 0x249BB, [ 2094] = 0x7177,
++  [ 2095] = 0x249F8, [ 2096] = 0x24348, [ 2097] = 0x24A51, [ 2098] = 0x739E,
++  [ 2099] = 0x28BDA, [ 2100] = 0x218FA, [ 2101] = 0x799F, [ 2102] = 0x2897E,
++  [ 2103] = 0x28E36, [ 2104] = 0x9369, [ 2105] = 0x93F3, [ 2106] = 0x28A44,
++  [ 2107] = 0x92EC, [ 2108] = 0x9381, [ 2109] = 0x93CB, [ 2110] = 0x2896C,
++  [ 2111] = 0x244B9, [ 2112] = 0x7217, [ 2113] = 0x3EEB, [ 2114] = 0x7772,
++  [ 2115] = 0x7A43, [ 2116] = 0x70D0, [ 2117] = 0x24473, [ 2118] = 0x243F8,
++  [ 2119] = 0x717E, [ 2120] = 0x217EF, [ 2121] = 0x70A3, [ 2122] = 0x218BE,
++  [ 2123] = 0x23599, [ 2124] = 0x3EC7, [ 2125] = 0x21885, [ 2126] = 0x2542F,
++  [ 2127] = 0x217F8, [ 2128] = 0x3722, [ 2129] = 0x216FB, [ 2130] = 0x21839,
++  [ 2131] = 0x36E1, [ 2132] = 0x21774, [ 2133] = 0x218D1, [ 2134] = 0x25F4B,
++  [ 2135] = 0x3723, [ 2136] = 0x216C0, [ 2137] = 0x575B, [ 2138] = 0x24A25,
++  [ 2139] = 0x213FE, [ 2140] = 0x212A8, [ 2145] = 0x213C6, [ 2146] = 0x214B6,
++  [ 2147] = 0x8503, [ 2148] = 0x236A6, [ 2150] = 0x8455, [ 2151] = 0x24994,
++  [ 2152] = 0x27165, [ 2153] = 0x23E31, [ 2154] = 0x2555C, [ 2155] = 0x23EFB,
++  [ 2156] = 0x27052, [ 2157] = 0x44F4, [ 2158] = 0x236EE, [ 2159] = 0x2999D,
++  [ 2160] = 0x26F26, [ 2161] = 0x67F9, [ 2162] = 0x3733, [ 2163] = 0x3C15,
++  [ 2164] = 0x3DE7, [ 2165] = 0x586C, [ 2166] = 0x21922, [ 2167] = 0x6810,
++  [ 2168] = 0x4057, [ 2169] = 0x2373F, [ 2170] = 0x240E1, [ 2171] = 0x2408B,
++  [ 2172] = 0x2410F, [ 2173] = 0x26C21, [ 2174] = 0x54CB, [ 2175] = 0x569E,
++  [ 2176] = 0x266B1, [ 2177] = 0x5692, [ 2178] = 0x20FDF, [ 2179] = 0x20BA8,
++  [ 2180] = 0x20E0D, [ 2181] = 0x93C6, [ 2182] = 0x28B13, [ 2183] = 0x939C,
++  [ 2184] = 0x4EF8, [ 2185] = 0x512B, [ 2186] = 0x3819, [ 2187] = 0x24436,
++  [ 2188] = 0x4EBC, [ 2189] = 0x20465, [ 2190] = 0x2037F, [ 2191] = 0x4F4B,
++  [ 2192] = 0x4F8A, [ 2193] = 0x25651, [ 2194] = 0x5A68, [ 2195] = 0x201AB,
++  [ 2196] = 0x203CB, [ 2197] = 0x3999, [ 2198] = 0x2030A, [ 2199] = 0x20414,
++  [ 2200] = 0x3435, [ 2201] = 0x4F29, [ 2202] = 0x202C0, [ 2203] = 0x28EB3,
++  [ 2204] = 0x20275, [ 2205] = 0x8ADA, [ 2206] = 0x2020C, [ 2207] = 0x4E98,
++  [ 2242] = 0x50CD, [ 2243] = 0x510D, [ 2244] = 0x4FA2, [ 2245] = 0x4F03,
++  [ 2246] = 0x24A0E, [ 2247] = 0x23E8A, [ 2248] = 0x4F42, [ 2249] = 0x502E,
++  [ 2250] = 0x506C, [ 2251] = 0x5081, [ 2252] = 0x4FCC, [ 2253] = 0x4FE5,
++  [ 2254] = 0x5058, [ 2255] = 0x50FC, [ 2260] = 0x6E76, [ 2261] = 0x23595,
++  [ 2262] = 0x23E39, [ 2263] = 0x23EBF, [ 2264] = 0x6D72, [ 2265] = 0x21884,
++  [ 2266] = 0x23E89, [ 2267] = 0x51A8, [ 2268] = 0x51C3, [ 2269] = 0x205E0,
++  [ 2270] = 0x44DD, [ 2271] = 0x204A3, [ 2272] = 0x20492, [ 2273] = 0x20491,
++  [ 2274] = 0x8D7A, [ 2275] = 0x28A9C, [ 2276] = 0x2070E, [ 2277] = 0x5259,
++  [ 2278] = 0x52A4, [ 2279] = 0x20873, [ 2280] = 0x52E1, [ 2282] = 0x467A,
++  [ 2283] = 0x718C, [ 2284] = 0x2438C, [ 2285] = 0x20C20, [ 2286] = 0x249AC,
++  [ 2287] = 0x210E4, [ 2288] = 0x69D1, [ 2289] = 0x20E1D, [ 2291] = 0x3EDE,
++  [ 2292] = 0x7499, [ 2293] = 0x7414, [ 2294] = 0x7456, [ 2295] = 0x7398,
++  [ 2296] = 0x4B8E, [ 2297] = 0x24ABC, [ 2298] = 0x2408D, [ 2299] = 0x53D0,
++  [ 2300] = 0x3584, [ 2301] = 0x720F, [ 2302] = 0x240C9, [ 2303] = 0x55B4,
++  [ 2304] = 0x20345, [ 2305] = 0x54CD, [ 2306] = 0x20BC6, [ 2307] = 0x571D,
++  [ 2308] = 0x925D, [ 2309] = 0x96F4, [ 2310] = 0x9366, [ 2311] = 0x57DD,
++  [ 2312] = 0x578D, [ 2313] = 0x577F, [ 2314] = 0x363E, [ 2315] = 0x58CB,
++  [ 2316] = 0x5A99, [ 2317] = 0x28A46, [ 2318] = 0x216FA, [ 2319] = 0x2176F,
++  [ 2320] = 0x21710, [ 2321] = 0x5A2C, [ 2322] = 0x59B8, [ 2323] = 0x928F,
++  [ 2324] = 0x5A7E, [ 2325] = 0x5ACF, [ 2326] = 0x5A12, [ 2327] = 0x25946,
++  [ 2328] = 0x219F3, [ 2329] = 0x21861, [ 2330] = 0x24295, [ 2331] = 0x36F5,
++  [ 2332] = 0x6D05, [ 2333] = 0x7443, [ 2334] = 0x5A21, [ 2335] = 0x25E83,
++  [ 2340] = 0x5A81, [ 2341] = 0x28BD7, [ 2342] = 0x20413, [ 2343] = 0x93E0,
++  [ 2344] = 0x748C, [ 2345] = 0x21303, [ 2346] = 0x7105, [ 2347] = 0x4972,
++  [ 2348] = 0x9408, [ 2349] = 0x289FB, [ 2350] = 0x93BD, [ 2351] = 0x37A0,
++  [ 2352] = 0x5C1E, [ 2353] = 0x5C9E, [ 2354] = 0x5E5E, [ 2355] = 0x5E48,
++  [ 2356] = 0x21996, [ 2357] = 0x2197C, [ 2358] = 0x23AEE, [ 2359] = 0x5ECD,
++  [ 2360] = 0x5B4F, [ 2361] = 0x21903, [ 2362] = 0x21904, [ 2363] = 0x3701,
++  [ 2364] = 0x218A0, [ 2365] = 0x36DD, [ 2366] = 0x216FE, [ 2367] = 0x36D3,
++  [ 2368] = 0x812A, [ 2369] = 0x28A47, [ 2370] = 0x21DBA, [ 2371] = 0x23472,
++  [ 2372] = 0x289A8, [ 2373] = 0x5F0C, [ 2374] = 0x5F0E, [ 2375] = 0x21927,
++  [ 2376] = 0x217AB, [ 2377] = 0x5A6B, [ 2378] = 0x2173B, [ 2379] = 0x5B44,
++  [ 2380] = 0x8614, [ 2381] = 0x275FD, [ 2382] = 0x8860, [ 2383] = 0x607E,
++  [ 2384] = 0x22860, [ 2385] = 0x2262B, [ 2386] = 0x5FDB, [ 2387] = 0x3EB8,
++  [ 2388] = 0x225AF, [ 2389] = 0x225BE, [ 2390] = 0x29088, [ 2391] = 0x26F73,
++  [ 2392] = 0x61C0, [ 2393] = 0x2003E, [ 2394] = 0x20046, [ 2395] = 0x2261B,
++  [ 2396] = 0x6199, [ 2397] = 0x6198, [ 2398] = 0x6075, [ 2399] = 0x22C9B,
++  [ 2400] = 0x22D07, [ 2401] = 0x246D4, [ 2402] = 0x2914D, [ 2437] = 0x6471,
++  [ 2438] = 0x24665, [ 2439] = 0x22B6A, [ 2440] = 0x3A29, [ 2441] = 0x22B22,
++  [ 2442] = 0x23450, [ 2443] = 0x298EA, [ 2444] = 0x22E78, [ 2445] = 0x6337,
++  [ 2446] = 0x2A45B, [ 2447] = 0x64B6, [ 2448] = 0x6331, [ 2449] = 0x63D1,
++  [ 2450] = 0x249E3, [ 2451] = 0x22D67, [ 2452] = 0x62A4, [ 2453] = 0x22CA1,
++  [ 2454] = 0x643B, [ 2455] = 0x656B, [ 2456] = 0x6972, [ 2457] = 0x3BF4,
++  [ 2458] = 0x2308E, [ 2459] = 0x232AD, [ 2460] = 0x24989, [ 2461] = 0x232AB,
++  [ 2462] = 0x550D, [ 2463] = 0x232E0, [ 2464] = 0x218D9, [ 2465] = 0x2943F,
++  [ 2466] = 0x66CE, [ 2467] = 0x23289, [ 2468] = 0x231B3, [ 2469] = 0x3AE0,
++  [ 2470] = 0x4190, [ 2471] = 0x25584, [ 2472] = 0x28B22, [ 2473] = 0x2558F,
++  [ 2474] = 0x216FC, [ 2475] = 0x2555B, [ 2476] = 0x25425, [ 2477] = 0x78EE,
++  [ 2478] = 0x23103, [ 2479] = 0x2182A, [ 2480] = 0x23234, [ 2481] = 0x3464,
++  [ 2482] = 0x2320F, [ 2483] = 0x23182, [ 2484] = 0x242C9, [ 2485] = 0x668E,
++  [ 2486] = 0x26D24, [ 2487] = 0x666B, [ 2488] = 0x4B93, [ 2489] = 0x6630,
++  [ 2490] = 0x27870, [ 2491] = 0x21DEB, [ 2492] = 0x6663, [ 2493] = 0x232D2,
++  [ 2494] = 0x232E1, [ 2495] = 0x661E, [ 2496] = 0x25872, [ 2497] = 0x38D1,
++  [ 2498] = 0x2383A, [ 2499] = 0x237BC, [ 2500] = 0x3B99, [ 2501] = 0x237A2,
++  [ 2502] = 0x233FE, [ 2503] = 0x74D0, [ 2504] = 0x3B96, [ 2505] = 0x678F,
++  [ 2506] = 0x2462A, [ 2507] = 0x68B6, [ 2508] = 0x681E, [ 2509] = 0x3BC4,
++  [ 2510] = 0x6ABE, [ 2511] = 0x3863, [ 2512] = 0x237D5, [ 2513] = 0x24487,
++  [ 2514] = 0x6A33, [ 2515] = 0x6A52, [ 2516] = 0x6AC9, [ 2517] = 0x6B05,
++  [ 2518] = 0x21912, [ 2519] = 0x6511, [ 2520] = 0x6898, [ 2521] = 0x6A4C,
++  [ 2522] = 0x3BD7, [ 2523] = 0x6A7A, [ 2524] = 0x6B57, [ 2525] = 0x23FC0,
++  [ 2526] = 0x23C9A, [ 2527] = 0x93A0, [ 2528] = 0x92F2, [ 2529] = 0x28BEA,
++  [ 2530] = 0x28ACB, [ 2535] = 0x9289, [ 2536] = 0x2801E, [ 2537] = 0x289DC,
++  [ 2538] = 0x9467, [ 2539] = 0x6DA5, [ 2540] = 0x6F0B, [ 2541] = 0x249EC,
++  [ 2543] = 0x23F7F, [ 2544] = 0x3D8F, [ 2545] = 0x6E04, [ 2546] = 0x2403C,
++  [ 2547] = 0x5A3D, [ 2548] = 0x6E0A, [ 2549] = 0x5847, [ 2550] = 0x6D24,
++  [ 2551] = 0x7842, [ 2552] = 0x713B, [ 2553] = 0x2431A, [ 2554] = 0x24276,
++  [ 2555] = 0x70F1, [ 2556] = 0x7250, [ 2557] = 0x7287, [ 2558] = 0x7294,
++  [ 2559] = 0x2478F, [ 2560] = 0x24725, [ 2561] = 0x5179, [ 2562] = 0x24AA4,
++  [ 2563] = 0x205EB, [ 2564] = 0x747A, [ 2565] = 0x23EF8, [ 2566] = 0x2365F,
++  [ 2567] = 0x24A4A, [ 2568] = 0x24917, [ 2569] = 0x25FE1, [ 2570] = 0x3F06,
++  [ 2571] = 0x3EB1, [ 2572] = 0x24ADF, [ 2573] = 0x28C23, [ 2574] = 0x23F35,
++  [ 2575] = 0x60A7, [ 2576] = 0x3EF3, [ 2577] = 0x74CC, [ 2578] = 0x743C,
++  [ 2579] = 0x9387, [ 2580] = 0x7437, [ 2581] = 0x449F, [ 2582] = 0x26DEA,
++  [ 2583] = 0x4551, [ 2584] = 0x7583, [ 2585] = 0x3F63, [ 2586] = 0x24CD9,
++  [ 2587] = 0x24D06, [ 2588] = 0x3F58, [ 2589] = 0x7555, [ 2590] = 0x7673,
++  [ 2591] = 0x2A5C6, [ 2592] = 0x3B19, [ 2593] = 0x7468, [ 2594] = 0x28ACC,
++  [ 2595] = 0x249AB, [ 2596] = 0x2498E, [ 2597] = 0x3AFB, [ 2632] = 0x3DCD,
++  [ 2633] = 0x24A4E, [ 2634] = 0x3EFF, [ 2635] = 0x249C5, [ 2636] = 0x248F3,
++  [ 2637] = 0x91FA, [ 2638] = 0x5732, [ 2639] = 0x9342, [ 2640] = 0x28AE3,
++  [ 2641] = 0x21864, [ 2642] = 0x50DF, [ 2643] = 0x25221, [ 2644] = 0x251E7,
++  [ 2645] = 0x7778, [ 2646] = 0x23232, [ 2647] = 0x770E, [ 2648] = 0x770F,
++  [ 2649] = 0x777B, [ 2650] = 0x24697, [ 2651] = 0x23781, [ 2652] = 0x3A5E,
++  [ 2653] = 0x248F0, [ 2654] = 0x7438, [ 2655] = 0x749B, [ 2656] = 0x3EBF,
++  [ 2657] = 0x24ABA, [ 2658] = 0x24AC7, [ 2659] = 0x40C8, [ 2660] = 0x24A96,
++  [ 2661] = 0x261AE, [ 2662] = 0x9307, [ 2663] = 0x25581, [ 2664] = 0x781E,
++  [ 2665] = 0x788D, [ 2666] = 0x7888, [ 2667] = 0x78D2, [ 2668] = 0x73D0,
++  [ 2669] = 0x7959, [ 2670] = 0x27741, [ 2671] = 0x256E3, [ 2672] = 0x410E,
++  [ 2674] = 0x8496, [ 2675] = 0x79A5, [ 2676] = 0x6A2D, [ 2677] = 0x23EFA,
++  [ 2678] = 0x7A3A, [ 2679] = 0x79F4, [ 2680] = 0x416E, [ 2681] = 0x216E6,
++  [ 2682] = 0x4132, [ 2683] = 0x9235, [ 2684] = 0x79F1, [ 2685] = 0x20D4C,
++  [ 2686] = 0x2498C, [ 2687] = 0x20299, [ 2688] = 0x23DBA, [ 2689] = 0x2176E,
++  [ 2690] = 0x3597, [ 2691] = 0x556B, [ 2692] = 0x3570, [ 2693] = 0x36AA,
++  [ 2694] = 0x201D4, [ 2695] = 0x20C0D, [ 2696] = 0x7AE2, [ 2697] = 0x5A59,
++  [ 2698] = 0x226F5, [ 2699] = 0x25AAF, [ 2700] = 0x25A9C, [ 2701] = 0x5A0D,
++  [ 2702] = 0x2025B, [ 2703] = 0x78F0, [ 2704] = 0x5A2A, [ 2705] = 0x25BC6,
++  [ 2706] = 0x7AFE, [ 2707] = 0x41F9, [ 2708] = 0x7C5D, [ 2709] = 0x7C6D,
++  [ 2710] = 0x4211, [ 2711] = 0x25BB3, [ 2712] = 0x25EBC, [ 2713] = 0x25EA6,
++  [ 2714] = 0x7CCD, [ 2715] = 0x249F9, [ 2716] = 0x217B0, [ 2717] = 0x7C8E,
++  [ 2718] = 0x7C7C, [ 2719] = 0x7CAE, [ 2720] = 0x6AB2, [ 2721] = 0x7DDC,
++  [ 2722] = 0x7E07, [ 2723] = 0x7DD3, [ 2724] = 0x7F4E, [ 2725] = 0x26261,
++  [ 2730] = 0x2615C, [ 2731] = 0x27B48, [ 2732] = 0x7D97, [ 2733] = 0x25E82,
++  [ 2734] = 0x426A, [ 2735] = 0x26B75, [ 2736] = 0x20916, [ 2737] = 0x67D6,
++  [ 2738] = 0x2004E, [ 2739] = 0x235CF, [ 2740] = 0x57C4, [ 2741] = 0x26412,
++  [ 2742] = 0x263F8, [ 2743] = 0x24962, [ 2744] = 0x7FDD, [ 2745] = 0x7B27,
++  [ 2746] = 0x2082C, [ 2747] = 0x25AE9, [ 2748] = 0x25D43, [ 2749] = 0x7B0C,
++  [ 2750] = 0x25E0E, [ 2751] = 0x99E6, [ 2752] = 0x8645, [ 2753] = 0x9A63,
++  [ 2754] = 0x6A1C, [ 2755] = 0x2343F, [ 2756] = 0x39E2, [ 2757] = 0x249F7,
++  [ 2758] = 0x265AD, [ 2759] = 0x9A1F, [ 2760] = 0x265A0, [ 2761] = 0x8480,
++  [ 2762] = 0x27127, [ 2763] = 0x26CD1, [ 2764] = 0x44EA, [ 2765] = 0x8137,
++  [ 2766] = 0x4402, [ 2767] = 0x80C6, [ 2768] = 0x8109, [ 2769] = 0x8142,
++  [ 2770] = 0x267B4, [ 2771] = 0x98C3, [ 2772] = 0x26A42, [ 2773] = 0x8262,
++  [ 2774] = 0x8265, [ 2775] = 0x26A51, [ 2776] = 0x8453, [ 2777] = 0x26DA7,
++  [ 2778] = 0x8610, [ 2779] = 0x2721B, [ 2780] = 0x5A86, [ 2781] = 0x417F,
++  [ 2782] = 0x21840, [ 2783] = 0x5B2B, [ 2784] = 0x218A1, [ 2785] = 0x5AE4,
++  [ 2786] = 0x218D8, [ 2787] = 0x86A0, [ 2788] = 0x2F9BC, [ 2789] = 0x23D8F,
++  [ 2790] = 0x882D, [ 2791] = 0x27422, [ 2792] = 0x5A02, [ 2827] = 0x886E,
++  [ 2828] = 0x4F45, [ 2829] = 0x8887, [ 2830] = 0x88BF, [ 2831] = 0x88E6,
++  [ 2832] = 0x8965, [ 2833] = 0x894D, [ 2834] = 0x25683, [ 2835] = 0x8954,
++  [ 2836] = 0x27785, [ 2837] = 0x27784, [ 2838] = 0x28BF5, [ 2839] = 0x28BD9,
++  [ 2840] = 0x28B9C, [ 2841] = 0x289F9, [ 2842] = 0x3EAD, [ 2843] = 0x84A3,
++  [ 2844] = 0x46F5, [ 2845] = 0x46CF, [ 2846] = 0x37F2, [ 2847] = 0x8A3D,
++  [ 2848] = 0x8A1C, [ 2849] = 0x29448, [ 2850] = 0x5F4D, [ 2851] = 0x922B,
++  [ 2852] = 0x24284, [ 2853] = 0x65D4, [ 2854] = 0x7129, [ 2855] = 0x70C4,
++  [ 2856] = 0x21845, [ 2857] = 0x9D6D, [ 2858] = 0x8C9F, [ 2859] = 0x8CE9,
++  [ 2860] = 0x27DDC, [ 2861] = 0x599A, [ 2862] = 0x77C3, [ 2863] = 0x59F0,
++  [ 2864] = 0x436E, [ 2865] = 0x36D4, [ 2866] = 0x8E2A, [ 2867] = 0x8EA7,
++  [ 2868] = 0x24C09, [ 2869] = 0x8F30, [ 2870] = 0x8F4A, [ 2871] = 0x42F4,
++  [ 2872] = 0x6C58, [ 2873] = 0x6FBB, [ 2874] = 0x22321, [ 2875] = 0x489B,
++  [ 2876] = 0x6F79, [ 2877] = 0x6E8B, [ 2878] = 0x217DA, [ 2879] = 0x9BE9,
++  [ 2880] = 0x36B5, [ 2881] = 0x2492F, [ 2882] = 0x90BB, [ 2884] = 0x5571,
++  [ 2885] = 0x4906, [ 2886] = 0x91BB, [ 2887] = 0x9404, [ 2888] = 0x28A4B,
++  [ 2889] = 0x4062, [ 2890] = 0x28AFC, [ 2891] = 0x9427, [ 2892] = 0x28C1D,
++  [ 2893] = 0x28C3B, [ 2894] = 0x84E5, [ 2895] = 0x8A2B, [ 2896] = 0x9599,
++  [ 2897] = 0x95A7, [ 2898] = 0x9597, [ 2899] = 0x9596, [ 2900] = 0x28D34,
++  [ 2901] = 0x7445, [ 2902] = 0x3EC2, [ 2903] = 0x248FF, [ 2904] = 0x24A42,
++  [ 2905] = 0x243EA, [ 2906] = 0x3EE7, [ 2907] = 0x23225, [ 2908] = 0x968F,
++  [ 2909] = 0x28EE7, [ 2910] = 0x28E66, [ 2911] = 0x28E65, [ 2912] = 0x3ECC,
++  [ 2913] = 0x249ED, [ 2914] = 0x24A78, [ 2915] = 0x23FEE, [ 2916] = 0x7412,
++  [ 2917] = 0x746B, [ 2918] = 0x3EFC, [ 2919] = 0x9741, [ 2920] = 0x290B0,
++  [ 2925] = 0x6847, [ 2926] = 0x4A1D, [ 2927] = 0x29093, [ 2928] = 0x257DF,
++  [ 2930] = 0x9368, [ 2931] = 0x28989, [ 2932] = 0x28C26, [ 2933] = 0x28B2F,
++  [ 2934] = 0x263BE, [ 2935] = 0x92BA, [ 2936] = 0x5B11, [ 2937] = 0x8B69,
++  [ 2938] = 0x493C, [ 2939] = 0x73F9, [ 2940] = 0x2421B, [ 2941] = 0x979B,
++  [ 2942] = 0x9771, [ 2943] = 0x9938, [ 2944] = 0x20F26, [ 2945] = 0x5DC1,
++  [ 2946] = 0x28BC5, [ 2947] = 0x24AB2, [ 2948] = 0x981F, [ 2949] = 0x294DA,
++  [ 2950] = 0x92F6, [ 2951] = 0x295D7, [ 2952] = 0x91E5, [ 2953] = 0x44C0,
++  [ 2954] = 0x28B50, [ 2955] = 0x24A67, [ 2956] = 0x28B64, [ 2957] = 0x98DC,
++  [ 2958] = 0x28A45, [ 2959] = 0x3F00, [ 2960] = 0x922A, [ 2961] = 0x4925,
++  [ 2962] = 0x8414, [ 2963] = 0x993B, [ 2964] = 0x994D, [ 2965] = 0x27B06,
++  [ 2966] = 0x3DFD, [ 2967] = 0x999B, [ 2968] = 0x4B6F, [ 2969] = 0x99AA,
++  [ 2970] = 0x9A5C, [ 2971] = 0x28B65, [ 2972] = 0x258C8, [ 2973] = 0x6A8F,
++  [ 2974] = 0x9A21, [ 2975] = 0x5AFE, [ 2976] = 0x9A2F, [ 2977] = 0x298F1,
++  [ 2978] = 0x4B90, [ 2979] = 0x29948, [ 2980] = 0x99BC, [ 2981] = 0x4BBD,
++  [ 2982] = 0x4B97, [ 2983] = 0x937D, [ 2984] = 0x5872, [ 2985] = 0x21302,
++  [ 2986] = 0x5822, [ 2987] = 0x249B8, [ 3022] = 0x214E8, [ 3023] = 0x7844,
++  [ 3024] = 0x2271F, [ 3025] = 0x23DB8, [ 3026] = 0x68C5, [ 3027] = 0x3D7D,
++  [ 3028] = 0x9458, [ 3029] = 0x3927, [ 3030] = 0x6150, [ 3031] = 0x22781,
++  [ 3032] = 0x2296B, [ 3033] = 0x6107, [ 3034] = 0x9C4F, [ 3035] = 0x9C53,
++  [ 3036] = 0x9C7B, [ 3037] = 0x9C35, [ 3038] = 0x9C10, [ 3039] = 0x9B7F,
++  [ 3040] = 0x9BCF, [ 3041] = 0x29E2D, [ 3042] = 0x9B9F, [ 3043] = 0x2A1F5,
++  [ 3044] = 0x2A0FE, [ 3045] = 0x9D21, [ 3046] = 0x4CAE, [ 3047] = 0x24104,
++  [ 3048] = 0x9E18, [ 3049] = 0x4CB0, [ 3050] = 0x9D0C, [ 3051] = 0x2A1B4,
++  [ 3052] = 0x2A0ED, [ 3053] = 0x2A0F3, [ 3054] = 0x2992F, [ 3055] = 0x9DA5,
++  [ 3056] = 0x84BD, [ 3057] = 0x26E12, [ 3058] = 0x26FDF, [ 3059] = 0x26B82,
++  [ 3060] = 0x85FC, [ 3061] = 0x4533, [ 3062] = 0x26DA4, [ 3063] = 0x26E84,
++  [ 3064] = 0x26DF0, [ 3065] = 0x8420, [ 3066] = 0x85EE, [ 3067] = 0x26E00,
++  [ 3068] = 0x237D7, [ 3069] = 0x26064, [ 3070] = 0x79E2, [ 3071] = 0x2359C,
++  [ 3072] = 0x23640, [ 3073] = 0x492D, [ 3074] = 0x249DE, [ 3075] = 0x3D62,
++  [ 3076] = 0x93DB, [ 3077] = 0x92BE, [ 3078] = 0x9348, [ 3079] = 0x202BF,
++  [ 3080] = 0x78B9, [ 3081] = 0x9277, [ 3082] = 0x944D, [ 3083] = 0x4FE4,
++  [ 3084] = 0x3440, [ 3085] = 0x9064, [ 3086] = 0x2555D, [ 3087] = 0x783D,
++  [ 3088] = 0x7854, [ 3089] = 0x78B6, [ 3090] = 0x784B, [ 3091] = 0x21757,
++  [ 3092] = 0x231C9, [ 3093] = 0x24941, [ 3094] = 0x369A, [ 3095] = 0x4F72,
++  [ 3096] = 0x6FDA, [ 3097] = 0x6FD9, [ 3099] = 0x701E, [ 3100] = 0x5414,
++  [ 3101] = 0x241B5, [ 3102] = 0x57BB, [ 3103] = 0x58F3, [ 3104] = 0x578A,
++  [ 3105] = 0x9D16, [ 3106] = 0x57D7, [ 3107] = 0x7134, [ 3108] = 0x34AF,
++  [ 3109] = 0x241AC, [ 3110] = 0x71EB, [ 3111] = 0x26C40, [ 3112] = 0x24F97,
++  [ 3114] = 0x217B5, [ 3115] = 0x28A49, [ 3120] = 0x610C, [ 3121] = 0x5ACE,
++  [ 3122] = 0x5A0B, [ 3123] = 0x42BC, [ 3124] = 0x24488, [ 3125] = 0x372C,
++  [ 3126] = 0x4B7B, [ 3127] = 0x289FC, [ 3128] = 0x93BB, [ 3129] = 0x93B8,
++  [ 3130] = 0x218D6, [ 3131] = 0x20F1D, [ 3132] = 0x8472, [ 3133] = 0x26CC0,
++  [ 3134] = 0x21413, [ 3135] = 0x242FA, [ 3136] = 0x22C26, [ 3137] = 0x243C1,
++  [ 3138] = 0x5994, [ 3139] = 0x23DB7, [ 3140] = 0x26741, [ 3141] = 0x7DA8,
++  [ 3142] = 0x2615B, [ 3143] = 0x260A4, [ 3144] = 0x249B9, [ 3145] = 0x2498B,
++  [ 3146] = 0x289FA, [ 3147] = 0x92E5, [ 3148] = 0x73E2, [ 3149] = 0x3EE9,
++  [ 3150] = 0x74B4, [ 3151] = 0x28B63, [ 3152] = 0x2189F, [ 3153] = 0x3EE1,
++  [ 3154] = 0x24AB3, [ 3155] = 0x6AD8, [ 3156] = 0x73F3, [ 3157] = 0x73FB,
++  [ 3158] = 0x3ED6, [ 3159] = 0x24A3E, [ 3160] = 0x24A94, [ 3161] = 0x217D9,
++  [ 3162] = 0x24A66, [ 3163] = 0x203A7, [ 3164] = 0x21424, [ 3165] = 0x249E5,
++  [ 3166] = 0x7448, [ 3167] = 0x24916, [ 3168] = 0x70A5, [ 3169] = 0x24976,
++  [ 3170] = 0x9284, [ 3171] = 0x73E6, [ 3172] = 0x935F, [ 3173] = 0x204FE,
++  [ 3174] = 0x9331, [ 3175] = 0x28ACE, [ 3176] = 0x28A16, [ 3177] = 0x9386,
++  [ 3178] = 0x28BE7, [ 3179] = 0x255D5, [ 3180] = 0x4935, [ 3181] = 0x28A82,
++  [ 3182] = 0x716B, [ 3217] = 0x24943, [ 3218] = 0x20CFF, [ 3219] = 0x56A4,
++  [ 3220] = 0x2061A, [ 3221] = 0x20BEB, [ 3222] = 0x20CB8, [ 3223] = 0x5502,
++  [ 3224] = 0x79C4, [ 3225] = 0x217FA, [ 3226] = 0x7DFE, [ 3227] = 0x216C2,
++  [ 3228] = 0x24A50, [ 3229] = 0x21852, [ 3230] = 0x452E, [ 3231] = 0x9401,
++  [ 3232] = 0x370A, [ 3233] = 0x28AC0, [ 3234] = 0x249AD, [ 3235] = 0x59B0,
++  [ 3236] = 0x218BF, [ 3237] = 0x21883, [ 3238] = 0x27484, [ 3239] = 0x5AA1,
++  [ 3240] = 0x36E2, [ 3241] = 0x23D5B, [ 3242] = 0x36B0, [ 3243] = 0x925F,
++  [ 3244] = 0x5A79, [ 3245] = 0x28A81, [ 3246] = 0x21862, [ 3247] = 0x9374,
++  [ 3248] = 0x3CCD, [ 3249] = 0x20AB4, [ 3250] = 0x4A96, [ 3251] = 0x398A,
++  [ 3252] = 0x50F4, [ 3253] = 0x3D69, [ 3254] = 0x3D4C, [ 3255] = 0x2139C,
++  [ 3256] = 0x7175, [ 3257] = 0x42FB, [ 3258] = 0x28218, [ 3259] = 0x6E0F,
++  [ 3260] = 0x290E4, [ 3261] = 0x44EB, [ 3262] = 0x6D57, [ 3263] = 0x27E4F,
++  [ 3264] = 0x7067, [ 3265] = 0x6CAF, [ 3266] = 0x3CD6, [ 3267] = 0x23FED,
++  [ 3268] = 0x23E2D, [ 3269] = 0x6E02, [ 3270] = 0x6F0C, [ 3271] = 0x3D6F,
++  [ 3272] = 0x203F5, [ 3273] = 0x7551, [ 3274] = 0x36BC, [ 3275] = 0x34C8,
++  [ 3276] = 0x4680, [ 3277] = 0x3EDA, [ 3278] = 0x4871, [ 3279] = 0x59C4,
++  [ 3280] = 0x926E, [ 3281] = 0x493E, [ 3282] = 0x8F41, [ 3283] = 0x28C1C,
++  [ 3284] = 0x26BC0, [ 3285] = 0x5812, [ 3286] = 0x57C8, [ 3287] = 0x36D6,
++  [ 3288] = 0x21452, [ 3289] = 0x70FE, [ 3290] = 0x24362, [ 3291] = 0x24A71,
++  [ 3292] = 0x22FE3, [ 3293] = 0x212B0, [ 3294] = 0x223BD, [ 3295] = 0x68B9,
++  [ 3296] = 0x6967, [ 3297] = 0x21398, [ 3298] = 0x234E5, [ 3299] = 0x27BF4,
++  [ 3300] = 0x236DF, [ 3301] = 0x28A83, [ 3302] = 0x237D6, [ 3303] = 0x233FA,
++  [ 3304] = 0x24C9F, [ 3305] = 0x6A1A, [ 3306] = 0x236AD, [ 3307] = 0x26CB7,
++  [ 3308] = 0x843E, [ 3309] = 0x44DF, [ 3310] = 0x44CE, [ 3315] = 0x26D26,
++  [ 3316] = 0x26D51, [ 3317] = 0x26C82, [ 3318] = 0x26FDE, [ 3319] = 0x6F17,
++  [ 3320] = 0x27109, [ 3321] = 0x833D, [ 3322] = 0x2173A, [ 3323] = 0x83ED,
++  [ 3324] = 0x26C80, [ 3325] = 0x27053, [ 3326] = 0x217DB, [ 3327] = 0x5989,
++  [ 3328] = 0x5A82, [ 3329] = 0x217B3, [ 3330] = 0x5A61, [ 3331] = 0x5A71,
++  [ 3332] = 0x21905, [ 3333] = 0x241FC, [ 3334] = 0x372D, [ 3335] = 0x59EF,
++  [ 3336] = 0x2173C, [ 3337] = 0x36C7, [ 3338] = 0x718E, [ 3339] = 0x9390,
++  [ 3340] = 0x669A, [ 3341] = 0x242A5, [ 3342] = 0x5A6E, [ 3343] = 0x5A2B,
++  [ 3344] = 0x24293, [ 3345] = 0x6A2B, [ 3346] = 0x23EF9, [ 3347] = 0x27736,
++  [ 3348] = 0x2445B, [ 3349] = 0x242CA, [ 3350] = 0x711D, [ 3351] = 0x24259,
++  [ 3352] = 0x289E1, [ 3353] = 0x4FB0, [ 3354] = 0x26D28, [ 3355] = 0x5CC2,
++  [ 3356] = 0x244CE, [ 3357] = 0x27E4D, [ 3358] = 0x243BD, [ 3359] = 0x6A0C,
++  [ 3360] = 0x24256, [ 3361] = 0x21304, [ 3362] = 0x70A6, [ 3363] = 0x7133,
++  [ 3364] = 0x243E9, [ 3365] = 0x3DA5, [ 3366] = 0x6CDF, [ 3367] = 0x2F825,
++  [ 3368] = 0x24A4F, [ 3369] = 0x7E65, [ 3370] = 0x59EB, [ 3371] = 0x5D2F,
++  [ 3372] = 0x3DF3, [ 3373] = 0x5F5C, [ 3374] = 0x24A5D, [ 3375] = 0x217DF,
++  [ 3376] = 0x7DA4, [ 3377] = 0x8426, [ 3412] = 0x5485, [ 3413] = 0x23AFA,
++  [ 3414] = 0x23300, [ 3415] = 0x20214, [ 3416] = 0x577E, [ 3417] = 0x208D5,
++  [ 3418] = 0x20619, [ 3419] = 0x3FE5, [ 3420] = 0x21F9E, [ 3421] = 0x2A2B6,
++  [ 3422] = 0x7003, [ 3423] = 0x2915B, [ 3424] = 0x5D70, [ 3425] = 0x738F,
++  [ 3426] = 0x7CD3, [ 3427] = 0x28A59, [ 3428] = 0x29420, [ 3429] = 0x4FC8,
++  [ 3430] = 0x7FE7, [ 3431] = 0x72CD, [ 3432] = 0x7310, [ 3433] = 0x27AF4,
++  [ 3434] = 0x7338, [ 3435] = 0x7339, [ 3436] = 0x256F6, [ 3437] = 0x7341,
++  [ 3438] = 0x7348, [ 3439] = 0x3EA9, [ 3440] = 0x27B18, [ 3441] = 0x906C,
++  [ 3442] = 0x71F5, [ 3443] = 0x248F2, [ 3444] = 0x73E1, [ 3445] = 0x81F6,
++  [ 3446] = 0x3ECA, [ 3447] = 0x770C, [ 3448] = 0x3ED1, [ 3449] = 0x6CA2,
++  [ 3450] = 0x56FD, [ 3451] = 0x7419, [ 3452] = 0x741E, [ 3453] = 0x741F,
++  [ 3454] = 0x3EE2, [ 3455] = 0x3EF0, [ 3456] = 0x3EF4, [ 3457] = 0x3EFA,
++  [ 3458] = 0x74D3, [ 3459] = 0x3F0E, [ 3460] = 0x3F53, [ 3461] = 0x7542,
++  [ 3462] = 0x756D, [ 3463] = 0x7572, [ 3464] = 0x758D, [ 3465] = 0x3F7C,
++  [ 3466] = 0x75C8, [ 3467] = 0x75DC, [ 3468] = 0x3FC0, [ 3469] = 0x764D,
++  [ 3470] = 0x3FD7, [ 3471] = 0x7674, [ 3472] = 0x3FDC, [ 3473] = 0x767A,
++  [ 3474] = 0x24F5C, [ 3475] = 0x7188, [ 3476] = 0x5623, [ 3477] = 0x8980,
++  [ 3478] = 0x5869, [ 3479] = 0x401D, [ 3480] = 0x7743, [ 3481] = 0x4039,
++  [ 3482] = 0x6761, [ 3483] = 0x4045, [ 3484] = 0x35DB, [ 3485] = 0x7798,
++  [ 3486] = 0x406A, [ 3487] = 0x406F, [ 3488] = 0x5C5E, [ 3489] = 0x77BE,
++  [ 3490] = 0x77CB, [ 3491] = 0x58F2, [ 3492] = 0x7818, [ 3493] = 0x70B9,
++  [ 3494] = 0x781C, [ 3495] = 0x40A8, [ 3496] = 0x7839, [ 3497] = 0x7847,
++  [ 3498] = 0x7851, [ 3499] = 0x7866, [ 3500] = 0x8448, [ 3501] = 0x25535,
++  [ 3502] = 0x7933, [ 3503] = 0x6803, [ 3504] = 0x7932, [ 3505] = 0x4103,
++  [ 3510] = 0x4109, [ 3511] = 0x7991, [ 3512] = 0x7999, [ 3513] = 0x8FBB,
++  [ 3514] = 0x7A06, [ 3515] = 0x8FBC, [ 3516] = 0x4167, [ 3517] = 0x7A91,
++  [ 3518] = 0x41B2, [ 3519] = 0x7ABC, [ 3520] = 0x8279, [ 3521] = 0x41C4,
++  [ 3522] = 0x7ACF, [ 3523] = 0x7ADB, [ 3524] = 0x41CF, [ 3525] = 0x4E21,
++  [ 3526] = 0x7B62, [ 3527] = 0x7B6C, [ 3528] = 0x7B7B, [ 3529] = 0x7C12,
++  [ 3530] = 0x7C1B, [ 3531] = 0x4260, [ 3532] = 0x427A, [ 3533] = 0x7C7B,
++  [ 3534] = 0x7C9C, [ 3535] = 0x428C, [ 3536] = 0x7CB8, [ 3537] = 0x4294,
++  [ 3538] = 0x7CED, [ 3539] = 0x8F93, [ 3540] = 0x70C0, [ 3541] = 0x20CCF,
++  [ 3542] = 0x7DCF, [ 3543] = 0x7DD4, [ 3544] = 0x7DD0, [ 3545] = 0x7DFD,
++  [ 3546] = 0x7FAE, [ 3547] = 0x7FB4, [ 3548] = 0x729F, [ 3549] = 0x4397,
++  [ 3550] = 0x8020, [ 3551] = 0x8025, [ 3552] = 0x7B39, [ 3553] = 0x802E,
++  [ 3554] = 0x8031, [ 3555] = 0x8054, [ 3556] = 0x3DCC, [ 3557] = 0x57B4,
++  [ 3558] = 0x70A0, [ 3559] = 0x80B7, [ 3560] = 0x80E9, [ 3561] = 0x43ED,
++  [ 3562] = 0x810C, [ 3563] = 0x732A, [ 3564] = 0x810E, [ 3565] = 0x8112,
++  [ 3566] = 0x7560, [ 3567] = 0x8114, [ 3568] = 0x4401, [ 3569] = 0x3B39,
++  [ 3570] = 0x8156, [ 3571] = 0x8159, [ 3572] = 0x815A, [ 3607] = 0x4413,
++  [ 3608] = 0x583A, [ 3609] = 0x817C, [ 3610] = 0x8184, [ 3611] = 0x4425,
++  [ 3612] = 0x8193, [ 3613] = 0x442D, [ 3614] = 0x81A5, [ 3615] = 0x57EF,
++  [ 3616] = 0x81C1, [ 3617] = 0x81E4, [ 3618] = 0x8254, [ 3619] = 0x448F,
++  [ 3620] = 0x82A6, [ 3621] = 0x8276, [ 3622] = 0x82CA, [ 3623] = 0x82D8,
++  [ 3624] = 0x82FF, [ 3625] = 0x44B0, [ 3626] = 0x8357, [ 3627] = 0x9669,
++  [ 3628] = 0x698A, [ 3629] = 0x8405, [ 3630] = 0x70F5, [ 3631] = 0x8464,
++  [ 3632] = 0x60E3, [ 3633] = 0x8488, [ 3634] = 0x4504, [ 3635] = 0x84BE,
++  [ 3636] = 0x84E1, [ 3637] = 0x84F8, [ 3638] = 0x8510, [ 3639] = 0x8538,
++  [ 3640] = 0x8552, [ 3641] = 0x453B, [ 3642] = 0x856F, [ 3643] = 0x8570,
++  [ 3644] = 0x85E0, [ 3645] = 0x4577, [ 3646] = 0x8672, [ 3647] = 0x8692,
++  [ 3648] = 0x86B2, [ 3649] = 0x86EF, [ 3650] = 0x9645, [ 3651] = 0x878B,
++  [ 3652] = 0x4606, [ 3653] = 0x4617, [ 3654] = 0x88AE, [ 3655] = 0x88FF,
++  [ 3656] = 0x8924, [ 3657] = 0x8947, [ 3658] = 0x8991, [ 3659] = 0x27967,
++  [ 3660] = 0x8A29, [ 3661] = 0x8A38, [ 3662] = 0x8A94, [ 3663] = 0x8AB4,
++  [ 3664] = 0x8C51, [ 3665] = 0x8CD4, [ 3666] = 0x8CF2, [ 3667] = 0x8D1C,
++  [ 3668] = 0x4798, [ 3669] = 0x585F, [ 3670] = 0x8DC3, [ 3671] = 0x47ED,
++  [ 3672] = 0x4EEE, [ 3673] = 0x8E3A, [ 3674] = 0x55D8, [ 3675] = 0x5754,
++  [ 3676] = 0x8E71, [ 3677] = 0x55F5, [ 3678] = 0x8EB0, [ 3679] = 0x4837,
++  [ 3680] = 0x8ECE, [ 3681] = 0x8EE2, [ 3682] = 0x8EE4, [ 3683] = 0x8EED,
++  [ 3684] = 0x8EF2, [ 3685] = 0x8FB7, [ 3686] = 0x8FC1, [ 3687] = 0x8FCA,
++  [ 3688] = 0x8FCC, [ 3689] = 0x9033, [ 3690] = 0x99C4, [ 3691] = 0x48AD,
++  [ 3692] = 0x98E0, [ 3693] = 0x9213, [ 3694] = 0x491E, [ 3695] = 0x9228,
++  [ 3696] = 0x9258, [ 3697] = 0x926B, [ 3698] = 0x92B1, [ 3699] = 0x92AE,
++  [ 3700] = 0x92BF, [ 3705] = 0x92E3, [ 3706] = 0x92EB, [ 3707] = 0x92F3,
++  [ 3708] = 0x92F4, [ 3709] = 0x92FD, [ 3710] = 0x9343, [ 3711] = 0x9384,
++  [ 3712] = 0x93AD, [ 3713] = 0x4945, [ 3714] = 0x4951, [ 3715] = 0x9EBF,
++  [ 3716] = 0x9417, [ 3717] = 0x5301, [ 3718] = 0x941D, [ 3719] = 0x942D,
++  [ 3720] = 0x943E, [ 3721] = 0x496A, [ 3722] = 0x9454, [ 3723] = 0x9479,
++  [ 3724] = 0x952D, [ 3725] = 0x95A2, [ 3726] = 0x49A7, [ 3727] = 0x95F4,
++  [ 3728] = 0x9633, [ 3729] = 0x49E5, [ 3730] = 0x67A0, [ 3731] = 0x4A24,
++  [ 3732] = 0x9740, [ 3733] = 0x4A35, [ 3734] = 0x97B2, [ 3735] = 0x97C2,
++  [ 3736] = 0x5654, [ 3737] = 0x4AE4, [ 3738] = 0x60E8, [ 3739] = 0x98B9,
++  [ 3740] = 0x4B19, [ 3741] = 0x98F1, [ 3742] = 0x5844, [ 3743] = 0x990E,
++  [ 3744] = 0x9919, [ 3745] = 0x51B4, [ 3746] = 0x991C, [ 3747] = 0x9937,
++  [ 3748] = 0x9942, [ 3749] = 0x995D, [ 3750] = 0x9962, [ 3751] = 0x4B70,
++  [ 3752] = 0x99C5, [ 3753] = 0x4B9D, [ 3754] = 0x9A3C, [ 3755] = 0x9B0F,
++  [ 3756] = 0x7A83, [ 3757] = 0x9B69, [ 3758] = 0x9B81, [ 3759] = 0x9BDD,
++  [ 3760] = 0x9BF1, [ 3761] = 0x9BF4, [ 3762] = 0x4C6D, [ 3763] = 0x9C20,
++  [ 3764] = 0x376F, [ 3765] = 0x21BC2, [ 3766] = 0x9D49, [ 3767] = 0x9C3A,
++  [ 3802] = 0x9EFE, [ 3803] = 0x5650, [ 3804] = 0x9D93, [ 3805] = 0x9DBD,
++  [ 3806] = 0x9DC0, [ 3807] = 0x9DFC, [ 3808] = 0x94F6, [ 3809] = 0x8FB6,
++  [ 3810] = 0x9E7B, [ 3811] = 0x9EAC, [ 3812] = 0x9EB1, [ 3813] = 0x9EBD,
++  [ 3814] = 0x9EC6, [ 3815] = 0x94DC, [ 3816] = 0x9EE2, [ 3817] = 0x9EF1,
++  [ 3818] = 0x9EF8, [ 3819] = 0x7AC8, [ 3820] = 0x9F44, [ 3821] = 0x20094,
++  [ 3822] = 0x202B7, [ 3823] = 0x203A0, [ 3824] = 0x691A, [ 3825] = 0x94C3,
++  [ 3826] = 0x59AC, [ 3827] = 0x204D7, [ 3828] = 0x5840, [ 3829] = 0x94C1,
++  [ 3830] = 0x37B9, [ 3831] = 0x205D5, [ 3832] = 0x20615, [ 3833] = 0x20676,
++  [ 3834] = 0x216BA, [ 3835] = 0x5757, [ 3836] = 0x7173, [ 3837] = 0x20AC2,
++  [ 3838] = 0x20ACD, [ 3839] = 0x20BBF, [ 3840] = 0x546A, [ 3841] = 0x2F83B,
++  [ 3842] = 0x20BCB, [ 3843] = 0x549E, [ 3844] = 0x20BFB, [ 3845] = 0x20C3B,
++  [ 3846] = 0x20C53, [ 3847] = 0x20C65, [ 3848] = 0x20C7C, [ 3849] = 0x60E7,
++  [ 3850] = 0x20C8D, [ 3851] = 0x567A, [ 3852] = 0x20CB5, [ 3853] = 0x20CDD,
++  [ 3854] = 0x20CED, [ 3855] = 0x20D6F, [ 3856] = 0x20DB2, [ 3857] = 0x20DC8,
++  [ 3858] = 0x6955, [ 3859] = 0x9C2F, [ 3860] = 0x87A5, [ 3861] = 0x20E04,
++  [ 3862] = 0x20E0E, [ 3863] = 0x20ED7, [ 3864] = 0x20F90, [ 3865] = 0x20F2D,
++  [ 3866] = 0x20E73, [ 3867] = 0x5C20, [ 3868] = 0x20FBC, [ 3869] = 0x5E0B,
++  [ 3870] = 0x2105C, [ 3871] = 0x2104F, [ 3872] = 0x21076, [ 3873] = 0x671E,
++  [ 3874] = 0x2107B, [ 3875] = 0x21088, [ 3876] = 0x21096, [ 3877] = 0x3647,
++  [ 3878] = 0x210BF, [ 3879] = 0x210D3, [ 3880] = 0x2112F, [ 3881] = 0x2113B,
++  [ 3882] = 0x5364, [ 3883] = 0x84AD, [ 3884] = 0x212E3, [ 3885] = 0x21375,
++  [ 3886] = 0x21336, [ 3887] = 0x8B81, [ 3888] = 0x21577, [ 3889] = 0x21619,
++  [ 3890] = 0x217C3, [ 3891] = 0x217C7, [ 3892] = 0x4E78, [ 3893] = 0x70BB,
++  [ 3894] = 0x2182D, [ 3895] = 0x2196A, [ 3900] = 0x21A2D, [ 3901] = 0x21A45,
++  [ 3902] = 0x21C2A, [ 3903] = 0x21C70, [ 3904] = 0x21CAC, [ 3905] = 0x21EC8,
++  [ 3906] = 0x62C3, [ 3907] = 0x21ED5, [ 3908] = 0x21F15, [ 3909] = 0x7198,
++  [ 3910] = 0x6855, [ 3911] = 0x22045, [ 3912] = 0x69E9, [ 3913] = 0x36C8,
++  [ 3914] = 0x2227C, [ 3915] = 0x223D7, [ 3916] = 0x223FA, [ 3917] = 0x2272A,
++  [ 3918] = 0x22871, [ 3919] = 0x2294F, [ 3920] = 0x82FD, [ 3921] = 0x22967,
++  [ 3922] = 0x22993, [ 3923] = 0x22AD5, [ 3924] = 0x89A5, [ 3925] = 0x22AE8,
++  [ 3926] = 0x8FA0, [ 3927] = 0x22B0E, [ 3928] = 0x97B8, [ 3929] = 0x22B3F,
++  [ 3930] = 0x9847, [ 3931] = 0x9ABD, [ 3932] = 0x22C4C, [ 3934] = 0x22C88,
++  [ 3935] = 0x22CB7, [ 3936] = 0x25BE8, [ 3937] = 0x22D08, [ 3938] = 0x22D12,
++  [ 3939] = 0x22DB7, [ 3940] = 0x22D95, [ 3941] = 0x22E42, [ 3942] = 0x22F74,
++  [ 3943] = 0x22FCC, [ 3944] = 0x23033, [ 3945] = 0x23066, [ 3946] = 0x2331F,
++  [ 3947] = 0x233DE, [ 3948] = 0x5FB1, [ 3949] = 0x6648, [ 3950] = 0x66BF,
++  [ 3951] = 0x27A79, [ 3952] = 0x23567, [ 3953] = 0x235F3, [ 3955] = 0x249BA,
++  [ 3957] = 0x2361A, [ 3958] = 0x23716, [ 3960] = 0x20346, [ 3961] = 0x58B5,
++  [ 3962] = 0x670E, [ 3997] = 0x6918, [ 3998] = 0x23AA7, [ 3999] = 0x27657,
++  [ 4000] = 0x25FE2, [ 4001] = 0x23E11, [ 4002] = 0x23EB9, [ 4003] = 0x275FE,
++  [ 4004] = 0x2209A, [ 4005] = 0x48D0, [ 4006] = 0x4AB8, [ 4007] = 0x24119,
++  [ 4008] = 0x28A9A, [ 4009] = 0x242EE, [ 4010] = 0x2430D, [ 4011] = 0x2403B,
++  [ 4012] = 0x24334, [ 4013] = 0x24396, [ 4014] = 0x24A45, [ 4015] = 0x205CA,
++  [ 4016] = 0x51D2, [ 4017] = 0x20611, [ 4018] = 0x599F, [ 4019] = 0x21EA8,
++  [ 4020] = 0x3BBE, [ 4021] = 0x23CFF, [ 4022] = 0x24404, [ 4023] = 0x244D6,
++  [ 4024] = 0x5788, [ 4025] = 0x24674, [ 4026] = 0x399B, [ 4027] = 0x2472F,
++  [ 4028] = 0x285E8, [ 4029] = 0x299C9, [ 4030] = 0x3762, [ 4031] = 0x221C3,
++  [ 4032] = 0x8B5E, [ 4033] = 0x28B4E, [ 4035] = 0x24812, [ 4036] = 0x248FB,
++  [ 4037] = 0x24A15, [ 4038] = 0x7209, [ 4039] = 0x24AC0, [ 4040] = 0x20C78,
++  [ 4041] = 0x5965, [ 4042] = 0x24EA5, [ 4043] = 0x24F86, [ 4044] = 0x20779,
++  [ 4045] = 0x8EDA, [ 4046] = 0x2502C, [ 4047] = 0x528F, [ 4048] = 0x573F,
++  [ 4049] = 0x7171, [ 4050] = 0x25299, [ 4051] = 0x25419, [ 4052] = 0x23F4A,
++  [ 4053] = 0x24AA7, [ 4054] = 0x55BC, [ 4055] = 0x25446, [ 4056] = 0x2546E,
++  [ 4057] = 0x26B52, [ 4059] = 0x3473, [ 4060] = 0x2553F, [ 4061] = 0x27632,
++  [ 4062] = 0x2555E, [ 4063] = 0x4718, [ 4064] = 0x25562, [ 4065] = 0x25566,
++  [ 4066] = 0x257C7, [ 4067] = 0x2493F, [ 4068] = 0x2585D, [ 4069] = 0x5066,
++  [ 4070] = 0x34FB, [ 4071] = 0x233CC, [ 4073] = 0x25903, [ 4074] = 0x477C,
++  [ 4075] = 0x28948, [ 4076] = 0x25AAE, [ 4077] = 0x25B89, [ 4078] = 0x25C06,
++  [ 4079] = 0x21D90, [ 4080] = 0x57A1, [ 4081] = 0x7151, [ 4083] = 0x26102,
++  [ 4084] = 0x27C12, [ 4085] = 0x9056, [ 4086] = 0x261B2, [ 4087] = 0x24F9A,
++  [ 4088] = 0x8B62, [ 4089] = 0x26402, [ 4090] = 0x2644A, [ 4095] = 0x5D5B,
++  [ 4096] = 0x26BF7, [ 4098] = 0x26484, [ 4099] = 0x2191C, [ 4100] = 0x8AEA,
++  [ 4101] = 0x249F6, [ 4102] = 0x26488, [ 4103] = 0x23FEF, [ 4104] = 0x26512,
++  [ 4105] = 0x4BC0, [ 4106] = 0x265BF, [ 4107] = 0x266B5, [ 4108] = 0x2271B,
++  [ 4109] = 0x9465, [ 4110] = 0x257E1, [ 4111] = 0x6195, [ 4112] = 0x5A27,
++  [ 4113] = 0x2F8CD, [ 4115] = 0x56B9, [ 4116] = 0x24521, [ 4117] = 0x266FC,
++  [ 4118] = 0x4E6A, [ 4119] = 0x24934, [ 4120] = 0x9656, [ 4121] = 0x6D8F,
++  [ 4122] = 0x26CBD, [ 4123] = 0x3618, [ 4124] = 0x8977, [ 4125] = 0x26799,
++  [ 4126] = 0x2686E, [ 4127] = 0x26411, [ 4128] = 0x2685E, [ 4130] = 0x268C7,
++  [ 4131] = 0x7B42, [ 4132] = 0x290C0, [ 4133] = 0x20A11, [ 4134] = 0x26926,
++  [ 4136] = 0x26939, [ 4137] = 0x7A45, [ 4139] = 0x269FA, [ 4140] = 0x9A26,
++  [ 4141] = 0x26A2D, [ 4142] = 0x365F, [ 4143] = 0x26469, [ 4144] = 0x20021,
++  [ 4145] = 0x7983, [ 4146] = 0x26A34, [ 4147] = 0x26B5B, [ 4148] = 0x5D2C,
++  [ 4149] = 0x23519, [ 4151] = 0x26B9D, [ 4152] = 0x46D0, [ 4153] = 0x26CA4,
++  [ 4154] = 0x753B, [ 4155] = 0x8865, [ 4156] = 0x26DAE, [ 4157] = 0x58B6,
++  [ 4192] = 0x371C, [ 4193] = 0x2258D, [ 4194] = 0x2704B, [ 4195] = 0x271CD,
++  [ 4196] = 0x3C54, [ 4197] = 0x27280, [ 4198] = 0x27285, [ 4199] = 0x9281,
++  [ 4200] = 0x2217A, [ 4201] = 0x2728B, [ 4202] = 0x9330, [ 4203] = 0x272E6,
++  [ 4204] = 0x249D0, [ 4205] = 0x6C39, [ 4206] = 0x949F, [ 4207] = 0x27450,
++  [ 4208] = 0x20EF8, [ 4209] = 0x8827, [ 4210] = 0x88F5, [ 4211] = 0x22926,
++  [ 4212] = 0x28473, [ 4213] = 0x217B1, [ 4214] = 0x6EB8, [ 4215] = 0x24A2A,
++  [ 4216] = 0x21820, [ 4217] = 0x39A4, [ 4218] = 0x36B9, [ 4221] = 0x453F,
++  [ 4222] = 0x66B6, [ 4223] = 0x29CAD, [ 4224] = 0x298A4, [ 4225] = 0x8943,
++  [ 4226] = 0x277CC, [ 4227] = 0x27858, [ 4228] = 0x56D6, [ 4229] = 0x40DF,
++  [ 4230] = 0x2160A, [ 4231] = 0x39A1, [ 4232] = 0x2372F, [ 4233] = 0x280E8,
++  [ 4234] = 0x213C5, [ 4235] = 0x71AD, [ 4236] = 0x8366, [ 4237] = 0x279DD,
++  [ 4238] = 0x291A8, [ 4240] = 0x4CB7, [ 4241] = 0x270AF, [ 4242] = 0x289AB,
++  [ 4243] = 0x279FD, [ 4244] = 0x27A0A, [ 4245] = 0x27B0B, [ 4246] = 0x27D66,
++  [ 4247] = 0x2417A, [ 4248] = 0x7B43, [ 4249] = 0x797E, [ 4250] = 0x28009,
++  [ 4251] = 0x6FB5, [ 4252] = 0x2A2DF, [ 4253] = 0x6A03, [ 4254] = 0x28318,
++  [ 4255] = 0x53A2, [ 4256] = 0x26E07, [ 4257] = 0x93BF, [ 4258] = 0x6836,
++  [ 4259] = 0x975D, [ 4260] = 0x2816F, [ 4261] = 0x28023, [ 4262] = 0x269B5,
++  [ 4263] = 0x213ED, [ 4264] = 0x2322F, [ 4265] = 0x28048, [ 4266] = 0x5D85,
++  [ 4267] = 0x28C30, [ 4268] = 0x28083, [ 4269] = 0x5715, [ 4270] = 0x9823,
++  [ 4271] = 0x28949, [ 4272] = 0x5DAB, [ 4273] = 0x24988, [ 4274] = 0x65BE,
++  [ 4275] = 0x69D5, [ 4276] = 0x53D2, [ 4277] = 0x24AA5, [ 4278] = 0x23F81,
++  [ 4279] = 0x3C11, [ 4280] = 0x6736, [ 4281] = 0x28090, [ 4282] = 0x280F4,
++  [ 4283] = 0x2812E, [ 4284] = 0x21FA1, [ 4285] = 0x2814F, [ 4290] = 0x28189,
++  [ 4291] = 0x281AF, [ 4292] = 0x2821A, [ 4293] = 0x28306, [ 4294] = 0x2832F,
++  [ 4295] = 0x2838A, [ 4296] = 0x35CA, [ 4297] = 0x28468, [ 4298] = 0x286AA,
++  [ 4299] = 0x48FA, [ 4300] = 0x63E6, [ 4301] = 0x28956, [ 4302] = 0x7808,
++  [ 4303] = 0x9255, [ 4304] = 0x289B8, [ 4305] = 0x43F2, [ 4306] = 0x289E7,
++  [ 4307] = 0x43DF, [ 4308] = 0x289E8, [ 4309] = 0x28B46, [ 4310] = 0x28BD4,
++  [ 4311] = 0x59F8, [ 4312] = 0x28C09, [ 4314] = 0x28FC5, [ 4315] = 0x290EC,
++  [ 4317] = 0x29110, [ 4318] = 0x2913C, [ 4319] = 0x3DF7, [ 4320] = 0x2915E,
++  [ 4321] = 0x24ACA, [ 4322] = 0x8FD0, [ 4323] = 0x728F, [ 4324] = 0x568B,
++  [ 4325] = 0x294E7, [ 4326] = 0x295E9, [ 4327] = 0x295B0, [ 4328] = 0x295B8,
++  [ 4329] = 0x29732, [ 4330] = 0x298D1, [ 4331] = 0x29949, [ 4332] = 0x2996A,
++  [ 4333] = 0x299C3, [ 4334] = 0x29A28, [ 4335] = 0x29B0E, [ 4336] = 0x29D5A,
++  [ 4337] = 0x29D9B, [ 4338] = 0x7E9F, [ 4339] = 0x29EF8, [ 4340] = 0x29F23,
++  [ 4341] = 0x4CA4, [ 4342] = 0x9547, [ 4343] = 0x2A293, [ 4344] = 0x71A2,
++  [ 4345] = 0x2A2FF, [ 4346] = 0x4D91, [ 4347] = 0x9012, [ 4348] = 0x2A5CB,
++  [ 4349] = 0x4D9C, [ 4350] = 0x20C9C, [ 4351] = 0x8FBE, [ 4352] = 0x55C1,
++  [ 4387] = 0x8FBA, [ 4388] = 0x224B0, [ 4389] = 0x8FB9, [ 4390] = 0x24A93,
++  [ 4391] = 0x4509, [ 4392] = 0x7E7F, [ 4393] = 0x6F56, [ 4394] = 0x6AB1,
++  [ 4395] = 0x4EEA, [ 4396] = 0x34E4, [ 4397] = 0x28B2C, [ 4398] = 0x2789D,
++  [ 4399] = 0x373A, [ 4400] = 0x8E80, [ 4401] = 0x217F5, [ 4402] = 0x28024,
++  [ 4403] = 0x28B6C, [ 4404] = 0x28B99, [ 4405] = 0x27A3E, [ 4406] = 0x266AF,
++  [ 4407] = 0x3DEB, [ 4408] = 0x27655, [ 4409] = 0x23CB7, [ 4410] = 0x25635,
++  [ 4411] = 0x25956, [ 4412] = 0x4E9A, [ 4413] = 0x25E81, [ 4414] = 0x26258,
++  [ 4415] = 0x56BF, [ 4416] = 0x20E6D, [ 4417] = 0x8E0E, [ 4418] = 0x5B6D,
++  [ 4419] = 0x23E88, [ 4420] = 0x24C9E, [ 4421] = 0x63DE, [ 4423] = 0x217F6,
++  [ 4424] = 0x2187B, [ 4425] = 0x6530, [ 4426] = 0x562D, [ 4427] = 0x25C4A,
++  [ 4428] = 0x541A, [ 4429] = 0x25311, [ 4430] = 0x3DC6, [ 4431] = 0x29D98,
++  [ 4432] = 0x4C7D, [ 4433] = 0x5622, [ 4434] = 0x561E, [ 4435] = 0x7F49,
++  [ 4436] = 0x25ED8, [ 4437] = 0x5975, [ 4438] = 0x23D40, [ 4439] = 0x8770,
++  [ 4440] = 0x4E1C, [ 4441] = 0x20FEA, [ 4442] = 0x20D49, [ 4443] = 0x236BA,
++  [ 4444] = 0x8117, [ 4445] = 0x9D5E, [ 4446] = 0x8D18, [ 4447] = 0x763B,
++  [ 4448] = 0x9C45, [ 4449] = 0x764E, [ 4450] = 0x77B9, [ 4451] = 0x9345,
++  [ 4452] = 0x5432, [ 4453] = 0x8148, [ 4454] = 0x82F7, [ 4455] = 0x5625,
++  [ 4456] = 0x8132, [ 4457] = 0x8418, [ 4458] = 0x80BD, [ 4459] = 0x55EA,
++  [ 4460] = 0x7962, [ 4461] = 0x5643, [ 4462] = 0x5416, [ 4463] = 0x20E9D,
++  [ 4464] = 0x35CE, [ 4465] = 0x5605, [ 4466] = 0x55F1, [ 4467] = 0x66F1,
++  [ 4468] = 0x282E2, [ 4469] = 0x362D, [ 4470] = 0x7534, [ 4471] = 0x55F0,
++  [ 4472] = 0x55BA, [ 4473] = 0x5497, [ 4474] = 0x5572, [ 4475] = 0x20C41,
++  [ 4476] = 0x20C96, [ 4477] = 0x5ED0, [ 4478] = 0x25148, [ 4479] = 0x20E76,
++  [ 4480] = 0x22C62, [ 4485] = 0x20EA2, [ 4486] = 0x9EAB, [ 4487] = 0x7D5A,
++  [ 4488] = 0x55DE, [ 4489] = 0x21075, [ 4490] = 0x629D, [ 4491] = 0x976D,
++  [ 4492] = 0x5494, [ 4493] = 0x8CCD, [ 4494] = 0x71F6, [ 4495] = 0x9176,
++  [ 4496] = 0x63FC, [ 4497] = 0x63B9, [ 4498] = 0x63FE, [ 4499] = 0x5569,
++  [ 4500] = 0x22B43, [ 4501] = 0x9C72, [ 4502] = 0x22EB3, [ 4503] = 0x519A,
++  [ 4504] = 0x34DF, [ 4505] = 0x20DA7, [ 4506] = 0x51A7, [ 4507] = 0x544D,
++  [ 4508] = 0x551E, [ 4509] = 0x5513, [ 4510] = 0x7666, [ 4511] = 0x8E2D,
++  [ 4512] = 0x2688A, [ 4513] = 0x75B1, [ 4514] = 0x80B6, [ 4515] = 0x8804,
++  [ 4516] = 0x8786, [ 4517] = 0x88C7, [ 4518] = 0x81B6, [ 4519] = 0x841C,
++  [ 4520] = 0x210C1, [ 4521] = 0x44EC, [ 4522] = 0x7304, [ 4523] = 0x24706,
++  [ 4524] = 0x5B90, [ 4525] = 0x830B, [ 4526] = 0x26893, [ 4527] = 0x567B,
++  [ 4528] = 0x226F4, [ 4529] = 0x27D2F, [ 4530] = 0x241A3, [ 4531] = 0x27D73,
++  [ 4532] = 0x26ED0, [ 4533] = 0x272B6, [ 4534] = 0x9170, [ 4535] = 0x211D9,
++  [ 4536] = 0x9208, [ 4537] = 0x23CFC, [ 4538] = 0x2A6A9, [ 4539] = 0x20EAC,
++  [ 4540] = 0x20EF9, [ 4541] = 0x7266, [ 4542] = 0x21CA2, [ 4543] = 0x474E,
++  [ 4544] = 0x24FC2, [ 4545] = 0x27FF9, [ 4546] = 0x20FEB, [ 4547] = 0x40FA,
++  [ 4582] = 0x9C5D, [ 4583] = 0x651F, [ 4584] = 0x22DA0, [ 4585] = 0x48F3,
++  [ 4586] = 0x247E0, [ 4587] = 0x29D7C, [ 4588] = 0x20FEC, [ 4589] = 0x20E0A,
++  [ 4591] = 0x275A3, [ 4592] = 0x20FED, [ 4594] = 0x26048, [ 4595] = 0x21187,
++  [ 4596] = 0x71A3, [ 4597] = 0x7E8E, [ 4598] = 0x9D50, [ 4599] = 0x4E1A,
++  [ 4600] = 0x4E04, [ 4601] = 0x3577, [ 4602] = 0x5B0D, [ 4603] = 0x6CB2,
++  [ 4604] = 0x5367, [ 4605] = 0x36AC, [ 4606] = 0x39DC, [ 4607] = 0x537D,
++  [ 4608] = 0x36A5, [ 4609] = 0x24618, [ 4610] = 0x589A, [ 4611] = 0x24B6E,
++  [ 4612] = 0x822D, [ 4613] = 0x544B, [ 4614] = 0x57AA, [ 4615] = 0x25A95,
++  [ 4616] = 0x20979, [ 4618] = 0x3A52, [ 4619] = 0x22465, [ 4620] = 0x7374,
++  [ 4621] = 0x29EAC, [ 4622] = 0x4D09, [ 4623] = 0x9BED, [ 4624] = 0x23CFE,
++  [ 4625] = 0x29F30, [ 4626] = 0x4C5B, [ 4627] = 0x24FA9, [ 4628] = 0x2959E,
++  [ 4629] = 0x29FDE, [ 4630] = 0x845C, [ 4631] = 0x23DB6, [ 4632] = 0x272B2,
++  [ 4633] = 0x267B3, [ 4634] = 0x23720, [ 4635] = 0x632E, [ 4636] = 0x7D25,
++  [ 4637] = 0x23EF7, [ 4638] = 0x23E2C, [ 4639] = 0x3A2A, [ 4640] = 0x9008,
++  [ 4641] = 0x52CC, [ 4642] = 0x3E74, [ 4643] = 0x367A, [ 4644] = 0x45E9,
++  [ 4645] = 0x2048E, [ 4646] = 0x7640, [ 4647] = 0x5AF0, [ 4648] = 0x20EB6,
++  [ 4649] = 0x787A, [ 4650] = 0x27F2E, [ 4651] = 0x58A7, [ 4652] = 0x40BF,
++  [ 4653] = 0x567C, [ 4654] = 0x9B8B, [ 4655] = 0x5D74, [ 4656] = 0x7654,
++  [ 4657] = 0x2A434, [ 4658] = 0x9E85, [ 4659] = 0x4CE1, [ 4661] = 0x37FB,
++  [ 4662] = 0x6119, [ 4663] = 0x230DA, [ 4664] = 0x243F2, [ 4666] = 0x565D,
++  [ 4667] = 0x212A9, [ 4668] = 0x57A7, [ 4669] = 0x24963, [ 4670] = 0x29E06,
++  [ 4671] = 0x5234, [ 4672] = 0x270AE, [ 4673] = 0x35AD, [ 4675] = 0x9D7C,
++  [ 4680] = 0x7C56, [ 4681] = 0x9B39, [ 4682] = 0x57DE, [ 4683] = 0x2176C,
++  [ 4684] = 0x5C53, [ 4685] = 0x64D3, [ 4686] = 0x294D0, [ 4687] = 0x26335,
++  [ 4688] = 0x27164, [ 4689] = 0x86AD, [ 4690] = 0x20D28, [ 4691] = 0x26D22,
++  [ 4692] = 0x24AE2, [ 4693] = 0x20D71, [ 4695] = 0x51FE, [ 4696] = 0x21F0F,
++  [ 4697] = 0x5D8E, [ 4698] = 0x9703, [ 4699] = 0x21DD1, [ 4700] = 0x9E81,
++  [ 4701] = 0x904C, [ 4702] = 0x7B1F, [ 4703] = 0x9B02, [ 4704] = 0x5CD1,
++  [ 4705] = 0x7BA3, [ 4706] = 0x6268, [ 4707] = 0x6335, [ 4708] = 0x9AFF,
++  [ 4709] = 0x7BCF, [ 4710] = 0x9B2A, [ 4711] = 0x7C7E, [ 4713] = 0x7C42,
++  [ 4714] = 0x7C86, [ 4715] = 0x9C15, [ 4716] = 0x7BFC, [ 4717] = 0x9B09,
++  [ 4719] = 0x9C1B, [ 4720] = 0x2493E, [ 4721] = 0x9F5A, [ 4722] = 0x5573,
++  [ 4723] = 0x5BC3, [ 4724] = 0x4FFD, [ 4725] = 0x9E98, [ 4726] = 0x4FF2,
++  [ 4727] = 0x5260, [ 4728] = 0x3E06, [ 4729] = 0x52D1, [ 4730] = 0x5767,
++  [ 4731] = 0x5056, [ 4732] = 0x59B7, [ 4733] = 0x5E12, [ 4734] = 0x97C8,
++  [ 4735] = 0x9DAB, [ 4736] = 0x8F5C, [ 4737] = 0x5469, [ 4738] = 0x97B4,
++  [ 4739] = 0x9940, [ 4740] = 0x97BA, [ 4741] = 0x532C, [ 4742] = 0x6130,
++  [ 4777] = 0x692C, [ 4778] = 0x53DA, [ 4779] = 0x9C0A, [ 4780] = 0x9D02,
++  [ 4781] = 0x4C3B, [ 4782] = 0x9641, [ 4783] = 0x6980, [ 4784] = 0x50A6,
++  [ 4785] = 0x7546, [ 4786] = 0x2176D, [ 4787] = 0x99DA, [ 4788] = 0x5273,
++  [ 4790] = 0x9159, [ 4791] = 0x9681, [ 4792] = 0x915C, [ 4794] = 0x9151,
++  [ 4795] = 0x28E97, [ 4796] = 0x637F, [ 4797] = 0x26D23, [ 4798] = 0x6ACA,
++  [ 4799] = 0x5611, [ 4800] = 0x918E, [ 4801] = 0x757A, [ 4802] = 0x6285,
++  [ 4803] = 0x203FC, [ 4804] = 0x734F, [ 4805] = 0x7C70, [ 4806] = 0x25C21,
++  [ 4807] = 0x23CFD, [ 4809] = 0x24919, [ 4810] = 0x76D6, [ 4811] = 0x9B9D,
++  [ 4812] = 0x4E2A, [ 4813] = 0x20CD4, [ 4814] = 0x83BE, [ 4815] = 0x8842,
++  [ 4817] = 0x5C4A, [ 4818] = 0x69C0, [ 4820] = 0x577A, [ 4821] = 0x521F,
++  [ 4822] = 0x5DF5, [ 4823] = 0x4ECE, [ 4824] = 0x6C31, [ 4825] = 0x201F2,
++  [ 4826] = 0x4F39, [ 4827] = 0x549C, [ 4828] = 0x54DA, [ 4829] = 0x529A,
++  [ 4830] = 0x8D82, [ 4831] = 0x35FE, [ 4833] = 0x35F3, [ 4835] = 0x6B52,
++  [ 4836] = 0x917C, [ 4837] = 0x9FA5, [ 4838] = 0x9B97, [ 4839] = 0x982E,
++  [ 4840] = 0x98B4, [ 4841] = 0x9ABA, [ 4842] = 0x9EA8, [ 4843] = 0x9E84,
++  [ 4844] = 0x717A, [ 4845] = 0x7B14, [ 4847] = 0x6BFA, [ 4848] = 0x8818,
++  [ 4849] = 0x7F78, [ 4851] = 0x5620, [ 4852] = 0x2A64A, [ 4853] = 0x8E77,
++  [ 4854] = 0x9F53, [ 4856] = 0x8DD4, [ 4857] = 0x8E4F, [ 4858] = 0x9E1C,
++  [ 4859] = 0x8E01, [ 4860] = 0x6282, [ 4861] = 0x2837D, [ 4862] = 0x8E28,
++  [ 4863] = 0x8E75, [ 4864] = 0x7AD3, [ 4865] = 0x24A77, [ 4866] = 0x7A3E,
++  [ 4867] = 0x78D8, [ 4868] = 0x6CEA, [ 4869] = 0x8A67, [ 4870] = 0x7607,
++  [ 4875] = 0x28A5A, [ 4876] = 0x9F26, [ 4877] = 0x6CCE, [ 4878] = 0x87D6,
++  [ 4879] = 0x75C3, [ 4880] = 0x2A2B2, [ 4881] = 0x7853, [ 4882] = 0x2F840,
++  [ 4883] = 0x8D0C, [ 4884] = 0x72E2, [ 4885] = 0x7371, [ 4886] = 0x8B2D,
++  [ 4887] = 0x7302, [ 4888] = 0x74F1, [ 4889] = 0x8CEB, [ 4890] = 0x24ABB,
++  [ 4891] = 0x862F, [ 4892] = 0x5FBA, [ 4893] = 0x88A0, [ 4894] = 0x44B7,
++  [ 4896] = 0x2183B, [ 4897] = 0x26E05, [ 4899] = 0x8A7E, [ 4900] = 0x2251B,
++  [ 4902] = 0x60FD, [ 4903] = 0x7667, [ 4904] = 0x9AD7, [ 4905] = 0x9D44,
++  [ 4906] = 0x936E, [ 4907] = 0x9B8F, [ 4908] = 0x87F5, [ 4911] = 0x8CF7,
++  [ 4912] = 0x732C, [ 4913] = 0x9721, [ 4914] = 0x9BB0, [ 4915] = 0x35D6,
++  [ 4916] = 0x72B2, [ 4917] = 0x4C07, [ 4918] = 0x7C51, [ 4919] = 0x994A,
++  [ 4920] = 0x26159, [ 4921] = 0x6159, [ 4922] = 0x4C04, [ 4923] = 0x9E96,
++  [ 4924] = 0x617D, [ 4926] = 0x575F, [ 4927] = 0x616F, [ 4928] = 0x62A6,
++  [ 4929] = 0x6239, [ 4931] = 0x3A5C, [ 4932] = 0x61E2, [ 4933] = 0x53AA,
++  [ 4934] = 0x233F5, [ 4935] = 0x6364, [ 4936] = 0x6802, [ 4937] = 0x35D2,
++  [ 4972] = 0x5D57, [ 4973] = 0x28BC2, [ 4974] = 0x8FDA, [ 4975] = 0x28E39,
++  [ 4977] = 0x50D9, [ 4978] = 0x21D46, [ 4979] = 0x7906, [ 4980] = 0x5332,
++  [ 4981] = 0x9638, [ 4982] = 0x20F3B, [ 4983] = 0x4065, [ 4985] = 0x77FE,
++  [ 4987] = 0x7CC2, [ 4988] = 0x25F1A, [ 4989] = 0x7CDA, [ 4990] = 0x7A2D,
++  [ 4991] = 0x8066, [ 4992] = 0x8063, [ 4993] = 0x7D4D, [ 4994] = 0x7505,
++  [ 4995] = 0x74F2, [ 4996] = 0x8994, [ 4997] = 0x821A, [ 4998] = 0x670C,
++  [ 4999] = 0x8062, [ 5000] = 0x27486, [ 5001] = 0x805B, [ 5002] = 0x74F0,
++  [ 5003] = 0x8103, [ 5004] = 0x7724, [ 5005] = 0x8989, [ 5006] = 0x267CC,
++  [ 5007] = 0x7553, [ 5008] = 0x26ED1, [ 5009] = 0x87A9, [ 5010] = 0x87CE,
++  [ 5011] = 0x81C8, [ 5012] = 0x878C, [ 5013] = 0x8A49, [ 5014] = 0x8CAD,
++  [ 5015] = 0x8B43, [ 5016] = 0x772B, [ 5017] = 0x74F8, [ 5018] = 0x84DA,
++  [ 5019] = 0x3635, [ 5020] = 0x69B2, [ 5021] = 0x8DA6, [ 5023] = 0x89A9,
++  [ 5025] = 0x6DB9, [ 5026] = 0x87C1, [ 5027] = 0x24011, [ 5028] = 0x74E7,
++  [ 5029] = 0x3DDB, [ 5030] = 0x7176, [ 5031] = 0x60A4, [ 5032] = 0x619C,
++  [ 5033] = 0x3CD1, [ 5035] = 0x6077, [ 5037] = 0x7F71, [ 5038] = 0x28B2D,
++  [ 5040] = 0x60E9, [ 5041] = 0x4B7E, [ 5042] = 0x5220, [ 5043] = 0x3C18,
++  [ 5044] = 0x23CC7, [ 5045] = 0x25ED7, [ 5046] = 0x27656, [ 5047] = 0x25531,
++  [ 5048] = 0x21944, [ 5049] = 0x212FE, [ 5050] = 0x29903, [ 5051] = 0x26DDC,
++  [ 5052] = 0x270AD, [ 5053] = 0x5CC1, [ 5054] = 0x261AD, [ 5055] = 0x28A0F,
++  [ 5056] = 0x23677, [ 5057] = 0x200EE, [ 5058] = 0x26846, [ 5059] = 0x24F0E,
++  [ 5060] = 0x4562, [ 5061] = 0x5B1F, [ 5062] = 0x2634C, [ 5063] = 0x9F50,
++  [ 5064] = 0x9EA6, [ 5065] = 0x2626B, [ 5070] = 0x3000, [ 5071] = 0xFF0C,
++  [ 5072] = 0x3001, [ 5073] = 0x3002, [ 5074] = 0xFF0E, [ 5075] = 0x2022,
++  [ 5076] = 0xFF1B, [ 5077] = 0xFF1A, [ 5078] = 0xFF1F, [ 5079] = 0xFF01,
++  [ 5080] = 0xFE30, [ 5081] = 0x2026, [ 5082] = 0x2025, [ 5083] = 0xFE50,
++  [ 5084] = 0xFF64, [ 5085] = 0xFE52, [ 5086] = 0x00B7, [ 5087] = 0xFE54,
++  [ 5088] = 0xFE55, [ 5089] = 0xFE56, [ 5090] = 0xFE57, [ 5091] = 0xFF5C,
++  [ 5092] = 0x2013, [ 5093] = 0xFE31, [ 5094] = 0x2014, [ 5095] = 0xFE33,
++  [ 5097] = 0xFE34, [ 5098] = 0xFE4F, [ 5099] = 0xFF08, [ 5100] = 0xFF09,
++  [ 5101] = 0xFE35, [ 5102] = 0xFE36, [ 5103] = 0xFF5B, [ 5104] = 0xFF5D,
++  [ 5105] = 0xFE37, [ 5106] = 0xFE38, [ 5107] = 0x3014, [ 5108] = 0x3015,
++  [ 5109] = 0xFE39, [ 5110] = 0xFE3A, [ 5111] = 0x3010, [ 5112] = 0x3011,
++  [ 5113] = 0xFE3B, [ 5114] = 0xFE3C, [ 5115] = 0x300A, [ 5116] = 0x300B,
++  [ 5117] = 0xFE3D, [ 5118] = 0xFE3E, [ 5119] = 0x3008, [ 5120] = 0x3009,
++  [ 5121] = 0xFE3F, [ 5122] = 0xFE40, [ 5123] = 0x300C, [ 5124] = 0x300D,
++  [ 5125] = 0xFE41, [ 5126] = 0xFE42, [ 5127] = 0x300E, [ 5128] = 0x300F,
++  [ 5129] = 0xFE43, [ 5130] = 0xFE44, [ 5131] = 0xFE59, [ 5132] = 0xFE5A,
++  [ 5167] = 0xFE5B, [ 5168] = 0xFE5C, [ 5169] = 0xFE5D, [ 5170] = 0xFE5E,
++  [ 5171] = 0x2018, [ 5172] = 0x2019, [ 5173] = 0x201C, [ 5174] = 0x201D,
++  [ 5175] = 0x301D, [ 5176] = 0x301E, [ 5177] = 0x2035, [ 5178] = 0x2032,
++  [ 5179] = 0xFF03, [ 5180] = 0xFF06, [ 5181] = 0xFF0A, [ 5182] = 0x203B,
++  [ 5183] = 0x00A7, [ 5184] = 0x3003, [ 5185] = 0x25CB, [ 5186] = 0x25CF,
++  [ 5187] = 0x25B3, [ 5188] = 0x25B2, [ 5189] = 0x25CE, [ 5190] = 0x2606,
++  [ 5191] = 0x2605, [ 5192] = 0x25C7, [ 5193] = 0x25C6, [ 5194] = 0x25A1,
++  [ 5195] = 0x25A0, [ 5196] = 0x25BD, [ 5197] = 0x25BC, [ 5198] = 0x32A3,
++  [ 5199] = 0x2105, [ 5200] = 0x203E, [ 5202] = 0xFF3F, [ 5204] = 0xFE49,
++  [ 5205] = 0xFE4A, [ 5206] = 0xFE4D, [ 5207] = 0xFE4E, [ 5208] = 0xFE4B,
++  [ 5209] = 0xFE4C, [ 5210] = 0xFE5F, [ 5211] = 0xFE60, [ 5212] = 0xFE61,
++  [ 5213] = 0xFF0B, [ 5214] = 0xFF0D, [ 5215] = 0x00D7, [ 5216] = 0x00F7,
++  [ 5217] = 0x00B1, [ 5218] = 0x221A, [ 5219] = 0xFF1C, [ 5220] = 0xFF1E,
++  [ 5221] = 0xFF1D, [ 5222] = 0x2266, [ 5223] = 0x2267, [ 5224] = 0x2260,
++  [ 5225] = 0x221E, [ 5226] = 0x2252, [ 5227] = 0x2261, [ 5228] = 0xFE62,
++  [ 5229] = 0xFE63, [ 5230] = 0xFE64, [ 5231] = 0xFE65, [ 5232] = 0xFE66,
++  [ 5233] = 0x223C, [ 5234] = 0x2229, [ 5235] = 0x222A, [ 5236] = 0x22A5,
++  [ 5237] = 0x2220, [ 5238] = 0x221F, [ 5239] = 0x22BF, [ 5240] = 0x33D2,
++  [ 5241] = 0x33D1, [ 5242] = 0x222B, [ 5243] = 0x222E, [ 5244] = 0x2235,
++  [ 5245] = 0x2234, [ 5246] = 0x2640, [ 5247] = 0x2642, [ 5248] = 0x2641,
++  [ 5249] = 0x2609, [ 5250] = 0x2191, [ 5251] = 0x2193, [ 5252] = 0x2190,
++  [ 5253] = 0x2192, [ 5254] = 0x2196, [ 5255] = 0x2197, [ 5256] = 0x2199,
++  [ 5257] = 0x2198, [ 5258] = 0x2225, [ 5259] = 0x2223, [ 5266] = 0xFF0F,
++  [ 5267] = 0xFF3C, [ 5268] = 0xFF04, [ 5269] = 0x00A5, [ 5270] = 0x3012,
++  [ 5271] = 0x00A2, [ 5272] = 0x00A3, [ 5273] = 0xFF05, [ 5274] = 0xFF20,
++  [ 5275] = 0x2103, [ 5276] = 0x2109, [ 5277] = 0xFE69, [ 5278] = 0xFE6A,
++  [ 5279] = 0xFE6B, [ 5280] = 0x33D5, [ 5281] = 0x339C, [ 5282] = 0x339D,
++  [ 5283] = 0x339E, [ 5284] = 0x33CE, [ 5285] = 0x33A1, [ 5286] = 0x338E,
++  [ 5287] = 0x338F, [ 5288] = 0x33C4, [ 5289] = 0x00B0, [ 5290] = 0x5159,
++  [ 5291] = 0x515B, [ 5292] = 0x515E, [ 5293] = 0x515D, [ 5294] = 0x5161,
++  [ 5295] = 0x5163, [ 5296] = 0x55E7, [ 5297] = 0x74E9, [ 5298] = 0x7CCE,
++  [ 5299] = 0x2581, [ 5300] = 0x2582, [ 5301] = 0x2583, [ 5302] = 0x2584,
++  [ 5303] = 0x2585, [ 5304] = 0x2586, [ 5305] = 0x2587, [ 5306] = 0x2588,
++  [ 5307] = 0x258F, [ 5308] = 0x258E, [ 5309] = 0x258D, [ 5310] = 0x258C,
++  [ 5311] = 0x258B, [ 5312] = 0x258A, [ 5313] = 0x2589, [ 5314] = 0x253C,
++  [ 5315] = 0x2534, [ 5316] = 0x252C, [ 5317] = 0x2524, [ 5318] = 0x251C,
++  [ 5319] = 0x2594, [ 5320] = 0x2500, [ 5321] = 0x2502, [ 5322] = 0x2595,
++  [ 5323] = 0x250C, [ 5324] = 0x2510, [ 5325] = 0x2514, [ 5326] = 0x2518,
++  [ 5327] = 0x256D, [ 5362] = 0x256E, [ 5363] = 0x2570, [ 5364] = 0x256F,
++  [ 5365] = 0x2550, [ 5366] = 0x255E, [ 5367] = 0x256A, [ 5368] = 0x2561,
++  [ 5369] = 0x25E2, [ 5370] = 0x25E3, [ 5371] = 0x25E5, [ 5372] = 0x25E4,
++  [ 5373] = 0x2571, [ 5374] = 0x2572, [ 5375] = 0x2573, [ 5376] = 0xFF10,
++  [ 5377] = 0xFF11, [ 5378] = 0xFF12, [ 5379] = 0xFF13, [ 5380] = 0xFF14,
++  [ 5381] = 0xFF15, [ 5382] = 0xFF16, [ 5383] = 0xFF17, [ 5384] = 0xFF18,
++  [ 5385] = 0xFF19, [ 5386] = 0x2160, [ 5387] = 0x2161, [ 5388] = 0x2162,
++  [ 5389] = 0x2163, [ 5390] = 0x2164, [ 5391] = 0x2165, [ 5392] = 0x2166,
++  [ 5393] = 0x2167, [ 5394] = 0x2168, [ 5395] = 0x2169, [ 5396] = 0x3021,
++  [ 5397] = 0x3022, [ 5398] = 0x3023, [ 5399] = 0x3024, [ 5400] = 0x3025,
++  [ 5401] = 0x3026, [ 5402] = 0x3027, [ 5403] = 0x3028, [ 5404] = 0x3029,
++  [ 5406] = 0x5344, [ 5408] = 0xFF21, [ 5409] = 0xFF22, [ 5410] = 0xFF23,
++  [ 5411] = 0xFF24, [ 5412] = 0xFF25, [ 5413] = 0xFF26, [ 5414] = 0xFF27,
++  [ 5415] = 0xFF28, [ 5416] = 0xFF29, [ 5417] = 0xFF2A, [ 5418] = 0xFF2B,
++  [ 5419] = 0xFF2C, [ 5420] = 0xFF2D, [ 5421] = 0xFF2E, [ 5422] = 0xFF2F,
++  [ 5423] = 0xFF30, [ 5424] = 0xFF31, [ 5425] = 0xFF32, [ 5426] = 0xFF33,
++  [ 5427] = 0xFF34, [ 5428] = 0xFF35, [ 5429] = 0xFF36, [ 5430] = 0xFF37,
++  [ 5431] = 0xFF38, [ 5432] = 0xFF39, [ 5433] = 0xFF3A, [ 5434] = 0xFF41,
++  [ 5435] = 0xFF42, [ 5436] = 0xFF43, [ 5437] = 0xFF44, [ 5438] = 0xFF45,
++  [ 5439] = 0xFF46, [ 5440] = 0xFF47, [ 5441] = 0xFF48, [ 5442] = 0xFF49,
++  [ 5443] = 0xFF4A, [ 5444] = 0xFF4B, [ 5445] = 0xFF4C, [ 5446] = 0xFF4D,
++  [ 5447] = 0xFF4E, [ 5448] = 0xFF4F, [ 5449] = 0xFF50, [ 5450] = 0xFF51,
++  [ 5451] = 0xFF52, [ 5452] = 0xFF53, [ 5453] = 0xFF54, [ 5454] = 0xFF55,
++  [ 5455] = 0xFF56, [ 5460] = 0xFF57, [ 5461] = 0xFF58, [ 5462] = 0xFF59,
++  [ 5463] = 0xFF5A, [ 5464] = 0x0391, [ 5465] = 0x0392, [ 5466] = 0x0393,
++  [ 5467] = 0x0394, [ 5468] = 0x0395, [ 5469] = 0x0396, [ 5470] = 0x0397,
++  [ 5471] = 0x0398, [ 5472] = 0x0399, [ 5473] = 0x039A, [ 5474] = 0x039B,
++  [ 5475] = 0x039C, [ 5476] = 0x039D, [ 5477] = 0x039E, [ 5478] = 0x039F,
++  [ 5479] = 0x03A0, [ 5480] = 0x03A1, [ 5481] = 0x03A3, [ 5482] = 0x03A4,
++  [ 5483] = 0x03A5, [ 5484] = 0x03A6, [ 5485] = 0x03A7, [ 5486] = 0x03A8,
++  [ 5487] = 0x03A9, [ 5488] = 0x03B1, [ 5489] = 0x03B2, [ 5490] = 0x03B3,
++  [ 5491] = 0x03B4, [ 5492] = 0x03B5, [ 5493] = 0x03B6, [ 5494] = 0x03B7,
++  [ 5495] = 0x03B8, [ 5496] = 0x03B9, [ 5497] = 0x03BA, [ 5498] = 0x03BB,
++  [ 5499] = 0x03BC, [ 5500] = 0x03BD, [ 5501] = 0x03BE, [ 5502] = 0x03BF,
++  [ 5503] = 0x03C0, [ 5504] = 0x03C1, [ 5505] = 0x03C3, [ 5506] = 0x03C4,
++  [ 5507] = 0x03C5, [ 5508] = 0x03C6, [ 5509] = 0x03C7, [ 5510] = 0x03C8,
++  [ 5511] = 0x03C9, [ 5512] = 0x3105, [ 5513] = 0x3106, [ 5514] = 0x3107,
++  [ 5515] = 0x3108, [ 5516] = 0x3109, [ 5517] = 0x310A, [ 5518] = 0x310B,
++  [ 5519] = 0x310C, [ 5520] = 0x310D, [ 5521] = 0x310E, [ 5522] = 0x310F,
++  [ 5557] = 0x3110, [ 5558] = 0x3111, [ 5559] = 0x3112, [ 5560] = 0x3113,
++  [ 5561] = 0x3114, [ 5562] = 0x3115, [ 5563] = 0x3116, [ 5564] = 0x3117,
++  [ 5565] = 0x3118, [ 5566] = 0x3119, [ 5567] = 0x311A, [ 5568] = 0x311B,
++  [ 5569] = 0x311C, [ 5570] = 0x311D, [ 5571] = 0x311E, [ 5572] = 0x311F,
++  [ 5573] = 0x3120, [ 5574] = 0x3121, [ 5575] = 0x3122, [ 5576] = 0x3123,
++  [ 5577] = 0x3124, [ 5578] = 0x3125, [ 5579] = 0x3126, [ 5580] = 0x3127,
++  [ 5581] = 0x3128, [ 5582] = 0x3129, [ 5583] = 0x02D9, [ 5584] = 0x02C9,
++  [ 5585] = 0x02CA, [ 5586] = 0x02C7, [ 5587] = 0x02CB, [ 5655] = 0x4E00,
++  [ 5656] = 0x4E59, [ 5657] = 0x4E01, [ 5658] = 0x4E03, [ 5659] = 0x4E43,
++  [ 5660] = 0x4E5D, [ 5661] = 0x4E86, [ 5662] = 0x4E8C, [ 5663] = 0x4EBA,
++  [ 5664] = 0x513F, [ 5665] = 0x5165, [ 5666] = 0x516B, [ 5667] = 0x51E0,
++  [ 5668] = 0x5200, [ 5669] = 0x5201, [ 5670] = 0x529B, [ 5671] = 0x5315,
++  [ 5672] = 0x5341, [ 5673] = 0x535C, [ 5674] = 0x53C8, [ 5675] = 0x4E09,
++  [ 5676] = 0x4E0B, [ 5677] = 0x4E08, [ 5678] = 0x4E0A, [ 5679] = 0x4E2B,
++  [ 5680] = 0x4E38, [ 5681] = 0x51E1, [ 5682] = 0x4E45, [ 5683] = 0x4E48,
++  [ 5684] = 0x4E5F, [ 5685] = 0x4E5E, [ 5686] = 0x4E8E, [ 5687] = 0x4EA1,
++  [ 5688] = 0x5140, [ 5689] = 0x5203, [ 5690] = 0x52FA, [ 5691] = 0x5343,
++  [ 5692] = 0x53C9, [ 5693] = 0x53E3, [ 5694] = 0x571F, [ 5695] = 0x58EB,
++  [ 5696] = 0x5915, [ 5697] = 0x5927, [ 5698] = 0x5973, [ 5699] = 0x5B50,
++  [ 5700] = 0x5B51, [ 5701] = 0x5B53, [ 5702] = 0x5BF8, [ 5703] = 0x5C0F,
++  [ 5704] = 0x5C22, [ 5705] = 0x5C38, [ 5706] = 0x5C71, [ 5707] = 0x5DDD,
++  [ 5708] = 0x5DE5, [ 5709] = 0x5DF1, [ 5710] = 0x5DF2, [ 5711] = 0x5DF3,
++  [ 5712] = 0x5DFE, [ 5713] = 0x5E72, [ 5714] = 0x5EFE, [ 5715] = 0x5F0B,
++  [ 5716] = 0x5F13, [ 5717] = 0x624D, [ 5752] = 0x4E11, [ 5753] = 0x4E10,
++  [ 5754] = 0x4E0D, [ 5755] = 0x4E2D, [ 5756] = 0x4E30, [ 5757] = 0x4E39,
++  [ 5758] = 0x4E4B, [ 5759] = 0x5C39, [ 5760] = 0x4E88, [ 5761] = 0x4E91,
++  [ 5762] = 0x4E95, [ 5763] = 0x4E92, [ 5764] = 0x4E94, [ 5765] = 0x4EA2,
++  [ 5766] = 0x4EC1, [ 5767] = 0x4EC0, [ 5768] = 0x4EC3, [ 5769] = 0x4EC6,
++  [ 5770] = 0x4EC7, [ 5771] = 0x4ECD, [ 5772] = 0x4ECA, [ 5773] = 0x4ECB,
++  [ 5774] = 0x4EC4, [ 5775] = 0x5143, [ 5776] = 0x5141, [ 5777] = 0x5167,
++  [ 5778] = 0x516D, [ 5779] = 0x516E, [ 5780] = 0x516C, [ 5781] = 0x5197,
++  [ 5782] = 0x51F6, [ 5783] = 0x5206, [ 5784] = 0x5207, [ 5785] = 0x5208,
++  [ 5786] = 0x52FB, [ 5787] = 0x52FE, [ 5788] = 0x52FF, [ 5789] = 0x5316,
++  [ 5790] = 0x5339, [ 5791] = 0x5348, [ 5792] = 0x5347, [ 5793] = 0x5345,
++  [ 5794] = 0x535E, [ 5795] = 0x5384, [ 5796] = 0x53CB, [ 5797] = 0x53CA,
++  [ 5798] = 0x53CD, [ 5799] = 0x58EC, [ 5800] = 0x5929, [ 5801] = 0x592B,
++  [ 5802] = 0x592A, [ 5803] = 0x592D, [ 5804] = 0x5B54, [ 5805] = 0x5C11,
++  [ 5806] = 0x5C24, [ 5807] = 0x5C3A, [ 5808] = 0x5C6F, [ 5809] = 0x5DF4,
++  [ 5810] = 0x5E7B, [ 5811] = 0x5EFF, [ 5812] = 0x5F14, [ 5813] = 0x5F15,
++  [ 5814] = 0x5FC3, [ 5815] = 0x6208, [ 5816] = 0x6236, [ 5817] = 0x624B,
++  [ 5818] = 0x624E, [ 5819] = 0x652F, [ 5820] = 0x6587, [ 5821] = 0x6597,
++  [ 5822] = 0x65A4, [ 5823] = 0x65B9, [ 5824] = 0x65E5, [ 5825] = 0x66F0,
++  [ 5826] = 0x6708, [ 5827] = 0x6728, [ 5828] = 0x6B20, [ 5829] = 0x6B62,
++  [ 5830] = 0x6B79, [ 5831] = 0x6BCB, [ 5832] = 0x6BD4, [ 5833] = 0x6BDB,
++  [ 5834] = 0x6C0F, [ 5835] = 0x6C34, [ 5836] = 0x706B, [ 5837] = 0x722A,
++  [ 5838] = 0x7236, [ 5839] = 0x723B, [ 5840] = 0x7247, [ 5841] = 0x7259,
++  [ 5842] = 0x725B, [ 5843] = 0x72AC, [ 5844] = 0x738B, [ 5845] = 0x4E19,
++  [ 5850] = 0x4E16, [ 5851] = 0x4E15, [ 5852] = 0x4E14, [ 5853] = 0x4E18,
++  [ 5854] = 0x4E3B, [ 5855] = 0x4E4D, [ 5856] = 0x4E4F, [ 5857] = 0x4E4E,
++  [ 5858] = 0x4EE5, [ 5859] = 0x4ED8, [ 5860] = 0x4ED4, [ 5861] = 0x4ED5,
++  [ 5862] = 0x4ED6, [ 5863] = 0x4ED7, [ 5864] = 0x4EE3, [ 5865] = 0x4EE4,
++  [ 5866] = 0x4ED9, [ 5867] = 0x4EDE, [ 5868] = 0x5145, [ 5869] = 0x5144,
++  [ 5870] = 0x5189, [ 5871] = 0x518A, [ 5872] = 0x51AC, [ 5873] = 0x51F9,
++  [ 5874] = 0x51FA, [ 5875] = 0x51F8, [ 5876] = 0x520A, [ 5877] = 0x52A0,
++  [ 5878] = 0x529F, [ 5879] = 0x5305, [ 5880] = 0x5306, [ 5881] = 0x5317,
++  [ 5882] = 0x531D, [ 5883] = 0x4EDF, [ 5884] = 0x534A, [ 5885] = 0x5349,
++  [ 5886] = 0x5361, [ 5887] = 0x5360, [ 5888] = 0x536F, [ 5889] = 0x536E,
++  [ 5890] = 0x53BB, [ 5891] = 0x53EF, [ 5892] = 0x53E4, [ 5893] = 0x53F3,
++  [ 5894] = 0x53EC, [ 5895] = 0x53EE, [ 5896] = 0x53E9, [ 5897] = 0x53E8,
++  [ 5898] = 0x53FC, [ 5899] = 0x53F8, [ 5900] = 0x53F5, [ 5901] = 0x53EB,
++  [ 5902] = 0x53E6, [ 5903] = 0x53EA, [ 5904] = 0x53F2, [ 5905] = 0x53F1,
++  [ 5906] = 0x53F0, [ 5907] = 0x53E5, [ 5908] = 0x53ED, [ 5909] = 0x53FB,
++  [ 5910] = 0x56DB, [ 5911] = 0x56DA, [ 5912] = 0x5916, [ 5947] = 0x592E,
++  [ 5948] = 0x5931, [ 5949] = 0x5974, [ 5950] = 0x5976, [ 5951] = 0x5B55,
++  [ 5952] = 0x5B83, [ 5953] = 0x5C3C, [ 5954] = 0x5DE8, [ 5955] = 0x5DE7,
++  [ 5956] = 0x5DE6, [ 5957] = 0x5E02, [ 5958] = 0x5E03, [ 5959] = 0x5E73,
++  [ 5960] = 0x5E7C, [ 5961] = 0x5F01, [ 5962] = 0x5F18, [ 5963] = 0x5F17,
++  [ 5964] = 0x5FC5, [ 5965] = 0x620A, [ 5966] = 0x6253, [ 5967] = 0x6254,
++  [ 5968] = 0x6252, [ 5969] = 0x6251, [ 5970] = 0x65A5, [ 5971] = 0x65E6,
++  [ 5972] = 0x672E, [ 5973] = 0x672C, [ 5974] = 0x672A, [ 5975] = 0x672B,
++  [ 5976] = 0x672D, [ 5977] = 0x6B63, [ 5978] = 0x6BCD, [ 5979] = 0x6C11,
++  [ 5980] = 0x6C10, [ 5981] = 0x6C38, [ 5982] = 0x6C41, [ 5983] = 0x6C40,
++  [ 5984] = 0x6C3E, [ 5985] = 0x72AF, [ 5986] = 0x7384, [ 5987] = 0x7389,
++  [ 5988] = 0x74DC, [ 5989] = 0x74E6, [ 5990] = 0x7518, [ 5991] = 0x751F,
++  [ 5992] = 0x7528, [ 5993] = 0x7529, [ 5994] = 0x7530, [ 5995] = 0x7531,
++  [ 5996] = 0x7532, [ 5997] = 0x7533, [ 5998] = 0x758B, [ 5999] = 0x767D,
++  [ 6000] = 0x76AE, [ 6001] = 0x76BF, [ 6002] = 0x76EE, [ 6003] = 0x77DB,
++  [ 6004] = 0x77E2, [ 6005] = 0x77F3, [ 6006] = 0x793A, [ 6007] = 0x79BE,
++  [ 6008] = 0x7A74, [ 6009] = 0x7ACB, [ 6010] = 0x4E1E, [ 6011] = 0x4E1F,
++  [ 6012] = 0x4E52, [ 6013] = 0x4E53, [ 6014] = 0x4E69, [ 6015] = 0x4E99,
++  [ 6016] = 0x4EA4, [ 6017] = 0x4EA6, [ 6018] = 0x4EA5, [ 6019] = 0x4EFF,
++  [ 6020] = 0x4F09, [ 6021] = 0x4F19, [ 6022] = 0x4F0A, [ 6023] = 0x4F15,
++  [ 6024] = 0x4F0D, [ 6025] = 0x4F10, [ 6026] = 0x4F11, [ 6027] = 0x4F0F,
++  [ 6028] = 0x4EF2, [ 6029] = 0x4EF6, [ 6030] = 0x4EFB, [ 6031] = 0x4EF0,
++  [ 6032] = 0x4EF3, [ 6033] = 0x4EFD, [ 6034] = 0x4F01, [ 6035] = 0x4F0B,
++  [ 6036] = 0x5149, [ 6037] = 0x5147, [ 6038] = 0x5146, [ 6039] = 0x5148,
++  [ 6040] = 0x5168, [ 6045] = 0x5171, [ 6046] = 0x518D, [ 6047] = 0x51B0,
++  [ 6048] = 0x5217, [ 6049] = 0x5211, [ 6050] = 0x5212, [ 6051] = 0x520E,
++  [ 6052] = 0x5216, [ 6053] = 0x52A3, [ 6054] = 0x5308, [ 6055] = 0x5321,
++  [ 6056] = 0x5320, [ 6057] = 0x5370, [ 6058] = 0x5371, [ 6059] = 0x5409,
++  [ 6060] = 0x540F, [ 6061] = 0x540C, [ 6062] = 0x540A, [ 6063] = 0x5410,
++  [ 6064] = 0x5401, [ 6065] = 0x540B, [ 6066] = 0x5404, [ 6067] = 0x5411,
++  [ 6068] = 0x540D, [ 6069] = 0x5408, [ 6070] = 0x5403, [ 6071] = 0x540E,
++  [ 6072] = 0x5406, [ 6073] = 0x5412, [ 6074] = 0x56E0, [ 6075] = 0x56DE,
++  [ 6076] = 0x56DD, [ 6077] = 0x5733, [ 6078] = 0x5730, [ 6079] = 0x5728,
++  [ 6080] = 0x572D, [ 6081] = 0x572C, [ 6082] = 0x572F, [ 6083] = 0x5729,
++  [ 6084] = 0x5919, [ 6085] = 0x591A, [ 6086] = 0x5937, [ 6087] = 0x5938,
++  [ 6088] = 0x5984, [ 6089] = 0x5978, [ 6090] = 0x5983, [ 6091] = 0x597D,
++  [ 6092] = 0x5979, [ 6093] = 0x5982, [ 6094] = 0x5981, [ 6095] = 0x5B57,
++  [ 6096] = 0x5B58, [ 6097] = 0x5B87, [ 6098] = 0x5B88, [ 6099] = 0x5B85,
++  [ 6100] = 0x5B89, [ 6101] = 0x5BFA, [ 6102] = 0x5C16, [ 6103] = 0x5C79,
++  [ 6104] = 0x5DDE, [ 6105] = 0x5E06, [ 6106] = 0x5E76, [ 6107] = 0x5E74,
++  [ 6142] = 0x5F0F, [ 6143] = 0x5F1B, [ 6144] = 0x5FD9, [ 6145] = 0x5FD6,
++  [ 6146] = 0x620E, [ 6147] = 0x620C, [ 6148] = 0x620D, [ 6149] = 0x6210,
++  [ 6150] = 0x6263, [ 6151] = 0x625B, [ 6152] = 0x6258, [ 6153] = 0x6536,
++  [ 6154] = 0x65E9, [ 6155] = 0x65E8, [ 6156] = 0x65EC, [ 6157] = 0x65ED,
++  [ 6158] = 0x66F2, [ 6159] = 0x66F3, [ 6160] = 0x6709, [ 6161] = 0x673D,
++  [ 6162] = 0x6734, [ 6163] = 0x6731, [ 6164] = 0x6735, [ 6165] = 0x6B21,
++  [ 6166] = 0x6B64, [ 6167] = 0x6B7B, [ 6168] = 0x6C16, [ 6169] = 0x6C5D,
++  [ 6170] = 0x6C57, [ 6171] = 0x6C59, [ 6172] = 0x6C5F, [ 6173] = 0x6C60,
++  [ 6174] = 0x6C50, [ 6175] = 0x6C55, [ 6176] = 0x6C61, [ 6177] = 0x6C5B,
++  [ 6178] = 0x6C4D, [ 6179] = 0x6C4E, [ 6180] = 0x7070, [ 6181] = 0x725F,
++  [ 6182] = 0x725D, [ 6183] = 0x767E, [ 6184] = 0x7AF9, [ 6185] = 0x7C73,
++  [ 6186] = 0x7CF8, [ 6187] = 0x7F36, [ 6188] = 0x7F8A, [ 6189] = 0x7FBD,
++  [ 6190] = 0x8001, [ 6191] = 0x8003, [ 6192] = 0x800C, [ 6193] = 0x8012,
++  [ 6194] = 0x8033, [ 6195] = 0x807F, [ 6196] = 0x8089, [ 6197] = 0x808B,
++  [ 6198] = 0x808C, [ 6199] = 0x81E3, [ 6200] = 0x81EA, [ 6201] = 0x81F3,
++  [ 6202] = 0x81FC, [ 6203] = 0x820C, [ 6204] = 0x821B, [ 6205] = 0x821F,
++  [ 6206] = 0x826E, [ 6207] = 0x8272, [ 6208] = 0x827E, [ 6209] = 0x866B,
++  [ 6210] = 0x8840, [ 6211] = 0x884C, [ 6212] = 0x8863, [ 6213] = 0x897F,
++  [ 6214] = 0x9621, [ 6215] = 0x4E32, [ 6216] = 0x4EA8, [ 6217] = 0x4F4D,
++  [ 6218] = 0x4F4F, [ 6219] = 0x4F47, [ 6220] = 0x4F57, [ 6221] = 0x4F5E,
++  [ 6222] = 0x4F34, [ 6223] = 0x4F5B, [ 6224] = 0x4F55, [ 6225] = 0x4F30,
++  [ 6226] = 0x4F50, [ 6227] = 0x4F51, [ 6228] = 0x4F3D, [ 6229] = 0x4F3A,
++  [ 6230] = 0x4F38, [ 6231] = 0x4F43, [ 6232] = 0x4F54, [ 6233] = 0x4F3C,
++  [ 6234] = 0x4F46, [ 6235] = 0x4F63, [ 6240] = 0x4F5C, [ 6241] = 0x4F60,
++  [ 6242] = 0x4F2F, [ 6243] = 0x4F4E, [ 6244] = 0x4F36, [ 6245] = 0x4F59,
++  [ 6246] = 0x4F5D, [ 6247] = 0x4F48, [ 6248] = 0x4F5A, [ 6249] = 0x514C,
++  [ 6250] = 0x514B, [ 6251] = 0x514D, [ 6252] = 0x5175, [ 6253] = 0x51B6,
++  [ 6254] = 0x51B7, [ 6255] = 0x5225, [ 6256] = 0x5224, [ 6257] = 0x5229,
++  [ 6258] = 0x522A, [ 6259] = 0x5228, [ 6260] = 0x52AB, [ 6261] = 0x52A9,
++  [ 6262] = 0x52AA, [ 6263] = 0x52AC, [ 6264] = 0x5323, [ 6265] = 0x5373,
++  [ 6266] = 0x5375, [ 6267] = 0x541D, [ 6268] = 0x542D, [ 6269] = 0x541E,
++  [ 6270] = 0x543E, [ 6271] = 0x5426, [ 6272] = 0x544E, [ 6273] = 0x5427,
++  [ 6274] = 0x5446, [ 6275] = 0x5443, [ 6276] = 0x5433, [ 6277] = 0x5448,
++  [ 6278] = 0x5442, [ 6279] = 0x541B, [ 6280] = 0x5429, [ 6281] = 0x544A,
++  [ 6282] = 0x5439, [ 6283] = 0x543B, [ 6284] = 0x5438, [ 6285] = 0x542E,
++  [ 6286] = 0x5435, [ 6287] = 0x5436, [ 6288] = 0x5420, [ 6289] = 0x543C,
++  [ 6290] = 0x5440, [ 6291] = 0x5431, [ 6292] = 0x542B, [ 6293] = 0x541F,
++  [ 6294] = 0x542C, [ 6295] = 0x56EA, [ 6296] = 0x56F0, [ 6297] = 0x56E4,
++  [ 6298] = 0x56EB, [ 6299] = 0x574A, [ 6300] = 0x5751, [ 6301] = 0x5740,
++  [ 6302] = 0x574D, [ 6337] = 0x5747, [ 6338] = 0x574E, [ 6339] = 0x573E,
++  [ 6340] = 0x5750, [ 6341] = 0x574F, [ 6342] = 0x573B, [ 6343] = 0x58EF,
++  [ 6344] = 0x593E, [ 6345] = 0x599D, [ 6346] = 0x5992, [ 6347] = 0x59A8,
++  [ 6348] = 0x599E, [ 6349] = 0x59A3, [ 6350] = 0x5999, [ 6351] = 0x5996,
++  [ 6352] = 0x598D, [ 6353] = 0x59A4, [ 6354] = 0x5993, [ 6355] = 0x598A,
++  [ 6356] = 0x59A5, [ 6357] = 0x5B5D, [ 6358] = 0x5B5C, [ 6359] = 0x5B5A,
++  [ 6360] = 0x5B5B, [ 6361] = 0x5B8C, [ 6362] = 0x5B8B, [ 6363] = 0x5B8F,
++  [ 6364] = 0x5C2C, [ 6365] = 0x5C40, [ 6366] = 0x5C41, [ 6367] = 0x5C3F,
++  [ 6368] = 0x5C3E, [ 6369] = 0x5C90, [ 6370] = 0x5C91, [ 6371] = 0x5C94,
++  [ 6372] = 0x5C8C, [ 6373] = 0x5DEB, [ 6374] = 0x5E0C, [ 6375] = 0x5E8F,
++  [ 6376] = 0x5E87, [ 6377] = 0x5E8A, [ 6378] = 0x5EF7, [ 6379] = 0x5F04,
++  [ 6380] = 0x5F1F, [ 6381] = 0x5F64, [ 6382] = 0x5F62, [ 6383] = 0x5F77,
++  [ 6384] = 0x5F79, [ 6385] = 0x5FD8, [ 6386] = 0x5FCC, [ 6387] = 0x5FD7,
++  [ 6388] = 0x5FCD, [ 6389] = 0x5FF1, [ 6390] = 0x5FEB, [ 6391] = 0x5FF8,
++  [ 6392] = 0x5FEA, [ 6393] = 0x6212, [ 6394] = 0x6211, [ 6395] = 0x6284,
++  [ 6396] = 0x6297, [ 6397] = 0x6296, [ 6398] = 0x6280, [ 6399] = 0x6276,
++  [ 6400] = 0x6289, [ 6401] = 0x626D, [ 6402] = 0x628A, [ 6403] = 0x627C,
++  [ 6404] = 0x627E, [ 6405] = 0x6279, [ 6406] = 0x6273, [ 6407] = 0x6292,
++  [ 6408] = 0x626F, [ 6409] = 0x6298, [ 6410] = 0x626E, [ 6411] = 0x6295,
++  [ 6412] = 0x6293, [ 6413] = 0x6291, [ 6414] = 0x6286, [ 6415] = 0x6539,
++  [ 6416] = 0x653B, [ 6417] = 0x6538, [ 6418] = 0x65F1, [ 6419] = 0x66F4,
++  [ 6420] = 0x675F, [ 6421] = 0x674E, [ 6422] = 0x674F, [ 6423] = 0x6750,
++  [ 6424] = 0x6751, [ 6425] = 0x675C, [ 6426] = 0x6756, [ 6427] = 0x675E,
++  [ 6428] = 0x6749, [ 6429] = 0x6746, [ 6430] = 0x6760, [ 6435] = 0x6753,
++  [ 6436] = 0x6757, [ 6437] = 0x6B65, [ 6438] = 0x6BCF, [ 6439] = 0x6C42,
++  [ 6440] = 0x6C5E, [ 6441] = 0x6C99, [ 6442] = 0x6C81, [ 6443] = 0x6C88,
++  [ 6444] = 0x6C89, [ 6445] = 0x6C85, [ 6446] = 0x6C9B, [ 6447] = 0x6C6A,
++  [ 6448] = 0x6C7A, [ 6449] = 0x6C90, [ 6450] = 0x6C70, [ 6451] = 0x6C8C,
++  [ 6452] = 0x6C68, [ 6453] = 0x6C96, [ 6454] = 0x6C92, [ 6455] = 0x6C7D,
++  [ 6456] = 0x6C83, [ 6457] = 0x6C72, [ 6458] = 0x6C7E, [ 6459] = 0x6C74,
++  [ 6460] = 0x6C86, [ 6461] = 0x6C76, [ 6462] = 0x6C8D, [ 6463] = 0x6C94,
++  [ 6464] = 0x6C98, [ 6465] = 0x6C82, [ 6466] = 0x7076, [ 6467] = 0x707C,
++  [ 6468] = 0x707D, [ 6469] = 0x7078, [ 6470] = 0x7262, [ 6471] = 0x7261,
++  [ 6472] = 0x7260, [ 6473] = 0x72C4, [ 6474] = 0x72C2, [ 6475] = 0x7396,
++  [ 6476] = 0x752C, [ 6477] = 0x752B, [ 6478] = 0x7537, [ 6479] = 0x7538,
++  [ 6480] = 0x7682, [ 6481] = 0x76EF, [ 6482] = 0x77E3, [ 6483] = 0x79C1,
++  [ 6484] = 0x79C0, [ 6485] = 0x79BF, [ 6486] = 0x7A76, [ 6487] = 0x7CFB,
++  [ 6488] = 0x7F55, [ 6489] = 0x8096, [ 6490] = 0x8093, [ 6491] = 0x809D,
++  [ 6492] = 0x8098, [ 6493] = 0x809B, [ 6494] = 0x809A, [ 6495] = 0x80B2,
++  [ 6496] = 0x826F, [ 6497] = 0x8292, [ 6532] = 0x828B, [ 6533] = 0x828D,
++  [ 6534] = 0x898B, [ 6535] = 0x89D2, [ 6536] = 0x8A00, [ 6537] = 0x8C37,
++  [ 6538] = 0x8C46, [ 6539] = 0x8C55, [ 6540] = 0x8C9D, [ 6541] = 0x8D64,
++  [ 6542] = 0x8D70, [ 6543] = 0x8DB3, [ 6544] = 0x8EAB, [ 6545] = 0x8ECA,
++  [ 6546] = 0x8F9B, [ 6547] = 0x8FB0, [ 6548] = 0x8FC2, [ 6549] = 0x8FC6,
++  [ 6550] = 0x8FC5, [ 6551] = 0x8FC4, [ 6552] = 0x5DE1, [ 6553] = 0x9091,
++  [ 6554] = 0x90A2, [ 6555] = 0x90AA, [ 6556] = 0x90A6, [ 6557] = 0x90A3,
++  [ 6558] = 0x9149, [ 6559] = 0x91C6, [ 6560] = 0x91CC, [ 6561] = 0x9632,
++  [ 6562] = 0x962E, [ 6563] = 0x9631, [ 6564] = 0x962A, [ 6565] = 0x962C,
++  [ 6566] = 0x4E26, [ 6567] = 0x4E56, [ 6568] = 0x4E73, [ 6569] = 0x4E8B,
++  [ 6570] = 0x4E9B, [ 6571] = 0x4E9E, [ 6572] = 0x4EAB, [ 6573] = 0x4EAC,
++  [ 6574] = 0x4F6F, [ 6575] = 0x4F9D, [ 6576] = 0x4F8D, [ 6577] = 0x4F73,
++  [ 6578] = 0x4F7F, [ 6579] = 0x4F6C, [ 6580] = 0x4F9B, [ 6581] = 0x4F8B,
++  [ 6582] = 0x4F86, [ 6583] = 0x4F83, [ 6584] = 0x4F70, [ 6585] = 0x4F75,
++  [ 6586] = 0x4F88, [ 6587] = 0x4F69, [ 6588] = 0x4F7B, [ 6589] = 0x4F96,
++  [ 6590] = 0x4F7E, [ 6591] = 0x4F8F, [ 6592] = 0x4F91, [ 6593] = 0x4F7A,
++  [ 6594] = 0x5154, [ 6595] = 0x5152, [ 6596] = 0x5155, [ 6597] = 0x5169,
++  [ 6598] = 0x5177, [ 6599] = 0x5176, [ 6600] = 0x5178, [ 6601] = 0x51BD,
++  [ 6602] = 0x51FD, [ 6603] = 0x523B, [ 6604] = 0x5238, [ 6605] = 0x5237,
++  [ 6606] = 0x523A, [ 6607] = 0x5230, [ 6608] = 0x522E, [ 6609] = 0x5236,
++  [ 6610] = 0x5241, [ 6611] = 0x52BE, [ 6612] = 0x52BB, [ 6613] = 0x5352,
++  [ 6614] = 0x5354, [ 6615] = 0x5353, [ 6616] = 0x5351, [ 6617] = 0x5366,
++  [ 6618] = 0x5377, [ 6619] = 0x5378, [ 6620] = 0x5379, [ 6621] = 0x53D6,
++  [ 6622] = 0x53D4, [ 6623] = 0x53D7, [ 6624] = 0x5473, [ 6625] = 0x5475,
++  [ 6630] = 0x5496, [ 6631] = 0x5478, [ 6632] = 0x5495, [ 6633] = 0x5480,
++  [ 6634] = 0x547B, [ 6635] = 0x5477, [ 6636] = 0x5484, [ 6637] = 0x5492,
++  [ 6638] = 0x5486, [ 6639] = 0x547C, [ 6640] = 0x5490, [ 6641] = 0x5471,
++  [ 6642] = 0x5476, [ 6643] = 0x548C, [ 6644] = 0x549A, [ 6645] = 0x5462,
++  [ 6646] = 0x5468, [ 6647] = 0x548B, [ 6648] = 0x547D, [ 6649] = 0x548E,
++  [ 6650] = 0x56FA, [ 6651] = 0x5783, [ 6652] = 0x5777, [ 6653] = 0x576A,
++  [ 6654] = 0x5769, [ 6655] = 0x5761, [ 6656] = 0x5766, [ 6657] = 0x5764,
++  [ 6658] = 0x577C, [ 6659] = 0x591C, [ 6660] = 0x5949, [ 6661] = 0x5947,
++  [ 6662] = 0x5948, [ 6663] = 0x5944, [ 6664] = 0x5954, [ 6665] = 0x59BE,
++  [ 6666] = 0x59BB, [ 6667] = 0x59D4, [ 6668] = 0x59B9, [ 6669] = 0x59AE,
++  [ 6670] = 0x59D1, [ 6671] = 0x59C6, [ 6672] = 0x59D0, [ 6673] = 0x59CD,
++  [ 6674] = 0x59CB, [ 6675] = 0x59D3, [ 6676] = 0x59CA, [ 6677] = 0x59AF,
++  [ 6678] = 0x59B3, [ 6679] = 0x59D2, [ 6680] = 0x59C5, [ 6681] = 0x5B5F,
++  [ 6682] = 0x5B64, [ 6683] = 0x5B63, [ 6684] = 0x5B97, [ 6685] = 0x5B9A,
++  [ 6686] = 0x5B98, [ 6687] = 0x5B9C, [ 6688] = 0x5B99, [ 6689] = 0x5B9B,
++  [ 6690] = 0x5C1A, [ 6691] = 0x5C48, [ 6692] = 0x5C45, [ 6727] = 0x5C46,
++  [ 6728] = 0x5CB7, [ 6729] = 0x5CA1, [ 6730] = 0x5CB8, [ 6731] = 0x5CA9,
++  [ 6732] = 0x5CAB, [ 6733] = 0x5CB1, [ 6734] = 0x5CB3, [ 6735] = 0x5E18,
++  [ 6736] = 0x5E1A, [ 6737] = 0x5E16, [ 6738] = 0x5E15, [ 6739] = 0x5E1B,
++  [ 6740] = 0x5E11, [ 6741] = 0x5E78, [ 6742] = 0x5E9A, [ 6743] = 0x5E97,
++  [ 6744] = 0x5E9C, [ 6745] = 0x5E95, [ 6746] = 0x5E96, [ 6747] = 0x5EF6,
++  [ 6748] = 0x5F26, [ 6749] = 0x5F27, [ 6750] = 0x5F29, [ 6751] = 0x5F80,
++  [ 6752] = 0x5F81, [ 6753] = 0x5F7F, [ 6754] = 0x5F7C, [ 6755] = 0x5FDD,
++  [ 6756] = 0x5FE0, [ 6757] = 0x5FFD, [ 6758] = 0x5FF5, [ 6759] = 0x5FFF,
++  [ 6760] = 0x600F, [ 6761] = 0x6014, [ 6762] = 0x602F, [ 6763] = 0x6035,
++  [ 6764] = 0x6016, [ 6765] = 0x602A, [ 6766] = 0x6015, [ 6767] = 0x6021,
++  [ 6768] = 0x6027, [ 6769] = 0x6029, [ 6770] = 0x602B, [ 6771] = 0x601B,
++  [ 6772] = 0x6216, [ 6773] = 0x6215, [ 6774] = 0x623F, [ 6775] = 0x623E,
++  [ 6776] = 0x6240, [ 6777] = 0x627F, [ 6778] = 0x62C9, [ 6779] = 0x62CC,
++  [ 6780] = 0x62C4, [ 6781] = 0x62BF, [ 6782] = 0x62C2, [ 6783] = 0x62B9,
++  [ 6784] = 0x62D2, [ 6785] = 0x62DB, [ 6786] = 0x62AB, [ 6787] = 0x62D3,
++  [ 6788] = 0x62D4, [ 6789] = 0x62CB, [ 6790] = 0x62C8, [ 6791] = 0x62A8,
++  [ 6792] = 0x62BD, [ 6793] = 0x62BC, [ 6794] = 0x62D0, [ 6795] = 0x62D9,
++  [ 6796] = 0x62C7, [ 6797] = 0x62CD, [ 6798] = 0x62B5, [ 6799] = 0x62DA,
++  [ 6800] = 0x62B1, [ 6801] = 0x62D8, [ 6802] = 0x62D6, [ 6803] = 0x62D7,
++  [ 6804] = 0x62C6, [ 6805] = 0x62AC, [ 6806] = 0x62CE, [ 6807] = 0x653E,
++  [ 6808] = 0x65A7, [ 6809] = 0x65BC, [ 6810] = 0x65FA, [ 6811] = 0x6614,
++  [ 6812] = 0x6613, [ 6813] = 0x660C, [ 6814] = 0x6606, [ 6815] = 0x6602,
++  [ 6816] = 0x660E, [ 6817] = 0x6600, [ 6818] = 0x660F, [ 6819] = 0x6615,
++  [ 6820] = 0x660A, [ 6825] = 0x6607, [ 6826] = 0x670D, [ 6827] = 0x670B,
++  [ 6828] = 0x676D, [ 6829] = 0x678B, [ 6830] = 0x6795, [ 6831] = 0x6771,
++  [ 6832] = 0x679C, [ 6833] = 0x6773, [ 6834] = 0x6777, [ 6835] = 0x6787,
++  [ 6836] = 0x679D, [ 6837] = 0x6797, [ 6838] = 0x676F, [ 6839] = 0x6770,
++  [ 6840] = 0x677F, [ 6841] = 0x6789, [ 6842] = 0x677E, [ 6843] = 0x6790,
++  [ 6844] = 0x6775, [ 6845] = 0x679A, [ 6846] = 0x6793, [ 6847] = 0x677C,
++  [ 6848] = 0x676A, [ 6849] = 0x6772, [ 6850] = 0x6B23, [ 6851] = 0x6B66,
++  [ 6852] = 0x6B67, [ 6853] = 0x6B7F, [ 6854] = 0x6C13, [ 6855] = 0x6C1B,
++  [ 6856] = 0x6CE3, [ 6857] = 0x6CE8, [ 6858] = 0x6CF3, [ 6859] = 0x6CB1,
++  [ 6860] = 0x6CCC, [ 6861] = 0x6CE5, [ 6862] = 0x6CB3, [ 6863] = 0x6CBD,
++  [ 6864] = 0x6CBE, [ 6865] = 0x6CBC, [ 6866] = 0x6CE2, [ 6867] = 0x6CAB,
++  [ 6868] = 0x6CD5, [ 6869] = 0x6CD3, [ 6870] = 0x6CB8, [ 6871] = 0x6CC4,
++  [ 6872] = 0x6CB9, [ 6873] = 0x6CC1, [ 6874] = 0x6CAE, [ 6875] = 0x6CD7,
++  [ 6876] = 0x6CC5, [ 6877] = 0x6CF1, [ 6878] = 0x6CBF, [ 6879] = 0x6CBB,
++  [ 6880] = 0x6CE1, [ 6881] = 0x6CDB, [ 6882] = 0x6CCA, [ 6883] = 0x6CAC,
++  [ 6884] = 0x6CEF, [ 6885] = 0x6CDC, [ 6886] = 0x6CD6, [ 6887] = 0x6CE0,
++  [ 6922] = 0x7095, [ 6923] = 0x708E, [ 6924] = 0x7092, [ 6925] = 0x708A,
++  [ 6926] = 0x7099, [ 6927] = 0x722C, [ 6928] = 0x722D, [ 6929] = 0x7238,
++  [ 6930] = 0x7248, [ 6931] = 0x7267, [ 6932] = 0x7269, [ 6933] = 0x72C0,
++  [ 6934] = 0x72CE, [ 6935] = 0x72D9, [ 6936] = 0x72D7, [ 6937] = 0x72D0,
++  [ 6938] = 0x73A9, [ 6939] = 0x73A8, [ 6940] = 0x739F, [ 6941] = 0x73AB,
++  [ 6942] = 0x73A5, [ 6943] = 0x753D, [ 6944] = 0x759D, [ 6945] = 0x7599,
++  [ 6946] = 0x759A, [ 6947] = 0x7684, [ 6948] = 0x76C2, [ 6949] = 0x76F2,
++  [ 6950] = 0x76F4, [ 6951] = 0x77E5, [ 6952] = 0x77FD, [ 6953] = 0x793E,
++  [ 6954] = 0x7940, [ 6955] = 0x7941, [ 6956] = 0x79C9, [ 6957] = 0x79C8,
++  [ 6958] = 0x7A7A, [ 6959] = 0x7A79, [ 6960] = 0x7AFA, [ 6961] = 0x7CFE,
++  [ 6962] = 0x7F54, [ 6963] = 0x7F8C, [ 6964] = 0x7F8B, [ 6965] = 0x8005,
++  [ 6966] = 0x80BA, [ 6967] = 0x80A5, [ 6968] = 0x80A2, [ 6969] = 0x80B1,
++  [ 6970] = 0x80A1, [ 6971] = 0x80AB, [ 6972] = 0x80A9, [ 6973] = 0x80B4,
++  [ 6974] = 0x80AA, [ 6975] = 0x80AF, [ 6976] = 0x81E5, [ 6977] = 0x81FE,
++  [ 6978] = 0x820D, [ 6979] = 0x82B3, [ 6980] = 0x829D, [ 6981] = 0x8299,
++  [ 6982] = 0x82AD, [ 6983] = 0x82BD, [ 6984] = 0x829F, [ 6985] = 0x82B9,
++  [ 6986] = 0x82B1, [ 6987] = 0x82AC, [ 6988] = 0x82A5, [ 6989] = 0x82AF,
++  [ 6990] = 0x82B8, [ 6991] = 0x82A3, [ 6992] = 0x82B0, [ 6993] = 0x82BE,
++  [ 6994] = 0x82B7, [ 6995] = 0x864E, [ 6996] = 0x8671, [ 6997] = 0x521D,
++  [ 6998] = 0x8868, [ 6999] = 0x8ECB, [ 7000] = 0x8FCE, [ 7001] = 0x8FD4,
++  [ 7002] = 0x8FD1, [ 7003] = 0x90B5, [ 7004] = 0x90B8, [ 7005] = 0x90B1,
++  [ 7006] = 0x90B6, [ 7007] = 0x91C7, [ 7008] = 0x91D1, [ 7009] = 0x9577,
++  [ 7010] = 0x9580, [ 7011] = 0x961C, [ 7012] = 0x9640, [ 7013] = 0x963F,
++  [ 7014] = 0x963B, [ 7015] = 0x9644, [ 7020] = 0x9642, [ 7021] = 0x96B9,
++  [ 7022] = 0x96E8, [ 7023] = 0x9752, [ 7024] = 0x975E, [ 7025] = 0x4E9F,
++  [ 7026] = 0x4EAD, [ 7027] = 0x4EAE, [ 7028] = 0x4FE1, [ 7029] = 0x4FB5,
++  [ 7030] = 0x4FAF, [ 7031] = 0x4FBF, [ 7032] = 0x4FE0, [ 7033] = 0x4FD1,
++  [ 7034] = 0x4FCF, [ 7035] = 0x4FDD, [ 7036] = 0x4FC3, [ 7037] = 0x4FB6,
++  [ 7038] = 0x4FD8, [ 7039] = 0x4FDF, [ 7040] = 0x4FCA, [ 7041] = 0x4FD7,
++  [ 7042] = 0x4FAE, [ 7043] = 0x4FD0, [ 7044] = 0x4FC4, [ 7045] = 0x4FC2,
++  [ 7046] = 0x4FDA, [ 7047] = 0x4FCE, [ 7048] = 0x4FDE, [ 7049] = 0x4FB7,
++  [ 7050] = 0x5157, [ 7051] = 0x5192, [ 7052] = 0x5191, [ 7053] = 0x51A0,
++  [ 7054] = 0x524E, [ 7055] = 0x5243, [ 7056] = 0x524A, [ 7057] = 0x524D,
++  [ 7058] = 0x524C, [ 7059] = 0x524B, [ 7060] = 0x5247, [ 7061] = 0x52C7,
++  [ 7062] = 0x52C9, [ 7063] = 0x52C3, [ 7064] = 0x52C1, [ 7065] = 0x530D,
++  [ 7066] = 0x5357, [ 7067] = 0x537B, [ 7068] = 0x539A, [ 7069] = 0x53DB,
++  [ 7070] = 0x54AC, [ 7071] = 0x54C0, [ 7072] = 0x54A8, [ 7073] = 0x54CE,
++  [ 7074] = 0x54C9, [ 7075] = 0x54B8, [ 7076] = 0x54A6, [ 7077] = 0x54B3,
++  [ 7078] = 0x54C7, [ 7079] = 0x54C2, [ 7080] = 0x54BD, [ 7081] = 0x54AA,
++  [ 7082] = 0x54C1, [ 7117] = 0x54C4, [ 7118] = 0x54C8, [ 7119] = 0x54AF,
++  [ 7120] = 0x54AB, [ 7121] = 0x54B1, [ 7122] = 0x54BB, [ 7123] = 0x54A9,
++  [ 7124] = 0x54A7, [ 7125] = 0x54BF, [ 7126] = 0x56FF, [ 7127] = 0x5782,
++  [ 7128] = 0x578B, [ 7129] = 0x57A0, [ 7130] = 0x57A3, [ 7131] = 0x57A2,
++  [ 7132] = 0x57CE, [ 7133] = 0x57AE, [ 7134] = 0x5793, [ 7135] = 0x5955,
++  [ 7136] = 0x5951, [ 7137] = 0x594F, [ 7138] = 0x594E, [ 7139] = 0x5950,
++  [ 7140] = 0x59DC, [ 7141] = 0x59D8, [ 7142] = 0x59FF, [ 7143] = 0x59E3,
++  [ 7144] = 0x59E8, [ 7145] = 0x5A03, [ 7146] = 0x59E5, [ 7147] = 0x59EA,
++  [ 7148] = 0x59DA, [ 7149] = 0x59E6, [ 7150] = 0x5A01, [ 7151] = 0x59FB,
++  [ 7152] = 0x5B69, [ 7153] = 0x5BA3, [ 7154] = 0x5BA6, [ 7155] = 0x5BA4,
++  [ 7156] = 0x5BA2, [ 7157] = 0x5BA5, [ 7158] = 0x5C01, [ 7159] = 0x5C4E,
++  [ 7160] = 0x5C4F, [ 7161] = 0x5C4D, [ 7162] = 0x5C4B, [ 7163] = 0x5CD9,
++  [ 7164] = 0x5CD2, [ 7165] = 0x5DF7, [ 7166] = 0x5E1D, [ 7167] = 0x5E25,
++  [ 7168] = 0x5E1F, [ 7169] = 0x5E7D, [ 7170] = 0x5EA0, [ 7171] = 0x5EA6,
++  [ 7172] = 0x5EFA, [ 7173] = 0x5F08, [ 7174] = 0x5F2D, [ 7175] = 0x5F65,
++  [ 7176] = 0x5F88, [ 7177] = 0x5F85, [ 7178] = 0x5F8A, [ 7179] = 0x5F8B,
++  [ 7180] = 0x5F87, [ 7181] = 0x5F8C, [ 7182] = 0x5F89, [ 7183] = 0x6012,
++  [ 7184] = 0x601D, [ 7185] = 0x6020, [ 7186] = 0x6025, [ 7187] = 0x600E,
++  [ 7188] = 0x6028, [ 7189] = 0x604D, [ 7190] = 0x6070, [ 7191] = 0x6068,
++  [ 7192] = 0x6062, [ 7193] = 0x6046, [ 7194] = 0x6043, [ 7195] = 0x606C,
++  [ 7196] = 0x606B, [ 7197] = 0x606A, [ 7198] = 0x6064, [ 7199] = 0x6241,
++  [ 7200] = 0x62DC, [ 7201] = 0x6316, [ 7202] = 0x6309, [ 7203] = 0x62FC,
++  [ 7204] = 0x62ED, [ 7205] = 0x6301, [ 7206] = 0x62EE, [ 7207] = 0x62FD,
++  [ 7208] = 0x6307, [ 7209] = 0x62F1, [ 7210] = 0x62F7, [ 7215] = 0x62EF,
++  [ 7216] = 0x62EC, [ 7217] = 0x62FE, [ 7218] = 0x62F4, [ 7219] = 0x6311,
++  [ 7220] = 0x6302, [ 7221] = 0x653F, [ 7222] = 0x6545, [ 7223] = 0x65AB,
++  [ 7224] = 0x65BD, [ 7225] = 0x65E2, [ 7226] = 0x6625, [ 7227] = 0x662D,
++  [ 7228] = 0x6620, [ 7229] = 0x6627, [ 7230] = 0x662F, [ 7231] = 0x661F,
++  [ 7232] = 0x6628, [ 7233] = 0x6631, [ 7234] = 0x6624, [ 7235] = 0x66F7,
++  [ 7236] = 0x67FF, [ 7237] = 0x67D3, [ 7238] = 0x67F1, [ 7239] = 0x67D4,
++  [ 7240] = 0x67D0, [ 7241] = 0x67EC, [ 7242] = 0x67B6, [ 7243] = 0x67AF,
++  [ 7244] = 0x67F5, [ 7245] = 0x67E9, [ 7246] = 0x67EF, [ 7247] = 0x67C4,
++  [ 7248] = 0x67D1, [ 7249] = 0x67B4, [ 7250] = 0x67DA, [ 7251] = 0x67E5,
++  [ 7252] = 0x67B8, [ 7253] = 0x67CF, [ 7254] = 0x67DE, [ 7255] = 0x67F3,
++  [ 7256] = 0x67B0, [ 7257] = 0x67D9, [ 7258] = 0x67E2, [ 7259] = 0x67DD,
++  [ 7260] = 0x67D2, [ 7261] = 0x6B6A, [ 7262] = 0x6B83, [ 7263] = 0x6B86,
++  [ 7264] = 0x6BB5, [ 7265] = 0x6BD2, [ 7266] = 0x6BD7, [ 7267] = 0x6C1F,
++  [ 7268] = 0x6CC9, [ 7269] = 0x6D0B, [ 7270] = 0x6D32, [ 7271] = 0x6D2A,
++  [ 7272] = 0x6D41, [ 7273] = 0x6D25, [ 7274] = 0x6D0C, [ 7275] = 0x6D31,
++  [ 7276] = 0x6D1E, [ 7277] = 0x6D17, [ 7312] = 0x6D3B, [ 7313] = 0x6D3D,
++  [ 7314] = 0x6D3E, [ 7315] = 0x6D36, [ 7316] = 0x6D1B, [ 7317] = 0x6CF5,
++  [ 7318] = 0x6D39, [ 7319] = 0x6D27, [ 7320] = 0x6D38, [ 7321] = 0x6D29,
++  [ 7322] = 0x6D2E, [ 7323] = 0x6D35, [ 7324] = 0x6D0E, [ 7325] = 0x6D2B,
++  [ 7326] = 0x70AB, [ 7327] = 0x70BA, [ 7328] = 0x70B3, [ 7329] = 0x70AC,
++  [ 7330] = 0x70AF, [ 7331] = 0x70AD, [ 7332] = 0x70B8, [ 7333] = 0x70AE,
++  [ 7334] = 0x70A4, [ 7335] = 0x7230, [ 7336] = 0x7272, [ 7337] = 0x726F,
++  [ 7338] = 0x7274, [ 7339] = 0x72E9, [ 7340] = 0x72E0, [ 7341] = 0x72E1,
++  [ 7342] = 0x73B7, [ 7343] = 0x73CA, [ 7344] = 0x73BB, [ 7345] = 0x73B2,
++  [ 7346] = 0x73CD, [ 7347] = 0x73C0, [ 7348] = 0x73B3, [ 7349] = 0x751A,
++  [ 7350] = 0x752D, [ 7351] = 0x754F, [ 7352] = 0x754C, [ 7353] = 0x754E,
++  [ 7354] = 0x754B, [ 7355] = 0x75AB, [ 7356] = 0x75A4, [ 7357] = 0x75A5,
++  [ 7358] = 0x75A2, [ 7359] = 0x75A3, [ 7360] = 0x7678, [ 7361] = 0x7686,
++  [ 7362] = 0x7687, [ 7363] = 0x7688, [ 7364] = 0x76C8, [ 7365] = 0x76C6,
++  [ 7366] = 0x76C3, [ 7367] = 0x76C5, [ 7368] = 0x7701, [ 7369] = 0x76F9,
++  [ 7370] = 0x76F8, [ 7371] = 0x7709, [ 7372] = 0x770B, [ 7373] = 0x76FE,
++  [ 7374] = 0x76FC, [ 7375] = 0x7707, [ 7376] = 0x77DC, [ 7377] = 0x7802,
++  [ 7378] = 0x7814, [ 7379] = 0x780C, [ 7380] = 0x780D, [ 7381] = 0x7946,
++  [ 7382] = 0x7949, [ 7383] = 0x7948, [ 7384] = 0x7947, [ 7385] = 0x79B9,
++  [ 7386] = 0x79BA, [ 7387] = 0x79D1, [ 7388] = 0x79D2, [ 7389] = 0x79CB,
++  [ 7390] = 0x7A7F, [ 7391] = 0x7A81, [ 7392] = 0x7AFF, [ 7393] = 0x7AFD,
++  [ 7394] = 0x7C7D, [ 7395] = 0x7D02, [ 7396] = 0x7D05, [ 7397] = 0x7D00,
++  [ 7398] = 0x7D09, [ 7399] = 0x7D07, [ 7400] = 0x7D04, [ 7401] = 0x7D06,
++  [ 7402] = 0x7F38, [ 7403] = 0x7F8E, [ 7404] = 0x7FBF, [ 7405] = 0x8004,
++  [ 7410] = 0x8010, [ 7411] = 0x800D, [ 7412] = 0x8011, [ 7413] = 0x8036,
++  [ 7414] = 0x80D6, [ 7415] = 0x80E5, [ 7416] = 0x80DA, [ 7417] = 0x80C3,
++  [ 7418] = 0x80C4, [ 7419] = 0x80CC, [ 7420] = 0x80E1, [ 7421] = 0x80DB,
++  [ 7422] = 0x80CE, [ 7423] = 0x80DE, [ 7424] = 0x80E4, [ 7425] = 0x80DD,
++  [ 7426] = 0x81F4, [ 7427] = 0x8222, [ 7428] = 0x82E7, [ 7429] = 0x8303,
++  [ 7430] = 0x8305, [ 7431] = 0x82E3, [ 7432] = 0x82DB, [ 7433] = 0x82E6,
++  [ 7434] = 0x8304, [ 7435] = 0x82E5, [ 7436] = 0x8302, [ 7437] = 0x8309,
++  [ 7438] = 0x82D2, [ 7439] = 0x82D7, [ 7440] = 0x82F1, [ 7441] = 0x8301,
++  [ 7442] = 0x82DC, [ 7443] = 0x82D4, [ 7444] = 0x82D1, [ 7445] = 0x82DE,
++  [ 7446] = 0x82D3, [ 7447] = 0x82DF, [ 7448] = 0x82EF, [ 7449] = 0x8306,
++  [ 7450] = 0x8650, [ 7451] = 0x8679, [ 7452] = 0x867B, [ 7453] = 0x867A,
++  [ 7454] = 0x884D, [ 7455] = 0x886B, [ 7456] = 0x8981, [ 7457] = 0x89D4,
++  [ 7458] = 0x8A08, [ 7459] = 0x8A02, [ 7460] = 0x8A03, [ 7461] = 0x8C9E,
++  [ 7462] = 0x8CA0, [ 7463] = 0x8D74, [ 7464] = 0x8D73, [ 7465] = 0x8DB4,
++  [ 7466] = 0x8ECD, [ 7467] = 0x8ECC, [ 7468] = 0x8FF0, [ 7469] = 0x8FE6,
++  [ 7470] = 0x8FE2, [ 7471] = 0x8FEA, [ 7472] = 0x8FE5, [ 7507] = 0x8FED,
++  [ 7508] = 0x8FEB, [ 7509] = 0x8FE4, [ 7510] = 0x8FE8, [ 7511] = 0x90CA,
++  [ 7512] = 0x90CE, [ 7513] = 0x90C1, [ 7514] = 0x90C3, [ 7515] = 0x914B,
++  [ 7516] = 0x914A, [ 7517] = 0x91CD, [ 7518] = 0x9582, [ 7519] = 0x9650,
++  [ 7520] = 0x964B, [ 7521] = 0x964C, [ 7522] = 0x964D, [ 7523] = 0x9762,
++  [ 7524] = 0x9769, [ 7525] = 0x97CB, [ 7526] = 0x97ED, [ 7527] = 0x97F3,
++  [ 7528] = 0x9801, [ 7529] = 0x98A8, [ 7530] = 0x98DB, [ 7531] = 0x98DF,
++  [ 7532] = 0x9996, [ 7533] = 0x9999, [ 7534] = 0x4E58, [ 7535] = 0x4EB3,
++  [ 7536] = 0x500C, [ 7537] = 0x500D, [ 7538] = 0x5023, [ 7539] = 0x4FEF,
++  [ 7540] = 0x5026, [ 7541] = 0x5025, [ 7542] = 0x4FF8, [ 7543] = 0x5029,
++  [ 7544] = 0x5016, [ 7545] = 0x5006, [ 7546] = 0x503C, [ 7547] = 0x501F,
++  [ 7548] = 0x501A, [ 7549] = 0x5012, [ 7550] = 0x5011, [ 7551] = 0x4FFA,
++  [ 7552] = 0x5000, [ 7553] = 0x5014, [ 7554] = 0x5028, [ 7555] = 0x4FF1,
++  [ 7556] = 0x5021, [ 7557] = 0x500B, [ 7558] = 0x5019, [ 7559] = 0x5018,
++  [ 7560] = 0x4FF3, [ 7561] = 0x4FEE, [ 7562] = 0x502D, [ 7563] = 0x502A,
++  [ 7564] = 0x4FFE, [ 7565] = 0x502B, [ 7566] = 0x5009, [ 7567] = 0x517C,
++  [ 7568] = 0x51A4, [ 7569] = 0x51A5, [ 7570] = 0x51A2, [ 7571] = 0x51CD,
++  [ 7572] = 0x51CC, [ 7573] = 0x51C6, [ 7574] = 0x51CB, [ 7575] = 0x5256,
++  [ 7576] = 0x525C, [ 7577] = 0x5254, [ 7578] = 0x525B, [ 7579] = 0x525D,
++  [ 7580] = 0x532A, [ 7581] = 0x537F, [ 7582] = 0x539F, [ 7583] = 0x539D,
++  [ 7584] = 0x53DF, [ 7585] = 0x54E8, [ 7586] = 0x5510, [ 7587] = 0x5501,
++  [ 7588] = 0x5537, [ 7589] = 0x54FC, [ 7590] = 0x54E5, [ 7591] = 0x54F2,
++  [ 7592] = 0x5506, [ 7593] = 0x54FA, [ 7594] = 0x5514, [ 7595] = 0x54E9,
++  [ 7596] = 0x54ED, [ 7597] = 0x54E1, [ 7598] = 0x5509, [ 7599] = 0x54EE,
++  [ 7600] = 0x54EA, [ 7605] = 0x54E6, [ 7606] = 0x5527, [ 7607] = 0x5507,
++  [ 7608] = 0x54FD, [ 7609] = 0x550F, [ 7610] = 0x5703, [ 7611] = 0x5704,
++  [ 7612] = 0x57C2, [ 7613] = 0x57D4, [ 7614] = 0x57CB, [ 7615] = 0x57C3,
++  [ 7616] = 0x5809, [ 7617] = 0x590F, [ 7618] = 0x5957, [ 7619] = 0x5958,
++  [ 7620] = 0x595A, [ 7621] = 0x5A11, [ 7622] = 0x5A18, [ 7623] = 0x5A1C,
++  [ 7624] = 0x5A1F, [ 7625] = 0x5A1B, [ 7626] = 0x5A13, [ 7627] = 0x59EC,
++  [ 7628] = 0x5A20, [ 7629] = 0x5A23, [ 7630] = 0x5A29, [ 7631] = 0x5A25,
++  [ 7632] = 0x5A0C, [ 7633] = 0x5A09, [ 7634] = 0x5B6B, [ 7635] = 0x5C58,
++  [ 7636] = 0x5BB0, [ 7637] = 0x5BB3, [ 7638] = 0x5BB6, [ 7639] = 0x5BB4,
++  [ 7640] = 0x5BAE, [ 7641] = 0x5BB5, [ 7642] = 0x5BB9, [ 7643] = 0x5BB8,
++  [ 7644] = 0x5C04, [ 7645] = 0x5C51, [ 7646] = 0x5C55, [ 7647] = 0x5C50,
++  [ 7648] = 0x5CED, [ 7649] = 0x5CFD, [ 7650] = 0x5CFB, [ 7651] = 0x5CEA,
++  [ 7652] = 0x5CE8, [ 7653] = 0x5CF0, [ 7654] = 0x5CF6, [ 7655] = 0x5D01,
++  [ 7656] = 0x5CF4, [ 7657] = 0x5DEE, [ 7658] = 0x5E2D, [ 7659] = 0x5E2B,
++  [ 7660] = 0x5EAB, [ 7661] = 0x5EAD, [ 7662] = 0x5EA7, [ 7663] = 0x5F31,
++  [ 7664] = 0x5F92, [ 7665] = 0x5F91, [ 7666] = 0x5F90, [ 7667] = 0x6059,
++  [ 7702] = 0x6063, [ 7703] = 0x6065, [ 7704] = 0x6050, [ 7705] = 0x6055,
++  [ 7706] = 0x606D, [ 7707] = 0x6069, [ 7708] = 0x606F, [ 7709] = 0x6084,
++  [ 7710] = 0x609F, [ 7711] = 0x609A, [ 7712] = 0x608D, [ 7713] = 0x6094,
++  [ 7714] = 0x608C, [ 7715] = 0x6085, [ 7716] = 0x6096, [ 7717] = 0x6247,
++  [ 7718] = 0x62F3, [ 7719] = 0x6308, [ 7720] = 0x62FF, [ 7721] = 0x634E,
++  [ 7722] = 0x633E, [ 7723] = 0x632F, [ 7724] = 0x6355, [ 7725] = 0x6342,
++  [ 7726] = 0x6346, [ 7727] = 0x634F, [ 7728] = 0x6349, [ 7729] = 0x633A,
++  [ 7730] = 0x6350, [ 7731] = 0x633D, [ 7732] = 0x632A, [ 7733] = 0x632B,
++  [ 7734] = 0x6328, [ 7735] = 0x634D, [ 7736] = 0x634C, [ 7737] = 0x6548,
++  [ 7738] = 0x6549, [ 7739] = 0x6599, [ 7740] = 0x65C1, [ 7741] = 0x65C5,
++  [ 7742] = 0x6642, [ 7743] = 0x6649, [ 7744] = 0x664F, [ 7745] = 0x6643,
++  [ 7746] = 0x6652, [ 7747] = 0x664C, [ 7748] = 0x6645, [ 7749] = 0x6641,
++  [ 7750] = 0x66F8, [ 7751] = 0x6714, [ 7752] = 0x6715, [ 7753] = 0x6717,
++  [ 7754] = 0x6821, [ 7755] = 0x6838, [ 7756] = 0x6848, [ 7757] = 0x6846,
++  [ 7758] = 0x6853, [ 7759] = 0x6839, [ 7760] = 0x6842, [ 7761] = 0x6854,
++  [ 7762] = 0x6829, [ 7763] = 0x68B3, [ 7764] = 0x6817, [ 7765] = 0x684C,
++  [ 7766] = 0x6851, [ 7767] = 0x683D, [ 7768] = 0x67F4, [ 7769] = 0x6850,
++  [ 7770] = 0x6840, [ 7771] = 0x683C, [ 7772] = 0x6843, [ 7773] = 0x682A,
++  [ 7774] = 0x6845, [ 7775] = 0x6813, [ 7776] = 0x6818, [ 7777] = 0x6841,
++  [ 7778] = 0x6B8A, [ 7779] = 0x6B89, [ 7780] = 0x6BB7, [ 7781] = 0x6C23,
++  [ 7782] = 0x6C27, [ 7783] = 0x6C28, [ 7784] = 0x6C26, [ 7785] = 0x6C24,
++  [ 7786] = 0x6CF0, [ 7787] = 0x6D6A, [ 7788] = 0x6D95, [ 7789] = 0x6D88,
++  [ 7790] = 0x6D87, [ 7791] = 0x6D66, [ 7792] = 0x6D78, [ 7793] = 0x6D77,
++  [ 7794] = 0x6D59, [ 7795] = 0x6D93, [ 7800] = 0x6D6C, [ 7801] = 0x6D89,
++  [ 7802] = 0x6D6E, [ 7803] = 0x6D5A, [ 7804] = 0x6D74, [ 7805] = 0x6D69,
++  [ 7806] = 0x6D8C, [ 7807] = 0x6D8A, [ 7808] = 0x6D79, [ 7809] = 0x6D85,
++  [ 7810] = 0x6D65, [ 7811] = 0x6D94, [ 7812] = 0x70CA, [ 7813] = 0x70D8,
++  [ 7814] = 0x70E4, [ 7815] = 0x70D9, [ 7816] = 0x70C8, [ 7817] = 0x70CF,
++  [ 7818] = 0x7239, [ 7819] = 0x7279, [ 7820] = 0x72FC, [ 7821] = 0x72F9,
++  [ 7822] = 0x72FD, [ 7823] = 0x72F8, [ 7824] = 0x72F7, [ 7825] = 0x7386,
++  [ 7826] = 0x73ED, [ 7827] = 0x7409, [ 7828] = 0x73EE, [ 7829] = 0x73E0,
++  [ 7830] = 0x73EA, [ 7831] = 0x73DE, [ 7832] = 0x7554, [ 7833] = 0x755D,
++  [ 7834] = 0x755C, [ 7835] = 0x755A, [ 7836] = 0x7559, [ 7837] = 0x75BE,
++  [ 7838] = 0x75C5, [ 7839] = 0x75C7, [ 7840] = 0x75B2, [ 7841] = 0x75B3,
++  [ 7842] = 0x75BD, [ 7843] = 0x75BC, [ 7844] = 0x75B9, [ 7845] = 0x75C2,
++  [ 7846] = 0x75B8, [ 7847] = 0x768B, [ 7848] = 0x76B0, [ 7849] = 0x76CA,
++  [ 7850] = 0x76CD, [ 7851] = 0x76CE, [ 7852] = 0x7729, [ 7853] = 0x771F,
++  [ 7854] = 0x7720, [ 7855] = 0x7728, [ 7856] = 0x77E9, [ 7857] = 0x7830,
++  [ 7858] = 0x7827, [ 7859] = 0x7838, [ 7860] = 0x781D, [ 7861] = 0x7834,
++  [ 7862] = 0x7837, [ 7897] = 0x7825, [ 7898] = 0x782D, [ 7899] = 0x7820,
++  [ 7900] = 0x781F, [ 7901] = 0x7832, [ 7902] = 0x7955, [ 7903] = 0x7950,
++  [ 7904] = 0x7960, [ 7905] = 0x795F, [ 7906] = 0x7956, [ 7907] = 0x795E,
++  [ 7908] = 0x795D, [ 7909] = 0x7957, [ 7910] = 0x795A, [ 7911] = 0x79E4,
++  [ 7912] = 0x79E3, [ 7913] = 0x79E7, [ 7914] = 0x79DF, [ 7915] = 0x79E6,
++  [ 7916] = 0x79E9, [ 7917] = 0x79D8, [ 7918] = 0x7A84, [ 7919] = 0x7A88,
++  [ 7920] = 0x7AD9, [ 7921] = 0x7B06, [ 7922] = 0x7B11, [ 7923] = 0x7C89,
++  [ 7924] = 0x7D21, [ 7925] = 0x7D17, [ 7926] = 0x7D0B, [ 7927] = 0x7D0A,
++  [ 7928] = 0x7D20, [ 7929] = 0x7D22, [ 7930] = 0x7D14, [ 7931] = 0x7D10,
++  [ 7932] = 0x7D15, [ 7933] = 0x7D1A, [ 7934] = 0x7D1C, [ 7935] = 0x7D0D,
++  [ 7936] = 0x7D19, [ 7937] = 0x7D1B, [ 7938] = 0x7F3A, [ 7939] = 0x7F5F,
++  [ 7940] = 0x7F94, [ 7941] = 0x7FC5, [ 7942] = 0x7FC1, [ 7943] = 0x8006,
++  [ 7944] = 0x8018, [ 7945] = 0x8015, [ 7946] = 0x8019, [ 7947] = 0x8017,
++  [ 7948] = 0x803D, [ 7949] = 0x803F, [ 7950] = 0x80F1, [ 7951] = 0x8102,
++  [ 7952] = 0x80F0, [ 7953] = 0x8105, [ 7954] = 0x80ED, [ 7955] = 0x80F4,
++  [ 7956] = 0x8106, [ 7957] = 0x80F8, [ 7958] = 0x80F3, [ 7959] = 0x8108,
++  [ 7960] = 0x80FD, [ 7961] = 0x810A, [ 7962] = 0x80FC, [ 7963] = 0x80EF,
++  [ 7964] = 0x81ED, [ 7965] = 0x81EC, [ 7966] = 0x8200, [ 7967] = 0x8210,
++  [ 7968] = 0x822A, [ 7969] = 0x822B, [ 7970] = 0x8228, [ 7971] = 0x822C,
++  [ 7972] = 0x82BB, [ 7973] = 0x832B, [ 7974] = 0x8352, [ 7975] = 0x8354,
++  [ 7976] = 0x834A, [ 7977] = 0x8338, [ 7978] = 0x8350, [ 7979] = 0x8349,
++  [ 7980] = 0x8335, [ 7981] = 0x8334, [ 7982] = 0x834F, [ 7983] = 0x8332,
++  [ 7984] = 0x8339, [ 7985] = 0x8336, [ 7986] = 0x8317, [ 7987] = 0x8340,
++  [ 7988] = 0x8331, [ 7989] = 0x8328, [ 7990] = 0x8343, [ 7995] = 0x8654,
++  [ 7996] = 0x868A, [ 7997] = 0x86AA, [ 7998] = 0x8693, [ 7999] = 0x86A4,
++  [ 8000] = 0x86A9, [ 8001] = 0x868C, [ 8002] = 0x86A3, [ 8003] = 0x869C,
++  [ 8004] = 0x8870, [ 8005] = 0x8877, [ 8006] = 0x8881, [ 8007] = 0x8882,
++  [ 8008] = 0x887D, [ 8009] = 0x8879, [ 8010] = 0x8A18, [ 8011] = 0x8A10,
++  [ 8012] = 0x8A0E, [ 8013] = 0x8A0C, [ 8014] = 0x8A15, [ 8015] = 0x8A0A,
++  [ 8016] = 0x8A17, [ 8017] = 0x8A13, [ 8018] = 0x8A16, [ 8019] = 0x8A0F,
++  [ 8020] = 0x8A11, [ 8021] = 0x8C48, [ 8022] = 0x8C7A, [ 8023] = 0x8C79,
++  [ 8024] = 0x8CA1, [ 8025] = 0x8CA2, [ 8026] = 0x8D77, [ 8027] = 0x8EAC,
++  [ 8028] = 0x8ED2, [ 8029] = 0x8ED4, [ 8030] = 0x8ECF, [ 8031] = 0x8FB1,
++  [ 8032] = 0x9001, [ 8033] = 0x9006, [ 8034] = 0x8FF7, [ 8035] = 0x9000,
++  [ 8036] = 0x8FFA, [ 8037] = 0x8FF4, [ 8038] = 0x9003, [ 8039] = 0x8FFD,
++  [ 8040] = 0x9005, [ 8041] = 0x8FF8, [ 8042] = 0x9095, [ 8043] = 0x90E1,
++  [ 8044] = 0x90DD, [ 8045] = 0x90E2, [ 8046] = 0x9152, [ 8047] = 0x914D,
++  [ 8048] = 0x914C, [ 8049] = 0x91D8, [ 8050] = 0x91DD, [ 8051] = 0x91D7,
++  [ 8052] = 0x91DC, [ 8053] = 0x91D9, [ 8054] = 0x9583, [ 8055] = 0x9662,
++  [ 8056] = 0x9663, [ 8057] = 0x9661, [ 8092] = 0x965B, [ 8093] = 0x965D,
++  [ 8094] = 0x9664, [ 8095] = 0x9658, [ 8096] = 0x965E, [ 8097] = 0x96BB,
++  [ 8098] = 0x98E2, [ 8099] = 0x99AC, [ 8100] = 0x9AA8, [ 8101] = 0x9AD8,
++  [ 8102] = 0x9B25, [ 8103] = 0x9B32, [ 8104] = 0x9B3C, [ 8105] = 0x4E7E,
++  [ 8106] = 0x507A, [ 8107] = 0x507D, [ 8108] = 0x505C, [ 8109] = 0x5047,
++  [ 8110] = 0x5043, [ 8111] = 0x504C, [ 8112] = 0x505A, [ 8113] = 0x5049,
++  [ 8114] = 0x5065, [ 8115] = 0x5076, [ 8116] = 0x504E, [ 8117] = 0x5055,
++  [ 8118] = 0x5075, [ 8119] = 0x5074, [ 8120] = 0x5077, [ 8121] = 0x504F,
++  [ 8122] = 0x500F, [ 8123] = 0x506F, [ 8124] = 0x506D, [ 8125] = 0x515C,
++  [ 8126] = 0x5195, [ 8127] = 0x51F0, [ 8128] = 0x526A, [ 8129] = 0x526F,
++  [ 8130] = 0x52D2, [ 8131] = 0x52D9, [ 8132] = 0x52D8, [ 8133] = 0x52D5,
++  [ 8134] = 0x5310, [ 8135] = 0x530F, [ 8136] = 0x5319, [ 8137] = 0x533F,
++  [ 8138] = 0x5340, [ 8139] = 0x533E, [ 8140] = 0x53C3, [ 8141] = 0x66FC,
++  [ 8142] = 0x5546, [ 8143] = 0x556A, [ 8144] = 0x5566, [ 8145] = 0x5544,
++  [ 8146] = 0x555E, [ 8147] = 0x5561, [ 8148] = 0x5543, [ 8149] = 0x554A,
++  [ 8150] = 0x5531, [ 8151] = 0x5556, [ 8152] = 0x554F, [ 8153] = 0x5555,
++  [ 8154] = 0x552F, [ 8155] = 0x5564, [ 8156] = 0x5538, [ 8157] = 0x552E,
++  [ 8158] = 0x555C, [ 8159] = 0x552C, [ 8160] = 0x5563, [ 8161] = 0x5533,
++  [ 8162] = 0x5541, [ 8163] = 0x5557, [ 8164] = 0x5708, [ 8165] = 0x570B,
++  [ 8166] = 0x5709, [ 8167] = 0x57DF, [ 8168] = 0x5805, [ 8169] = 0x580A,
++  [ 8170] = 0x5806, [ 8171] = 0x57E0, [ 8172] = 0x57E4, [ 8173] = 0x57FA,
++  [ 8174] = 0x5802, [ 8175] = 0x5835, [ 8176] = 0x57F7, [ 8177] = 0x57F9,
++  [ 8178] = 0x5920, [ 8179] = 0x5962, [ 8180] = 0x5A36, [ 8181] = 0x5A41,
++  [ 8182] = 0x5A49, [ 8183] = 0x5A66, [ 8184] = 0x5A6A, [ 8185] = 0x5A40,
++  [ 8190] = 0x5A3C, [ 8191] = 0x5A62, [ 8192] = 0x5A5A, [ 8193] = 0x5A46,
++  [ 8194] = 0x5A4A, [ 8195] = 0x5B70, [ 8196] = 0x5BC7, [ 8197] = 0x5BC5,
++  [ 8198] = 0x5BC4, [ 8199] = 0x5BC2, [ 8200] = 0x5BBF, [ 8201] = 0x5BC6,
++  [ 8202] = 0x5C09, [ 8203] = 0x5C08, [ 8204] = 0x5C07, [ 8205] = 0x5C60,
++  [ 8206] = 0x5C5C, [ 8207] = 0x5C5D, [ 8208] = 0x5D07, [ 8209] = 0x5D06,
++  [ 8210] = 0x5D0E, [ 8211] = 0x5D1B, [ 8212] = 0x5D16, [ 8213] = 0x5D22,
++  [ 8214] = 0x5D11, [ 8215] = 0x5D29, [ 8216] = 0x5D14, [ 8217] = 0x5D19,
++  [ 8218] = 0x5D24, [ 8219] = 0x5D27, [ 8220] = 0x5D17, [ 8221] = 0x5DE2,
++  [ 8222] = 0x5E38, [ 8223] = 0x5E36, [ 8224] = 0x5E33, [ 8225] = 0x5E37,
++  [ 8226] = 0x5EB7, [ 8227] = 0x5EB8, [ 8228] = 0x5EB6, [ 8229] = 0x5EB5,
++  [ 8230] = 0x5EBE, [ 8231] = 0x5F35, [ 8232] = 0x5F37, [ 8233] = 0x5F57,
++  [ 8234] = 0x5F6C, [ 8235] = 0x5F69, [ 8236] = 0x5F6B, [ 8237] = 0x5F97,
++  [ 8238] = 0x5F99, [ 8239] = 0x5F9E, [ 8240] = 0x5F98, [ 8241] = 0x5FA1,
++  [ 8242] = 0x5FA0, [ 8243] = 0x5F9C, [ 8244] = 0x607F, [ 8245] = 0x60A3,
++  [ 8246] = 0x6089, [ 8247] = 0x60A0, [ 8248] = 0x60A8, [ 8249] = 0x60CB,
++  [ 8250] = 0x60B4, [ 8251] = 0x60E6, [ 8252] = 0x60BD, [ 8287] = 0x60C5,
++  [ 8288] = 0x60BB, [ 8289] = 0x60B5, [ 8290] = 0x60DC, [ 8291] = 0x60BC,
++  [ 8292] = 0x60D8, [ 8293] = 0x60D5, [ 8294] = 0x60C6, [ 8295] = 0x60DF,
++  [ 8296] = 0x60B8, [ 8297] = 0x60DA, [ 8298] = 0x60C7, [ 8299] = 0x621A,
++  [ 8300] = 0x621B, [ 8301] = 0x6248, [ 8302] = 0x63A0, [ 8303] = 0x63A7,
++  [ 8304] = 0x6372, [ 8305] = 0x6396, [ 8306] = 0x63A2, [ 8307] = 0x63A5,
++  [ 8308] = 0x6377, [ 8309] = 0x6367, [ 8310] = 0x6398, [ 8311] = 0x63AA,
++  [ 8312] = 0x6371, [ 8313] = 0x63A9, [ 8314] = 0x6389, [ 8315] = 0x6383,
++  [ 8316] = 0x639B, [ 8317] = 0x636B, [ 8318] = 0x63A8, [ 8319] = 0x6384,
++  [ 8320] = 0x6388, [ 8321] = 0x6399, [ 8322] = 0x63A1, [ 8323] = 0x63AC,
++  [ 8324] = 0x6392, [ 8325] = 0x638F, [ 8326] = 0x6380, [ 8327] = 0x637B,
++  [ 8328] = 0x6369, [ 8329] = 0x6368, [ 8330] = 0x637A, [ 8331] = 0x655D,
++  [ 8332] = 0x6556, [ 8333] = 0x6551, [ 8334] = 0x6559, [ 8335] = 0x6557,
++  [ 8336] = 0x555F, [ 8337] = 0x654F, [ 8338] = 0x6558, [ 8339] = 0x6555,
++  [ 8340] = 0x6554, [ 8341] = 0x659C, [ 8342] = 0x659B, [ 8343] = 0x65AC,
++  [ 8344] = 0x65CF, [ 8345] = 0x65CB, [ 8346] = 0x65CC, [ 8347] = 0x65CE,
++  [ 8348] = 0x665D, [ 8349] = 0x665A, [ 8350] = 0x6664, [ 8351] = 0x6668,
++  [ 8352] = 0x6666, [ 8353] = 0x665E, [ 8354] = 0x66F9, [ 8355] = 0x52D7,
++  [ 8356] = 0x671B, [ 8357] = 0x6881, [ 8358] = 0x68AF, [ 8359] = 0x68A2,
++  [ 8360] = 0x6893, [ 8361] = 0x68B5, [ 8362] = 0x687F, [ 8363] = 0x6876,
++  [ 8364] = 0x68B1, [ 8365] = 0x68A7, [ 8366] = 0x6897, [ 8367] = 0x68B0,
++  [ 8368] = 0x6883, [ 8369] = 0x68C4, [ 8370] = 0x68AD, [ 8371] = 0x6886,
++  [ 8372] = 0x6885, [ 8373] = 0x6894, [ 8374] = 0x689D, [ 8375] = 0x68A8,
++  [ 8376] = 0x689F, [ 8377] = 0x68A1, [ 8378] = 0x6882, [ 8379] = 0x6B32,
++  [ 8380] = 0x6BBA, [ 8385] = 0x6BEB, [ 8386] = 0x6BEC, [ 8387] = 0x6C2B,
++  [ 8388] = 0x6D8E, [ 8389] = 0x6DBC, [ 8390] = 0x6DF3, [ 8391] = 0x6DD9,
++  [ 8392] = 0x6DB2, [ 8393] = 0x6DE1, [ 8394] = 0x6DCC, [ 8395] = 0x6DE4,
++  [ 8396] = 0x6DFB, [ 8397] = 0x6DFA, [ 8398] = 0x6E05, [ 8399] = 0x6DC7,
++  [ 8400] = 0x6DCB, [ 8401] = 0x6DAF, [ 8402] = 0x6DD1, [ 8403] = 0x6DAE,
++  [ 8404] = 0x6DDE, [ 8405] = 0x6DF9, [ 8406] = 0x6DB8, [ 8407] = 0x6DF7,
++  [ 8408] = 0x6DF5, [ 8409] = 0x6DC5, [ 8410] = 0x6DD2, [ 8411] = 0x6E1A,
++  [ 8412] = 0x6DB5, [ 8413] = 0x6DDA, [ 8414] = 0x6DEB, [ 8415] = 0x6DD8,
++  [ 8416] = 0x6DEA, [ 8417] = 0x6DF1, [ 8418] = 0x6DEE, [ 8419] = 0x6DE8,
++  [ 8420] = 0x6DC6, [ 8421] = 0x6DC4, [ 8422] = 0x6DAA, [ 8423] = 0x6DEC,
++  [ 8424] = 0x6DBF, [ 8425] = 0x6DE6, [ 8426] = 0x70F9, [ 8427] = 0x7109,
++  [ 8428] = 0x710A, [ 8429] = 0x70FD, [ 8430] = 0x70EF, [ 8431] = 0x723D,
++  [ 8432] = 0x727D, [ 8433] = 0x7281, [ 8434] = 0x731C, [ 8435] = 0x731B,
++  [ 8436] = 0x7316, [ 8437] = 0x7313, [ 8438] = 0x7319, [ 8439] = 0x7387,
++  [ 8440] = 0x7405, [ 8441] = 0x740A, [ 8442] = 0x7403, [ 8443] = 0x7406,
++  [ 8444] = 0x73FE, [ 8445] = 0x740D, [ 8446] = 0x74E0, [ 8447] = 0x74F6,
++  [ 8482] = 0x74F7, [ 8483] = 0x751C, [ 8484] = 0x7522, [ 8485] = 0x7565,
++  [ 8486] = 0x7566, [ 8487] = 0x7562, [ 8488] = 0x7570, [ 8489] = 0x758F,
++  [ 8490] = 0x75D4, [ 8491] = 0x75D5, [ 8492] = 0x75B5, [ 8493] = 0x75CA,
++  [ 8494] = 0x75CD, [ 8495] = 0x768E, [ 8496] = 0x76D4, [ 8497] = 0x76D2,
++  [ 8498] = 0x76DB, [ 8499] = 0x7737, [ 8500] = 0x773E, [ 8501] = 0x773C,
++  [ 8502] = 0x7736, [ 8503] = 0x7738, [ 8504] = 0x773A, [ 8505] = 0x786B,
++  [ 8506] = 0x7843, [ 8507] = 0x784E, [ 8508] = 0x7965, [ 8509] = 0x7968,
++  [ 8510] = 0x796D, [ 8511] = 0x79FB, [ 8512] = 0x7A92, [ 8513] = 0x7A95,
++  [ 8514] = 0x7B20, [ 8515] = 0x7B28, [ 8516] = 0x7B1B, [ 8517] = 0x7B2C,
++  [ 8518] = 0x7B26, [ 8519] = 0x7B19, [ 8520] = 0x7B1E, [ 8521] = 0x7B2E,
++  [ 8522] = 0x7C92, [ 8523] = 0x7C97, [ 8524] = 0x7C95, [ 8525] = 0x7D46,
++  [ 8526] = 0x7D43, [ 8527] = 0x7D71, [ 8528] = 0x7D2E, [ 8529] = 0x7D39,
++  [ 8530] = 0x7D3C, [ 8531] = 0x7D40, [ 8532] = 0x7D30, [ 8533] = 0x7D33,
++  [ 8534] = 0x7D44, [ 8535] = 0x7D2F, [ 8536] = 0x7D42, [ 8537] = 0x7D32,
++  [ 8538] = 0x7D31, [ 8539] = 0x7F3D, [ 8540] = 0x7F9E, [ 8541] = 0x7F9A,
++  [ 8542] = 0x7FCC, [ 8543] = 0x7FCE, [ 8544] = 0x7FD2, [ 8545] = 0x801C,
++  [ 8546] = 0x804A, [ 8547] = 0x8046, [ 8548] = 0x812F, [ 8549] = 0x8116,
++  [ 8550] = 0x8123, [ 8551] = 0x812B, [ 8552] = 0x8129, [ 8553] = 0x8130,
++  [ 8554] = 0x8124, [ 8555] = 0x8202, [ 8556] = 0x8235, [ 8557] = 0x8237,
++  [ 8558] = 0x8236, [ 8559] = 0x8239, [ 8560] = 0x838E, [ 8561] = 0x839E,
++  [ 8562] = 0x8398, [ 8563] = 0x8378, [ 8564] = 0x83A2, [ 8565] = 0x8396,
++  [ 8566] = 0x83BD, [ 8567] = 0x83AB, [ 8568] = 0x8392, [ 8569] = 0x838A,
++  [ 8570] = 0x8393, [ 8571] = 0x8389, [ 8572] = 0x83A0, [ 8573] = 0x8377,
++  [ 8574] = 0x837B, [ 8575] = 0x837C, [ 8580] = 0x8386, [ 8581] = 0x83A7,
++  [ 8582] = 0x8655, [ 8583] = 0x5F6A, [ 8584] = 0x86C7, [ 8585] = 0x86C0,
++  [ 8586] = 0x86B6, [ 8587] = 0x86C4, [ 8588] = 0x86B5, [ 8589] = 0x86C6,
++  [ 8590] = 0x86CB, [ 8591] = 0x86B1, [ 8592] = 0x86AF, [ 8593] = 0x86C9,
++  [ 8594] = 0x8853, [ 8595] = 0x889E, [ 8596] = 0x8888, [ 8597] = 0x88AB,
++  [ 8598] = 0x8892, [ 8599] = 0x8896, [ 8600] = 0x888D, [ 8601] = 0x888B,
++  [ 8602] = 0x8993, [ 8603] = 0x898F, [ 8604] = 0x8A2A, [ 8605] = 0x8A1D,
++  [ 8606] = 0x8A23, [ 8607] = 0x8A25, [ 8608] = 0x8A31, [ 8609] = 0x8A2D,
++  [ 8610] = 0x8A1F, [ 8611] = 0x8A1B, [ 8612] = 0x8A22, [ 8613] = 0x8C49,
++  [ 8614] = 0x8C5A, [ 8615] = 0x8CA9, [ 8616] = 0x8CAC, [ 8617] = 0x8CAB,
++  [ 8618] = 0x8CA8, [ 8619] = 0x8CAA, [ 8620] = 0x8CA7, [ 8621] = 0x8D67,
++  [ 8622] = 0x8D66, [ 8623] = 0x8DBE, [ 8624] = 0x8DBA, [ 8625] = 0x8EDB,
++  [ 8626] = 0x8EDF, [ 8627] = 0x9019, [ 8628] = 0x900D, [ 8629] = 0x901A,
++  [ 8630] = 0x9017, [ 8631] = 0x9023, [ 8632] = 0x901F, [ 8633] = 0x901D,
++  [ 8634] = 0x9010, [ 8635] = 0x9015, [ 8636] = 0x901E, [ 8637] = 0x9020,
++  [ 8638] = 0x900F, [ 8639] = 0x9022, [ 8640] = 0x9016, [ 8641] = 0x901B,
++  [ 8642] = 0x9014, [ 8677] = 0x90E8, [ 8678] = 0x90ED, [ 8679] = 0x90FD,
++  [ 8680] = 0x9157, [ 8681] = 0x91CE, [ 8682] = 0x91F5, [ 8683] = 0x91E6,
++  [ 8684] = 0x91E3, [ 8685] = 0x91E7, [ 8686] = 0x91ED, [ 8687] = 0x91E9,
++  [ 8688] = 0x9589, [ 8689] = 0x966A, [ 8690] = 0x9675, [ 8691] = 0x9673,
++  [ 8692] = 0x9678, [ 8693] = 0x9670, [ 8694] = 0x9674, [ 8695] = 0x9676,
++  [ 8696] = 0x9677, [ 8697] = 0x966C, [ 8698] = 0x96C0, [ 8699] = 0x96EA,
++  [ 8700] = 0x96E9, [ 8701] = 0x7AE0, [ 8702] = 0x7ADF, [ 8703] = 0x9802,
++  [ 8704] = 0x9803, [ 8705] = 0x9B5A, [ 8706] = 0x9CE5, [ 8707] = 0x9E75,
++  [ 8708] = 0x9E7F, [ 8709] = 0x9EA5, [ 8710] = 0x9EBB, [ 8711] = 0x50A2,
++  [ 8712] = 0x508D, [ 8713] = 0x5085, [ 8714] = 0x5099, [ 8715] = 0x5091,
++  [ 8716] = 0x5080, [ 8717] = 0x5096, [ 8718] = 0x5098, [ 8719] = 0x509A,
++  [ 8720] = 0x6700, [ 8721] = 0x51F1, [ 8722] = 0x5272, [ 8723] = 0x5274,
++  [ 8724] = 0x5275, [ 8725] = 0x5269, [ 8726] = 0x52DE, [ 8727] = 0x52DD,
++  [ 8728] = 0x52DB, [ 8729] = 0x535A, [ 8730] = 0x53A5, [ 8731] = 0x557B,
++  [ 8732] = 0x5580, [ 8733] = 0x55A7, [ 8734] = 0x557C, [ 8735] = 0x558A,
++  [ 8736] = 0x559D, [ 8737] = 0x5598, [ 8738] = 0x5582, [ 8739] = 0x559C,
++  [ 8740] = 0x55AA, [ 8741] = 0x5594, [ 8742] = 0x5587, [ 8743] = 0x558B,
++  [ 8744] = 0x5583, [ 8745] = 0x55B3, [ 8746] = 0x55AE, [ 8747] = 0x559F,
++  [ 8748] = 0x553E, [ 8749] = 0x55B2, [ 8750] = 0x559A, [ 8751] = 0x55BB,
++  [ 8752] = 0x55AC, [ 8753] = 0x55B1, [ 8754] = 0x557E, [ 8755] = 0x5589,
++  [ 8756] = 0x55AB, [ 8757] = 0x5599, [ 8758] = 0x570D, [ 8759] = 0x582F,
++  [ 8760] = 0x582A, [ 8761] = 0x5834, [ 8762] = 0x5824, [ 8763] = 0x5830,
++  [ 8764] = 0x5831, [ 8765] = 0x5821, [ 8766] = 0x581D, [ 8767] = 0x5820,
++  [ 8768] = 0x58F9, [ 8769] = 0x58FA, [ 8770] = 0x5960, [ 8775] = 0x5A77,
++  [ 8776] = 0x5A9A, [ 8777] = 0x5A7F, [ 8778] = 0x5A92, [ 8779] = 0x5A9B,
++  [ 8780] = 0x5AA7, [ 8781] = 0x5B73, [ 8782] = 0x5B71, [ 8783] = 0x5BD2,
++  [ 8784] = 0x5BCC, [ 8785] = 0x5BD3, [ 8786] = 0x5BD0, [ 8787] = 0x5C0A,
++  [ 8788] = 0x5C0B, [ 8789] = 0x5C31, [ 8790] = 0x5D4C, [ 8791] = 0x5D50,
++  [ 8792] = 0x5D34, [ 8793] = 0x5D47, [ 8794] = 0x5DFD, [ 8795] = 0x5E45,
++  [ 8796] = 0x5E3D, [ 8797] = 0x5E40, [ 8798] = 0x5E43, [ 8799] = 0x5E7E,
++  [ 8800] = 0x5ECA, [ 8801] = 0x5EC1, [ 8802] = 0x5EC2, [ 8803] = 0x5EC4,
++  [ 8804] = 0x5F3C, [ 8805] = 0x5F6D, [ 8806] = 0x5FA9, [ 8807] = 0x5FAA,
++  [ 8808] = 0x5FA8, [ 8809] = 0x60D1, [ 8810] = 0x60E1, [ 8811] = 0x60B2,
++  [ 8812] = 0x60B6, [ 8813] = 0x60E0, [ 8814] = 0x611C, [ 8815] = 0x6123,
++  [ 8816] = 0x60FA, [ 8817] = 0x6115, [ 8818] = 0x60F0, [ 8819] = 0x60FB,
++  [ 8820] = 0x60F4, [ 8821] = 0x6168, [ 8822] = 0x60F1, [ 8823] = 0x610E,
++  [ 8824] = 0x60F6, [ 8825] = 0x6109, [ 8826] = 0x6100, [ 8827] = 0x6112,
++  [ 8828] = 0x621F, [ 8829] = 0x6249, [ 8830] = 0x63A3, [ 8831] = 0x638C,
++  [ 8832] = 0x63CF, [ 8833] = 0x63C0, [ 8834] = 0x63E9, [ 8835] = 0x63C9,
++  [ 8836] = 0x63C6, [ 8837] = 0x63CD, [ 8872] = 0x63D2, [ 8873] = 0x63E3,
++  [ 8874] = 0x63D0, [ 8875] = 0x63E1, [ 8876] = 0x63D6, [ 8877] = 0x63ED,
++  [ 8878] = 0x63EE, [ 8879] = 0x6376, [ 8880] = 0x63F4, [ 8881] = 0x63EA,
++  [ 8882] = 0x63DB, [ 8883] = 0x6452, [ 8884] = 0x63DA, [ 8885] = 0x63F9,
++  [ 8886] = 0x655E, [ 8887] = 0x6566, [ 8888] = 0x6562, [ 8889] = 0x6563,
++  [ 8890] = 0x6591, [ 8891] = 0x6590, [ 8892] = 0x65AF, [ 8893] = 0x666E,
++  [ 8894] = 0x6670, [ 8895] = 0x6674, [ 8896] = 0x6676, [ 8897] = 0x666F,
++  [ 8898] = 0x6691, [ 8899] = 0x667A, [ 8900] = 0x667E, [ 8901] = 0x6677,
++  [ 8902] = 0x66FE, [ 8903] = 0x66FF, [ 8904] = 0x671F, [ 8905] = 0x671D,
++  [ 8906] = 0x68FA, [ 8907] = 0x68D5, [ 8908] = 0x68E0, [ 8909] = 0x68D8,
++  [ 8910] = 0x68D7, [ 8911] = 0x6905, [ 8912] = 0x68DF, [ 8913] = 0x68F5,
++  [ 8914] = 0x68EE, [ 8915] = 0x68E7, [ 8916] = 0x68F9, [ 8917] = 0x68D2,
++  [ 8918] = 0x68F2, [ 8919] = 0x68E3, [ 8920] = 0x68CB, [ 8921] = 0x68CD,
++  [ 8922] = 0x690D, [ 8923] = 0x6912, [ 8924] = 0x690E, [ 8925] = 0x68C9,
++  [ 8926] = 0x68DA, [ 8927] = 0x696E, [ 8928] = 0x68FB, [ 8929] = 0x6B3E,
++  [ 8930] = 0x6B3A, [ 8931] = 0x6B3D, [ 8932] = 0x6B98, [ 8933] = 0x6B96,
++  [ 8934] = 0x6BBC, [ 8935] = 0x6BEF, [ 8936] = 0x6C2E, [ 8937] = 0x6C2F,
++  [ 8938] = 0x6C2C, [ 8939] = 0x6E2F, [ 8940] = 0x6E38, [ 8941] = 0x6E54,
++  [ 8942] = 0x6E21, [ 8943] = 0x6E32, [ 8944] = 0x6E67, [ 8945] = 0x6E4A,
++  [ 8946] = 0x6E20, [ 8947] = 0x6E25, [ 8948] = 0x6E23, [ 8949] = 0x6E1B,
++  [ 8950] = 0x6E5B, [ 8951] = 0x6E58, [ 8952] = 0x6E24, [ 8953] = 0x6E56,
++  [ 8954] = 0x6E6E, [ 8955] = 0x6E2D, [ 8956] = 0x6E26, [ 8957] = 0x6E6F,
++  [ 8958] = 0x6E34, [ 8959] = 0x6E4D, [ 8960] = 0x6E3A, [ 8961] = 0x6E2C,
++  [ 8962] = 0x6E43, [ 8963] = 0x6E1D, [ 8964] = 0x6E3E, [ 8965] = 0x6ECB,
++  [ 8970] = 0x6E89, [ 8971] = 0x6E19, [ 8972] = 0x6E4E, [ 8973] = 0x6E63,
++  [ 8974] = 0x6E44, [ 8975] = 0x6E72, [ 8976] = 0x6E69, [ 8977] = 0x6E5F,
++  [ 8978] = 0x7119, [ 8979] = 0x711A, [ 8980] = 0x7126, [ 8981] = 0x7130,
++  [ 8982] = 0x7121, [ 8983] = 0x7136, [ 8984] = 0x716E, [ 8985] = 0x711C,
++  [ 8986] = 0x724C, [ 8987] = 0x7284, [ 8988] = 0x7280, [ 8989] = 0x7336,
++  [ 8990] = 0x7325, [ 8991] = 0x7334, [ 8992] = 0x7329, [ 8993] = 0x743A,
++  [ 8994] = 0x742A, [ 8995] = 0x7433, [ 8996] = 0x7422, [ 8997] = 0x7425,
++  [ 8998] = 0x7435, [ 8999] = 0x7436, [ 9000] = 0x7434, [ 9001] = 0x742F,
++  [ 9002] = 0x741B, [ 9003] = 0x7426, [ 9004] = 0x7428, [ 9005] = 0x7525,
++  [ 9006] = 0x7526, [ 9007] = 0x756B, [ 9008] = 0x756A, [ 9009] = 0x75E2,
++  [ 9010] = 0x75DB, [ 9011] = 0x75E3, [ 9012] = 0x75D9, [ 9013] = 0x75D8,
++  [ 9014] = 0x75DE, [ 9015] = 0x75E0, [ 9016] = 0x767B, [ 9017] = 0x767C,
++  [ 9018] = 0x7696, [ 9019] = 0x7693, [ 9020] = 0x76B4, [ 9021] = 0x76DC,
++  [ 9022] = 0x774F, [ 9023] = 0x77ED, [ 9024] = 0x785D, [ 9025] = 0x786C,
++  [ 9026] = 0x786F, [ 9027] = 0x7A0D, [ 9028] = 0x7A08, [ 9029] = 0x7A0B,
++  [ 9030] = 0x7A05, [ 9031] = 0x7A00, [ 9032] = 0x7A98, [ 9067] = 0x7A97,
++  [ 9068] = 0x7A96, [ 9069] = 0x7AE5, [ 9070] = 0x7AE3, [ 9071] = 0x7B49,
++  [ 9072] = 0x7B56, [ 9073] = 0x7B46, [ 9074] = 0x7B50, [ 9075] = 0x7B52,
++  [ 9076] = 0x7B54, [ 9077] = 0x7B4D, [ 9078] = 0x7B4B, [ 9079] = 0x7B4F,
++  [ 9080] = 0x7B51, [ 9081] = 0x7C9F, [ 9082] = 0x7CA5, [ 9083] = 0x7D5E,
++  [ 9084] = 0x7D50, [ 9085] = 0x7D68, [ 9086] = 0x7D55, [ 9087] = 0x7D2B,
++  [ 9088] = 0x7D6E, [ 9089] = 0x7D72, [ 9090] = 0x7D61, [ 9091] = 0x7D66,
++  [ 9092] = 0x7D62, [ 9093] = 0x7D70, [ 9094] = 0x7D73, [ 9095] = 0x5584,
++  [ 9096] = 0x7FD4, [ 9097] = 0x7FD5, [ 9098] = 0x800B, [ 9099] = 0x8052,
++  [ 9100] = 0x8085, [ 9101] = 0x8155, [ 9102] = 0x8154, [ 9103] = 0x814B,
++  [ 9104] = 0x8151, [ 9105] = 0x814E, [ 9106] = 0x8139, [ 9107] = 0x8146,
++  [ 9108] = 0x813E, [ 9109] = 0x814C, [ 9110] = 0x8153, [ 9111] = 0x8174,
++  [ 9112] = 0x8212, [ 9113] = 0x821C, [ 9114] = 0x83E9, [ 9115] = 0x8403,
++  [ 9116] = 0x83F8, [ 9117] = 0x840D, [ 9118] = 0x83E0, [ 9119] = 0x83C5,
++  [ 9120] = 0x840B, [ 9121] = 0x83C1, [ 9122] = 0x83EF, [ 9123] = 0x83F1,
++  [ 9124] = 0x83F4, [ 9125] = 0x8457, [ 9126] = 0x840A, [ 9127] = 0x83F0,
++  [ 9128] = 0x840C, [ 9129] = 0x83CC, [ 9130] = 0x83FD, [ 9131] = 0x83F2,
++  [ 9132] = 0x83CA, [ 9133] = 0x8438, [ 9134] = 0x840E, [ 9135] = 0x8404,
++  [ 9136] = 0x83DC, [ 9137] = 0x8407, [ 9138] = 0x83D4, [ 9139] = 0x83DF,
++  [ 9140] = 0x865B, [ 9141] = 0x86DF, [ 9142] = 0x86D9, [ 9143] = 0x86ED,
++  [ 9144] = 0x86D4, [ 9145] = 0x86DB, [ 9146] = 0x86E4, [ 9147] = 0x86D0,
++  [ 9148] = 0x86DE, [ 9149] = 0x8857, [ 9150] = 0x88C1, [ 9151] = 0x88C2,
++  [ 9152] = 0x88B1, [ 9153] = 0x8983, [ 9154] = 0x8996, [ 9155] = 0x8A3B,
++  [ 9156] = 0x8A60, [ 9157] = 0x8A55, [ 9158] = 0x8A5E, [ 9159] = 0x8A3C,
++  [ 9160] = 0x8A41, [ 9165] = 0x8A54, [ 9166] = 0x8A5B, [ 9167] = 0x8A50,
++  [ 9168] = 0x8A46, [ 9169] = 0x8A34, [ 9170] = 0x8A3A, [ 9171] = 0x8A36,
++  [ 9172] = 0x8A56, [ 9173] = 0x8C61, [ 9174] = 0x8C82, [ 9175] = 0x8CAF,
++  [ 9176] = 0x8CBC, [ 9177] = 0x8CB3, [ 9178] = 0x8CBD, [ 9179] = 0x8CC1,
++  [ 9180] = 0x8CBB, [ 9181] = 0x8CC0, [ 9182] = 0x8CB4, [ 9183] = 0x8CB7,
++  [ 9184] = 0x8CB6, [ 9185] = 0x8CBF, [ 9186] = 0x8CB8, [ 9187] = 0x8D8A,
++  [ 9188] = 0x8D85, [ 9189] = 0x8D81, [ 9190] = 0x8DCE, [ 9191] = 0x8DDD,
++  [ 9192] = 0x8DCB, [ 9193] = 0x8DDA, [ 9194] = 0x8DD1, [ 9195] = 0x8DCC,
++  [ 9196] = 0x8DDB, [ 9197] = 0x8DC6, [ 9198] = 0x8EFB, [ 9199] = 0x8EF8,
++  [ 9200] = 0x8EFC, [ 9201] = 0x8F9C, [ 9202] = 0x902E, [ 9203] = 0x9035,
++  [ 9204] = 0x9031, [ 9205] = 0x9038, [ 9206] = 0x9032, [ 9207] = 0x9036,
++  [ 9208] = 0x9102, [ 9209] = 0x90F5, [ 9210] = 0x9109, [ 9211] = 0x90FE,
++  [ 9212] = 0x9163, [ 9213] = 0x9165, [ 9214] = 0x91CF, [ 9215] = 0x9214,
++  [ 9216] = 0x9215, [ 9217] = 0x9223, [ 9218] = 0x9209, [ 9219] = 0x921E,
++  [ 9220] = 0x920D, [ 9221] = 0x9210, [ 9222] = 0x9207, [ 9223] = 0x9211,
++  [ 9224] = 0x9594, [ 9225] = 0x958F, [ 9226] = 0x958B, [ 9227] = 0x9591,
++  [ 9262] = 0x9593, [ 9263] = 0x9592, [ 9264] = 0x958E, [ 9265] = 0x968A,
++  [ 9266] = 0x968E, [ 9267] = 0x968B, [ 9268] = 0x967D, [ 9269] = 0x9685,
++  [ 9270] = 0x9686, [ 9271] = 0x968D, [ 9272] = 0x9672, [ 9273] = 0x9684,
++  [ 9274] = 0x96C1, [ 9275] = 0x96C5, [ 9276] = 0x96C4, [ 9277] = 0x96C6,
++  [ 9278] = 0x96C7, [ 9279] = 0x96EF, [ 9280] = 0x96F2, [ 9281] = 0x97CC,
++  [ 9282] = 0x9805, [ 9283] = 0x9806, [ 9284] = 0x9808, [ 9285] = 0x98E7,
++  [ 9286] = 0x98EA, [ 9287] = 0x98EF, [ 9288] = 0x98E9, [ 9289] = 0x98F2,
++  [ 9290] = 0x98ED, [ 9291] = 0x99AE, [ 9292] = 0x99AD, [ 9293] = 0x9EC3,
++  [ 9294] = 0x9ECD, [ 9295] = 0x9ED1, [ 9296] = 0x4E82, [ 9297] = 0x50AD,
++  [ 9298] = 0x50B5, [ 9299] = 0x50B2, [ 9300] = 0x50B3, [ 9301] = 0x50C5,
++  [ 9302] = 0x50BE, [ 9303] = 0x50AC, [ 9304] = 0x50B7, [ 9305] = 0x50BB,
++  [ 9306] = 0x50AF, [ 9307] = 0x50C7, [ 9308] = 0x527F, [ 9309] = 0x5277,
++  [ 9310] = 0x527D, [ 9311] = 0x52DF, [ 9312] = 0x52E6, [ 9313] = 0x52E4,
++  [ 9314] = 0x52E2, [ 9315] = 0x52E3, [ 9316] = 0x532F, [ 9317] = 0x55DF,
++  [ 9318] = 0x55E8, [ 9319] = 0x55D3, [ 9320] = 0x55E6, [ 9321] = 0x55CE,
++  [ 9322] = 0x55DC, [ 9323] = 0x55C7, [ 9324] = 0x55D1, [ 9325] = 0x55E3,
++  [ 9326] = 0x55E4, [ 9327] = 0x55EF, [ 9328] = 0x55DA, [ 9329] = 0x55E1,
++  [ 9330] = 0x55C5, [ 9331] = 0x55C6, [ 9332] = 0x55E5, [ 9333] = 0x55C9,
++  [ 9334] = 0x5712, [ 9335] = 0x5713, [ 9336] = 0x585E, [ 9337] = 0x5851,
++  [ 9338] = 0x5858, [ 9339] = 0x5857, [ 9340] = 0x585A, [ 9341] = 0x5854,
++  [ 9342] = 0x586B, [ 9343] = 0x584C, [ 9344] = 0x586D, [ 9345] = 0x584A,
++  [ 9346] = 0x5862, [ 9347] = 0x5852, [ 9348] = 0x584B, [ 9349] = 0x5967,
++  [ 9350] = 0x5AC1, [ 9351] = 0x5AC9, [ 9352] = 0x5ACC, [ 9353] = 0x5ABE,
++  [ 9354] = 0x5ABD, [ 9355] = 0x5ABC, [ 9360] = 0x5AB3, [ 9361] = 0x5AC2,
++  [ 9362] = 0x5AB2, [ 9363] = 0x5D69, [ 9364] = 0x5D6F, [ 9365] = 0x5E4C,
++  [ 9366] = 0x5E79, [ 9367] = 0x5EC9, [ 9368] = 0x5EC8, [ 9369] = 0x5F12,
++  [ 9370] = 0x5F59, [ 9371] = 0x5FAC, [ 9372] = 0x5FAE, [ 9373] = 0x611A,
++  [ 9374] = 0x610F, [ 9375] = 0x6148, [ 9376] = 0x611F, [ 9377] = 0x60F3,
++  [ 9378] = 0x611B, [ 9379] = 0x60F9, [ 9380] = 0x6101, [ 9381] = 0x6108,
++  [ 9382] = 0x614E, [ 9383] = 0x614C, [ 9384] = 0x6144, [ 9385] = 0x614D,
++  [ 9386] = 0x613E, [ 9387] = 0x6134, [ 9388] = 0x6127, [ 9389] = 0x610D,
++  [ 9390] = 0x6106, [ 9391] = 0x6137, [ 9392] = 0x6221, [ 9393] = 0x6222,
++  [ 9394] = 0x6413, [ 9395] = 0x643E, [ 9396] = 0x641E, [ 9397] = 0x642A,
++  [ 9398] = 0x642D, [ 9399] = 0x643D, [ 9400] = 0x642C, [ 9401] = 0x640F,
++  [ 9402] = 0x641C, [ 9403] = 0x6414, [ 9404] = 0x640D, [ 9405] = 0x6436,
++  [ 9406] = 0x6416, [ 9407] = 0x6417, [ 9408] = 0x6406, [ 9409] = 0x656C,
++  [ 9410] = 0x659F, [ 9411] = 0x65B0, [ 9412] = 0x6697, [ 9413] = 0x6689,
++  [ 9414] = 0x6687, [ 9415] = 0x6688, [ 9416] = 0x6696, [ 9417] = 0x6684,
++  [ 9418] = 0x6698, [ 9419] = 0x668D, [ 9420] = 0x6703, [ 9421] = 0x6994,
++  [ 9422] = 0x696D, [ 9457] = 0x695A, [ 9458] = 0x6977, [ 9459] = 0x6960,
++  [ 9460] = 0x6954, [ 9461] = 0x6975, [ 9462] = 0x6930, [ 9463] = 0x6982,
++  [ 9464] = 0x694A, [ 9465] = 0x6968, [ 9466] = 0x696B, [ 9467] = 0x695E,
++  [ 9468] = 0x6953, [ 9469] = 0x6979, [ 9470] = 0x6986, [ 9471] = 0x695D,
++  [ 9472] = 0x6963, [ 9473] = 0x695B, [ 9474] = 0x6B47, [ 9475] = 0x6B72,
++  [ 9476] = 0x6BC0, [ 9477] = 0x6BBF, [ 9478] = 0x6BD3, [ 9479] = 0x6BFD,
++  [ 9480] = 0x6EA2, [ 9481] = 0x6EAF, [ 9482] = 0x6ED3, [ 9483] = 0x6EB6,
++  [ 9484] = 0x6EC2, [ 9485] = 0x6E90, [ 9486] = 0x6E9D, [ 9487] = 0x6EC7,
++  [ 9488] = 0x6EC5, [ 9489] = 0x6EA5, [ 9490] = 0x6E98, [ 9491] = 0x6EBC,
++  [ 9492] = 0x6EBA, [ 9493] = 0x6EAB, [ 9494] = 0x6ED1, [ 9495] = 0x6E96,
++  [ 9496] = 0x6E9C, [ 9497] = 0x6EC4, [ 9498] = 0x6ED4, [ 9499] = 0x6EAA,
++  [ 9500] = 0x6EA7, [ 9501] = 0x6EB4, [ 9502] = 0x714E, [ 9503] = 0x7159,
++  [ 9504] = 0x7169, [ 9505] = 0x7164, [ 9506] = 0x7149, [ 9507] = 0x7167,
++  [ 9508] = 0x715C, [ 9509] = 0x716C, [ 9510] = 0x7166, [ 9511] = 0x714C,
++  [ 9512] = 0x7165, [ 9513] = 0x715E, [ 9514] = 0x7146, [ 9515] = 0x7168,
++  [ 9516] = 0x7156, [ 9517] = 0x723A, [ 9518] = 0x7252, [ 9519] = 0x7337,
++  [ 9520] = 0x7345, [ 9521] = 0x733F, [ 9522] = 0x733E, [ 9523] = 0x746F,
++  [ 9524] = 0x745A, [ 9525] = 0x7455, [ 9526] = 0x745F, [ 9527] = 0x745E,
++  [ 9528] = 0x7441, [ 9529] = 0x743F, [ 9530] = 0x7459, [ 9531] = 0x745B,
++  [ 9532] = 0x745C, [ 9533] = 0x7576, [ 9534] = 0x7578, [ 9535] = 0x7600,
++  [ 9536] = 0x75F0, [ 9537] = 0x7601, [ 9538] = 0x75F2, [ 9539] = 0x75F1,
++  [ 9540] = 0x75FA, [ 9541] = 0x75FF, [ 9542] = 0x75F4, [ 9543] = 0x75F3,
++  [ 9544] = 0x76DE, [ 9545] = 0x76DF, [ 9546] = 0x775B, [ 9547] = 0x776B,
++  [ 9548] = 0x7766, [ 9549] = 0x775E, [ 9550] = 0x7763, [ 9555] = 0x7779,
++  [ 9556] = 0x776A, [ 9557] = 0x776C, [ 9558] = 0x775C, [ 9559] = 0x7765,
++  [ 9560] = 0x7768, [ 9561] = 0x7762, [ 9562] = 0x77EE, [ 9563] = 0x788E,
++  [ 9564] = 0x78B0, [ 9565] = 0x7897, [ 9566] = 0x7898, [ 9567] = 0x788C,
++  [ 9568] = 0x7889, [ 9569] = 0x787C, [ 9570] = 0x7891, [ 9571] = 0x7893,
++  [ 9572] = 0x787F, [ 9573] = 0x797A, [ 9574] = 0x797F, [ 9575] = 0x7981,
++  [ 9576] = 0x842C, [ 9577] = 0x79BD, [ 9578] = 0x7A1C, [ 9579] = 0x7A1A,
++  [ 9580] = 0x7A20, [ 9581] = 0x7A14, [ 9582] = 0x7A1F, [ 9583] = 0x7A1E,
++  [ 9584] = 0x7A9F, [ 9585] = 0x7AA0, [ 9586] = 0x7B77, [ 9587] = 0x7BC0,
++  [ 9588] = 0x7B60, [ 9589] = 0x7B6E, [ 9590] = 0x7B67, [ 9591] = 0x7CB1,
++  [ 9592] = 0x7CB3, [ 9593] = 0x7CB5, [ 9594] = 0x7D93, [ 9595] = 0x7D79,
++  [ 9596] = 0x7D91, [ 9597] = 0x7D81, [ 9598] = 0x7D8F, [ 9599] = 0x7D5B,
++  [ 9600] = 0x7F6E, [ 9601] = 0x7F69, [ 9602] = 0x7F6A, [ 9603] = 0x7F72,
++  [ 9604] = 0x7FA9, [ 9605] = 0x7FA8, [ 9606] = 0x7FA4, [ 9607] = 0x8056,
++  [ 9608] = 0x8058, [ 9609] = 0x8086, [ 9610] = 0x8084, [ 9611] = 0x8171,
++  [ 9612] = 0x8170, [ 9613] = 0x8178, [ 9614] = 0x8165, [ 9615] = 0x816E,
++  [ 9616] = 0x8173, [ 9617] = 0x816B, [ 9652] = 0x8179, [ 9653] = 0x817A,
++  [ 9654] = 0x8166, [ 9655] = 0x8205, [ 9656] = 0x8247, [ 9657] = 0x8482,
++  [ 9658] = 0x8477, [ 9659] = 0x843D, [ 9660] = 0x8431, [ 9661] = 0x8475,
++  [ 9662] = 0x8466, [ 9663] = 0x846B, [ 9664] = 0x8449, [ 9665] = 0x846C,
++  [ 9666] = 0x845B, [ 9667] = 0x843C, [ 9668] = 0x8435, [ 9669] = 0x8461,
++  [ 9670] = 0x8463, [ 9671] = 0x8469, [ 9672] = 0x846D, [ 9673] = 0x8446,
++  [ 9674] = 0x865E, [ 9675] = 0x865C, [ 9676] = 0x865F, [ 9677] = 0x86F9,
++  [ 9678] = 0x8713, [ 9679] = 0x8708, [ 9680] = 0x8707, [ 9681] = 0x8700,
++  [ 9682] = 0x86FE, [ 9683] = 0x86FB, [ 9684] = 0x8702, [ 9685] = 0x8703,
++  [ 9686] = 0x8706, [ 9687] = 0x870A, [ 9688] = 0x8859, [ 9689] = 0x88DF,
++  [ 9690] = 0x88D4, [ 9691] = 0x88D9, [ 9692] = 0x88DC, [ 9693] = 0x88D8,
++  [ 9694] = 0x88DD, [ 9695] = 0x88E1, [ 9696] = 0x88CA, [ 9697] = 0x88D5,
++  [ 9698] = 0x88D2, [ 9699] = 0x899C, [ 9700] = 0x89E3, [ 9701] = 0x8A6B,
++  [ 9702] = 0x8A72, [ 9703] = 0x8A73, [ 9704] = 0x8A66, [ 9705] = 0x8A69,
++  [ 9706] = 0x8A70, [ 9707] = 0x8A87, [ 9708] = 0x8A7C, [ 9709] = 0x8A63,
++  [ 9710] = 0x8AA0, [ 9711] = 0x8A71, [ 9712] = 0x8A85, [ 9713] = 0x8A6D,
++  [ 9714] = 0x8A62, [ 9715] = 0x8A6E, [ 9716] = 0x8A6C, [ 9717] = 0x8A79,
++  [ 9718] = 0x8A7B, [ 9719] = 0x8A3E, [ 9720] = 0x8A68, [ 9721] = 0x8C62,
++  [ 9722] = 0x8C8A, [ 9723] = 0x8C89, [ 9724] = 0x8CCA, [ 9725] = 0x8CC7,
++  [ 9726] = 0x8CC8, [ 9727] = 0x8CC4, [ 9728] = 0x8CB2, [ 9729] = 0x8CC3,
++  [ 9730] = 0x8CC2, [ 9731] = 0x8CC5, [ 9732] = 0x8DE1, [ 9733] = 0x8DDF,
++  [ 9734] = 0x8DE8, [ 9735] = 0x8DEF, [ 9736] = 0x8DF3, [ 9737] = 0x8DFA,
++  [ 9738] = 0x8DEA, [ 9739] = 0x8DE4, [ 9740] = 0x8DE6, [ 9741] = 0x8EB2,
++  [ 9742] = 0x8F03, [ 9743] = 0x8F09, [ 9744] = 0x8EFE, [ 9745] = 0x8F0A,
++  [ 9750] = 0x8F9F, [ 9751] = 0x8FB2, [ 9752] = 0x904B, [ 9753] = 0x904A,
++  [ 9754] = 0x9053, [ 9755] = 0x9042, [ 9756] = 0x9054, [ 9757] = 0x903C,
++  [ 9758] = 0x9055, [ 9759] = 0x9050, [ 9760] = 0x9047, [ 9761] = 0x904F,
++  [ 9762] = 0x904E, [ 9763] = 0x904D, [ 9764] = 0x9051, [ 9765] = 0x903E,
++  [ 9766] = 0x9041, [ 9767] = 0x9112, [ 9768] = 0x9117, [ 9769] = 0x916C,
++  [ 9770] = 0x916A, [ 9771] = 0x9169, [ 9772] = 0x91C9, [ 9773] = 0x9237,
++  [ 9774] = 0x9257, [ 9775] = 0x9238, [ 9776] = 0x923D, [ 9777] = 0x9240,
++  [ 9778] = 0x923E, [ 9779] = 0x925B, [ 9780] = 0x924B, [ 9781] = 0x9264,
++  [ 9782] = 0x9251, [ 9783] = 0x9234, [ 9784] = 0x9249, [ 9785] = 0x924D,
++  [ 9786] = 0x9245, [ 9787] = 0x9239, [ 9788] = 0x923F, [ 9789] = 0x925A,
++  [ 9790] = 0x9598, [ 9791] = 0x9698, [ 9792] = 0x9694, [ 9793] = 0x9695,
++  [ 9794] = 0x96CD, [ 9795] = 0x96CB, [ 9796] = 0x96C9, [ 9797] = 0x96CA,
++  [ 9798] = 0x96F7, [ 9799] = 0x96FB, [ 9800] = 0x96F9, [ 9801] = 0x96F6,
++  [ 9802] = 0x9756, [ 9803] = 0x9774, [ 9804] = 0x9776, [ 9805] = 0x9810,
++  [ 9806] = 0x9811, [ 9807] = 0x9813, [ 9808] = 0x980A, [ 9809] = 0x9812,
++  [ 9810] = 0x980C, [ 9811] = 0x98FC, [ 9812] = 0x98F4, [ 9847] = 0x98FD,
++  [ 9848] = 0x98FE, [ 9849] = 0x99B3, [ 9850] = 0x99B1, [ 9851] = 0x99B4,
++  [ 9852] = 0x9AE1, [ 9853] = 0x9CE9, [ 9854] = 0x9E82, [ 9855] = 0x9F0E,
++  [ 9856] = 0x9F13, [ 9857] = 0x9F20, [ 9858] = 0x50E7, [ 9859] = 0x50EE,
++  [ 9860] = 0x50E5, [ 9861] = 0x50D6, [ 9862] = 0x50ED, [ 9863] = 0x50DA,
++  [ 9864] = 0x50D5, [ 9865] = 0x50CF, [ 9866] = 0x50D1, [ 9867] = 0x50F1,
++  [ 9868] = 0x50CE, [ 9869] = 0x50E9, [ 9870] = 0x5162, [ 9871] = 0x51F3,
++  [ 9872] = 0x5283, [ 9873] = 0x5282, [ 9874] = 0x5331, [ 9875] = 0x53AD,
++  [ 9876] = 0x55FE, [ 9877] = 0x5600, [ 9878] = 0x561B, [ 9879] = 0x5617,
++  [ 9880] = 0x55FD, [ 9881] = 0x5614, [ 9882] = 0x5606, [ 9883] = 0x5609,
++  [ 9884] = 0x560D, [ 9885] = 0x560E, [ 9886] = 0x55F7, [ 9887] = 0x5616,
++  [ 9888] = 0x561F, [ 9889] = 0x5608, [ 9890] = 0x5610, [ 9891] = 0x55F6,
++  [ 9892] = 0x5718, [ 9893] = 0x5716, [ 9894] = 0x5875, [ 9895] = 0x587E,
++  [ 9896] = 0x5883, [ 9897] = 0x5893, [ 9898] = 0x588A, [ 9899] = 0x5879,
++  [ 9900] = 0x5885, [ 9901] = 0x587D, [ 9902] = 0x58FD, [ 9903] = 0x5925,
++  [ 9904] = 0x5922, [ 9905] = 0x5924, [ 9906] = 0x596A, [ 9907] = 0x5969,
++  [ 9908] = 0x5AE1, [ 9909] = 0x5AE6, [ 9910] = 0x5AE9, [ 9911] = 0x5AD7,
++  [ 9912] = 0x5AD6, [ 9913] = 0x5AD8, [ 9914] = 0x5AE3, [ 9915] = 0x5B75,
++  [ 9916] = 0x5BDE, [ 9917] = 0x5BE7, [ 9918] = 0x5BE1, [ 9919] = 0x5BE5,
++  [ 9920] = 0x5BE6, [ 9921] = 0x5BE8, [ 9922] = 0x5BE2, [ 9923] = 0x5BE4,
++  [ 9924] = 0x5BDF, [ 9925] = 0x5C0D, [ 9926] = 0x5C62, [ 9927] = 0x5D84,
++  [ 9928] = 0x5D87, [ 9929] = 0x5E5B, [ 9930] = 0x5E63, [ 9931] = 0x5E55,
++  [ 9932] = 0x5E57, [ 9933] = 0x5E54, [ 9934] = 0x5ED3, [ 9935] = 0x5ED6,
++  [ 9936] = 0x5F0A, [ 9937] = 0x5F46, [ 9938] = 0x5F70, [ 9939] = 0x5FB9,
++  [ 9940] = 0x6147, [ 9945] = 0x613F, [ 9946] = 0x614B, [ 9947] = 0x6177,
++  [ 9948] = 0x6162, [ 9949] = 0x6163, [ 9950] = 0x615F, [ 9951] = 0x615A,
++  [ 9952] = 0x6158, [ 9953] = 0x6175, [ 9954] = 0x622A, [ 9955] = 0x6487,
++  [ 9956] = 0x6458, [ 9957] = 0x6454, [ 9958] = 0x64A4, [ 9959] = 0x6478,
++  [ 9960] = 0x645F, [ 9961] = 0x647A, [ 9962] = 0x6451, [ 9963] = 0x6467,
++  [ 9964] = 0x6434, [ 9965] = 0x646D, [ 9966] = 0x647B, [ 9967] = 0x6572,
++  [ 9968] = 0x65A1, [ 9969] = 0x65D7, [ 9970] = 0x65D6, [ 9971] = 0x66A2,
++  [ 9972] = 0x66A8, [ 9973] = 0x669D, [ 9974] = 0x699C, [ 9975] = 0x69A8,
++  [ 9976] = 0x6995, [ 9977] = 0x69C1, [ 9978] = 0x69AE, [ 9979] = 0x69D3,
++  [ 9980] = 0x69CB, [ 9981] = 0x699B, [ 9982] = 0x69B7, [ 9983] = 0x69BB,
++  [ 9984] = 0x69AB, [ 9985] = 0x69B4, [ 9986] = 0x69D0, [ 9987] = 0x69CD,
++  [ 9988] = 0x69AD, [ 9989] = 0x69CC, [ 9990] = 0x69A6, [ 9991] = 0x69C3,
++  [ 9992] = 0x69A3, [ 9993] = 0x6B49, [ 9994] = 0x6B4C, [ 9995] = 0x6C33,
++  [ 9996] = 0x6F33, [ 9997] = 0x6F14, [ 9998] = 0x6EFE, [ 9999] = 0x6F13,
++  [10000] = 0x6EF4, [10001] = 0x6F29, [10002] = 0x6F3E, [10003] = 0x6F20,
++  [10004] = 0x6F2C, [10005] = 0x6F0F, [10006] = 0x6F02, [10007] = 0x6F22,
++  [10042] = 0x6EFF, [10043] = 0x6EEF, [10044] = 0x6F06, [10045] = 0x6F31,
++  [10046] = 0x6F38, [10047] = 0x6F32, [10048] = 0x6F23, [10049] = 0x6F15,
++  [10050] = 0x6F2B, [10051] = 0x6F2F, [10052] = 0x6F88, [10053] = 0x6F2A,
++  [10054] = 0x6EEC, [10055] = 0x6F01, [10056] = 0x6EF2, [10057] = 0x6ECC,
++  [10058] = 0x6EF7, [10059] = 0x7194, [10060] = 0x7199, [10061] = 0x717D,
++  [10062] = 0x718A, [10063] = 0x7184, [10064] = 0x7192, [10065] = 0x723E,
++  [10066] = 0x7292, [10067] = 0x7296, [10068] = 0x7344, [10069] = 0x7350,
++  [10070] = 0x7464, [10071] = 0x7463, [10072] = 0x746A, [10073] = 0x7470,
++  [10074] = 0x746D, [10075] = 0x7504, [10076] = 0x7591, [10077] = 0x7627,
++  [10078] = 0x760D, [10079] = 0x760B, [10080] = 0x7609, [10081] = 0x7613,
++  [10082] = 0x76E1, [10083] = 0x76E3, [10084] = 0x7784, [10085] = 0x777D,
++  [10086] = 0x777F, [10087] = 0x7761, [10088] = 0x78C1, [10089] = 0x789F,
++  [10090] = 0x78A7, [10091] = 0x78B3, [10092] = 0x78A9, [10093] = 0x78A3,
++  [10094] = 0x798E, [10095] = 0x798F, [10096] = 0x798D, [10097] = 0x7A2E,
++  [10098] = 0x7A31, [10099] = 0x7AAA, [10100] = 0x7AA9, [10101] = 0x7AED,
++  [10102] = 0x7AEF, [10103] = 0x7BA1, [10104] = 0x7B95, [10105] = 0x7B8B,
++  [10106] = 0x7B75, [10107] = 0x7B97, [10108] = 0x7B9D, [10109] = 0x7B94,
++  [10110] = 0x7B8F, [10111] = 0x7BB8, [10112] = 0x7B87, [10113] = 0x7B84,
++  [10114] = 0x7CB9, [10115] = 0x7CBD, [10116] = 0x7CBE, [10117] = 0x7DBB,
++  [10118] = 0x7DB0, [10119] = 0x7D9C, [10120] = 0x7DBD, [10121] = 0x7DBE,
++  [10122] = 0x7DA0, [10123] = 0x7DCA, [10124] = 0x7DB4, [10125] = 0x7DB2,
++  [10126] = 0x7DB1, [10127] = 0x7DBA, [10128] = 0x7DA2, [10129] = 0x7DBF,
++  [10130] = 0x7DB5, [10131] = 0x7DB8, [10132] = 0x7DAD, [10133] = 0x7DD2,
++  [10134] = 0x7DC7, [10135] = 0x7DAC, [10140] = 0x7F70, [10141] = 0x7FE0,
++  [10142] = 0x7FE1, [10143] = 0x7FDF, [10144] = 0x805E, [10145] = 0x805A,
++  [10146] = 0x8087, [10147] = 0x8150, [10148] = 0x8180, [10149] = 0x818F,
++  [10150] = 0x8188, [10151] = 0x818A, [10152] = 0x817F, [10153] = 0x8182,
++  [10154] = 0x81E7, [10155] = 0x81FA, [10156] = 0x8207, [10157] = 0x8214,
++  [10158] = 0x821E, [10159] = 0x824B, [10160] = 0x84C9, [10161] = 0x84BF,
++  [10162] = 0x84C6, [10163] = 0x84C4, [10164] = 0x8499, [10165] = 0x849E,
++  [10166] = 0x84B2, [10167] = 0x849C, [10168] = 0x84CB, [10169] = 0x84B8,
++  [10170] = 0x84C0, [10171] = 0x84D3, [10172] = 0x8490, [10173] = 0x84BC,
++  [10174] = 0x84D1, [10175] = 0x84CA, [10176] = 0x873F, [10177] = 0x871C,
++  [10178] = 0x873B, [10179] = 0x8722, [10180] = 0x8725, [10181] = 0x8734,
++  [10182] = 0x8718, [10183] = 0x8755, [10184] = 0x8737, [10185] = 0x8729,
++  [10186] = 0x88F3, [10187] = 0x8902, [10188] = 0x88F4, [10189] = 0x88F9,
++  [10190] = 0x88F8, [10191] = 0x88FD, [10192] = 0x88E8, [10193] = 0x891A,
++  [10194] = 0x88EF, [10195] = 0x8AA6, [10196] = 0x8A8C, [10197] = 0x8A9E,
++  [10198] = 0x8AA3, [10199] = 0x8A8D, [10200] = 0x8AA1, [10201] = 0x8A93,
++  [10202] = 0x8AA4, [10237] = 0x8AAA, [10238] = 0x8AA5, [10239] = 0x8AA8,
++  [10240] = 0x8A98, [10241] = 0x8A91, [10242] = 0x8A9A, [10243] = 0x8AA7,
++  [10244] = 0x8C6A, [10245] = 0x8C8D, [10246] = 0x8C8C, [10247] = 0x8CD3,
++  [10248] = 0x8CD1, [10249] = 0x8CD2, [10250] = 0x8D6B, [10251] = 0x8D99,
++  [10252] = 0x8D95, [10253] = 0x8DFC, [10254] = 0x8F14, [10255] = 0x8F12,
++  [10256] = 0x8F15, [10257] = 0x8F13, [10258] = 0x8FA3, [10259] = 0x9060,
++  [10260] = 0x9058, [10261] = 0x905C, [10262] = 0x9063, [10263] = 0x9059,
++  [10264] = 0x905E, [10265] = 0x9062, [10266] = 0x905D, [10267] = 0x905B,
++  [10268] = 0x9119, [10269] = 0x9118, [10270] = 0x911E, [10271] = 0x9175,
++  [10272] = 0x9178, [10273] = 0x9177, [10274] = 0x9174, [10275] = 0x9278,
++  [10276] = 0x9280, [10277] = 0x9285, [10278] = 0x9298, [10279] = 0x9296,
++  [10280] = 0x927B, [10281] = 0x9293, [10282] = 0x929C, [10283] = 0x92A8,
++  [10284] = 0x927C, [10285] = 0x9291, [10286] = 0x95A1, [10287] = 0x95A8,
++  [10288] = 0x95A9, [10289] = 0x95A3, [10290] = 0x95A5, [10291] = 0x95A4,
++  [10292] = 0x9699, [10293] = 0x969C, [10294] = 0x969B, [10295] = 0x96CC,
++  [10296] = 0x96D2, [10297] = 0x9700, [10298] = 0x977C, [10299] = 0x9785,
++  [10300] = 0x97F6, [10301] = 0x9817, [10302] = 0x9818, [10303] = 0x98AF,
++  [10304] = 0x98B1, [10305] = 0x9903, [10306] = 0x9905, [10307] = 0x990C,
++  [10308] = 0x9909, [10309] = 0x99C1, [10310] = 0x9AAF, [10311] = 0x9AB0,
++  [10312] = 0x9AE6, [10313] = 0x9B41, [10314] = 0x9B42, [10315] = 0x9CF4,
++  [10316] = 0x9CF6, [10317] = 0x9CF3, [10318] = 0x9EBC, [10319] = 0x9F3B,
++  [10320] = 0x9F4A, [10321] = 0x5104, [10322] = 0x5100, [10323] = 0x50FB,
++  [10324] = 0x50F5, [10325] = 0x50F9, [10326] = 0x5102, [10327] = 0x5108,
++  [10328] = 0x5109, [10329] = 0x5105, [10330] = 0x51DC, [10335] = 0x5287,
++  [10336] = 0x5288, [10337] = 0x5289, [10338] = 0x528D, [10339] = 0x528A,
++  [10340] = 0x52F0, [10341] = 0x53B2, [10342] = 0x562E, [10343] = 0x563B,
++  [10344] = 0x5639, [10345] = 0x5632, [10346] = 0x563F, [10347] = 0x5634,
++  [10348] = 0x5629, [10349] = 0x5653, [10350] = 0x564E, [10351] = 0x5657,
++  [10352] = 0x5674, [10353] = 0x5636, [10354] = 0x562F, [10355] = 0x5630,
++  [10356] = 0x5880, [10357] = 0x589F, [10358] = 0x589E, [10359] = 0x58B3,
++  [10360] = 0x589C, [10361] = 0x58AE, [10362] = 0x58A9, [10363] = 0x58A6,
++  [10364] = 0x596D, [10365] = 0x5B09, [10366] = 0x5AFB, [10367] = 0x5B0B,
++  [10368] = 0x5AF5, [10369] = 0x5B0C, [10370] = 0x5B08, [10371] = 0x5BEE,
++  [10372] = 0x5BEC, [10373] = 0x5BE9, [10374] = 0x5BEB, [10375] = 0x5C64,
++  [10376] = 0x5C65, [10377] = 0x5D9D, [10378] = 0x5D94, [10379] = 0x5E62,
++  [10380] = 0x5E5F, [10381] = 0x5E61, [10382] = 0x5EE2, [10383] = 0x5EDA,
++  [10384] = 0x5EDF, [10385] = 0x5EDD, [10386] = 0x5EE3, [10387] = 0x5EE0,
++  [10388] = 0x5F48, [10389] = 0x5F71, [10390] = 0x5FB7, [10391] = 0x5FB5,
++  [10392] = 0x6176, [10393] = 0x6167, [10394] = 0x616E, [10395] = 0x615D,
++  [10396] = 0x6155, [10397] = 0x6182, [10432] = 0x617C, [10433] = 0x6170,
++  [10434] = 0x616B, [10435] = 0x617E, [10436] = 0x61A7, [10437] = 0x6190,
++  [10438] = 0x61AB, [10439] = 0x618E, [10440] = 0x61AC, [10441] = 0x619A,
++  [10442] = 0x61A4, [10443] = 0x6194, [10444] = 0x61AE, [10445] = 0x622E,
++  [10446] = 0x6469, [10447] = 0x646F, [10448] = 0x6479, [10449] = 0x649E,
++  [10450] = 0x64B2, [10451] = 0x6488, [10452] = 0x6490, [10453] = 0x64B0,
++  [10454] = 0x64A5, [10455] = 0x6493, [10456] = 0x6495, [10457] = 0x64A9,
++  [10458] = 0x6492, [10459] = 0x64AE, [10460] = 0x64AD, [10461] = 0x64AB,
++  [10462] = 0x649A, [10463] = 0x64AC, [10464] = 0x6499, [10465] = 0x64A2,
++  [10466] = 0x64B3, [10467] = 0x6575, [10468] = 0x6577, [10469] = 0x6578,
++  [10470] = 0x66AE, [10471] = 0x66AB, [10472] = 0x66B4, [10473] = 0x66B1,
++  [10474] = 0x6A23, [10475] = 0x6A1F, [10476] = 0x69E8, [10477] = 0x6A01,
++  [10478] = 0x6A1E, [10479] = 0x6A19, [10480] = 0x69FD, [10481] = 0x6A21,
++  [10482] = 0x6A13, [10483] = 0x6A0A, [10484] = 0x69F3, [10485] = 0x6A02,
++  [10486] = 0x6A05, [10487] = 0x69ED, [10488] = 0x6A11, [10489] = 0x6B50,
++  [10490] = 0x6B4E, [10491] = 0x6BA4, [10492] = 0x6BC5, [10493] = 0x6BC6,
++  [10494] = 0x6F3F, [10495] = 0x6F7C, [10496] = 0x6F84, [10497] = 0x6F51,
++  [10498] = 0x6F66, [10499] = 0x6F54, [10500] = 0x6F86, [10501] = 0x6F6D,
++  [10502] = 0x6F5B, [10503] = 0x6F78, [10504] = 0x6F6E, [10505] = 0x6F8E,
++  [10506] = 0x6F7A, [10507] = 0x6F70, [10508] = 0x6F64, [10509] = 0x6F97,
++  [10510] = 0x6F58, [10511] = 0x6ED5, [10512] = 0x6F6F, [10513] = 0x6F60,
++  [10514] = 0x6F5F, [10515] = 0x719F, [10516] = 0x71AC, [10517] = 0x71B1,
++  [10518] = 0x71A8, [10519] = 0x7256, [10520] = 0x729B, [10521] = 0x734E,
++  [10522] = 0x7357, [10523] = 0x7469, [10524] = 0x748B, [10525] = 0x7483,
++  [10530] = 0x747E, [10531] = 0x7480, [10532] = 0x757F, [10533] = 0x7620,
++  [10534] = 0x7629, [10535] = 0x761F, [10536] = 0x7624, [10537] = 0x7626,
++  [10538] = 0x7621, [10539] = 0x7622, [10540] = 0x769A, [10541] = 0x76BA,
++  [10542] = 0x76E4, [10543] = 0x778E, [10544] = 0x7787, [10545] = 0x778C,
++  [10546] = 0x7791, [10547] = 0x778B, [10548] = 0x78CB, [10549] = 0x78C5,
++  [10550] = 0x78BA, [10551] = 0x78CA, [10552] = 0x78BE, [10553] = 0x78D5,
++  [10554] = 0x78BC, [10555] = 0x78D0, [10556] = 0x7A3F, [10557] = 0x7A3C,
++  [10558] = 0x7A40, [10559] = 0x7A3D, [10560] = 0x7A37, [10561] = 0x7A3B,
++  [10562] = 0x7AAF, [10563] = 0x7AAE, [10564] = 0x7BAD, [10565] = 0x7BB1,
++  [10566] = 0x7BC4, [10567] = 0x7BB4, [10568] = 0x7BC6, [10569] = 0x7BC7,
++  [10570] = 0x7BC1, [10571] = 0x7BA0, [10572] = 0x7BCC, [10573] = 0x7CCA,
++  [10574] = 0x7DE0, [10575] = 0x7DF4, [10576] = 0x7DEF, [10577] = 0x7DFB,
++  [10578] = 0x7DD8, [10579] = 0x7DEC, [10580] = 0x7DDD, [10581] = 0x7DE8,
++  [10582] = 0x7DE3, [10583] = 0x7DDA, [10584] = 0x7DDE, [10585] = 0x7DE9,
++  [10586] = 0x7D9E, [10587] = 0x7DD9, [10588] = 0x7DF2, [10589] = 0x7DF9,
++  [10590] = 0x7F75, [10591] = 0x7F77, [10592] = 0x7FAF, [10627] = 0x7FE9,
++  [10628] = 0x8026, [10629] = 0x819B, [10630] = 0x819C, [10631] = 0x819D,
++  [10632] = 0x81A0, [10633] = 0x819A, [10634] = 0x8198, [10635] = 0x8517,
++  [10636] = 0x853D, [10637] = 0x851A, [10638] = 0x84EE, [10639] = 0x852C,
++  [10640] = 0x852D, [10641] = 0x8513, [10642] = 0x8511, [10643] = 0x8523,
++  [10644] = 0x8521, [10645] = 0x8514, [10646] = 0x84EC, [10647] = 0x8525,
++  [10648] = 0x84FF, [10649] = 0x8506, [10650] = 0x8782, [10651] = 0x8774,
++  [10652] = 0x8776, [10653] = 0x8760, [10654] = 0x8766, [10655] = 0x8778,
++  [10656] = 0x8768, [10657] = 0x8759, [10658] = 0x8757, [10659] = 0x874C,
++  [10660] = 0x8753, [10661] = 0x885B, [10662] = 0x885D, [10663] = 0x8910,
++  [10664] = 0x8907, [10665] = 0x8912, [10666] = 0x8913, [10667] = 0x8915,
++  [10668] = 0x890A, [10669] = 0x8ABC, [10670] = 0x8AD2, [10671] = 0x8AC7,
++  [10672] = 0x8AC4, [10673] = 0x8A95, [10674] = 0x8ACB, [10675] = 0x8AF8,
++  [10676] = 0x8AB2, [10677] = 0x8AC9, [10678] = 0x8AC2, [10679] = 0x8ABF,
++  [10680] = 0x8AB0, [10681] = 0x8AD6, [10682] = 0x8ACD, [10683] = 0x8AB6,
++  [10684] = 0x8AB9, [10685] = 0x8ADB, [10686] = 0x8C4C, [10687] = 0x8C4E,
++  [10688] = 0x8C6C, [10689] = 0x8CE0, [10690] = 0x8CDE, [10691] = 0x8CE6,
++  [10692] = 0x8CE4, [10693] = 0x8CEC, [10694] = 0x8CED, [10695] = 0x8CE2,
++  [10696] = 0x8CE3, [10697] = 0x8CDC, [10698] = 0x8CEA, [10699] = 0x8CE1,
++  [10700] = 0x8D6D, [10701] = 0x8D9F, [10702] = 0x8DA3, [10703] = 0x8E2B,
++  [10704] = 0x8E10, [10705] = 0x8E1D, [10706] = 0x8E22, [10707] = 0x8E0F,
++  [10708] = 0x8E29, [10709] = 0x8E1F, [10710] = 0x8E21, [10711] = 0x8E1E,
++  [10712] = 0x8EBA, [10713] = 0x8F1D, [10714] = 0x8F1B, [10715] = 0x8F1F,
++  [10716] = 0x8F29, [10717] = 0x8F26, [10718] = 0x8F2A, [10719] = 0x8F1C,
++  [10720] = 0x8F1E, [10725] = 0x8F25, [10726] = 0x9069, [10727] = 0x906E,
++  [10728] = 0x9068, [10729] = 0x906D, [10730] = 0x9077, [10731] = 0x9130,
++  [10732] = 0x912D, [10733] = 0x9127, [10734] = 0x9131, [10735] = 0x9187,
++  [10736] = 0x9189, [10737] = 0x918B, [10738] = 0x9183, [10739] = 0x92C5,
++  [10740] = 0x92BB, [10741] = 0x92B7, [10742] = 0x92EA, [10743] = 0x92AC,
++  [10744] = 0x92E4, [10745] = 0x92C1, [10746] = 0x92B3, [10747] = 0x92BC,
++  [10748] = 0x92D2, [10749] = 0x92C7, [10750] = 0x92F0, [10751] = 0x92B2,
++  [10752] = 0x95AD, [10753] = 0x95B1, [10754] = 0x9704, [10755] = 0x9706,
++  [10756] = 0x9707, [10757] = 0x9709, [10758] = 0x9760, [10759] = 0x978D,
++  [10760] = 0x978B, [10761] = 0x978F, [10762] = 0x9821, [10763] = 0x982B,
++  [10764] = 0x981C, [10765] = 0x98B3, [10766] = 0x990A, [10767] = 0x9913,
++  [10768] = 0x9912, [10769] = 0x9918, [10770] = 0x99DD, [10771] = 0x99D0,
++  [10772] = 0x99DF, [10773] = 0x99DB, [10774] = 0x99D1, [10775] = 0x99D5,
++  [10776] = 0x99D2, [10777] = 0x99D9, [10778] = 0x9AB7, [10779] = 0x9AEE,
++  [10780] = 0x9AEF, [10781] = 0x9B27, [10782] = 0x9B45, [10783] = 0x9B44,
++  [10784] = 0x9B77, [10785] = 0x9B6F, [10786] = 0x9D06, [10787] = 0x9D09,
++  [10822] = 0x9D03, [10823] = 0x9EA9, [10824] = 0x9EBE, [10825] = 0x9ECE,
++  [10826] = 0x58A8, [10827] = 0x9F52, [10828] = 0x5112, [10829] = 0x5118,
++  [10830] = 0x5114, [10831] = 0x5110, [10832] = 0x5115, [10833] = 0x5180,
++  [10834] = 0x51AA, [10835] = 0x51DD, [10836] = 0x5291, [10837] = 0x5293,
++  [10838] = 0x52F3, [10839] = 0x5659, [10840] = 0x566B, [10841] = 0x5679,
++  [10842] = 0x5669, [10843] = 0x5664, [10844] = 0x5678, [10845] = 0x566A,
++  [10846] = 0x5668, [10847] = 0x5665, [10848] = 0x5671, [10849] = 0x566F,
++  [10850] = 0x566C, [10851] = 0x5662, [10852] = 0x5676, [10853] = 0x58C1,
++  [10854] = 0x58BE, [10855] = 0x58C7, [10856] = 0x58C5, [10857] = 0x596E,
++  [10858] = 0x5B1D, [10859] = 0x5B34, [10860] = 0x5B78, [10861] = 0x5BF0,
++  [10862] = 0x5C0E, [10863] = 0x5F4A, [10864] = 0x61B2, [10865] = 0x6191,
++  [10866] = 0x61A9, [10867] = 0x618A, [10868] = 0x61CD, [10869] = 0x61B6,
++  [10870] = 0x61BE, [10871] = 0x61CA, [10872] = 0x61C8, [10873] = 0x6230,
++  [10874] = 0x64C5, [10875] = 0x64C1, [10876] = 0x64CB, [10877] = 0x64BB,
++  [10878] = 0x64BC, [10879] = 0x64DA, [10880] = 0x64C4, [10881] = 0x64C7,
++  [10882] = 0x64C2, [10883] = 0x64CD, [10884] = 0x64BF, [10885] = 0x64D2,
++  [10886] = 0x64D4, [10887] = 0x64BE, [10888] = 0x6574, [10889] = 0x66C6,
++  [10890] = 0x66C9, [10891] = 0x66B9, [10892] = 0x66C4, [10893] = 0x66C7,
++  [10894] = 0x66B8, [10895] = 0x6A3D, [10896] = 0x6A38, [10897] = 0x6A3A,
++  [10898] = 0x6A59, [10899] = 0x6A6B, [10900] = 0x6A58, [10901] = 0x6A39,
++  [10902] = 0x6A44, [10903] = 0x6A62, [10904] = 0x6A61, [10905] = 0x6A4B,
++  [10906] = 0x6A47, [10907] = 0x6A35, [10908] = 0x6A5F, [10909] = 0x6A48,
++  [10910] = 0x6B59, [10911] = 0x6B77, [10912] = 0x6C05, [10913] = 0x6FC2,
++  [10914] = 0x6FB1, [10915] = 0x6FA1, [10920] = 0x6FC3, [10921] = 0x6FA4,
++  [10922] = 0x6FC1, [10923] = 0x6FA7, [10924] = 0x6FB3, [10925] = 0x6FC0,
++  [10926] = 0x6FB9, [10927] = 0x6FB6, [10928] = 0x6FA6, [10929] = 0x6FA0,
++  [10930] = 0x6FB4, [10931] = 0x71BE, [10932] = 0x71C9, [10933] = 0x71D0,
++  [10934] = 0x71D2, [10935] = 0x71C8, [10936] = 0x71D5, [10937] = 0x71B9,
++  [10938] = 0x71CE, [10939] = 0x71D9, [10940] = 0x71DC, [10941] = 0x71C3,
++  [10942] = 0x71C4, [10943] = 0x7368, [10944] = 0x749C, [10945] = 0x74A3,
++  [10946] = 0x7498, [10947] = 0x749F, [10948] = 0x749E, [10949] = 0x74E2,
++  [10950] = 0x750C, [10951] = 0x750D, [10952] = 0x7634, [10953] = 0x7638,
++  [10954] = 0x763A, [10955] = 0x76E7, [10956] = 0x76E5, [10957] = 0x77A0,
++  [10958] = 0x779E, [10959] = 0x779F, [10960] = 0x77A5, [10961] = 0x78E8,
++  [10962] = 0x78DA, [10963] = 0x78EC, [10964] = 0x78E7, [10965] = 0x79A6,
++  [10966] = 0x7A4D, [10967] = 0x7A4E, [10968] = 0x7A46, [10969] = 0x7A4C,
++  [10970] = 0x7A4B, [10971] = 0x7ABA, [10972] = 0x7BD9, [10973] = 0x7C11,
++  [10974] = 0x7BC9, [10975] = 0x7BE4, [10976] = 0x7BDB, [10977] = 0x7BE1,
++  [10978] = 0x7BE9, [10979] = 0x7BE6, [10980] = 0x7CD5, [10981] = 0x7CD6,
++  [10982] = 0x7E0A, [11017] = 0x7E11, [11018] = 0x7E08, [11019] = 0x7E1B,
++  [11020] = 0x7E23, [11021] = 0x7E1E, [11022] = 0x7E1D, [11023] = 0x7E09,
++  [11024] = 0x7E10, [11025] = 0x7F79, [11026] = 0x7FB2, [11027] = 0x7FF0,
++  [11028] = 0x7FF1, [11029] = 0x7FEE, [11030] = 0x8028, [11031] = 0x81B3,
++  [11032] = 0x81A9, [11033] = 0x81A8, [11034] = 0x81FB, [11035] = 0x8208,
++  [11036] = 0x8258, [11037] = 0x8259, [11038] = 0x854A, [11039] = 0x8559,
++  [11040] = 0x8548, [11041] = 0x8568, [11042] = 0x8569, [11043] = 0x8543,
++  [11044] = 0x8549, [11045] = 0x856D, [11046] = 0x856A, [11047] = 0x855E,
++  [11048] = 0x8783, [11049] = 0x879F, [11050] = 0x879E, [11051] = 0x87A2,
++  [11052] = 0x878D, [11053] = 0x8861, [11054] = 0x892A, [11055] = 0x8932,
++  [11056] = 0x8925, [11057] = 0x892B, [11058] = 0x8921, [11059] = 0x89AA,
++  [11060] = 0x89A6, [11061] = 0x8AE6, [11062] = 0x8AFA, [11063] = 0x8AEB,
++  [11064] = 0x8AF1, [11065] = 0x8B00, [11066] = 0x8ADC, [11067] = 0x8AE7,
++  [11068] = 0x8AEE, [11069] = 0x8AFE, [11070] = 0x8B01, [11071] = 0x8B02,
++  [11072] = 0x8AF7, [11073] = 0x8AED, [11074] = 0x8AF3, [11075] = 0x8AF6,
++  [11076] = 0x8AFC, [11077] = 0x8C6B, [11078] = 0x8C6D, [11079] = 0x8C93,
++  [11080] = 0x8CF4, [11081] = 0x8E44, [11082] = 0x8E31, [11083] = 0x8E34,
++  [11084] = 0x8E42, [11085] = 0x8E39, [11086] = 0x8E35, [11087] = 0x8F3B,
++  [11088] = 0x8F2F, [11089] = 0x8F38, [11090] = 0x8F33, [11091] = 0x8FA8,
++  [11092] = 0x8FA6, [11093] = 0x9075, [11094] = 0x9074, [11095] = 0x9078,
++  [11096] = 0x9072, [11097] = 0x907C, [11098] = 0x907A, [11099] = 0x9134,
++  [11100] = 0x9192, [11101] = 0x9320, [11102] = 0x9336, [11103] = 0x92F8,
++  [11104] = 0x9333, [11105] = 0x932F, [11106] = 0x9322, [11107] = 0x92FC,
++  [11108] = 0x932B, [11109] = 0x9304, [11110] = 0x931A, [11115] = 0x9310,
++  [11116] = 0x9326, [11117] = 0x9321, [11118] = 0x9315, [11119] = 0x932E,
++  [11120] = 0x9319, [11121] = 0x95BB, [11122] = 0x96A7, [11123] = 0x96A8,
++  [11124] = 0x96AA, [11125] = 0x96D5, [11126] = 0x970E, [11127] = 0x9711,
++  [11128] = 0x9716, [11129] = 0x970D, [11130] = 0x9713, [11131] = 0x970F,
++  [11132] = 0x975B, [11133] = 0x975C, [11134] = 0x9766, [11135] = 0x9798,
++  [11136] = 0x9830, [11137] = 0x9838, [11138] = 0x983B, [11139] = 0x9837,
++  [11140] = 0x982D, [11141] = 0x9839, [11142] = 0x9824, [11143] = 0x9910,
++  [11144] = 0x9928, [11145] = 0x991E, [11146] = 0x991B, [11147] = 0x9921,
++  [11148] = 0x991A, [11149] = 0x99ED, [11150] = 0x99E2, [11151] = 0x99F1,
++  [11152] = 0x9AB8, [11153] = 0x9ABC, [11154] = 0x9AFB, [11155] = 0x9AED,
++  [11156] = 0x9B28, [11157] = 0x9B91, [11158] = 0x9D15, [11159] = 0x9D23,
++  [11160] = 0x9D26, [11161] = 0x9D28, [11162] = 0x9D12, [11163] = 0x9D1B,
++  [11164] = 0x9ED8, [11165] = 0x9ED4, [11166] = 0x9F8D, [11167] = 0x9F9C,
++  [11168] = 0x512A, [11169] = 0x511F, [11170] = 0x5121, [11171] = 0x5132,
++  [11172] = 0x52F5, [11173] = 0x568E, [11174] = 0x5680, [11175] = 0x5690,
++  [11176] = 0x5685, [11177] = 0x5687, [11212] = 0x568F, [11213] = 0x58D5,
++  [11214] = 0x58D3, [11215] = 0x58D1, [11216] = 0x58CE, [11217] = 0x5B30,
++  [11218] = 0x5B2A, [11219] = 0x5B24, [11220] = 0x5B7A, [11221] = 0x5C37,
++  [11222] = 0x5C68, [11223] = 0x5DBC, [11224] = 0x5DBA, [11225] = 0x5DBD,
++  [11226] = 0x5DB8, [11227] = 0x5E6B, [11228] = 0x5F4C, [11229] = 0x5FBD,
++  [11230] = 0x61C9, [11231] = 0x61C2, [11232] = 0x61C7, [11233] = 0x61E6,
++  [11234] = 0x61CB, [11235] = 0x6232, [11236] = 0x6234, [11237] = 0x64CE,
++  [11238] = 0x64CA, [11239] = 0x64D8, [11240] = 0x64E0, [11241] = 0x64F0,
++  [11242] = 0x64E6, [11243] = 0x64EC, [11244] = 0x64F1, [11245] = 0x64E2,
++  [11246] = 0x64ED, [11247] = 0x6582, [11248] = 0x6583, [11249] = 0x66D9,
++  [11250] = 0x66D6, [11251] = 0x6A80, [11252] = 0x6A94, [11253] = 0x6A84,
++  [11254] = 0x6AA2, [11255] = 0x6A9C, [11256] = 0x6ADB, [11257] = 0x6AA3,
++  [11258] = 0x6A7E, [11259] = 0x6A97, [11260] = 0x6A90, [11261] = 0x6AA0,
++  [11262] = 0x6B5C, [11263] = 0x6BAE, [11264] = 0x6BDA, [11265] = 0x6C08,
++  [11266] = 0x6FD8, [11267] = 0x6FF1, [11268] = 0x6FDF, [11269] = 0x6FE0,
++  [11270] = 0x6FDB, [11271] = 0x6FE4, [11272] = 0x6FEB, [11273] = 0x6FEF,
++  [11274] = 0x6F80, [11275] = 0x6FEC, [11276] = 0x6FE1, [11277] = 0x6FE9,
++  [11278] = 0x6FD5, [11279] = 0x6FEE, [11280] = 0x6FF0, [11281] = 0x71E7,
++  [11282] = 0x71DF, [11283] = 0x71EE, [11284] = 0x71E6, [11285] = 0x71E5,
++  [11286] = 0x71ED, [11287] = 0x71EC, [11288] = 0x71F4, [11289] = 0x71E0,
++  [11290] = 0x7235, [11291] = 0x7246, [11292] = 0x7370, [11293] = 0x7372,
++  [11294] = 0x74A9, [11295] = 0x74B0, [11296] = 0x74A6, [11297] = 0x74A8,
++  [11298] = 0x7646, [11299] = 0x7642, [11300] = 0x764C, [11301] = 0x76EA,
++  [11302] = 0x77B3, [11303] = 0x77AA, [11304] = 0x77B0, [11305] = 0x77AC,
++  [11310] = 0x77A7, [11311] = 0x77AD, [11312] = 0x77EF, [11313] = 0x78F7,
++  [11314] = 0x78FA, [11315] = 0x78F4, [11316] = 0x78EF, [11317] = 0x7901,
++  [11318] = 0x79A7, [11319] = 0x79AA, [11320] = 0x7A57, [11321] = 0x7ABF,
++  [11322] = 0x7C07, [11323] = 0x7C0D, [11324] = 0x7BFE, [11325] = 0x7BF7,
++  [11326] = 0x7C0C, [11327] = 0x7BE0, [11328] = 0x7CE0, [11329] = 0x7CDC,
++  [11330] = 0x7CDE, [11331] = 0x7CE2, [11332] = 0x7CDF, [11333] = 0x7CD9,
++  [11334] = 0x7CDD, [11335] = 0x7E2E, [11336] = 0x7E3E, [11337] = 0x7E46,
++  [11338] = 0x7E37, [11339] = 0x7E32, [11340] = 0x7E43, [11341] = 0x7E2B,
++  [11342] = 0x7E3D, [11343] = 0x7E31, [11344] = 0x7E45, [11345] = 0x7E41,
++  [11346] = 0x7E34, [11347] = 0x7E39, [11348] = 0x7E48, [11349] = 0x7E35,
++  [11350] = 0x7E3F, [11351] = 0x7E2F, [11352] = 0x7F44, [11353] = 0x7FF3,
++  [11354] = 0x7FFC, [11355] = 0x8071, [11356] = 0x8072, [11357] = 0x8070,
++  [11358] = 0x806F, [11359] = 0x8073, [11360] = 0x81C6, [11361] = 0x81C3,
++  [11362] = 0x81BA, [11363] = 0x81C2, [11364] = 0x81C0, [11365] = 0x81BF,
++  [11366] = 0x81BD, [11367] = 0x81C9, [11368] = 0x81BE, [11369] = 0x81E8,
++  [11370] = 0x8209, [11371] = 0x8271, [11372] = 0x85AA, [11407] = 0x8584,
++  [11408] = 0x857E, [11409] = 0x859C, [11410] = 0x8591, [11411] = 0x8594,
++  [11412] = 0x85AF, [11413] = 0x859B, [11414] = 0x8587, [11415] = 0x85A8,
++  [11416] = 0x858A, [11417] = 0x8667, [11418] = 0x87C0, [11419] = 0x87D1,
++  [11420] = 0x87B3, [11421] = 0x87D2, [11422] = 0x87C6, [11423] = 0x87AB,
++  [11424] = 0x87BB, [11425] = 0x87BA, [11426] = 0x87C8, [11427] = 0x87CB,
++  [11428] = 0x893B, [11429] = 0x8936, [11430] = 0x8944, [11431] = 0x8938,
++  [11432] = 0x893D, [11433] = 0x89AC, [11434] = 0x8B0E, [11435] = 0x8B17,
++  [11436] = 0x8B19, [11437] = 0x8B1B, [11438] = 0x8B0A, [11439] = 0x8B20,
++  [11440] = 0x8B1D, [11441] = 0x8B04, [11442] = 0x8B10, [11443] = 0x8C41,
++  [11444] = 0x8C3F, [11445] = 0x8C73, [11446] = 0x8CFA, [11447] = 0x8CFD,
++  [11448] = 0x8CFC, [11449] = 0x8CF8, [11450] = 0x8CFB, [11451] = 0x8DA8,
++  [11452] = 0x8E49, [11453] = 0x8E4B, [11454] = 0x8E48, [11455] = 0x8E4A,
++  [11456] = 0x8F44, [11457] = 0x8F3E, [11458] = 0x8F42, [11459] = 0x8F45,
++  [11460] = 0x8F3F, [11461] = 0x907F, [11462] = 0x907D, [11463] = 0x9084,
++  [11464] = 0x9081, [11465] = 0x9082, [11466] = 0x9080, [11467] = 0x9139,
++  [11468] = 0x91A3, [11469] = 0x919E, [11470] = 0x919C, [11471] = 0x934D,
++  [11472] = 0x9382, [11473] = 0x9328, [11474] = 0x9375, [11475] = 0x934A,
++  [11476] = 0x9365, [11477] = 0x934B, [11478] = 0x9318, [11479] = 0x937E,
++  [11480] = 0x936C, [11481] = 0x935B, [11482] = 0x9370, [11483] = 0x935A,
++  [11484] = 0x9354, [11485] = 0x95CA, [11486] = 0x95CB, [11487] = 0x95CC,
++  [11488] = 0x95C8, [11489] = 0x95C6, [11490] = 0x96B1, [11491] = 0x96B8,
++  [11492] = 0x96D6, [11493] = 0x971C, [11494] = 0x971E, [11495] = 0x97A0,
++  [11496] = 0x97D3, [11497] = 0x9846, [11498] = 0x98B6, [11499] = 0x9935,
++  [11500] = 0x9A01, [11505] = 0x99FF, [11506] = 0x9BAE, [11507] = 0x9BAB,
++  [11508] = 0x9BAA, [11509] = 0x9BAD, [11510] = 0x9D3B, [11511] = 0x9D3F,
++  [11512] = 0x9E8B, [11513] = 0x9ECF, [11514] = 0x9EDE, [11515] = 0x9EDC,
++  [11516] = 0x9EDD, [11517] = 0x9EDB, [11518] = 0x9F3E, [11519] = 0x9F4B,
++  [11520] = 0x53E2, [11521] = 0x5695, [11522] = 0x56AE, [11523] = 0x58D9,
++  [11524] = 0x58D8, [11525] = 0x5B38, [11526] = 0x5F5D, [11527] = 0x61E3,
++  [11528] = 0x6233, [11529] = 0x64F4, [11530] = 0x64F2, [11531] = 0x64FE,
++  [11532] = 0x6506, [11533] = 0x64FA, [11534] = 0x64FB, [11535] = 0x64F7,
++  [11536] = 0x65B7, [11537] = 0x66DC, [11538] = 0x6726, [11539] = 0x6AB3,
++  [11540] = 0x6AAC, [11541] = 0x6AC3, [11542] = 0x6ABB, [11543] = 0x6AB8,
++  [11544] = 0x6AC2, [11545] = 0x6AAE, [11546] = 0x6AAF, [11547] = 0x6B5F,
++  [11548] = 0x6B78, [11549] = 0x6BAF, [11550] = 0x7009, [11551] = 0x700B,
++  [11552] = 0x6FFE, [11553] = 0x7006, [11554] = 0x6FFA, [11555] = 0x7011,
++  [11556] = 0x700F, [11557] = 0x71FB, [11558] = 0x71FC, [11559] = 0x71FE,
++  [11560] = 0x71F8, [11561] = 0x7377, [11562] = 0x7375, [11563] = 0x74A7,
++  [11564] = 0x74BF, [11565] = 0x7515, [11566] = 0x7656, [11567] = 0x7658,
++  [11602] = 0x7652, [11603] = 0x77BD, [11604] = 0x77BF, [11605] = 0x77BB,
++  [11606] = 0x77BC, [11607] = 0x790E, [11608] = 0x79AE, [11609] = 0x7A61,
++  [11610] = 0x7A62, [11611] = 0x7A60, [11612] = 0x7AC4, [11613] = 0x7AC5,
++  [11614] = 0x7C2B, [11615] = 0x7C27, [11616] = 0x7C2A, [11617] = 0x7C1E,
++  [11618] = 0x7C23, [11619] = 0x7C21, [11620] = 0x7CE7, [11621] = 0x7E54,
++  [11622] = 0x7E55, [11623] = 0x7E5E, [11624] = 0x7E5A, [11625] = 0x7E61,
++  [11626] = 0x7E52, [11627] = 0x7E59, [11628] = 0x7F48, [11629] = 0x7FF9,
++  [11630] = 0x7FFB, [11631] = 0x8077, [11632] = 0x8076, [11633] = 0x81CD,
++  [11634] = 0x81CF, [11635] = 0x820A, [11636] = 0x85CF, [11637] = 0x85A9,
++  [11638] = 0x85CD, [11639] = 0x85D0, [11640] = 0x85C9, [11641] = 0x85B0,
++  [11642] = 0x85BA, [11643] = 0x85B9, [11644] = 0x85A6, [11645] = 0x87EF,
++  [11646] = 0x87EC, [11647] = 0x87F2, [11648] = 0x87E0, [11649] = 0x8986,
++  [11650] = 0x89B2, [11651] = 0x89F4, [11652] = 0x8B28, [11653] = 0x8B39,
++  [11654] = 0x8B2C, [11655] = 0x8B2B, [11656] = 0x8C50, [11657] = 0x8D05,
++  [11658] = 0x8E59, [11659] = 0x8E63, [11660] = 0x8E66, [11661] = 0x8E64,
++  [11662] = 0x8E5F, [11663] = 0x8E55, [11664] = 0x8EC0, [11665] = 0x8F49,
++  [11666] = 0x8F4D, [11667] = 0x9087, [11668] = 0x9083, [11669] = 0x9088,
++  [11670] = 0x91AB, [11671] = 0x91AC, [11672] = 0x91D0, [11673] = 0x9394,
++  [11674] = 0x938A, [11675] = 0x9396, [11676] = 0x93A2, [11677] = 0x93B3,
++  [11678] = 0x93AE, [11679] = 0x93AC, [11680] = 0x93B0, [11681] = 0x9398,
++  [11682] = 0x939A, [11683] = 0x9397, [11684] = 0x95D4, [11685] = 0x95D6,
++  [11686] = 0x95D0, [11687] = 0x95D5, [11688] = 0x96E2, [11689] = 0x96DC,
++  [11690] = 0x96D9, [11691] = 0x96DB, [11692] = 0x96DE, [11693] = 0x9724,
++  [11694] = 0x97A3, [11695] = 0x97A6, [11700] = 0x97AD, [11701] = 0x97F9,
++  [11702] = 0x984D, [11703] = 0x984F, [11704] = 0x984C, [11705] = 0x984E,
++  [11706] = 0x9853, [11707] = 0x98BA, [11708] = 0x993E, [11709] = 0x993F,
++  [11710] = 0x993D, [11711] = 0x992E, [11712] = 0x99A5, [11713] = 0x9A0E,
++  [11714] = 0x9AC1, [11715] = 0x9B03, [11716] = 0x9B06, [11717] = 0x9B4F,
++  [11718] = 0x9B4E, [11719] = 0x9B4D, [11720] = 0x9BCA, [11721] = 0x9BC9,
++  [11722] = 0x9BFD, [11723] = 0x9BC8, [11724] = 0x9BC0, [11725] = 0x9D51,
++  [11726] = 0x9D5D, [11727] = 0x9D60, [11728] = 0x9EE0, [11729] = 0x9F15,
++  [11730] = 0x9F2C, [11731] = 0x5133, [11732] = 0x56A5, [11733] = 0x58DE,
++  [11734] = 0x58DF, [11735] = 0x58E2, [11736] = 0x5BF5, [11737] = 0x9F90,
++  [11738] = 0x5EEC, [11739] = 0x61F2, [11740] = 0x61F7, [11741] = 0x61F6,
++  [11742] = 0x61F5, [11743] = 0x6500, [11744] = 0x650F, [11745] = 0x66E0,
++  [11746] = 0x66DD, [11747] = 0x6AE5, [11748] = 0x6ADD, [11749] = 0x6ADA,
++  [11750] = 0x6AD3, [11751] = 0x701B, [11752] = 0x701F, [11753] = 0x7028,
++  [11754] = 0x701A, [11755] = 0x701D, [11756] = 0x7015, [11757] = 0x7018,
++  [11758] = 0x7206, [11759] = 0x720D, [11760] = 0x7258, [11761] = 0x72A2,
++  [11762] = 0x7378, [11797] = 0x737A, [11798] = 0x74BD, [11799] = 0x74CA,
++  [11800] = 0x74E3, [11801] = 0x7587, [11802] = 0x7586, [11803] = 0x765F,
++  [11804] = 0x7661, [11805] = 0x77C7, [11806] = 0x7919, [11807] = 0x79B1,
++  [11808] = 0x7A6B, [11809] = 0x7A69, [11810] = 0x7C3E, [11811] = 0x7C3F,
++  [11812] = 0x7C38, [11813] = 0x7C3D, [11814] = 0x7C37, [11815] = 0x7C40,
++  [11816] = 0x7E6B, [11817] = 0x7E6D, [11818] = 0x7E79, [11819] = 0x7E69,
++  [11820] = 0x7E6A, [11821] = 0x7F85, [11822] = 0x7E73, [11823] = 0x7FB6,
++  [11824] = 0x7FB9, [11825] = 0x7FB8, [11826] = 0x81D8, [11827] = 0x85E9,
++  [11828] = 0x85DD, [11829] = 0x85EA, [11830] = 0x85D5, [11831] = 0x85E4,
++  [11832] = 0x85E5, [11833] = 0x85F7, [11834] = 0x87FB, [11835] = 0x8805,
++  [11836] = 0x880D, [11837] = 0x87F9, [11838] = 0x87FE, [11839] = 0x8960,
++  [11840] = 0x895F, [11841] = 0x8956, [11842] = 0x895E, [11843] = 0x8B41,
++  [11844] = 0x8B5C, [11845] = 0x8B58, [11846] = 0x8B49, [11847] = 0x8B5A,
++  [11848] = 0x8B4E, [11849] = 0x8B4F, [11850] = 0x8B46, [11851] = 0x8B59,
++  [11852] = 0x8D08, [11853] = 0x8D0A, [11854] = 0x8E7C, [11855] = 0x8E72,
++  [11856] = 0x8E87, [11857] = 0x8E76, [11858] = 0x8E6C, [11859] = 0x8E7A,
++  [11860] = 0x8E74, [11861] = 0x8F54, [11862] = 0x8F4E, [11863] = 0x8FAD,
++  [11864] = 0x908A, [11865] = 0x908B, [11866] = 0x91B1, [11867] = 0x91AE,
++  [11868] = 0x93E1, [11869] = 0x93D1, [11870] = 0x93DF, [11871] = 0x93C3,
++  [11872] = 0x93C8, [11873] = 0x93DC, [11874] = 0x93DD, [11875] = 0x93D6,
++  [11876] = 0x93E2, [11877] = 0x93CD, [11878] = 0x93D8, [11879] = 0x93E4,
++  [11880] = 0x93D7, [11881] = 0x93E8, [11882] = 0x95DC, [11883] = 0x96B4,
++  [11884] = 0x96E3, [11885] = 0x972A, [11886] = 0x9727, [11887] = 0x9761,
++  [11888] = 0x97DC, [11889] = 0x97FB, [11890] = 0x985E, [11895] = 0x9858,
++  [11896] = 0x985B, [11897] = 0x98BC, [11898] = 0x9945, [11899] = 0x9949,
++  [11900] = 0x9A16, [11901] = 0x9A19, [11902] = 0x9B0D, [11903] = 0x9BE8,
++  [11904] = 0x9BE7, [11905] = 0x9BD6, [11906] = 0x9BDB, [11907] = 0x9D89,
++  [11908] = 0x9D61, [11909] = 0x9D72, [11910] = 0x9D6A, [11911] = 0x9D6C,
++  [11912] = 0x9E92, [11913] = 0x9E97, [11914] = 0x9E93, [11915] = 0x9EB4,
++  [11916] = 0x52F8, [11917] = 0x56A8, [11918] = 0x56B7, [11919] = 0x56B6,
++  [11920] = 0x56B4, [11921] = 0x56BC, [11922] = 0x58E4, [11923] = 0x5B40,
++  [11924] = 0x5B43, [11925] = 0x5B7D, [11926] = 0x5BF6, [11927] = 0x5DC9,
++  [11928] = 0x61F8, [11929] = 0x61FA, [11930] = 0x6518, [11931] = 0x6514,
++  [11932] = 0x6519, [11933] = 0x66E6, [11934] = 0x6727, [11935] = 0x6AEC,
++  [11936] = 0x703E, [11937] = 0x7030, [11938] = 0x7032, [11939] = 0x7210,
++  [11940] = 0x737B, [11941] = 0x74CF, [11942] = 0x7662, [11943] = 0x7665,
++  [11944] = 0x7926, [11945] = 0x792A, [11946] = 0x792C, [11947] = 0x792B,
++  [11948] = 0x7AC7, [11949] = 0x7AF6, [11950] = 0x7C4C, [11951] = 0x7C43,
++  [11952] = 0x7C4D, [11953] = 0x7CEF, [11954] = 0x7CF0, [11955] = 0x8FAE,
++  [11956] = 0x7E7D, [11957] = 0x7E7C, [11992] = 0x7E82, [11993] = 0x7F4C,
++  [11994] = 0x8000, [11995] = 0x81DA, [11996] = 0x8266, [11997] = 0x85FB,
++  [11998] = 0x85F9, [11999] = 0x8611, [12000] = 0x85FA, [12001] = 0x8606,
++  [12002] = 0x860B, [12003] = 0x8607, [12004] = 0x860A, [12005] = 0x8814,
++  [12006] = 0x8815, [12007] = 0x8964, [12008] = 0x89BA, [12009] = 0x89F8,
++  [12010] = 0x8B70, [12011] = 0x8B6C, [12012] = 0x8B66, [12013] = 0x8B6F,
++  [12014] = 0x8B5F, [12015] = 0x8B6B, [12016] = 0x8D0F, [12017] = 0x8D0D,
++  [12018] = 0x8E89, [12019] = 0x8E81, [12020] = 0x8E85, [12021] = 0x8E82,
++  [12022] = 0x91B4, [12023] = 0x91CB, [12024] = 0x9418, [12025] = 0x9403,
++  [12026] = 0x93FD, [12027] = 0x95E1, [12028] = 0x9730, [12029] = 0x98C4,
++  [12030] = 0x9952, [12031] = 0x9951, [12032] = 0x99A8, [12033] = 0x9A2B,
++  [12034] = 0x9A30, [12035] = 0x9A37, [12036] = 0x9A35, [12037] = 0x9C13,
++  [12038] = 0x9C0D, [12039] = 0x9E79, [12040] = 0x9EB5, [12041] = 0x9EE8,
++  [12042] = 0x9F2F, [12043] = 0x9F5F, [12044] = 0x9F63, [12045] = 0x9F61,
++  [12046] = 0x5137, [12047] = 0x5138, [12048] = 0x56C1, [12049] = 0x56C0,
++  [12050] = 0x56C2, [12051] = 0x5914, [12052] = 0x5C6C, [12053] = 0x5DCD,
++  [12054] = 0x61FC, [12055] = 0x61FE, [12056] = 0x651D, [12057] = 0x651C,
++  [12058] = 0x6595, [12059] = 0x66E9, [12060] = 0x6AFB, [12061] = 0x6B04,
++  [12062] = 0x6AFA, [12063] = 0x6BB2, [12064] = 0x704C, [12065] = 0x721B,
++  [12066] = 0x72A7, [12067] = 0x74D6, [12068] = 0x74D4, [12069] = 0x7669,
++  [12070] = 0x77D3, [12071] = 0x7C50, [12072] = 0x7E8F, [12073] = 0x7E8C,
++  [12074] = 0x7FBC, [12075] = 0x8617, [12076] = 0x862D, [12077] = 0x861A,
++  [12078] = 0x8823, [12079] = 0x8822, [12080] = 0x8821, [12081] = 0x881F,
++  [12082] = 0x896A, [12083] = 0x896C, [12084] = 0x89BD, [12085] = 0x8B74,
++  [12090] = 0x8B77, [12091] = 0x8B7D, [12092] = 0x8D13, [12093] = 0x8E8A,
++  [12094] = 0x8E8D, [12095] = 0x8E8B, [12096] = 0x8F5F, [12097] = 0x8FAF,
++  [12098] = 0x91BA, [12099] = 0x942E, [12100] = 0x9433, [12101] = 0x9435,
++  [12102] = 0x943A, [12103] = 0x9438, [12104] = 0x9432, [12105] = 0x942B,
++  [12106] = 0x95E2, [12107] = 0x9738, [12108] = 0x9739, [12109] = 0x9732,
++  [12110] = 0x97FF, [12111] = 0x9867, [12112] = 0x9865, [12113] = 0x9957,
++  [12114] = 0x9A45, [12115] = 0x9A43, [12116] = 0x9A40, [12117] = 0x9A3E,
++  [12118] = 0x9ACF, [12119] = 0x9B54, [12120] = 0x9B51, [12121] = 0x9C2D,
++  [12122] = 0x9C25, [12123] = 0x9DAF, [12124] = 0x9DB4, [12125] = 0x9DC2,
++  [12126] = 0x9DB8, [12127] = 0x9E9D, [12128] = 0x9EEF, [12129] = 0x9F19,
++  [12130] = 0x9F5C, [12131] = 0x9F66, [12132] = 0x9F67, [12133] = 0x513C,
++  [12134] = 0x513B, [12135] = 0x56C8, [12136] = 0x56CA, [12137] = 0x56C9,
++  [12138] = 0x5B7F, [12139] = 0x5DD4, [12140] = 0x5DD2, [12141] = 0x5F4E,
++  [12142] = 0x61FF, [12143] = 0x6524, [12144] = 0x6B0A, [12145] = 0x6B61,
++  [12146] = 0x7051, [12147] = 0x7058, [12148] = 0x7380, [12149] = 0x74E4,
++  [12150] = 0x758A, [12151] = 0x766E, [12152] = 0x766C, [12187] = 0x79B3,
++  [12188] = 0x7C60, [12189] = 0x7C5F, [12190] = 0x807E, [12191] = 0x807D,
++  [12192] = 0x81DF, [12193] = 0x8972, [12194] = 0x896F, [12195] = 0x89FC,
++  [12196] = 0x8B80, [12197] = 0x8D16, [12198] = 0x8D17, [12199] = 0x8E91,
++  [12200] = 0x8E93, [12201] = 0x8F61, [12202] = 0x9148, [12203] = 0x9444,
++  [12204] = 0x9451, [12205] = 0x9452, [12206] = 0x973D, [12207] = 0x973E,
++  [12208] = 0x97C3, [12209] = 0x97C1, [12210] = 0x986B, [12211] = 0x9955,
++  [12212] = 0x9A55, [12213] = 0x9A4D, [12214] = 0x9AD2, [12215] = 0x9B1A,
++  [12216] = 0x9C49, [12217] = 0x9C31, [12218] = 0x9C3E, [12219] = 0x9C3B,
++  [12220] = 0x9DD3, [12221] = 0x9DD7, [12222] = 0x9F34, [12223] = 0x9F6C,
++  [12224] = 0x9F6A, [12225] = 0x9F94, [12226] = 0x56CC, [12227] = 0x5DD6,
++  [12228] = 0x6200, [12229] = 0x6523, [12230] = 0x652B, [12231] = 0x652A,
++  [12232] = 0x66EC, [12233] = 0x6B10, [12234] = 0x74DA, [12235] = 0x7ACA,
++  [12236] = 0x7C64, [12237] = 0x7C63, [12238] = 0x7C65, [12239] = 0x7E93,
++  [12240] = 0x7E96, [12241] = 0x7E94, [12242] = 0x81E2, [12243] = 0x8638,
++  [12244] = 0x863F, [12245] = 0x8831, [12246] = 0x8B8A, [12247] = 0x9090,
++  [12248] = 0x908F, [12249] = 0x9463, [12250] = 0x9460, [12251] = 0x9464,
++  [12252] = 0x9768, [12253] = 0x986F, [12254] = 0x995C, [12255] = 0x9A5A,
++  [12256] = 0x9A5B, [12257] = 0x9A57, [12258] = 0x9AD3, [12259] = 0x9AD4,
++  [12260] = 0x9AD1, [12261] = 0x9C54, [12262] = 0x9C57, [12263] = 0x9C56,
++  [12264] = 0x9DE5, [12265] = 0x9E9F, [12266] = 0x9EF4, [12267] = 0x56D1,
++  [12268] = 0x58E9, [12269] = 0x652C, [12270] = 0x705E, [12271] = 0x7671,
++  [12272] = 0x7672, [12273] = 0x77D7, [12274] = 0x7F50, [12275] = 0x7F88,
++  [12276] = 0x8836, [12277] = 0x8839, [12278] = 0x8862, [12279] = 0x8B93,
++  [12280] = 0x8B92, [12285] = 0x8B96, [12286] = 0x8277, [12287] = 0x8D1B,
++  [12288] = 0x91C0, [12289] = 0x946A, [12290] = 0x9742, [12291] = 0x9748,
++  [12292] = 0x9744, [12293] = 0x97C6, [12294] = 0x9870, [12295] = 0x9A5F,
++  [12296] = 0x9B22, [12297] = 0x9B58, [12298] = 0x9C5F, [12299] = 0x9DF9,
++  [12300] = 0x9DFA, [12301] = 0x9E7C, [12302] = 0x9E7D, [12303] = 0x9F07,
++  [12304] = 0x9F77, [12305] = 0x9F72, [12306] = 0x5EF3, [12307] = 0x6B16,
++  [12308] = 0x7063, [12309] = 0x7C6C, [12310] = 0x7C6E, [12311] = 0x883B,
++  [12312] = 0x89C0, [12313] = 0x8EA1, [12314] = 0x91C1, [12315] = 0x9472,
++  [12316] = 0x9470, [12317] = 0x9871, [12318] = 0x995E, [12319] = 0x9AD6,
++  [12320] = 0x9B23, [12321] = 0x9ECC, [12322] = 0x7064, [12323] = 0x77DA,
++  [12324] = 0x8B9A, [12325] = 0x9477, [12326] = 0x97C9, [12327] = 0x9A62,
++  [12328] = 0x9A65, [12329] = 0x7E9C, [12330] = 0x8B9C, [12331] = 0x8EAA,
++  [12332] = 0x91C5, [12333] = 0x947D, [12334] = 0x947E, [12335] = 0x947C,
++  [12336] = 0x9C77, [12337] = 0x9C78, [12338] = 0x9EF7, [12339] = 0x8C54,
++  [12340] = 0x947F, [12341] = 0x9E1A, [12342] = 0x7228, [12343] = 0x9A6A,
++  [12344] = 0x9B31, [12345] = 0x9E1B, [12346] = 0x9E1E, [12347] = 0x7C72,
++  [12382] = 0x2460, [12383] = 0x2461, [12384] = 0x2462, [12385] = 0x2463,
++  [12386] = 0x2464, [12387] = 0x2465, [12388] = 0x2466, [12389] = 0x2467,
++  [12390] = 0x2468, [12391] = 0x2469, [12392] = 0x2474, [12393] = 0x2475,
++  [12394] = 0x2476, [12395] = 0x2477, [12396] = 0x2478, [12397] = 0x2479,
++  [12398] = 0x247A, [12399] = 0x247B, [12400] = 0x247C, [12401] = 0x247D,
++  [12402] = 0x2170, [12403] = 0x2171, [12404] = 0x2172, [12405] = 0x2173,
++  [12406] = 0x2174, [12407] = 0x2175, [12408] = 0x2176, [12409] = 0x2177,
++  [12410] = 0x2178, [12411] = 0x2179, [12412] = 0x4E36, [12413] = 0x4E3F,
++  [12414] = 0x4E85, [12415] = 0x4EA0, [12416] = 0x5182, [12417] = 0x5196,
++  [12418] = 0x51AB, [12419] = 0x52F9, [12420] = 0x5338, [12421] = 0x5369,
++  [12422] = 0x53B6, [12423] = 0x590A, [12424] = 0x5B80, [12425] = 0x5DDB,
++  [12426] = 0x2F33, [12427] = 0x5E7F, [12429] = 0x5F50, [12430] = 0x5F61,
++  [12431] = 0x6534, [12433] = 0x7592, [12435] = 0x8FB5, [12437] = 0x00A8,
++  [12438] = 0x02C6, [12439] = 0x30FD, [12440] = 0x30FE, [12441] = 0x309D,
++  [12442] = 0x309E, [12445] = 0x3005, [12446] = 0x3006, [12447] = 0x3007,
++  [12448] = 0x30FC, [12449] = 0xFF3B, [12450] = 0xFF3D, [12451] = 0x273D,
++  [12452] = 0x3041, [12453] = 0x3042, [12454] = 0x3043, [12455] = 0x3044,
++  [12456] = 0x3045, [12457] = 0x3046, [12458] = 0x3047, [12459] = 0x3048,
++  [12460] = 0x3049, [12461] = 0x304A, [12462] = 0x304B, [12463] = 0x304C,
++  [12464] = 0x304D, [12465] = 0x304E, [12466] = 0x304F, [12467] = 0x3050,
++  [12468] = 0x3051, [12469] = 0x3052, [12470] = 0x3053, [12471] = 0x3054,
++  [12472] = 0x3055, [12473] = 0x3056, [12474] = 0x3057, [12475] = 0x3058,
++  [12480] = 0x3059, [12481] = 0x305A, [12482] = 0x305B, [12483] = 0x305C,
++  [12484] = 0x305D, [12485] = 0x305E, [12486] = 0x305F, [12487] = 0x3060,
++  [12488] = 0x3061, [12489] = 0x3062, [12490] = 0x3063, [12491] = 0x3064,
++  [12492] = 0x3065, [12493] = 0x3066, [12494] = 0x3067, [12495] = 0x3068,
++  [12496] = 0x3069, [12497] = 0x306A, [12498] = 0x306B, [12499] = 0x306C,
++  [12500] = 0x306D, [12501] = 0x306E, [12502] = 0x306F, [12503] = 0x3070,
++  [12504] = 0x3071, [12505] = 0x3072, [12506] = 0x3073, [12507] = 0x3074,
++  [12508] = 0x3075, [12509] = 0x3076, [12510] = 0x3077, [12511] = 0x3078,
++  [12512] = 0x3079, [12513] = 0x307A, [12514] = 0x307B, [12515] = 0x307C,
++  [12516] = 0x307D, [12517] = 0x307E, [12518] = 0x307F, [12519] = 0x3080,
++  [12520] = 0x3081, [12521] = 0x3082, [12522] = 0x3083, [12523] = 0x3084,
++  [12524] = 0x3085, [12525] = 0x3086, [12526] = 0x3087, [12527] = 0x3088,
++  [12528] = 0x3089, [12529] = 0x308A, [12530] = 0x308B, [12531] = 0x308C,
++  [12532] = 0x308D, [12533] = 0x308E, [12534] = 0x308F, [12535] = 0x3090,
++  [12536] = 0x3091, [12537] = 0x3092, [12538] = 0x3093, [12539] = 0x30A1,
++  [12540] = 0x30A2, [12541] = 0x30A3, [12542] = 0x30A4, [12577] = 0x30A5,
++  [12578] = 0x30A6, [12579] = 0x30A7, [12580] = 0x30A8, [12581] = 0x30A9,
++  [12582] = 0x30AA, [12583] = 0x30AB, [12584] = 0x30AC, [12585] = 0x30AD,
++  [12586] = 0x30AE, [12587] = 0x30AF, [12588] = 0x30B0, [12589] = 0x30B1,
++  [12590] = 0x30B2, [12591] = 0x30B3, [12592] = 0x30B4, [12593] = 0x30B5,
++  [12594] = 0x30B6, [12595] = 0x30B7, [12596] = 0x30B8, [12597] = 0x30B9,
++  [12598] = 0x30BA, [12599] = 0x30BB, [12600] = 0x30BC, [12601] = 0x30BD,
++  [12602] = 0x30BE, [12603] = 0x30BF, [12604] = 0x30C0, [12605] = 0x30C1,
++  [12606] = 0x30C2, [12607] = 0x30C3, [12608] = 0x30C4, [12609] = 0x30C5,
++  [12610] = 0x30C6, [12611] = 0x30C7, [12612] = 0x30C8, [12613] = 0x30C9,
++  [12614] = 0x30CA, [12615] = 0x30CB, [12616] = 0x30CC, [12617] = 0x30CD,
++  [12618] = 0x30CE, [12619] = 0x30CF, [12620] = 0x30D0, [12621] = 0x30D1,
++  [12622] = 0x30D2, [12623] = 0x30D3, [12624] = 0x30D4, [12625] = 0x30D5,
++  [12626] = 0x30D6, [12627] = 0x30D7, [12628] = 0x30D8, [12629] = 0x30D9,
++  [12630] = 0x30DA, [12631] = 0x30DB, [12632] = 0x30DC, [12633] = 0x30DD,
++  [12634] = 0x30DE, [12635] = 0x30DF, [12636] = 0x30E0, [12637] = 0x30E1,
++  [12638] = 0x30E2, [12639] = 0x30E3, [12640] = 0x30E4, [12641] = 0x30E5,
++  [12642] = 0x30E6, [12643] = 0x30E7, [12644] = 0x30E8, [12645] = 0x30E9,
++  [12646] = 0x30EA, [12647] = 0x30EB, [12648] = 0x30EC, [12649] = 0x30ED,
++  [12650] = 0x30EE, [12651] = 0x30EF, [12652] = 0x30F0, [12653] = 0x30F1,
++  [12654] = 0x30F2, [12655] = 0x30F3, [12656] = 0x30F4, [12657] = 0x30F5,
++  [12658] = 0x30F6, [12659] = 0x0410, [12660] = 0x0411, [12661] = 0x0412,
++  [12662] = 0x0413, [12663] = 0x0414, [12664] = 0x0415, [12665] = 0x0401,
++  [12666] = 0x0416, [12667] = 0x0417, [12668] = 0x0418, [12669] = 0x0419,
++  [12670] = 0x041A, [12675] = 0x041B, [12676] = 0x041C, [12677] = 0x041D,
++  [12678] = 0x041E, [12679] = 0x041F, [12680] = 0x0420, [12681] = 0x0421,
++  [12682] = 0x0422, [12683] = 0x0423, [12684] = 0x0424, [12685] = 0x0425,
++  [12686] = 0x0426, [12687] = 0x0427, [12688] = 0x0428, [12689] = 0x0429,
++  [12690] = 0x042A, [12691] = 0x042B, [12692] = 0x042C, [12693] = 0x042D,
++  [12694] = 0x042E, [12695] = 0x042F, [12696] = 0x0430, [12697] = 0x0431,
++  [12698] = 0x0432, [12699] = 0x0433, [12700] = 0x0434, [12701] = 0x0435,
++  [12702] = 0x0451, [12703] = 0x0436, [12704] = 0x0437, [12705] = 0x0438,
++  [12706] = 0x0439, [12707] = 0x043A, [12708] = 0x043B, [12709] = 0x043C,
++  [12710] = 0x043D, [12711] = 0x043E, [12712] = 0x043F, [12713] = 0x0440,
++  [12714] = 0x0441, [12715] = 0x0442, [12716] = 0x0443, [12717] = 0x0444,
++  [12718] = 0x0445, [12719] = 0x0446, [12720] = 0x0447, [12721] = 0x0448,
++  [12722] = 0x0449, [12723] = 0x044A, [12724] = 0x044B, [12725] = 0x044C,
++  [12726] = 0x044D, [12727] = 0x044E, [12728] = 0x044F, [12729] = 0x21E7,
++  [12730] = 0x21B8, [12731] = 0x21B9, [12732] = 0x31CF, [12733] = 0x200CC,
++  [12734] = 0x4E5A, [12735] = 0x2008A, [12736] = 0x5202, [12737] = 0x4491,
++  [12772] = 0x9FB0, [12773] = 0x5188, [12774] = 0x9FB1, [12775] = 0x27607,
++  [12816] = 0xFFE2, [12817] = 0xFFE4, [12818] = 0xFF07, [12819] = 0xFF02,
++  [12820] = 0x3231, [12821] = 0x2116, [12822] = 0x2121, [12823] = 0x309B,
++  [12824] = 0x309C, [12825] = 0x2E80, [12826] = 0x2E84, [12827] = 0x2E86,
++  [12828] = 0x2E87, [12829] = 0x2E88, [12830] = 0x2E8A, [12831] = 0x2E8C,
++  [12832] = 0x2E8D, [12833] = 0x2E95, [12834] = 0x2E9C, [12835] = 0x2E9D,
++  [12836] = 0x2EA5, [12837] = 0x2EA7, [12838] = 0x2EAA, [12839] = 0x2EAC,
++  [12840] = 0x2EAE, [12841] = 0x2EB6, [12842] = 0x2EBC, [12843] = 0x2EBE,
++  [12844] = 0x2EC6, [12845] = 0x2ECA, [12846] = 0x2ECC, [12847] = 0x2ECD,
++  [12848] = 0x2ECF, [12849] = 0x2ED6, [12850] = 0x2ED7, [12851] = 0x2EDE,
++  [12852] = 0x2EE3, [12856] = 0x0283, [12857] = 0x0250, [12858] = 0x025B,
++  [12859] = 0x0254, [12860] = 0x0275, [12861] = 0x0153, [12862] = 0x00F8,
++  [12863] = 0x014B, [12864] = 0x028A, [12865] = 0x026A, [12870] = 0x4E42,
++  [12871] = 0x4E5C, [12872] = 0x51F5, [12873] = 0x531A, [12874] = 0x5382,
++  [12875] = 0x4E07, [12876] = 0x4E0C, [12877] = 0x4E47, [12878] = 0x4E8D,
++  [12879] = 0x56D7, [12880] = 0xFA0C, [12881] = 0x5C6E, [12882] = 0x5F73,
++  [12883] = 0x4E0F, [12884] = 0x5187, [12885] = 0x4E0E, [12886] = 0x4E2E,
++  [12887] = 0x4E93, [12888] = 0x4EC2, [12889] = 0x4EC9, [12890] = 0x4EC8,
++  [12891] = 0x5198, [12892] = 0x52FC, [12893] = 0x536C, [12894] = 0x53B9,
++  [12895] = 0x5720, [12896] = 0x5903, [12897] = 0x592C, [12898] = 0x5C10,
++  [12899] = 0x5DFF, [12900] = 0x65E1, [12901] = 0x6BB3, [12902] = 0x6BCC,
++  [12903] = 0x6C14, [12904] = 0x723F, [12905] = 0x4E31, [12906] = 0x4E3C,
++  [12907] = 0x4EE8, [12908] = 0x4EDC, [12909] = 0x4EE9, [12910] = 0x4EE1,
++  [12911] = 0x4EDD, [12912] = 0x4EDA, [12913] = 0x520C, [12914] = 0x531C,
++  [12915] = 0x534C, [12916] = 0x5722, [12917] = 0x5723, [12918] = 0x5917,
++  [12919] = 0x592F, [12920] = 0x5B81, [12921] = 0x5B84, [12922] = 0x5C12,
++  [12923] = 0x5C3B, [12924] = 0x5C74, [12925] = 0x5C73, [12926] = 0x5E04,
++  [12927] = 0x5E80, [12928] = 0x5E82, [12929] = 0x5FC9, [12930] = 0x6209,
++  [12931] = 0x6250, [12932] = 0x6C15, [12967] = 0x6C36, [12968] = 0x6C43,
++  [12969] = 0x6C3F, [12970] = 0x6C3B, [12971] = 0x72AE, [12972] = 0x72B0,
++  [12973] = 0x738A, [12974] = 0x79B8, [12975] = 0x808A, [12976] = 0x961E,
++  [12977] = 0x4F0E, [12978] = 0x4F18, [12979] = 0x4F2C, [12980] = 0x4EF5,
++  [12981] = 0x4F14, [12982] = 0x4EF1, [12983] = 0x4F00, [12984] = 0x4EF7,
++  [12985] = 0x4F08, [12986] = 0x4F1D, [12987] = 0x4F02, [12988] = 0x4F05,
++  [12989] = 0x4F22, [12990] = 0x4F13, [12991] = 0x4F04, [12992] = 0x4EF4,
++  [12993] = 0x4F12, [12994] = 0x51B1, [12995] = 0x5213, [12996] = 0x5209,
++  [12997] = 0x5210, [12998] = 0x52A6, [12999] = 0x5322, [13000] = 0x531F,
++  [13001] = 0x534D, [13002] = 0x538A, [13003] = 0x5407, [13004] = 0x56E1,
++  [13005] = 0x56DF, [13006] = 0x572E, [13007] = 0x572A, [13008] = 0x5734,
++  [13009] = 0x593C, [13010] = 0x5980, [13011] = 0x597C, [13012] = 0x5985,
++  [13013] = 0x597B, [13014] = 0x597E, [13015] = 0x5977, [13016] = 0x597F,
++  [13017] = 0x5B56, [13018] = 0x5C15, [13019] = 0x5C25, [13020] = 0x5C7C,
++  [13021] = 0x5C7A, [13022] = 0x5C7B, [13023] = 0x5C7E, [13024] = 0x5DDF,
++  [13025] = 0x5E75, [13026] = 0x5E84, [13027] = 0x5F02, [13028] = 0x5F1A,
++  [13029] = 0x5F74, [13030] = 0x5FD5, [13031] = 0x5FD4, [13032] = 0x5FCF,
++  [13033] = 0x625C, [13034] = 0x625E, [13035] = 0x6264, [13036] = 0x6261,
++  [13037] = 0x6266, [13038] = 0x6262, [13039] = 0x6259, [13040] = 0x6260,
++  [13041] = 0x625A, [13042] = 0x6265, [13043] = 0x65EF, [13044] = 0x65EE,
++  [13045] = 0x673E, [13046] = 0x6739, [13047] = 0x6738, [13048] = 0x673B,
++  [13049] = 0x673A, [13050] = 0x673F, [13051] = 0x673C, [13052] = 0x6733,
++  [13053] = 0x6C18, [13054] = 0x6C46, [13055] = 0x6C52, [13056] = 0x6C5C,
++  [13057] = 0x6C4F, [13058] = 0x6C4A, [13059] = 0x6C54, [13060] = 0x6C4B,
++  [13065] = 0x6C4C, [13066] = 0x7071, [13067] = 0x725E, [13068] = 0x72B4,
++  [13069] = 0x72B5, [13070] = 0x738E, [13071] = 0x752A, [13072] = 0x767F,
++  [13073] = 0x7A75, [13074] = 0x7F51, [13075] = 0x8278, [13076] = 0x827C,
++  [13077] = 0x8280, [13078] = 0x827D, [13079] = 0x827F, [13080] = 0x864D,
++  [13081] = 0x897E, [13082] = 0x9099, [13083] = 0x9097, [13084] = 0x9098,
++  [13085] = 0x909B, [13086] = 0x9094, [13087] = 0x9622, [13088] = 0x9624,
++  [13089] = 0x9620, [13090] = 0x9623, [13091] = 0x4F56, [13092] = 0x4F3B,
++  [13093] = 0x4F62, [13094] = 0x4F49, [13095] = 0x4F53, [13096] = 0x4F64,
++  [13097] = 0x4F3E, [13098] = 0x4F67, [13099] = 0x4F52, [13100] = 0x4F5F,
++  [13101] = 0x4F41, [13102] = 0x4F58, [13103] = 0x4F2D, [13104] = 0x4F33,
++  [13105] = 0x4F3F, [13106] = 0x4F61, [13107] = 0x518F, [13108] = 0x51B9,
++  [13109] = 0x521C, [13110] = 0x521E, [13111] = 0x5221, [13112] = 0x52AD,
++  [13113] = 0x52AE, [13114] = 0x5309, [13115] = 0x5363, [13116] = 0x5372,
++  [13117] = 0x538E, [13118] = 0x538F, [13119] = 0x5430, [13120] = 0x5437,
++  [13121] = 0x542A, [13122] = 0x5454, [13123] = 0x5445, [13124] = 0x5419,
++  [13125] = 0x541C, [13126] = 0x5425, [13127] = 0x5418, [13162] = 0x543D,
++  [13163] = 0x544F, [13164] = 0x5441, [13165] = 0x5428, [13166] = 0x5424,
++  [13167] = 0x5447, [13168] = 0x56EE, [13169] = 0x56E7, [13170] = 0x56E5,
++  [13171] = 0x5741, [13172] = 0x5745, [13173] = 0x574C, [13174] = 0x5749,
++  [13175] = 0x574B, [13176] = 0x5752, [13177] = 0x5906, [13178] = 0x5940,
++  [13179] = 0x59A6, [13180] = 0x5998, [13181] = 0x59A0, [13182] = 0x5997,
++  [13183] = 0x598E, [13184] = 0x59A2, [13185] = 0x5990, [13186] = 0x598F,
++  [13187] = 0x59A7, [13188] = 0x59A1, [13189] = 0x5B8E, [13190] = 0x5B92,
++  [13191] = 0x5C28, [13192] = 0x5C2A, [13193] = 0x5C8D, [13194] = 0x5C8F,
++  [13195] = 0x5C88, [13196] = 0x5C8B, [13197] = 0x5C89, [13198] = 0x5C92,
++  [13199] = 0x5C8A, [13200] = 0x5C86, [13201] = 0x5C93, [13202] = 0x5C95,
++  [13203] = 0x5DE0, [13204] = 0x5E0A, [13205] = 0x5E0E, [13206] = 0x5E8B,
++  [13207] = 0x5E89, [13208] = 0x5E8C, [13209] = 0x5E88, [13210] = 0x5E8D,
++  [13211] = 0x5F05, [13212] = 0x5F1D, [13213] = 0x5F78, [13214] = 0x5F76,
++  [13215] = 0x5FD2, [13216] = 0x5FD1, [13217] = 0x5FD0, [13218] = 0x5FED,
++  [13219] = 0x5FE8, [13220] = 0x5FEE, [13221] = 0x5FF3, [13222] = 0x5FE1,
++  [13223] = 0x5FE4, [13224] = 0x5FE3, [13225] = 0x5FFA, [13226] = 0x5FEF,
++  [13227] = 0x5FF7, [13228] = 0x5FFB, [13229] = 0x6000, [13230] = 0x5FF4,
++  [13231] = 0x623A, [13232] = 0x6283, [13233] = 0x628C, [13234] = 0x628E,
++  [13235] = 0x628F, [13236] = 0x6294, [13237] = 0x6287, [13238] = 0x6271,
++  [13239] = 0x627B, [13240] = 0x627A, [13241] = 0x6270, [13242] = 0x6281,
++  [13243] = 0x6288, [13244] = 0x6277, [13245] = 0x627D, [13246] = 0x6272,
++  [13247] = 0x6274, [13248] = 0x6537, [13249] = 0x65F0, [13250] = 0x65F4,
++  [13251] = 0x65F3, [13252] = 0x65F2, [13253] = 0x65F5, [13254] = 0x6745,
++  [13255] = 0x6747, [13260] = 0x6759, [13261] = 0x6755, [13262] = 0x674C,
++  [13263] = 0x6748, [13264] = 0x675D, [13265] = 0x674D, [13266] = 0x675A,
++  [13267] = 0x674B, [13268] = 0x6BD0, [13269] = 0x6C19, [13270] = 0x6C1A,
++  [13271] = 0x6C78, [13272] = 0x6C67, [13273] = 0x6C6B, [13274] = 0x6C84,
++  [13275] = 0x6C8B, [13276] = 0x6C8F, [13277] = 0x6C71, [13278] = 0x6C6F,
++  [13279] = 0x6C69, [13280] = 0x6C9A, [13281] = 0x6C6D, [13282] = 0x6C87,
++  [13283] = 0x6C95, [13284] = 0x6C9C, [13285] = 0x6C66, [13286] = 0x6C73,
++  [13287] = 0x6C65, [13288] = 0x6C7B, [13289] = 0x6C8E, [13290] = 0x7074,
++  [13291] = 0x707A, [13292] = 0x7263, [13293] = 0x72BF, [13294] = 0x72BD,
++  [13295] = 0x72C3, [13296] = 0x72C6, [13297] = 0x72C1, [13298] = 0x72BA,
++  [13299] = 0x72C5, [13300] = 0x7395, [13301] = 0x7397, [13302] = 0x7393,
++  [13303] = 0x7394, [13304] = 0x7392, [13305] = 0x753A, [13306] = 0x7539,
++  [13307] = 0x7594, [13308] = 0x7595, [13309] = 0x7681, [13310] = 0x793D,
++  [13311] = 0x8034, [13312] = 0x8095, [13313] = 0x8099, [13314] = 0x8090,
++  [13315] = 0x8092, [13316] = 0x809C, [13317] = 0x8290, [13318] = 0x828F,
++  [13319] = 0x8285, [13320] = 0x828E, [13321] = 0x8291, [13322] = 0x8293,
++  [13357] = 0x828A, [13358] = 0x8283, [13359] = 0x8284, [13360] = 0x8C78,
++  [13361] = 0x8FC9, [13362] = 0x8FBF, [13363] = 0x909F, [13364] = 0x90A1,
++  [13365] = 0x90A5, [13366] = 0x909E, [13367] = 0x90A7, [13368] = 0x90A0,
++  [13369] = 0x9630, [13370] = 0x9628, [13371] = 0x962F, [13372] = 0x962D,
++  [13373] = 0x4E33, [13374] = 0x4F98, [13375] = 0x4F7C, [13376] = 0x4F85,
++  [13377] = 0x4F7D, [13378] = 0x4F80, [13379] = 0x4F87, [13380] = 0x4F76,
++  [13381] = 0x4F74, [13382] = 0x4F89, [13383] = 0x4F84, [13384] = 0x4F77,
++  [13385] = 0x4F4C, [13386] = 0x4F97, [13387] = 0x4F6A, [13388] = 0x4F9A,
++  [13389] = 0x4F79, [13390] = 0x4F81, [13391] = 0x4F78, [13392] = 0x4F90,
++  [13393] = 0x4F9C, [13394] = 0x4F94, [13395] = 0x4F9E, [13396] = 0x4F92,
++  [13397] = 0x4F82, [13398] = 0x4F95, [13399] = 0x4F6B, [13400] = 0x4F6E,
++  [13401] = 0x519E, [13402] = 0x51BC, [13403] = 0x51BE, [13404] = 0x5235,
++  [13405] = 0x5232, [13406] = 0x5233, [13407] = 0x5246, [13408] = 0x5231,
++  [13409] = 0x52BC, [13410] = 0x530A, [13411] = 0x530B, [13412] = 0x533C,
++  [13413] = 0x5392, [13414] = 0x5394, [13415] = 0x5487, [13416] = 0x547F,
++  [13417] = 0x5481, [13418] = 0x5491, [13419] = 0x5482, [13420] = 0x5488,
++  [13421] = 0x546B, [13422] = 0x547A, [13423] = 0x547E, [13424] = 0x5465,
++  [13425] = 0x546C, [13426] = 0x5474, [13427] = 0x5466, [13428] = 0x548D,
++  [13429] = 0x546F, [13430] = 0x5461, [13431] = 0x5460, [13432] = 0x5498,
++  [13433] = 0x5463, [13434] = 0x5467, [13435] = 0x5464, [13436] = 0x56F7,
++  [13437] = 0x56F9, [13438] = 0x576F, [13439] = 0x5772, [13440] = 0x576D,
++  [13441] = 0x576B, [13442] = 0x5771, [13443] = 0x5770, [13444] = 0x5776,
++  [13445] = 0x5780, [13446] = 0x5775, [13447] = 0x577B, [13448] = 0x5773,
++  [13449] = 0x5774, [13450] = 0x5762, [13455] = 0x5768, [13456] = 0x577D,
++  [13457] = 0x590C, [13458] = 0x5945, [13459] = 0x59B5, [13460] = 0x59BA,
++  [13461] = 0x59CF, [13462] = 0x59CE, [13463] = 0x59B2, [13464] = 0x59CC,
++  [13465] = 0x59C1, [13466] = 0x59B6, [13467] = 0x59BC, [13468] = 0x59C3,
++  [13469] = 0x59D6, [13470] = 0x59B1, [13471] = 0x59BD, [13472] = 0x59C0,
++  [13473] = 0x59C8, [13474] = 0x59B4, [13475] = 0x59C7, [13476] = 0x5B62,
++  [13477] = 0x5B65, [13478] = 0x5B93, [13479] = 0x5B95, [13480] = 0x5C44,
++  [13481] = 0x5C47, [13482] = 0x5CAE, [13483] = 0x5CA4, [13484] = 0x5CA0,
++  [13485] = 0x5CB5, [13486] = 0x5CAF, [13487] = 0x5CA8, [13488] = 0x5CAC,
++  [13489] = 0x5C9F, [13490] = 0x5CA3, [13491] = 0x5CAD, [13492] = 0x5CA2,
++  [13493] = 0x5CAA, [13494] = 0x5CA7, [13495] = 0x5C9D, [13496] = 0x5CA5,
++  [13497] = 0x5CB6, [13498] = 0x5CB0, [13499] = 0x5CA6, [13500] = 0x5E17,
++  [13501] = 0x5E14, [13502] = 0x5E19, [13503] = 0x5F28, [13504] = 0x5F22,
++  [13505] = 0x5F23, [13506] = 0x5F24, [13507] = 0x5F54, [13508] = 0x5F82,
++  [13509] = 0x5F7E, [13510] = 0x5F7D, [13511] = 0x5FDE, [13512] = 0x5FE5,
++  [13513] = 0x602D, [13514] = 0x6026, [13515] = 0x6019, [13516] = 0x6032,
++  [13517] = 0x600B, [13552] = 0x6034, [13553] = 0x600A, [13554] = 0x6017,
++  [13555] = 0x6033, [13556] = 0x601A, [13557] = 0x601E, [13558] = 0x602C,
++  [13559] = 0x6022, [13560] = 0x600D, [13561] = 0x6010, [13562] = 0x602E,
++  [13563] = 0x6013, [13564] = 0x6011, [13565] = 0x600C, [13566] = 0x6009,
++  [13567] = 0x601C, [13568] = 0x6214, [13569] = 0x623D, [13570] = 0x62AD,
++  [13571] = 0x62B4, [13572] = 0x62D1, [13573] = 0x62BE, [13574] = 0x62AA,
++  [13575] = 0x62B6, [13576] = 0x62CA, [13577] = 0x62AE, [13578] = 0x62B3,
++  [13579] = 0x62AF, [13580] = 0x62BB, [13581] = 0x62A9, [13582] = 0x62B0,
++  [13583] = 0x62B8, [13584] = 0x653D, [13585] = 0x65A8, [13586] = 0x65BB,
++  [13587] = 0x6609, [13588] = 0x65FC, [13589] = 0x6604, [13590] = 0x6612,
++  [13591] = 0x6608, [13592] = 0x65FB, [13593] = 0x6603, [13594] = 0x660B,
++  [13595] = 0x660D, [13596] = 0x6605, [13597] = 0x65FD, [13598] = 0x6611,
++  [13599] = 0x6610, [13600] = 0x66F6, [13601] = 0x670A, [13602] = 0x6785,
++  [13603] = 0x676C, [13604] = 0x678E, [13605] = 0x6792, [13606] = 0x6776,
++  [13607] = 0x677B, [13608] = 0x6798, [13609] = 0x6786, [13610] = 0x6784,
++  [13611] = 0x6774, [13612] = 0x678D, [13613] = 0x678C, [13614] = 0x677A,
++  [13615] = 0x679F, [13616] = 0x6791, [13617] = 0x6799, [13618] = 0x6783,
++  [13619] = 0x677D, [13620] = 0x6781, [13621] = 0x6778, [13622] = 0x6779,
++  [13623] = 0x6794, [13624] = 0x6B25, [13625] = 0x6B80, [13626] = 0x6B7E,
++  [13627] = 0x6BDE, [13628] = 0x6C1D, [13629] = 0x6C93, [13630] = 0x6CEC,
++  [13631] = 0x6CEB, [13632] = 0x6CEE, [13633] = 0x6CD9, [13634] = 0x6CB6,
++  [13635] = 0x6CD4, [13636] = 0x6CAD, [13637] = 0x6CE7, [13638] = 0x6CB7,
++  [13639] = 0x6CD0, [13640] = 0x6CC2, [13641] = 0x6CBA, [13642] = 0x6CC3,
++  [13643] = 0x6CC6, [13644] = 0x6CED, [13645] = 0x6CF2, [13650] = 0x6CD2,
++  [13651] = 0x6CDD, [13652] = 0x6CB4, [13653] = 0x6C8A, [13654] = 0x6C9D,
++  [13655] = 0x6C80, [13656] = 0x6CDE, [13657] = 0x6CC0, [13658] = 0x6D30,
++  [13659] = 0x6CCD, [13660] = 0x6CC7, [13661] = 0x6CB0, [13662] = 0x6CF9,
++  [13663] = 0x6CCF, [13664] = 0x6CE9, [13665] = 0x6CD1, [13666] = 0x7094,
++  [13667] = 0x7098, [13668] = 0x7085, [13669] = 0x7093, [13670] = 0x7086,
++  [13671] = 0x7084, [13672] = 0x7091, [13673] = 0x7096, [13674] = 0x7082,
++  [13675] = 0x709A, [13676] = 0x7083, [13677] = 0x726A, [13678] = 0x72D6,
++  [13679] = 0x72CB, [13680] = 0x72D8, [13681] = 0x72C9, [13682] = 0x72DC,
++  [13683] = 0x72D2, [13684] = 0x72D4, [13685] = 0x72DA, [13686] = 0x72CC,
++  [13687] = 0x72D1, [13688] = 0x73A4, [13689] = 0x73A1, [13690] = 0x73AD,
++  [13691] = 0x73A6, [13692] = 0x73A2, [13693] = 0x73A0, [13694] = 0x73AC,
++  [13695] = 0x739D, [13696] = 0x74DD, [13697] = 0x74E8, [13698] = 0x753F,
++  [13699] = 0x7540, [13700] = 0x753E, [13701] = 0x758C, [13702] = 0x7598,
++  [13703] = 0x76AF, [13704] = 0x76F3, [13705] = 0x76F1, [13706] = 0x76F0,
++  [13707] = 0x76F5, [13708] = 0x77F8, [13709] = 0x77FC, [13710] = 0x77F9,
++  [13711] = 0x77FB, [13712] = 0x77FA, [13747] = 0x77F7, [13748] = 0x7942,
++  [13749] = 0x793F, [13750] = 0x79C5, [13751] = 0x7A78, [13752] = 0x7A7B,
++  [13753] = 0x7AFB, [13754] = 0x7C75, [13755] = 0x7CFD, [13756] = 0x8035,
++  [13757] = 0x808F, [13758] = 0x80AE, [13759] = 0x80A3, [13760] = 0x80B8,
++  [13761] = 0x80B5, [13762] = 0x80AD, [13763] = 0x8220, [13764] = 0x82A0,
++  [13765] = 0x82C0, [13766] = 0x82AB, [13767] = 0x829A, [13768] = 0x8298,
++  [13769] = 0x829B, [13770] = 0x82B5, [13771] = 0x82A7, [13772] = 0x82AE,
++  [13773] = 0x82BC, [13774] = 0x829E, [13775] = 0x82BA, [13776] = 0x82B4,
++  [13777] = 0x82A8, [13778] = 0x82A1, [13779] = 0x82A9, [13780] = 0x82C2,
++  [13781] = 0x82A4, [13782] = 0x82C3, [13783] = 0x82B6, [13784] = 0x82A2,
++  [13785] = 0x8670, [13786] = 0x866F, [13787] = 0x866D, [13788] = 0x866E,
++  [13789] = 0x8C56, [13790] = 0x8FD2, [13791] = 0x8FCB, [13792] = 0x8FD3,
++  [13793] = 0x8FCD, [13794] = 0x8FD6, [13795] = 0x8FD5, [13796] = 0x8FD7,
++  [13797] = 0x90B2, [13798] = 0x90B4, [13799] = 0x90AF, [13800] = 0x90B3,
++  [13801] = 0x90B0, [13802] = 0x9639, [13803] = 0x963D, [13804] = 0x963C,
++  [13805] = 0x963A, [13806] = 0x9643, [13807] = 0x4FCD, [13808] = 0x4FC5,
++  [13809] = 0x4FD3, [13810] = 0x4FB2, [13811] = 0x4FC9, [13812] = 0x4FCB,
++  [13813] = 0x4FC1, [13814] = 0x4FD4, [13815] = 0x4FDC, [13816] = 0x4FD9,
++  [13817] = 0x4FBB, [13818] = 0x4FB3, [13819] = 0x4FDB, [13820] = 0x4FC7,
++  [13821] = 0x4FD6, [13822] = 0x4FBA, [13823] = 0x4FC0, [13824] = 0x4FB9,
++  [13825] = 0x4FEC, [13826] = 0x5244, [13827] = 0x5249, [13828] = 0x52C0,
++  [13829] = 0x52C2, [13830] = 0x533D, [13831] = 0x537C, [13832] = 0x5397,
++  [13833] = 0x5396, [13834] = 0x5399, [13835] = 0x5398, [13836] = 0x54BA,
++  [13837] = 0x54A1, [13838] = 0x54AD, [13839] = 0x54A5, [13840] = 0x54CF,
++  [13845] = 0x54C3, [13846] = 0x830D, [13847] = 0x54B7, [13848] = 0x54AE,
++  [13849] = 0x54D6, [13850] = 0x54B6, [13851] = 0x54C5, [13852] = 0x54C6,
++  [13853] = 0x54A0, [13854] = 0x5470, [13855] = 0x54BC, [13856] = 0x54A2,
++  [13857] = 0x54BE, [13858] = 0x5472, [13859] = 0x54DE, [13860] = 0x54B0,
++  [13861] = 0x57B5, [13862] = 0x579E, [13863] = 0x579F, [13864] = 0x57A4,
++  [13865] = 0x578C, [13866] = 0x5797, [13867] = 0x579D, [13868] = 0x579B,
++  [13869] = 0x5794, [13870] = 0x5798, [13871] = 0x578F, [13872] = 0x5799,
++  [13873] = 0x57A5, [13874] = 0x579A, [13875] = 0x5795, [13876] = 0x58F4,
++  [13877] = 0x590D, [13878] = 0x5953, [13879] = 0x59E1, [13880] = 0x59DE,
++  [13881] = 0x59EE, [13882] = 0x5A00, [13883] = 0x59F1, [13884] = 0x59DD,
++  [13885] = 0x59FA, [13886] = 0x59FD, [13887] = 0x59FC, [13888] = 0x59F6,
++  [13889] = 0x59E4, [13890] = 0x59F2, [13891] = 0x59F7, [13892] = 0x59DB,
++  [13893] = 0x59E9, [13894] = 0x59F3, [13895] = 0x59F5, [13896] = 0x59E0,
++  [13897] = 0x59FE, [13898] = 0x59F4, [13899] = 0x59ED, [13900] = 0x5BA8,
++  [13901] = 0x5C4C, [13902] = 0x5CD0, [13903] = 0x5CD8, [13904] = 0x5CCC,
++  [13905] = 0x5CD7, [13906] = 0x5CCB, [13907] = 0x5CDB, [13942] = 0x5CDE,
++  [13943] = 0x5CDA, [13944] = 0x5CC9, [13945] = 0x5CC7, [13946] = 0x5CCA,
++  [13947] = 0x5CD6, [13948] = 0x5CD3, [13949] = 0x5CD4, [13950] = 0x5CCF,
++  [13951] = 0x5CC8, [13952] = 0x5CC6, [13953] = 0x5CCE, [13954] = 0x5CDF,
++  [13955] = 0x5CF8, [13956] = 0x5DF9, [13957] = 0x5E21, [13958] = 0x5E22,
++  [13959] = 0x5E23, [13960] = 0x5E20, [13961] = 0x5E24, [13962] = 0x5EB0,
++  [13963] = 0x5EA4, [13964] = 0x5EA2, [13965] = 0x5E9B, [13966] = 0x5EA3,
++  [13967] = 0x5EA5, [13968] = 0x5F07, [13969] = 0x5F2E, [13970] = 0x5F56,
++  [13971] = 0x5F86, [13972] = 0x6037, [13973] = 0x6039, [13974] = 0x6054,
++  [13975] = 0x6072, [13976] = 0x605E, [13977] = 0x6045, [13978] = 0x6053,
++  [13979] = 0x6047, [13980] = 0x6049, [13981] = 0x605B, [13982] = 0x604C,
++  [13983] = 0x6040, [13984] = 0x6042, [13985] = 0x605F, [13986] = 0x6024,
++  [13987] = 0x6044, [13988] = 0x6058, [13989] = 0x6066, [13990] = 0x606E,
++  [13991] = 0x6242, [13992] = 0x6243, [13993] = 0x62CF, [13994] = 0x630D,
++  [13995] = 0x630B, [13996] = 0x62F5, [13997] = 0x630E, [13998] = 0x6303,
++  [13999] = 0x62EB, [14000] = 0x62F9, [14001] = 0x630F, [14002] = 0x630C,
++  [14003] = 0x62F8, [14004] = 0x62F6, [14005] = 0x6300, [14006] = 0x6313,
++  [14007] = 0x6314, [14008] = 0x62FA, [14009] = 0x6315, [14010] = 0x62FB,
++  [14011] = 0x62F0, [14012] = 0x6541, [14013] = 0x6543, [14014] = 0x65AA,
++  [14015] = 0x65BF, [14016] = 0x6636, [14017] = 0x6621, [14018] = 0x6632,
++  [14019] = 0x6635, [14020] = 0x661C, [14021] = 0x6626, [14022] = 0x6622,
++  [14023] = 0x6633, [14024] = 0x662B, [14025] = 0x663A, [14026] = 0x661D,
++  [14027] = 0x6634, [14028] = 0x6639, [14029] = 0x662E, [14030] = 0x670F,
++  [14031] = 0x6710, [14032] = 0x67C1, [14033] = 0x67F2, [14034] = 0x67C8,
++  [14035] = 0x67BA, [14040] = 0x67DC, [14041] = 0x67BB, [14042] = 0x67F8,
++  [14043] = 0x67D8, [14044] = 0x67C0, [14045] = 0x67B7, [14046] = 0x67C5,
++  [14047] = 0x67EB, [14048] = 0x67E4, [14049] = 0x67DF, [14050] = 0x67B5,
++  [14051] = 0x67CD, [14052] = 0x67B3, [14053] = 0x67F7, [14054] = 0x67F6,
++  [14055] = 0x67EE, [14056] = 0x67E3, [14057] = 0x67C2, [14058] = 0x67B9,
++  [14059] = 0x67CE, [14060] = 0x67E7, [14061] = 0x67F0, [14062] = 0x67B2,
++  [14063] = 0x67FC, [14064] = 0x67C6, [14065] = 0x67ED, [14066] = 0x67CC,
++  [14067] = 0x67AE, [14068] = 0x67E6, [14069] = 0x67DB, [14070] = 0x67FA,
++  [14071] = 0x67C9, [14072] = 0x67CA, [14073] = 0x67C3, [14074] = 0x67EA,
++  [14075] = 0x67CB, [14076] = 0x6B28, [14077] = 0x6B82, [14078] = 0x6B84,
++  [14079] = 0x6BB6, [14080] = 0x6BD6, [14081] = 0x6BD8, [14082] = 0x6BE0,
++  [14083] = 0x6C20, [14084] = 0x6C21, [14085] = 0x6D28, [14086] = 0x6D34,
++  [14087] = 0x6D2D, [14088] = 0x6D1F, [14089] = 0x6D3C, [14090] = 0x6D3F,
++  [14091] = 0x6D12, [14092] = 0x6D0A, [14093] = 0x6CDA, [14094] = 0x6D33,
++  [14095] = 0x6D04, [14096] = 0x6D19, [14097] = 0x6D3A, [14098] = 0x6D1A,
++  [14099] = 0x6D11, [14100] = 0x6D00, [14101] = 0x6D1D, [14102] = 0x6D42,
++  [14137] = 0x6D01, [14138] = 0x6D18, [14139] = 0x6D37, [14140] = 0x6D03,
++  [14141] = 0x6D0F, [14142] = 0x6D40, [14143] = 0x6D07, [14144] = 0x6D20,
++  [14145] = 0x6D2C, [14146] = 0x6D08, [14147] = 0x6D22, [14148] = 0x6D09,
++  [14149] = 0x6D10, [14150] = 0x70B7, [14151] = 0x709F, [14152] = 0x70BE,
++  [14153] = 0x70B1, [14154] = 0x70B0, [14155] = 0x70A1, [14156] = 0x70B4,
++  [14157] = 0x70B5, [14158] = 0x70A9, [14159] = 0x7241, [14160] = 0x7249,
++  [14161] = 0x724A, [14162] = 0x726C, [14163] = 0x7270, [14164] = 0x7273,
++  [14165] = 0x726E, [14166] = 0x72CA, [14167] = 0x72E4, [14168] = 0x72E8,
++  [14169] = 0x72EB, [14170] = 0x72DF, [14171] = 0x72EA, [14172] = 0x72E6,
++  [14173] = 0x72E3, [14174] = 0x7385, [14175] = 0x73CC, [14176] = 0x73C2,
++  [14177] = 0x73C8, [14178] = 0x73C5, [14179] = 0x73B9, [14180] = 0x73B6,
++  [14181] = 0x73B5, [14182] = 0x73B4, [14183] = 0x73EB, [14184] = 0x73BF,
++  [14185] = 0x73C7, [14186] = 0x73BE, [14187] = 0x73C3, [14188] = 0x73C6,
++  [14189] = 0x73B8, [14190] = 0x73CB, [14191] = 0x74EC, [14192] = 0x74EE,
++  [14193] = 0x752E, [14194] = 0x7547, [14195] = 0x7548, [14196] = 0x75A7,
++  [14197] = 0x75AA, [14198] = 0x7679, [14199] = 0x76C4, [14200] = 0x7708,
++  [14201] = 0x7703, [14202] = 0x7704, [14203] = 0x7705, [14204] = 0x770A,
++  [14205] = 0x76F7, [14206] = 0x76FB, [14207] = 0x76FA, [14208] = 0x77E7,
++  [14209] = 0x77E8, [14210] = 0x7806, [14211] = 0x7811, [14212] = 0x7812,
++  [14213] = 0x7805, [14214] = 0x7810, [14215] = 0x780F, [14216] = 0x780E,
++  [14217] = 0x7809, [14218] = 0x7803, [14219] = 0x7813, [14220] = 0x794A,
++  [14221] = 0x794C, [14222] = 0x794B, [14223] = 0x7945, [14224] = 0x7944,
++  [14225] = 0x79D5, [14226] = 0x79CD, [14227] = 0x79CF, [14228] = 0x79D6,
++  [14229] = 0x79CE, [14230] = 0x7A80, [14235] = 0x7A7E, [14236] = 0x7AD1,
++  [14237] = 0x7B00, [14238] = 0x7B01, [14239] = 0x7C7A, [14240] = 0x7C78,
++  [14241] = 0x7C79, [14242] = 0x7C7F, [14243] = 0x7C80, [14244] = 0x7C81,
++  [14245] = 0x7D03, [14246] = 0x7D08, [14247] = 0x7D01, [14248] = 0x7F58,
++  [14249] = 0x7F91, [14250] = 0x7F8D, [14251] = 0x7FBE, [14252] = 0x8007,
++  [14253] = 0x800E, [14254] = 0x800F, [14255] = 0x8014, [14256] = 0x8037,
++  [14257] = 0x80D8, [14258] = 0x80C7, [14259] = 0x80E0, [14260] = 0x80D1,
++  [14261] = 0x80C8, [14262] = 0x80C2, [14263] = 0x80D0, [14264] = 0x80C5,
++  [14265] = 0x80E3, [14266] = 0x80D9, [14267] = 0x80DC, [14268] = 0x80CA,
++  [14269] = 0x80D5, [14270] = 0x80C9, [14271] = 0x80CF, [14272] = 0x80D7,
++  [14273] = 0x80E6, [14274] = 0x80CD, [14275] = 0x81FF, [14276] = 0x8221,
++  [14277] = 0x8294, [14278] = 0x82D9, [14279] = 0x82FE, [14280] = 0x82F9,
++  [14281] = 0x8307, [14282] = 0x82E8, [14283] = 0x8300, [14284] = 0x82D5,
++  [14285] = 0x833A, [14286] = 0x82EB, [14287] = 0x82D6, [14288] = 0x82F4,
++  [14289] = 0x82EC, [14290] = 0x82E1, [14291] = 0x82F2, [14292] = 0x82F5,
++  [14293] = 0x830C, [14294] = 0x82FB, [14295] = 0x82F6, [14296] = 0x82F0,
++  [14297] = 0x82EA, [14332] = 0x82E4, [14333] = 0x82E0, [14334] = 0x82FA,
++  [14335] = 0x82F3, [14336] = 0x82ED, [14337] = 0x8677, [14338] = 0x8674,
++  [14339] = 0x867C, [14340] = 0x8673, [14341] = 0x8841, [14342] = 0x884E,
++  [14343] = 0x8867, [14344] = 0x886A, [14345] = 0x8869, [14346] = 0x89D3,
++  [14347] = 0x8A04, [14348] = 0x8A07, [14349] = 0x8D72, [14350] = 0x8FE3,
++  [14351] = 0x8FE1, [14352] = 0x8FEE, [14353] = 0x8FE0, [14354] = 0x90F1,
++  [14355] = 0x90BD, [14356] = 0x90BF, [14357] = 0x90D5, [14358] = 0x90C5,
++  [14359] = 0x90BE, [14360] = 0x90C7, [14361] = 0x90CB, [14362] = 0x90C8,
++  [14363] = 0x91D4, [14364] = 0x91D3, [14365] = 0x9654, [14366] = 0x964F,
++  [14367] = 0x9651, [14368] = 0x9653, [14369] = 0x964A, [14370] = 0x964E,
++  [14371] = 0x501E, [14372] = 0x5005, [14373] = 0x5007, [14374] = 0x5013,
++  [14375] = 0x5022, [14376] = 0x5030, [14377] = 0x501B, [14378] = 0x4FF5,
++  [14379] = 0x4FF4, [14380] = 0x5033, [14381] = 0x5037, [14382] = 0x502C,
++  [14383] = 0x4FF6, [14384] = 0x4FF7, [14385] = 0x5017, [14386] = 0x501C,
++  [14387] = 0x5020, [14388] = 0x5027, [14389] = 0x5035, [14390] = 0x502F,
++  [14391] = 0x5031, [14392] = 0x500E, [14393] = 0x515A, [14394] = 0x5194,
++  [14395] = 0x5193, [14396] = 0x51CA, [14397] = 0x51C4, [14398] = 0x51C5,
++  [14399] = 0x51C8, [14400] = 0x51CE, [14401] = 0x5261, [14402] = 0x525A,
++  [14403] = 0x5252, [14404] = 0x525E, [14405] = 0x525F, [14406] = 0x5255,
++  [14407] = 0x5262, [14408] = 0x52CD, [14409] = 0x530E, [14410] = 0x539E,
++  [14411] = 0x5526, [14412] = 0x54E2, [14413] = 0x5517, [14414] = 0x5512,
++  [14415] = 0x54E7, [14416] = 0x54F3, [14417] = 0x54E4, [14418] = 0x551A,
++  [14419] = 0x54FF, [14420] = 0x5504, [14421] = 0x5508, [14422] = 0x54EB,
++  [14423] = 0x5511, [14424] = 0x5505, [14425] = 0x54F1, [14430] = 0x550A,
++  [14431] = 0x54FB, [14432] = 0x54F7, [14433] = 0x54F8, [14434] = 0x54E0,
++  [14435] = 0x550E, [14436] = 0x5503, [14437] = 0x550B, [14438] = 0x5701,
++  [14439] = 0x5702, [14440] = 0x57CC, [14441] = 0x5832, [14442] = 0x57D5,
++  [14443] = 0x57D2, [14444] = 0x57BA, [14445] = 0x57C6, [14446] = 0x57BD,
++  [14447] = 0x57BC, [14448] = 0x57B8, [14449] = 0x57B6, [14450] = 0x57BF,
++  [14451] = 0x57C7, [14452] = 0x57D0, [14453] = 0x57B9, [14454] = 0x57C1,
++  [14455] = 0x590E, [14456] = 0x594A, [14457] = 0x5A19, [14458] = 0x5A16,
++  [14459] = 0x5A2D, [14460] = 0x5A2E, [14461] = 0x5A15, [14462] = 0x5A0F,
++  [14463] = 0x5A17, [14464] = 0x5A0A, [14465] = 0x5A1E, [14466] = 0x5A33,
++  [14467] = 0x5B6C, [14468] = 0x5BA7, [14469] = 0x5BAD, [14470] = 0x5BAC,
++  [14471] = 0x5C03, [14472] = 0x5C56, [14473] = 0x5C54, [14474] = 0x5CEC,
++  [14475] = 0x5CFF, [14476] = 0x5CEE, [14477] = 0x5CF1, [14478] = 0x5CF7,
++  [14479] = 0x5D00, [14480] = 0x5CF9, [14481] = 0x5E29, [14482] = 0x5E28,
++  [14483] = 0x5EA8, [14484] = 0x5EAE, [14485] = 0x5EAA, [14486] = 0x5EAC,
++  [14487] = 0x5F33, [14488] = 0x5F30, [14489] = 0x5F67, [14490] = 0x605D,
++  [14491] = 0x605A, [14492] = 0x6067, [14527] = 0x6041, [14528] = 0x60A2,
++  [14529] = 0x6088, [14530] = 0x6080, [14531] = 0x6092, [14532] = 0x6081,
++  [14533] = 0x609D, [14534] = 0x6083, [14535] = 0x6095, [14536] = 0x609B,
++  [14537] = 0x6097, [14538] = 0x6087, [14539] = 0x609C, [14540] = 0x608E,
++  [14541] = 0x6219, [14542] = 0x6246, [14543] = 0x62F2, [14544] = 0x6310,
++  [14545] = 0x6356, [14546] = 0x632C, [14547] = 0x6344, [14548] = 0x6345,
++  [14549] = 0x6336, [14550] = 0x6343, [14551] = 0x63E4, [14552] = 0x6339,
++  [14553] = 0x634B, [14554] = 0x634A, [14555] = 0x633C, [14556] = 0x6329,
++  [14557] = 0x6341, [14558] = 0x6334, [14559] = 0x6358, [14560] = 0x6354,
++  [14561] = 0x6359, [14562] = 0x632D, [14563] = 0x6347, [14564] = 0x6333,
++  [14565] = 0x635A, [14566] = 0x6351, [14567] = 0x6338, [14568] = 0x6357,
++  [14569] = 0x6340, [14570] = 0x6348, [14571] = 0x654A, [14572] = 0x6546,
++  [14573] = 0x65C6, [14574] = 0x65C3, [14575] = 0x65C4, [14576] = 0x65C2,
++  [14577] = 0x664A, [14578] = 0x665F, [14579] = 0x6647, [14580] = 0x6651,
++  [14581] = 0x6712, [14582] = 0x6713, [14583] = 0x681F, [14584] = 0x681A,
++  [14585] = 0x6849, [14586] = 0x6832, [14587] = 0x6833, [14588] = 0x683B,
++  [14589] = 0x684B, [14590] = 0x684F, [14591] = 0x6816, [14592] = 0x6831,
++  [14593] = 0x681C, [14594] = 0x6835, [14595] = 0x682B, [14596] = 0x682D,
++  [14597] = 0x682F, [14598] = 0x684E, [14599] = 0x6844, [14600] = 0x6834,
++  [14601] = 0x681D, [14602] = 0x6812, [14603] = 0x6814, [14604] = 0x6826,
++  [14605] = 0x6828, [14606] = 0x682E, [14607] = 0x684D, [14608] = 0x683A,
++  [14609] = 0x6825, [14610] = 0x6820, [14611] = 0x6B2C, [14612] = 0x6B2F,
++  [14613] = 0x6B2D, [14614] = 0x6B31, [14615] = 0x6B34, [14616] = 0x6B6D,
++  [14617] = 0x8082, [14618] = 0x6B88, [14619] = 0x6BE6, [14620] = 0x6BE4,
++  [14625] = 0x6BE8, [14626] = 0x6BE3, [14627] = 0x6BE2, [14628] = 0x6BE7,
++  [14629] = 0x6C25, [14630] = 0x6D7A, [14631] = 0x6D63, [14632] = 0x6D64,
++  [14633] = 0x6D76, [14634] = 0x6D0D, [14635] = 0x6D61, [14636] = 0x6D92,
++  [14637] = 0x6D58, [14638] = 0x6D62, [14639] = 0x6D6D, [14640] = 0x6D6F,
++  [14641] = 0x6D91, [14642] = 0x6D8D, [14643] = 0x6DEF, [14644] = 0x6D7F,
++  [14645] = 0x6D86, [14646] = 0x6D5E, [14647] = 0x6D67, [14648] = 0x6D60,
++  [14649] = 0x6D97, [14650] = 0x6D70, [14651] = 0x6D7C, [14652] = 0x6D5F,
++  [14653] = 0x6D82, [14654] = 0x6D98, [14655] = 0x6D2F, [14656] = 0x6D68,
++  [14657] = 0x6D8B, [14658] = 0x6D7E, [14659] = 0x6D80, [14660] = 0x6D84,
++  [14661] = 0x6D16, [14662] = 0x6D83, [14663] = 0x6D7B, [14664] = 0x6D7D,
++  [14665] = 0x6D75, [14666] = 0x6D90, [14667] = 0x70DC, [14668] = 0x70D3,
++  [14669] = 0x70D1, [14670] = 0x70DD, [14671] = 0x70CB, [14672] = 0x7F39,
++  [14673] = 0x70E2, [14674] = 0x70D7, [14675] = 0x70D2, [14676] = 0x70DE,
++  [14677] = 0x70E0, [14678] = 0x70D4, [14679] = 0x70CD, [14680] = 0x70C5,
++  [14681] = 0x70C6, [14682] = 0x70C7, [14683] = 0x70DA, [14684] = 0x70CE,
++  [14685] = 0x70E1, [14686] = 0x7242, [14687] = 0x7278, [14722] = 0x7277,
++  [14723] = 0x7276, [14724] = 0x7300, [14725] = 0x72FA, [14726] = 0x72F4,
++  [14727] = 0x72FE, [14728] = 0x72F6, [14729] = 0x72F3, [14730] = 0x72FB,
++  [14731] = 0x7301, [14732] = 0x73D3, [14733] = 0x73D9, [14734] = 0x73E5,
++  [14735] = 0x73D6, [14736] = 0x73BC, [14737] = 0x73E7, [14738] = 0x73E3,
++  [14739] = 0x73E9, [14740] = 0x73DC, [14741] = 0x73D2, [14742] = 0x73DB,
++  [14743] = 0x73D4, [14744] = 0x73DD, [14745] = 0x73DA, [14746] = 0x73D7,
++  [14747] = 0x73D8, [14748] = 0x73E8, [14749] = 0x74DE, [14750] = 0x74DF,
++  [14751] = 0x74F4, [14752] = 0x74F5, [14753] = 0x7521, [14754] = 0x755B,
++  [14755] = 0x755F, [14756] = 0x75B0, [14757] = 0x75C1, [14758] = 0x75BB,
++  [14759] = 0x75C4, [14760] = 0x75C0, [14761] = 0x75BF, [14762] = 0x75B6,
++  [14763] = 0x75BA, [14764] = 0x768A, [14765] = 0x76C9, [14766] = 0x771D,
++  [14767] = 0x771B, [14768] = 0x7710, [14769] = 0x7713, [14770] = 0x7712,
++  [14771] = 0x7723, [14772] = 0x7711, [14773] = 0x7715, [14774] = 0x7719,
++  [14775] = 0x771A, [14776] = 0x7722, [14777] = 0x7727, [14778] = 0x7823,
++  [14779] = 0x782C, [14780] = 0x7822, [14781] = 0x7835, [14782] = 0x782F,
++  [14783] = 0x7828, [14784] = 0x782E, [14785] = 0x782B, [14786] = 0x7821,
++  [14787] = 0x7829, [14788] = 0x7833, [14789] = 0x782A, [14790] = 0x7831,
++  [14791] = 0x7954, [14792] = 0x795B, [14793] = 0x794F, [14794] = 0x795C,
++  [14795] = 0x7953, [14796] = 0x7952, [14797] = 0x7951, [14798] = 0x79EB,
++  [14799] = 0x79EC, [14800] = 0x79E0, [14801] = 0x79EE, [14802] = 0x79ED,
++  [14803] = 0x79EA, [14804] = 0x79DC, [14805] = 0x79DE, [14806] = 0x79DD,
++  [14807] = 0x7A86, [14808] = 0x7A89, [14809] = 0x7A85, [14810] = 0x7A8B,
++  [14811] = 0x7A8C, [14812] = 0x7A8A, [14813] = 0x7A87, [14814] = 0x7AD8,
++  [14815] = 0x7B10, [14820] = 0x7B04, [14821] = 0x7B13, [14822] = 0x7B05,
++  [14823] = 0x7B0F, [14824] = 0x7B08, [14825] = 0x7B0A, [14826] = 0x7B0E,
++  [14827] = 0x7B09, [14828] = 0x7B12, [14829] = 0x7C84, [14830] = 0x7C91,
++  [14831] = 0x7C8A, [14832] = 0x7C8C, [14833] = 0x7C88, [14834] = 0x7C8D,
++  [14835] = 0x7C85, [14836] = 0x7D1E, [14837] = 0x7D1D, [14838] = 0x7D11,
++  [14839] = 0x7D0E, [14840] = 0x7D18, [14841] = 0x7D16, [14842] = 0x7D13,
++  [14843] = 0x7D1F, [14844] = 0x7D12, [14845] = 0x7D0F, [14846] = 0x7D0C,
++  [14847] = 0x7F5C, [14848] = 0x7F61, [14849] = 0x7F5E, [14850] = 0x7F60,
++  [14851] = 0x7F5D, [14852] = 0x7F5B, [14853] = 0x7F96, [14854] = 0x7F92,
++  [14855] = 0x7FC3, [14856] = 0x7FC2, [14857] = 0x7FC0, [14858] = 0x8016,
++  [14859] = 0x803E, [14860] = 0x8039, [14861] = 0x80FA, [14862] = 0x80F2,
++  [14863] = 0x80F9, [14864] = 0x80F5, [14865] = 0x8101, [14866] = 0x80FB,
++  [14867] = 0x8100, [14868] = 0x8201, [14869] = 0x822F, [14870] = 0x8225,
++  [14871] = 0x8333, [14872] = 0x832D, [14873] = 0x8344, [14874] = 0x8319,
++  [14875] = 0x8351, [14876] = 0x8325, [14877] = 0x8356, [14878] = 0x833F,
++  [14879] = 0x8341, [14880] = 0x8326, [14881] = 0x831C, [14882] = 0x8322,
++  [14917] = 0x8342, [14918] = 0x834E, [14919] = 0x831B, [14920] = 0x832A,
++  [14921] = 0x8308, [14922] = 0x833C, [14923] = 0x834D, [14924] = 0x8316,
++  [14925] = 0x8324, [14926] = 0x8320, [14927] = 0x8337, [14928] = 0x832F,
++  [14929] = 0x8329, [14930] = 0x8347, [14931] = 0x8345, [14932] = 0x834C,
++  [14933] = 0x8353, [14934] = 0x831E, [14935] = 0x832C, [14936] = 0x834B,
++  [14937] = 0x8327, [14938] = 0x8348, [14939] = 0x8653, [14940] = 0x8652,
++  [14941] = 0x86A2, [14942] = 0x86A8, [14943] = 0x8696, [14944] = 0x868D,
++  [14945] = 0x8691, [14946] = 0x869E, [14947] = 0x8687, [14948] = 0x8697,
++  [14949] = 0x8686, [14950] = 0x868B, [14951] = 0x869A, [14952] = 0x8685,
++  [14953] = 0x86A5, [14954] = 0x8699, [14955] = 0x86A1, [14956] = 0x86A7,
++  [14957] = 0x8695, [14958] = 0x8698, [14959] = 0x868E, [14960] = 0x869D,
++  [14961] = 0x8690, [14962] = 0x8694, [14963] = 0x8843, [14964] = 0x8844,
++  [14965] = 0x886D, [14966] = 0x8875, [14967] = 0x8876, [14968] = 0x8872,
++  [14969] = 0x8880, [14970] = 0x8871, [14971] = 0x887F, [14972] = 0x886F,
++  [14973] = 0x8883, [14974] = 0x887E, [14975] = 0x8874, [14976] = 0x887C,
++  [14977] = 0x8A12, [14978] = 0x8C47, [14979] = 0x8C57, [14980] = 0x8C7B,
++  [14981] = 0x8CA4, [14982] = 0x8CA3, [14983] = 0x8D76, [14984] = 0x8D78,
++  [14985] = 0x8DB5, [14986] = 0x8DB7, [14987] = 0x8DB6, [14988] = 0x8ED1,
++  [14989] = 0x8ED3, [14990] = 0x8FFE, [14991] = 0x8FF5, [14992] = 0x9002,
++  [14993] = 0x8FFF, [14994] = 0x8FFB, [14995] = 0x9004, [14996] = 0x8FFC,
++  [14997] = 0x8FF6, [14998] = 0x90D6, [14999] = 0x90E0, [15000] = 0x90D9,
++  [15001] = 0x90DA, [15002] = 0x90E3, [15003] = 0x90DF, [15004] = 0x90E5,
++  [15005] = 0x90D8, [15006] = 0x90DB, [15007] = 0x90D7, [15008] = 0x90DC,
++  [15009] = 0x90E4, [15010] = 0x9150, [15015] = 0x914E, [15016] = 0x914F,
++  [15017] = 0x91D5, [15018] = 0x91E2, [15019] = 0x91DA, [15020] = 0x965C,
++  [15021] = 0x965F, [15022] = 0x96BC, [15023] = 0x98E3, [15024] = 0x9ADF,
++  [15025] = 0x9B2F, [15026] = 0x4E7F, [15027] = 0x5070, [15028] = 0x506A,
++  [15029] = 0x5061, [15030] = 0x505E, [15031] = 0x5060, [15032] = 0x5053,
++  [15033] = 0x504B, [15034] = 0x505D, [15035] = 0x5072, [15036] = 0x5048,
++  [15037] = 0x504D, [15038] = 0x5041, [15039] = 0x505B, [15040] = 0x504A,
++  [15041] = 0x5062, [15042] = 0x5015, [15043] = 0x5045, [15044] = 0x505F,
++  [15045] = 0x5069, [15046] = 0x506B, [15047] = 0x5063, [15048] = 0x5064,
++  [15049] = 0x5046, [15050] = 0x5040, [15051] = 0x506E, [15052] = 0x5073,
++  [15053] = 0x5057, [15054] = 0x5051, [15055] = 0x51D0, [15056] = 0x526B,
++  [15057] = 0x526D, [15058] = 0x526C, [15059] = 0x526E, [15060] = 0x52D6,
++  [15061] = 0x52D3, [15062] = 0x532D, [15063] = 0x539C, [15064] = 0x5575,
++  [15065] = 0x5576, [15066] = 0x553C, [15067] = 0x554D, [15068] = 0x5550,
++  [15069] = 0x5534, [15070] = 0x552A, [15071] = 0x5551, [15072] = 0x5562,
++  [15073] = 0x5536, [15074] = 0x5535, [15075] = 0x5530, [15076] = 0x5552,
++  [15077] = 0x5545, [15112] = 0x550C, [15113] = 0x5532, [15114] = 0x5565,
++  [15115] = 0x554E, [15116] = 0x5539, [15117] = 0x5548, [15118] = 0x552D,
++  [15119] = 0x553B, [15120] = 0x5540, [15121] = 0x554B, [15122] = 0x570A,
++  [15123] = 0x5707, [15124] = 0x57FB, [15125] = 0x5814, [15126] = 0x57E2,
++  [15127] = 0x57F6, [15128] = 0x57DC, [15129] = 0x57F4, [15130] = 0x5800,
++  [15131] = 0x57ED, [15132] = 0x57FD, [15133] = 0x5808, [15134] = 0x57F8,
++  [15135] = 0x580B, [15136] = 0x57F3, [15137] = 0x57CF, [15138] = 0x5807,
++  [15139] = 0x57EE, [15140] = 0x57E3, [15141] = 0x57F2, [15142] = 0x57E5,
++  [15143] = 0x57EC, [15144] = 0x57E1, [15145] = 0x580E, [15146] = 0x57FC,
++  [15147] = 0x5810, [15148] = 0x57E7, [15149] = 0x5801, [15150] = 0x580C,
++  [15151] = 0x57F1, [15152] = 0x57E9, [15153] = 0x57F0, [15154] = 0x580D,
++  [15155] = 0x5804, [15156] = 0x595C, [15157] = 0x5A60, [15158] = 0x5A58,
++  [15159] = 0x5A55, [15160] = 0x5A67, [15161] = 0x5A5E, [15162] = 0x5A38,
++  [15163] = 0x5A35, [15164] = 0x5A6D, [15165] = 0x5A50, [15166] = 0x5A5F,
++  [15167] = 0x5A65, [15168] = 0x5A6C, [15169] = 0x5A53, [15170] = 0x5A64,
++  [15171] = 0x5A57, [15172] = 0x5A43, [15173] = 0x5A5D, [15174] = 0x5A52,
++  [15175] = 0x5A44, [15176] = 0x5A5B, [15177] = 0x5A48, [15178] = 0x5A8E,
++  [15179] = 0x5A3E, [15180] = 0x5A4D, [15181] = 0x5A39, [15182] = 0x5A4C,
++  [15183] = 0x5A70, [15184] = 0x5A69, [15185] = 0x5A47, [15186] = 0x5A51,
++  [15187] = 0x5A56, [15188] = 0x5A42, [15189] = 0x5A5C, [15190] = 0x5B72,
++  [15191] = 0x5B6E, [15192] = 0x5BC1, [15193] = 0x5BC0, [15194] = 0x5C59,
++  [15195] = 0x5D1E, [15196] = 0x5D0B, [15197] = 0x5D1D, [15198] = 0x5D1A,
++  [15199] = 0x5D20, [15200] = 0x5D0C, [15201] = 0x5D28, [15202] = 0x5D0D,
++  [15203] = 0x5D26, [15204] = 0x5D25, [15205] = 0x5D0F, [15210] = 0x5D30,
++  [15211] = 0x5D12, [15212] = 0x5D23, [15213] = 0x5D1F, [15214] = 0x5D2E,
++  [15215] = 0x5E3E, [15216] = 0x5E34, [15217] = 0x5EB1, [15218] = 0x5EB4,
++  [15219] = 0x5EB9, [15220] = 0x5EB2, [15221] = 0x5EB3, [15222] = 0x5F36,
++  [15223] = 0x5F38, [15224] = 0x5F9B, [15225] = 0x5F96, [15226] = 0x5F9F,
++  [15227] = 0x608A, [15228] = 0x6090, [15229] = 0x6086, [15230] = 0x60BE,
++  [15231] = 0x60B0, [15232] = 0x60BA, [15233] = 0x60D3, [15234] = 0x60D4,
++  [15235] = 0x60CF, [15236] = 0x60E4, [15237] = 0x60D9, [15238] = 0x60DD,
++  [15239] = 0x60C8, [15240] = 0x60B1, [15241] = 0x60DB, [15242] = 0x60B7,
++  [15243] = 0x60CA, [15244] = 0x60BF, [15245] = 0x60C3, [15246] = 0x60CD,
++  [15247] = 0x60C0, [15248] = 0x6332, [15249] = 0x6365, [15250] = 0x638A,
++  [15251] = 0x6382, [15252] = 0x637D, [15253] = 0x63BD, [15254] = 0x639E,
++  [15255] = 0x63AD, [15256] = 0x639D, [15257] = 0x6397, [15258] = 0x63AB,
++  [15259] = 0x638E, [15260] = 0x636F, [15261] = 0x6387, [15262] = 0x6390,
++  [15263] = 0x636E, [15264] = 0x63AF, [15265] = 0x6375, [15266] = 0x639C,
++  [15267] = 0x636D, [15268] = 0x63AE, [15269] = 0x637C, [15270] = 0x63A4,
++  [15271] = 0x633B, [15272] = 0x639F, [15307] = 0x6378, [15308] = 0x6385,
++  [15309] = 0x6381, [15310] = 0x6391, [15311] = 0x638D, [15312] = 0x6370,
++  [15313] = 0x6553, [15314] = 0x65CD, [15315] = 0x6665, [15316] = 0x6661,
++  [15317] = 0x665B, [15318] = 0x6659, [15319] = 0x665C, [15320] = 0x6662,
++  [15321] = 0x6718, [15322] = 0x6879, [15323] = 0x6887, [15324] = 0x6890,
++  [15325] = 0x689C, [15326] = 0x686D, [15327] = 0x686E, [15328] = 0x68AE,
++  [15329] = 0x68AB, [15330] = 0x6956, [15331] = 0x686F, [15332] = 0x68A3,
++  [15333] = 0x68AC, [15334] = 0x68A9, [15335] = 0x6875, [15336] = 0x6874,
++  [15337] = 0x68B2, [15338] = 0x688F, [15339] = 0x6877, [15340] = 0x6892,
++  [15341] = 0x687C, [15342] = 0x686B, [15343] = 0x6872, [15344] = 0x68AA,
++  [15345] = 0x6880, [15346] = 0x6871, [15347] = 0x687E, [15348] = 0x689B,
++  [15349] = 0x6896, [15350] = 0x688B, [15351] = 0x68A0, [15352] = 0x6889,
++  [15353] = 0x68A4, [15354] = 0x6878, [15355] = 0x687B, [15356] = 0x6891,
++  [15357] = 0x688C, [15358] = 0x688A, [15359] = 0x687D, [15360] = 0x6B36,
++  [15361] = 0x6B33, [15362] = 0x6B37, [15363] = 0x6B38, [15364] = 0x6B91,
++  [15365] = 0x6B8F, [15366] = 0x6B8D, [15367] = 0x6B8E, [15368] = 0x6B8C,
++  [15369] = 0x6C2A, [15370] = 0x6DC0, [15371] = 0x6DAB, [15372] = 0x6DB4,
++  [15373] = 0x6DB3, [15374] = 0x6E74, [15375] = 0x6DAC, [15376] = 0x6DE9,
++  [15377] = 0x6DE2, [15378] = 0x6DB7, [15379] = 0x6DF6, [15380] = 0x6DD4,
++  [15381] = 0x6E00, [15382] = 0x6DC8, [15383] = 0x6DE0, [15384] = 0x6DDF,
++  [15385] = 0x6DD6, [15386] = 0x6DBE, [15387] = 0x6DE5, [15388] = 0x6DDC,
++  [15389] = 0x6DDD, [15390] = 0x6DDB, [15391] = 0x6DF4, [15392] = 0x6DCA,
++  [15393] = 0x6DBD, [15394] = 0x6DED, [15395] = 0x6DF0, [15396] = 0x6DBA,
++  [15397] = 0x6DD5, [15398] = 0x6DC2, [15399] = 0x6DCF, [15400] = 0x6DC9,
++  [15405] = 0x6DD0, [15406] = 0x6DF2, [15407] = 0x6DD3, [15408] = 0x6DFD,
++  [15409] = 0x6DD7, [15410] = 0x6DCD, [15411] = 0x6DE3, [15412] = 0x6DBB,
++  [15413] = 0x70FA, [15414] = 0x710D, [15415] = 0x70F7, [15416] = 0x7117,
++  [15417] = 0x70F4, [15418] = 0x710C, [15419] = 0x70F0, [15420] = 0x7104,
++  [15421] = 0x70F3, [15422] = 0x7110, [15423] = 0x70FC, [15424] = 0x70FF,
++  [15425] = 0x7106, [15426] = 0x7113, [15427] = 0x7100, [15428] = 0x70F8,
++  [15429] = 0x70F6, [15430] = 0x710B, [15431] = 0x7102, [15432] = 0x710E,
++  [15433] = 0x727E, [15434] = 0x727B, [15435] = 0x727C, [15436] = 0x727F,
++  [15437] = 0x731D, [15438] = 0x7317, [15439] = 0x7307, [15440] = 0x7311,
++  [15441] = 0x7318, [15442] = 0x730A, [15443] = 0x7308, [15444] = 0x72FF,
++  [15445] = 0x730F, [15446] = 0x731E, [15447] = 0x7388, [15448] = 0x73F6,
++  [15449] = 0x73F8, [15450] = 0x73F5, [15451] = 0x7404, [15452] = 0x7401,
++  [15453] = 0x73FD, [15454] = 0x7407, [15455] = 0x7400, [15456] = 0x73FA,
++  [15457] = 0x73FC, [15458] = 0x73FF, [15459] = 0x740C, [15460] = 0x740B,
++  [15461] = 0x73F4, [15462] = 0x7408, [15463] = 0x7564, [15464] = 0x7563,
++  [15465] = 0x75CE, [15466] = 0x75D2, [15467] = 0x75CF, [15502] = 0x75CB,
++  [15503] = 0x75CC, [15504] = 0x75D1, [15505] = 0x75D0, [15506] = 0x768F,
++  [15507] = 0x7689, [15508] = 0x76D3, [15509] = 0x7739, [15510] = 0x772F,
++  [15511] = 0x772D, [15512] = 0x7731, [15513] = 0x7732, [15514] = 0x7734,
++  [15515] = 0x7733, [15516] = 0x773D, [15517] = 0x7725, [15518] = 0x773B,
++  [15519] = 0x7735, [15520] = 0x7848, [15521] = 0x7852, [15522] = 0x7849,
++  [15523] = 0x784D, [15524] = 0x784A, [15525] = 0x784C, [15526] = 0x7826,
++  [15527] = 0x7845, [15528] = 0x7850, [15529] = 0x7964, [15530] = 0x7967,
++  [15531] = 0x7969, [15532] = 0x796A, [15533] = 0x7963, [15534] = 0x796B,
++  [15535] = 0x7961, [15536] = 0x79BB, [15537] = 0x79FA, [15538] = 0x79F8,
++  [15539] = 0x79F6, [15540] = 0x79F7, [15541] = 0x7A8F, [15542] = 0x7A94,
++  [15543] = 0x7A90, [15544] = 0x7B35, [15545] = 0x7B47, [15546] = 0x7B34,
++  [15547] = 0x7B25, [15548] = 0x7B30, [15549] = 0x7B22, [15550] = 0x7B24,
++  [15551] = 0x7B33, [15552] = 0x7B18, [15553] = 0x7B2A, [15554] = 0x7B1D,
++  [15555] = 0x7B31, [15556] = 0x7B2B, [15557] = 0x7B2D, [15558] = 0x7B2F,
++  [15559] = 0x7B32, [15560] = 0x7B38, [15561] = 0x7B1A, [15562] = 0x7B23,
++  [15563] = 0x7C94, [15564] = 0x7C98, [15565] = 0x7C96, [15566] = 0x7CA3,
++  [15567] = 0x7D35, [15568] = 0x7D3D, [15569] = 0x7D38, [15570] = 0x7D36,
++  [15571] = 0x7D3A, [15572] = 0x7D45, [15573] = 0x7D2C, [15574] = 0x7D29,
++  [15575] = 0x7D41, [15576] = 0x7D47, [15577] = 0x7D3E, [15578] = 0x7D3F,
++  [15579] = 0x7D4A, [15580] = 0x7D3B, [15581] = 0x7D28, [15582] = 0x7F63,
++  [15583] = 0x7F95, [15584] = 0x7F9C, [15585] = 0x7F9D, [15586] = 0x7F9B,
++  [15587] = 0x7FCA, [15588] = 0x7FCB, [15589] = 0x7FCD, [15590] = 0x7FD0,
++  [15591] = 0x7FD1, [15592] = 0x7FC7, [15593] = 0x7FCF, [15594] = 0x7FC9,
++  [15595] = 0x801F, [15600] = 0x801E, [15601] = 0x801B, [15602] = 0x8047,
++  [15603] = 0x8043, [15604] = 0x8048, [15605] = 0x8118, [15606] = 0x8125,
++  [15607] = 0x8119, [15608] = 0x811B, [15609] = 0x812D, [15610] = 0x811F,
++  [15611] = 0x812C, [15612] = 0x811E, [15613] = 0x8121, [15614] = 0x8115,
++  [15615] = 0x8127, [15616] = 0x811D, [15617] = 0x8122, [15618] = 0x8211,
++  [15619] = 0x8238, [15620] = 0x8233, [15621] = 0x823A, [15622] = 0x8234,
++  [15623] = 0x8232, [15624] = 0x8274, [15625] = 0x8390, [15626] = 0x83A3,
++  [15627] = 0x83A8, [15628] = 0x838D, [15629] = 0x837A, [15630] = 0x8373,
++  [15631] = 0x83A4, [15632] = 0x8374, [15633] = 0x838F, [15634] = 0x8381,
++  [15635] = 0x8395, [15636] = 0x8399, [15637] = 0x8375, [15638] = 0x8394,
++  [15639] = 0x83A9, [15640] = 0x837D, [15641] = 0x8383, [15642] = 0x838C,
++  [15643] = 0x839D, [15644] = 0x839B, [15645] = 0x83AA, [15646] = 0x838B,
++  [15647] = 0x837E, [15648] = 0x83A5, [15649] = 0x83AF, [15650] = 0x8388,
++  [15651] = 0x8397, [15652] = 0x83B0, [15653] = 0x837F, [15654] = 0x83A6,
++  [15655] = 0x8387, [15656] = 0x83AE, [15657] = 0x8376, [15658] = 0x839A,
++  [15659] = 0x8659, [15660] = 0x8656, [15661] = 0x86BF, [15662] = 0x86B7,
++  [15697] = 0x86C2, [15698] = 0x86C1, [15699] = 0x86C5, [15700] = 0x86BA,
++  [15701] = 0x86B0, [15702] = 0x86C8, [15703] = 0x86B9, [15704] = 0x86B3,
++  [15705] = 0x86B8, [15706] = 0x86CC, [15707] = 0x86B4, [15708] = 0x86BB,
++  [15709] = 0x86BC, [15710] = 0x86C3, [15711] = 0x86BD, [15712] = 0x86BE,
++  [15713] = 0x8852, [15714] = 0x8889, [15715] = 0x8895, [15716] = 0x88A8,
++  [15717] = 0x88A2, [15718] = 0x88AA, [15719] = 0x889A, [15720] = 0x8891,
++  [15721] = 0x88A1, [15722] = 0x889F, [15723] = 0x8898, [15724] = 0x88A7,
++  [15725] = 0x8899, [15726] = 0x889B, [15727] = 0x8897, [15728] = 0x88A4,
++  [15729] = 0x88AC, [15730] = 0x888C, [15731] = 0x8893, [15732] = 0x888E,
++  [15733] = 0x8982, [15734] = 0x89D6, [15735] = 0x89D9, [15736] = 0x89D5,
++  [15737] = 0x8A30, [15738] = 0x8A27, [15739] = 0x8A2C, [15740] = 0x8A1E,
++  [15741] = 0x8C39, [15742] = 0x8C3B, [15743] = 0x8C5C, [15744] = 0x8C5D,
++  [15745] = 0x8C7D, [15746] = 0x8CA5, [15747] = 0x8D7D, [15748] = 0x8D7B,
++  [15749] = 0x8D79, [15750] = 0x8DBC, [15751] = 0x8DC2, [15752] = 0x8DB9,
++  [15753] = 0x8DBF, [15754] = 0x8DC1, [15755] = 0x8ED8, [15756] = 0x8EDE,
++  [15757] = 0x8EDD, [15758] = 0x8EDC, [15759] = 0x8ED7, [15760] = 0x8EE0,
++  [15761] = 0x8EE1, [15762] = 0x9024, [15763] = 0x900B, [15764] = 0x9011,
++  [15765] = 0x901C, [15766] = 0x900C, [15767] = 0x9021, [15768] = 0x90EF,
++  [15769] = 0x90EA, [15770] = 0x90F0, [15771] = 0x90F4, [15772] = 0x90F2,
++  [15773] = 0x90F3, [15774] = 0x90D4, [15775] = 0x90EB, [15776] = 0x90EC,
++  [15777] = 0x90E9, [15778] = 0x9156, [15779] = 0x9158, [15780] = 0x915A,
++  [15781] = 0x9153, [15782] = 0x9155, [15783] = 0x91EC, [15784] = 0x91F4,
++  [15785] = 0x91F1, [15786] = 0x91F3, [15787] = 0x91F8, [15788] = 0x91E4,
++  [15789] = 0x91F9, [15790] = 0x91EA, [15795] = 0x91EB, [15796] = 0x91F7,
++  [15797] = 0x91E8, [15798] = 0x91EE, [15799] = 0x957A, [15800] = 0x9586,
++  [15801] = 0x9588, [15802] = 0x967C, [15803] = 0x966D, [15804] = 0x966B,
++  [15805] = 0x9671, [15806] = 0x966F, [15807] = 0x96BF, [15808] = 0x976A,
++  [15809] = 0x9804, [15810] = 0x98E5, [15811] = 0x9997, [15812] = 0x509B,
++  [15813] = 0x5095, [15814] = 0x5094, [15815] = 0x509E, [15816] = 0x508B,
++  [15817] = 0x50A3, [15818] = 0x5083, [15819] = 0x508C, [15820] = 0x508E,
++  [15821] = 0x509D, [15822] = 0x5068, [15823] = 0x509C, [15824] = 0x5092,
++  [15825] = 0x5082, [15826] = 0x5087, [15827] = 0x515F, [15828] = 0x51D4,
++  [15829] = 0x5312, [15830] = 0x5311, [15831] = 0x53A4, [15832] = 0x53A7,
++  [15833] = 0x5591, [15834] = 0x55A8, [15835] = 0x55A5, [15836] = 0x55AD,
++  [15837] = 0x5577, [15838] = 0x5645, [15839] = 0x55A2, [15840] = 0x5593,
++  [15841] = 0x5588, [15842] = 0x558F, [15843] = 0x55B5, [15844] = 0x5581,
++  [15845] = 0x55A3, [15846] = 0x5592, [15847] = 0x55A4, [15848] = 0x557D,
++  [15849] = 0x558C, [15850] = 0x55A6, [15851] = 0x557F, [15852] = 0x5595,
++  [15853] = 0x55A1, [15854] = 0x558E, [15855] = 0x570C, [15856] = 0x5829,
++  [15857] = 0x5837, [15892] = 0x5819, [15893] = 0x581E, [15894] = 0x5827,
++  [15895] = 0x5823, [15896] = 0x5828, [15897] = 0x57F5, [15898] = 0x5848,
++  [15899] = 0x5825, [15900] = 0x581C, [15901] = 0x581B, [15902] = 0x5833,
++  [15903] = 0x583F, [15904] = 0x5836, [15905] = 0x582E, [15906] = 0x5839,
++  [15907] = 0x5838, [15908] = 0x582D, [15909] = 0x582C, [15910] = 0x583B,
++  [15911] = 0x5961, [15912] = 0x5AAF, [15913] = 0x5A94, [15914] = 0x5A9F,
++  [15915] = 0x5A7A, [15916] = 0x5AA2, [15917] = 0x5A9E, [15918] = 0x5A78,
++  [15919] = 0x5AA6, [15920] = 0x5A7C, [15921] = 0x5AA5, [15922] = 0x5AAC,
++  [15923] = 0x5A95, [15924] = 0x5AAE, [15925] = 0x5A37, [15926] = 0x5A84,
++  [15927] = 0x5A8A, [15928] = 0x5A97, [15929] = 0x5A83, [15930] = 0x5A8B,
++  [15931] = 0x5AA9, [15932] = 0x5A7B, [15933] = 0x5A7D, [15934] = 0x5A8C,
++  [15935] = 0x5A9C, [15936] = 0x5A8F, [15937] = 0x5A93, [15938] = 0x5A9D,
++  [15939] = 0x5BEA, [15940] = 0x5BCD, [15941] = 0x5BCB, [15942] = 0x5BD4,
++  [15943] = 0x5BD1, [15944] = 0x5BCA, [15945] = 0x5BCE, [15946] = 0x5C0C,
++  [15947] = 0x5C30, [15948] = 0x5D37, [15949] = 0x5D43, [15950] = 0x5D6B,
++  [15951] = 0x5D41, [15952] = 0x5D4B, [15953] = 0x5D3F, [15954] = 0x5D35,
++  [15955] = 0x5D51, [15956] = 0x5D4E, [15957] = 0x5D55, [15958] = 0x5D33,
++  [15959] = 0x5D3A, [15960] = 0x5D52, [15961] = 0x5D3D, [15962] = 0x5D31,
++  [15963] = 0x5D59, [15964] = 0x5D42, [15965] = 0x5D39, [15966] = 0x5D49,
++  [15967] = 0x5D38, [15968] = 0x5D3C, [15969] = 0x5D32, [15970] = 0x5D36,
++  [15971] = 0x5D40, [15972] = 0x5D45, [15973] = 0x5E44, [15974] = 0x5E41,
++  [15975] = 0x5F58, [15976] = 0x5FA6, [15977] = 0x5FA5, [15978] = 0x5FAB,
++  [15979] = 0x60C9, [15980] = 0x60B9, [15981] = 0x60CC, [15982] = 0x60E2,
++  [15983] = 0x60CE, [15984] = 0x60C4, [15985] = 0x6114, [15990] = 0x60F2,
++  [15991] = 0x610A, [15992] = 0x6116, [15993] = 0x6105, [15994] = 0x60F5,
++  [15995] = 0x6113, [15996] = 0x60F8, [15997] = 0x60FC, [15998] = 0x60FE,
++  [15999] = 0x60C1, [16000] = 0x6103, [16001] = 0x6118, [16002] = 0x611D,
++  [16003] = 0x6110, [16004] = 0x60FF, [16005] = 0x6104, [16006] = 0x610B,
++  [16007] = 0x624A, [16008] = 0x6394, [16009] = 0x63B1, [16010] = 0x63B0,
++  [16011] = 0x63CE, [16012] = 0x63E5, [16013] = 0x63E8, [16014] = 0x63EF,
++  [16015] = 0x63C3, [16016] = 0x649D, [16017] = 0x63F3, [16018] = 0x63CA,
++  [16019] = 0x63E0, [16020] = 0x63F6, [16021] = 0x63D5, [16022] = 0x63F2,
++  [16023] = 0x63F5, [16024] = 0x6461, [16025] = 0x63DF, [16026] = 0x63BE,
++  [16027] = 0x63DD, [16028] = 0x63DC, [16029] = 0x63C4, [16030] = 0x63D8,
++  [16031] = 0x63D3, [16032] = 0x63C2, [16033] = 0x63C7, [16034] = 0x63CC,
++  [16035] = 0x63CB, [16036] = 0x63C8, [16037] = 0x63F0, [16038] = 0x63D7,
++  [16039] = 0x63D9, [16040] = 0x6532, [16041] = 0x6567, [16042] = 0x656A,
++  [16043] = 0x6564, [16044] = 0x655C, [16045] = 0x6568, [16046] = 0x6565,
++  [16047] = 0x658C, [16048] = 0x659D, [16049] = 0x659E, [16050] = 0x65AE,
++  [16051] = 0x65D0, [16052] = 0x65D2, [16087] = 0x667C, [16088] = 0x666C,
++  [16089] = 0x667B, [16090] = 0x6680, [16091] = 0x6671, [16092] = 0x6679,
++  [16093] = 0x666A, [16094] = 0x6672, [16095] = 0x6701, [16096] = 0x690C,
++  [16097] = 0x68D3, [16098] = 0x6904, [16099] = 0x68DC, [16100] = 0x692A,
++  [16101] = 0x68EC, [16102] = 0x68EA, [16103] = 0x68F1, [16104] = 0x690F,
++  [16105] = 0x68D6, [16106] = 0x68F7, [16107] = 0x68EB, [16108] = 0x68E4,
++  [16109] = 0x68F6, [16110] = 0x6913, [16111] = 0x6910, [16112] = 0x68F3,
++  [16113] = 0x68E1, [16114] = 0x6907, [16115] = 0x68CC, [16116] = 0x6908,
++  [16117] = 0x6970, [16118] = 0x68B4, [16119] = 0x6911, [16120] = 0x68EF,
++  [16121] = 0x68C6, [16122] = 0x6914, [16123] = 0x68F8, [16124] = 0x68D0,
++  [16125] = 0x68FD, [16126] = 0x68FC, [16127] = 0x68E8, [16128] = 0x690B,
++  [16129] = 0x690A, [16130] = 0x6917, [16131] = 0x68CE, [16132] = 0x68C8,
++  [16133] = 0x68DD, [16134] = 0x68DE, [16135] = 0x68E6, [16136] = 0x68F4,
++  [16137] = 0x68D1, [16138] = 0x6906, [16139] = 0x68D4, [16140] = 0x68E9,
++  [16141] = 0x6915, [16142] = 0x6925, [16143] = 0x68C7, [16144] = 0x6B39,
++  [16145] = 0x6B3B, [16146] = 0x6B3F, [16147] = 0x6B3C, [16148] = 0x6B94,
++  [16149] = 0x6B97, [16150] = 0x6B99, [16151] = 0x6B95, [16152] = 0x6BBD,
++  [16153] = 0x6BF0, [16154] = 0x6BF2, [16155] = 0x6BF3, [16156] = 0x6C30,
++  [16157] = 0x6DFC, [16158] = 0x6E46, [16159] = 0x6E47, [16160] = 0x6E1F,
++  [16161] = 0x6E49, [16162] = 0x6E88, [16163] = 0x6E3C, [16164] = 0x6E3D,
++  [16165] = 0x6E45, [16166] = 0x6E62, [16167] = 0x6E2B, [16168] = 0x6E3F,
++  [16169] = 0x6E41, [16170] = 0x6E5D, [16171] = 0x6E73, [16172] = 0x6E1C,
++  [16173] = 0x6E33, [16174] = 0x6E4B, [16175] = 0x6E40, [16176] = 0x6E51,
++  [16177] = 0x6E3B, [16178] = 0x6E03, [16179] = 0x6E2E, [16180] = 0x6E5E,
++  [16185] = 0x6E68, [16186] = 0x6E5C, [16187] = 0x6E61, [16188] = 0x6E31,
++  [16189] = 0x6E28, [16190] = 0x6E60, [16191] = 0x6E71, [16192] = 0x6E6B,
++  [16193] = 0x6E39, [16194] = 0x6E22, [16195] = 0x6E30, [16196] = 0x6E53,
++  [16197] = 0x6E65, [16198] = 0x6E27, [16199] = 0x6E78, [16200] = 0x6E64,
++  [16201] = 0x6E77, [16202] = 0x6E55, [16203] = 0x6E79, [16204] = 0x6E52,
++  [16205] = 0x6E66, [16206] = 0x6E35, [16207] = 0x6E36, [16208] = 0x6E5A,
++  [16209] = 0x7120, [16210] = 0x711E, [16211] = 0x712F, [16212] = 0x70FB,
++  [16213] = 0x712E, [16214] = 0x7131, [16215] = 0x7123, [16216] = 0x7125,
++  [16217] = 0x7122, [16218] = 0x7132, [16219] = 0x711F, [16220] = 0x7128,
++  [16221] = 0x713A, [16222] = 0x711B, [16223] = 0x724B, [16224] = 0x725A,
++  [16225] = 0x7288, [16226] = 0x7289, [16227] = 0x7286, [16228] = 0x7285,
++  [16229] = 0x728B, [16230] = 0x7312, [16231] = 0x730B, [16232] = 0x7330,
++  [16233] = 0x7322, [16234] = 0x7331, [16235] = 0x7333, [16236] = 0x7327,
++  [16237] = 0x7332, [16238] = 0x732D, [16239] = 0x7326, [16240] = 0x7323,
++  [16241] = 0x7335, [16242] = 0x730C, [16243] = 0x742E, [16244] = 0x742C,
++  [16245] = 0x7430, [16246] = 0x742B, [16247] = 0x7416, [16282] = 0x741A,
++  [16283] = 0x7421, [16284] = 0x742D, [16285] = 0x7431, [16286] = 0x7424,
++  [16287] = 0x7423, [16288] = 0x741D, [16289] = 0x7429, [16290] = 0x7420,
++  [16291] = 0x7432, [16292] = 0x74FB, [16293] = 0x752F, [16294] = 0x756F,
++  [16295] = 0x756C, [16296] = 0x75E7, [16297] = 0x75DA, [16298] = 0x75E1,
++  [16299] = 0x75E6, [16300] = 0x75DD, [16301] = 0x75DF, [16302] = 0x75E4,
++  [16303] = 0x75D7, [16304] = 0x7695, [16305] = 0x7692, [16306] = 0x76DA,
++  [16307] = 0x7746, [16308] = 0x7747, [16309] = 0x7744, [16310] = 0x774D,
++  [16311] = 0x7745, [16312] = 0x774A, [16313] = 0x774E, [16314] = 0x774B,
++  [16315] = 0x774C, [16316] = 0x77DE, [16317] = 0x77EC, [16318] = 0x7860,
++  [16319] = 0x7864, [16320] = 0x7865, [16321] = 0x785C, [16322] = 0x786D,
++  [16323] = 0x7871, [16324] = 0x786A, [16325] = 0x786E, [16326] = 0x7870,
++  [16327] = 0x7869, [16328] = 0x7868, [16329] = 0x785E, [16330] = 0x7862,
++  [16331] = 0x7974, [16332] = 0x7973, [16333] = 0x7972, [16334] = 0x7970,
++  [16335] = 0x7A02, [16336] = 0x7A0A, [16337] = 0x7A03, [16338] = 0x7A0C,
++  [16339] = 0x7A04, [16340] = 0x7A99, [16341] = 0x7AE6, [16342] = 0x7AE4,
++  [16343] = 0x7B4A, [16344] = 0x7B3B, [16345] = 0x7B44, [16346] = 0x7B48,
++  [16347] = 0x7B4C, [16348] = 0x7B4E, [16349] = 0x7B40, [16350] = 0x7B58,
++  [16351] = 0x7B45, [16352] = 0x7CA2, [16353] = 0x7C9E, [16354] = 0x7CA8,
++  [16355] = 0x7CA1, [16356] = 0x7D58, [16357] = 0x7D6F, [16358] = 0x7D63,
++  [16359] = 0x7D53, [16360] = 0x7D56, [16361] = 0x7D67, [16362] = 0x7D6A,
++  [16363] = 0x7D4F, [16364] = 0x7D6D, [16365] = 0x7D5C, [16366] = 0x7D6B,
++  [16367] = 0x7D52, [16368] = 0x7D54, [16369] = 0x7D69, [16370] = 0x7D51,
++  [16371] = 0x7D5F, [16372] = 0x7D4E, [16373] = 0x7F3E, [16374] = 0x7F3F,
++  [16375] = 0x7F65, [16380] = 0x7F66, [16381] = 0x7FA2, [16382] = 0x7FA0,
++  [16383] = 0x7FA1, [16384] = 0x7FD7, [16385] = 0x8051, [16386] = 0x804F,
++  [16387] = 0x8050, [16388] = 0x80FE, [16389] = 0x80D4, [16390] = 0x8143,
++  [16391] = 0x814A, [16392] = 0x8152, [16393] = 0x814F, [16394] = 0x8147,
++  [16395] = 0x813D, [16396] = 0x814D, [16397] = 0x813A, [16398] = 0x81E6,
++  [16399] = 0x81EE, [16400] = 0x81F7, [16401] = 0x81F8, [16402] = 0x81F9,
++  [16403] = 0x8204, [16404] = 0x823C, [16405] = 0x823D, [16406] = 0x823F,
++  [16407] = 0x8275, [16408] = 0x833B, [16409] = 0x83CF, [16410] = 0x83F9,
++  [16411] = 0x8423, [16412] = 0x83C0, [16413] = 0x83E8, [16414] = 0x8412,
++  [16415] = 0x83E7, [16416] = 0x83E4, [16417] = 0x83FC, [16418] = 0x83F6,
++  [16419] = 0x8410, [16420] = 0x83C6, [16421] = 0x83C8, [16422] = 0x83EB,
++  [16423] = 0x83E3, [16424] = 0x83BF, [16425] = 0x8401, [16426] = 0x83DD,
++  [16427] = 0x83E5, [16428] = 0x83D8, [16429] = 0x83FF, [16430] = 0x83E1,
++  [16431] = 0x83CB, [16432] = 0x83CE, [16433] = 0x83D6, [16434] = 0x83F5,
++  [16435] = 0x83C9, [16436] = 0x8409, [16437] = 0x840F, [16438] = 0x83DE,
++  [16439] = 0x8411, [16440] = 0x8406, [16441] = 0x83C2, [16442] = 0x83F3,
++  [16477] = 0x83D5, [16478] = 0x83FA, [16479] = 0x83C7, [16480] = 0x83D1,
++  [16481] = 0x83EA, [16482] = 0x8413, [16483] = 0x83C3, [16484] = 0x83EC,
++  [16485] = 0x83EE, [16486] = 0x83C4, [16487] = 0x83FB, [16488] = 0x83D7,
++  [16489] = 0x83E2, [16490] = 0x841B, [16491] = 0x83DB, [16492] = 0x83FE,
++  [16493] = 0x86D8, [16494] = 0x86E2, [16495] = 0x86E6, [16496] = 0x86D3,
++  [16497] = 0x86E3, [16498] = 0x86DA, [16499] = 0x86EA, [16500] = 0x86DD,
++  [16501] = 0x86EB, [16502] = 0x86DC, [16503] = 0x86EC, [16504] = 0x86E9,
++  [16505] = 0x86D7, [16506] = 0x86E8, [16507] = 0x86D1, [16508] = 0x8848,
++  [16509] = 0x8856, [16510] = 0x8855, [16511] = 0x88BA, [16512] = 0x88D7,
++  [16513] = 0x88B9, [16514] = 0x88B8, [16515] = 0x88C0, [16516] = 0x88BE,
++  [16517] = 0x88B6, [16518] = 0x88BC, [16519] = 0x88B7, [16520] = 0x88BD,
++  [16521] = 0x88B2, [16522] = 0x8901, [16523] = 0x88C9, [16524] = 0x8995,
++  [16525] = 0x8998, [16526] = 0x8997, [16527] = 0x89DD, [16528] = 0x89DA,
++  [16529] = 0x89DB, [16530] = 0x8A4E, [16531] = 0x8A4D, [16532] = 0x8A39,
++  [16533] = 0x8A59, [16534] = 0x8A40, [16535] = 0x8A57, [16536] = 0x8A58,
++  [16537] = 0x8A44, [16538] = 0x8A45, [16539] = 0x8A52, [16540] = 0x8A48,
++  [16541] = 0x8A51, [16542] = 0x8A4A, [16543] = 0x8A4C, [16544] = 0x8A4F,
++  [16545] = 0x8C5F, [16546] = 0x8C81, [16547] = 0x8C80, [16548] = 0x8CBA,
++  [16549] = 0x8CBE, [16550] = 0x8CB0, [16551] = 0x8CB9, [16552] = 0x8CB5,
++  [16553] = 0x8D84, [16554] = 0x8D80, [16555] = 0x8D89, [16556] = 0x8DD8,
++  [16557] = 0x8DD3, [16558] = 0x8DCD, [16559] = 0x8DC7, [16560] = 0x8DD6,
++  [16561] = 0x8DDC, [16562] = 0x8DCF, [16563] = 0x8DD5, [16564] = 0x8DD9,
++  [16565] = 0x8DC8, [16566] = 0x8DD7, [16567] = 0x8DC5, [16568] = 0x8EEF,
++  [16569] = 0x8EF7, [16570] = 0x8EFA, [16575] = 0x8EF9, [16576] = 0x8EE6,
++  [16577] = 0x8EEE, [16578] = 0x8EE5, [16579] = 0x8EF5, [16580] = 0x8EE7,
++  [16581] = 0x8EE8, [16582] = 0x8EF6, [16583] = 0x8EEB, [16584] = 0x8EF1,
++  [16585] = 0x8EEC, [16586] = 0x8EF4, [16587] = 0x8EE9, [16588] = 0x902D,
++  [16589] = 0x9034, [16590] = 0x902F, [16591] = 0x9106, [16592] = 0x912C,
++  [16593] = 0x9104, [16594] = 0x90FF, [16595] = 0x90FC, [16596] = 0x9108,
++  [16597] = 0x90F9, [16598] = 0x90FB, [16599] = 0x9101, [16600] = 0x9100,
++  [16601] = 0x9107, [16602] = 0x9105, [16603] = 0x9103, [16604] = 0x9161,
++  [16605] = 0x9164, [16606] = 0x915F, [16607] = 0x9162, [16608] = 0x9160,
++  [16609] = 0x9201, [16610] = 0x920A, [16611] = 0x9225, [16612] = 0x9203,
++  [16613] = 0x921A, [16614] = 0x9226, [16615] = 0x920F, [16616] = 0x920C,
++  [16617] = 0x9200, [16618] = 0x9212, [16619] = 0x91FF, [16620] = 0x91FD,
++  [16621] = 0x9206, [16622] = 0x9204, [16623] = 0x9227, [16624] = 0x9202,
++  [16625] = 0x921C, [16626] = 0x9224, [16627] = 0x9219, [16628] = 0x9217,
++  [16629] = 0x9205, [16630] = 0x9216, [16631] = 0x957B, [16632] = 0x958D,
++  [16633] = 0x958C, [16634] = 0x9590, [16635] = 0x9687, [16636] = 0x967E,
++  [16637] = 0x9688, [16672] = 0x9689, [16673] = 0x9683, [16674] = 0x9680,
++  [16675] = 0x96C2, [16676] = 0x96C8, [16677] = 0x96C3, [16678] = 0x96F1,
++  [16679] = 0x96F0, [16680] = 0x976C, [16681] = 0x9770, [16682] = 0x976E,
++  [16683] = 0x9807, [16684] = 0x98A9, [16685] = 0x98EB, [16686] = 0x9CE6,
++  [16687] = 0x9EF9, [16688] = 0x4E83, [16689] = 0x4E84, [16690] = 0x4EB6,
++  [16691] = 0x50BD, [16692] = 0x50BF, [16693] = 0x50C6, [16694] = 0x50AE,
++  [16695] = 0x50C4, [16696] = 0x50CA, [16697] = 0x50B4, [16698] = 0x50C8,
++  [16699] = 0x50C2, [16700] = 0x50B0, [16701] = 0x50C1, [16702] = 0x50BA,
++  [16703] = 0x50B1, [16704] = 0x50CB, [16705] = 0x50C9, [16706] = 0x50B6,
++  [16707] = 0x50B8, [16708] = 0x51D7, [16709] = 0x527A, [16710] = 0x5278,
++  [16711] = 0x527B, [16712] = 0x527C, [16713] = 0x55C3, [16714] = 0x55DB,
++  [16715] = 0x55CC, [16716] = 0x55D0, [16717] = 0x55CB, [16718] = 0x55CA,
++  [16719] = 0x55DD, [16720] = 0x55C0, [16721] = 0x55D4, [16722] = 0x55C4,
++  [16723] = 0x55E9, [16724] = 0x55BF, [16725] = 0x55D2, [16726] = 0x558D,
++  [16727] = 0x55CF, [16728] = 0x55D5, [16729] = 0x55E2, [16730] = 0x55D6,
++  [16731] = 0x55C8, [16732] = 0x55F2, [16733] = 0x55CD, [16734] = 0x55D9,
++  [16735] = 0x55C2, [16736] = 0x5714, [16737] = 0x5853, [16738] = 0x5868,
++  [16739] = 0x5864, [16740] = 0x584F, [16741] = 0x584D, [16742] = 0x5849,
++  [16743] = 0x586F, [16744] = 0x5855, [16745] = 0x584E, [16746] = 0x585D,
++  [16747] = 0x5859, [16748] = 0x5865, [16749] = 0x585B, [16750] = 0x583D,
++  [16751] = 0x5863, [16752] = 0x5871, [16753] = 0x58FC, [16754] = 0x5AC7,
++  [16755] = 0x5AC4, [16756] = 0x5ACB, [16757] = 0x5ABA, [16758] = 0x5AB8,
++  [16759] = 0x5AB1, [16760] = 0x5AB5, [16761] = 0x5AB0, [16762] = 0x5ABF,
++  [16763] = 0x5AC8, [16764] = 0x5ABB, [16765] = 0x5AC6, [16770] = 0x5AB7,
++  [16771] = 0x5AC0, [16772] = 0x5ACA, [16773] = 0x5AB4, [16774] = 0x5AB6,
++  [16775] = 0x5ACD, [16776] = 0x5AB9, [16777] = 0x5A90, [16778] = 0x5BD6,
++  [16779] = 0x5BD8, [16780] = 0x5BD9, [16781] = 0x5C1F, [16782] = 0x5C33,
++  [16783] = 0x5D71, [16784] = 0x5D63, [16785] = 0x5D4A, [16786] = 0x5D65,
++  [16787] = 0x5D72, [16788] = 0x5D6C, [16789] = 0x5D5E, [16790] = 0x5D68,
++  [16791] = 0x5D67, [16792] = 0x5D62, [16793] = 0x5DF0, [16794] = 0x5E4F,
++  [16795] = 0x5E4E, [16796] = 0x5E4A, [16797] = 0x5E4D, [16798] = 0x5E4B,
++  [16799] = 0x5EC5, [16800] = 0x5ECC, [16801] = 0x5EC6, [16802] = 0x5ECB,
++  [16803] = 0x5EC7, [16804] = 0x5F40, [16805] = 0x5FAF, [16806] = 0x5FAD,
++  [16807] = 0x60F7, [16808] = 0x6149, [16809] = 0x614A, [16810] = 0x612B,
++  [16811] = 0x6145, [16812] = 0x6136, [16813] = 0x6132, [16814] = 0x612E,
++  [16815] = 0x6146, [16816] = 0x612F, [16817] = 0x614F, [16818] = 0x6129,
++  [16819] = 0x6140, [16820] = 0x6220, [16821] = 0x9168, [16822] = 0x6223,
++  [16823] = 0x6225, [16824] = 0x6224, [16825] = 0x63C5, [16826] = 0x63F1,
++  [16827] = 0x63EB, [16828] = 0x6410, [16829] = 0x6412, [16830] = 0x6409,
++  [16831] = 0x6420, [16832] = 0x6424, [16867] = 0x6433, [16868] = 0x6443,
++  [16869] = 0x641F, [16870] = 0x6415, [16871] = 0x6418, [16872] = 0x6439,
++  [16873] = 0x6437, [16874] = 0x6422, [16875] = 0x6423, [16876] = 0x640C,
++  [16877] = 0x6426, [16878] = 0x6430, [16879] = 0x6428, [16880] = 0x6441,
++  [16881] = 0x6435, [16882] = 0x642F, [16883] = 0x640A, [16884] = 0x641A,
++  [16885] = 0x6440, [16886] = 0x6425, [16887] = 0x6427, [16888] = 0x640B,
++  [16889] = 0x63E7, [16890] = 0x641B, [16891] = 0x642E, [16892] = 0x6421,
++  [16893] = 0x640E, [16894] = 0x656F, [16895] = 0x6592, [16896] = 0x65D3,
++  [16897] = 0x6686, [16898] = 0x668C, [16899] = 0x6695, [16900] = 0x6690,
++  [16901] = 0x668B, [16902] = 0x668A, [16903] = 0x6699, [16904] = 0x6694,
++  [16905] = 0x6678, [16906] = 0x6720, [16907] = 0x6966, [16908] = 0x695F,
++  [16909] = 0x6938, [16910] = 0x694E, [16911] = 0x6962, [16912] = 0x6971,
++  [16913] = 0x693F, [16914] = 0x6945, [16915] = 0x696A, [16916] = 0x6939,
++  [16917] = 0x6942, [16918] = 0x6957, [16919] = 0x6959, [16920] = 0x697A,
++  [16921] = 0x6948, [16922] = 0x6949, [16923] = 0x6935, [16924] = 0x696C,
++  [16925] = 0x6933, [16926] = 0x693D, [16927] = 0x6965, [16928] = 0x68F0,
++  [16929] = 0x6978, [16930] = 0x6934, [16931] = 0x6969, [16932] = 0x6940,
++  [16933] = 0x696F, [16934] = 0x6944, [16935] = 0x6976, [16936] = 0x6958,
++  [16937] = 0x6941, [16938] = 0x6974, [16939] = 0x694C, [16940] = 0x693B,
++  [16941] = 0x694B, [16942] = 0x6937, [16943] = 0x695C, [16944] = 0x694F,
++  [16945] = 0x6951, [16946] = 0x6932, [16947] = 0x6952, [16948] = 0x692F,
++  [16949] = 0x697B, [16950] = 0x693C, [16951] = 0x6B46, [16952] = 0x6B45,
++  [16953] = 0x6B43, [16954] = 0x6B42, [16955] = 0x6B48, [16956] = 0x6B41,
++  [16957] = 0x6B9B, [16958] = 0xFA0D, [16959] = 0x6BFB, [16960] = 0x6BFC,
++  [16965] = 0x6BF9, [16966] = 0x6BF7, [16967] = 0x6BF8, [16968] = 0x6E9B,
++  [16969] = 0x6ED6, [16970] = 0x6EC8, [16971] = 0x6E8F, [16972] = 0x6EC0,
++  [16973] = 0x6E9F, [16974] = 0x6E93, [16975] = 0x6E94, [16976] = 0x6EA0,
++  [16977] = 0x6EB1, [16978] = 0x6EB9, [16979] = 0x6EC6, [16980] = 0x6ED2,
++  [16981] = 0x6EBD, [16982] = 0x6EC1, [16983] = 0x6E9E, [16984] = 0x6EC9,
++  [16985] = 0x6EB7, [16986] = 0x6EB0, [16987] = 0x6ECD, [16988] = 0x6EA6,
++  [16989] = 0x6ECF, [16990] = 0x6EB2, [16991] = 0x6EBE, [16992] = 0x6EC3,
++  [16993] = 0x6EDC, [16994] = 0x6ED8, [16995] = 0x6E99, [16996] = 0x6E92,
++  [16997] = 0x6E8E, [16998] = 0x6E8D, [16999] = 0x6EA4, [17000] = 0x6EA1,
++  [17001] = 0x6EBF, [17002] = 0x6EB3, [17003] = 0x6ED0, [17004] = 0x6ECA,
++  [17005] = 0x6E97, [17006] = 0x6EAE, [17007] = 0x6EA3, [17008] = 0x7147,
++  [17009] = 0x7154, [17010] = 0x7152, [17011] = 0x7163, [17012] = 0x7160,
++  [17013] = 0x7141, [17014] = 0x715D, [17015] = 0x7162, [17016] = 0x7172,
++  [17017] = 0x7178, [17018] = 0x716A, [17019] = 0x7161, [17020] = 0x7142,
++  [17021] = 0x7158, [17022] = 0x7143, [17023] = 0x714B, [17024] = 0x7170,
++  [17025] = 0x715F, [17026] = 0x7150, [17027] = 0x7153, [17062] = 0x7144,
++  [17063] = 0x714D, [17064] = 0x715A, [17065] = 0x724F, [17066] = 0x728D,
++  [17067] = 0x728C, [17068] = 0x7291, [17069] = 0x7290, [17070] = 0x728E,
++  [17071] = 0x733C, [17072] = 0x7342, [17073] = 0x733B, [17074] = 0x733A,
++  [17075] = 0x7340, [17076] = 0x734A, [17077] = 0x7349, [17078] = 0x7444,
++  [17079] = 0x744A, [17080] = 0x744B, [17081] = 0x7452, [17082] = 0x7451,
++  [17083] = 0x7457, [17084] = 0x7440, [17085] = 0x744F, [17086] = 0x7450,
++  [17087] = 0x744E, [17088] = 0x7442, [17089] = 0x7446, [17090] = 0x744D,
++  [17091] = 0x7454, [17092] = 0x74E1, [17093] = 0x74FF, [17094] = 0x74FE,
++  [17095] = 0x74FD, [17096] = 0x751D, [17097] = 0x7579, [17098] = 0x7577,
++  [17099] = 0x6983, [17100] = 0x75EF, [17101] = 0x760F, [17102] = 0x7603,
++  [17103] = 0x75F7, [17104] = 0x75FE, [17105] = 0x75FC, [17106] = 0x75F9,
++  [17107] = 0x75F8, [17108] = 0x7610, [17109] = 0x75FB, [17110] = 0x75F6,
++  [17111] = 0x75ED, [17112] = 0x75F5, [17113] = 0x75FD, [17114] = 0x7699,
++  [17115] = 0x76B5, [17116] = 0x76DD, [17117] = 0x7755, [17118] = 0x775F,
++  [17119] = 0x7760, [17120] = 0x7752, [17121] = 0x7756, [17122] = 0x775A,
++  [17123] = 0x7769, [17124] = 0x7767, [17125] = 0x7754, [17126] = 0x7759,
++  [17127] = 0x776D, [17128] = 0x77E0, [17129] = 0x7887, [17130] = 0x789A,
++  [17131] = 0x7894, [17132] = 0x788F, [17133] = 0x7884, [17134] = 0x7895,
++  [17135] = 0x7885, [17136] = 0x7886, [17137] = 0x78A1, [17138] = 0x7883,
++  [17139] = 0x7879, [17140] = 0x7899, [17141] = 0x7880, [17142] = 0x7896,
++  [17143] = 0x787B, [17144] = 0x797C, [17145] = 0x7982, [17146] = 0x797D,
++  [17147] = 0x7979, [17148] = 0x7A11, [17149] = 0x7A18, [17150] = 0x7A19,
++  [17151] = 0x7A12, [17152] = 0x7A17, [17153] = 0x7A15, [17154] = 0x7A22,
++  [17155] = 0x7A13, [17160] = 0x7A1B, [17161] = 0x7A10, [17162] = 0x7AA3,
++  [17163] = 0x7AA2, [17164] = 0x7A9E, [17165] = 0x7AEB, [17166] = 0x7B66,
++  [17167] = 0x7B64, [17168] = 0x7B6D, [17169] = 0x7B74, [17170] = 0x7B69,
++  [17171] = 0x7B72, [17172] = 0x7B65, [17173] = 0x7B73, [17174] = 0x7B71,
++  [17175] = 0x7B70, [17176] = 0x7B61, [17177] = 0x7B78, [17178] = 0x7B76,
++  [17179] = 0x7B63, [17180] = 0x7CB2, [17181] = 0x7CB4, [17182] = 0x7CAF,
++  [17183] = 0x7D88, [17184] = 0x7D86, [17185] = 0x7D80, [17186] = 0x7D8D,
++  [17187] = 0x7D7F, [17188] = 0x7D85, [17189] = 0x7D7A, [17190] = 0x7D8E,
++  [17191] = 0x7D7B, [17192] = 0x7D83, [17193] = 0x7D7C, [17194] = 0x7D8C,
++  [17195] = 0x7D94, [17196] = 0x7D84, [17197] = 0x7D7D, [17198] = 0x7D92,
++  [17199] = 0x7F6D, [17200] = 0x7F6B, [17201] = 0x7F67, [17202] = 0x7F68,
++  [17203] = 0x7F6C, [17204] = 0x7FA6, [17205] = 0x7FA5, [17206] = 0x7FA7,
++  [17207] = 0x7FDB, [17208] = 0x7FDC, [17209] = 0x8021, [17210] = 0x8164,
++  [17211] = 0x8160, [17212] = 0x8177, [17213] = 0x815C, [17214] = 0x8169,
++  [17215] = 0x815B, [17216] = 0x8162, [17217] = 0x8172, [17218] = 0x6721,
++  [17219] = 0x815E, [17220] = 0x8176, [17221] = 0x8167, [17222] = 0x816F,
++  [17257] = 0x8144, [17258] = 0x8161, [17259] = 0x821D, [17260] = 0x8249,
++  [17261] = 0x8244, [17262] = 0x8240, [17263] = 0x8242, [17264] = 0x8245,
++  [17265] = 0x84F1, [17266] = 0x843F, [17267] = 0x8456, [17268] = 0x8476,
++  [17269] = 0x8479, [17270] = 0x848F, [17271] = 0x848D, [17272] = 0x8465,
++  [17273] = 0x8451, [17274] = 0x8440, [17275] = 0x8486, [17276] = 0x8467,
++  [17277] = 0x8430, [17278] = 0x844D, [17279] = 0x847D, [17280] = 0x845A,
++  [17281] = 0x8459, [17282] = 0x8474, [17283] = 0x8473, [17284] = 0x845D,
++  [17285] = 0x8507, [17286] = 0x845E, [17287] = 0x8437, [17288] = 0x843A,
++  [17289] = 0x8434, [17290] = 0x847A, [17291] = 0x8443, [17292] = 0x8478,
++  [17293] = 0x8432, [17294] = 0x8445, [17295] = 0x8429, [17296] = 0x83D9,
++  [17297] = 0x844B, [17298] = 0x842F, [17299] = 0x8442, [17300] = 0x842D,
++  [17301] = 0x845F, [17302] = 0x8470, [17303] = 0x8439, [17304] = 0x844E,
++  [17305] = 0x844C, [17306] = 0x8452, [17307] = 0x846F, [17308] = 0x84C5,
++  [17309] = 0x848E, [17310] = 0x843B, [17311] = 0x8447, [17312] = 0x8436,
++  [17313] = 0x8433, [17314] = 0x8468, [17315] = 0x847E, [17316] = 0x8444,
++  [17317] = 0x842B, [17318] = 0x8460, [17319] = 0x8454, [17320] = 0x846E,
++  [17321] = 0x8450, [17322] = 0x870B, [17323] = 0x8704, [17324] = 0x86F7,
++  [17325] = 0x870C, [17326] = 0x86FA, [17327] = 0x86D6, [17328] = 0x86F5,
++  [17329] = 0x874D, [17330] = 0x86F8, [17331] = 0x870E, [17332] = 0x8709,
++  [17333] = 0x8701, [17334] = 0x86F6, [17335] = 0x870D, [17336] = 0x8705,
++  [17337] = 0x88D6, [17338] = 0x88CB, [17339] = 0x88CD, [17340] = 0x88CE,
++  [17341] = 0x88DE, [17342] = 0x88DB, [17343] = 0x88DA, [17344] = 0x88CC,
++  [17345] = 0x88D0, [17346] = 0x8985, [17347] = 0x899B, [17348] = 0x89DF,
++  [17349] = 0x89E5, [17350] = 0x89E4, [17355] = 0x89E1, [17356] = 0x89E0,
++  [17357] = 0x89E2, [17358] = 0x89DC, [17359] = 0x89E6, [17360] = 0x8A76,
++  [17361] = 0x8A86, [17362] = 0x8A7F, [17363] = 0x8A61, [17364] = 0x8A3F,
++  [17365] = 0x8A77, [17366] = 0x8A82, [17367] = 0x8A84, [17368] = 0x8A75,
++  [17369] = 0x8A83, [17370] = 0x8A81, [17371] = 0x8A74, [17372] = 0x8A7A,
++  [17373] = 0x8C3C, [17374] = 0x8C4B, [17375] = 0x8C4A, [17376] = 0x8C65,
++  [17377] = 0x8C64, [17378] = 0x8C66, [17379] = 0x8C86, [17380] = 0x8C84,
++  [17381] = 0x8C85, [17382] = 0x8CCC, [17383] = 0x8D68, [17384] = 0x8D69,
++  [17385] = 0x8D91, [17386] = 0x8D8C, [17387] = 0x8D8E, [17388] = 0x8D8F,
++  [17389] = 0x8D8D, [17390] = 0x8D93, [17391] = 0x8D94, [17392] = 0x8D90,
++  [17393] = 0x8D92, [17394] = 0x8DF0, [17395] = 0x8DE0, [17396] = 0x8DEC,
++  [17397] = 0x8DF1, [17398] = 0x8DEE, [17399] = 0x8DD0, [17400] = 0x8DE9,
++  [17401] = 0x8DE3, [17402] = 0x8DE2, [17403] = 0x8DE7, [17404] = 0x8DF2,
++  [17405] = 0x8DEB, [17406] = 0x8DF4, [17407] = 0x8F06, [17408] = 0x8EFF,
++  [17409] = 0x8F01, [17410] = 0x8F00, [17411] = 0x8F05, [17412] = 0x8F07,
++  [17413] = 0x8F08, [17414] = 0x8F02, [17415] = 0x8F0B, [17416] = 0x9052,
++  [17417] = 0x903F, [17452] = 0x9044, [17453] = 0x9049, [17454] = 0x903D,
++  [17455] = 0x9110, [17456] = 0x910D, [17457] = 0x910F, [17458] = 0x9111,
++  [17459] = 0x9116, [17460] = 0x9114, [17461] = 0x910B, [17462] = 0x910E,
++  [17463] = 0x916E, [17464] = 0x916F, [17465] = 0x9248, [17466] = 0x9252,
++  [17467] = 0x9230, [17468] = 0x923A, [17469] = 0x9266, [17470] = 0x9233,
++  [17471] = 0x9265, [17472] = 0x925E, [17473] = 0x9283, [17474] = 0x922E,
++  [17475] = 0x924A, [17476] = 0x9246, [17477] = 0x926D, [17478] = 0x926C,
++  [17479] = 0x924F, [17480] = 0x9260, [17481] = 0x9267, [17482] = 0x926F,
++  [17483] = 0x9236, [17484] = 0x9261, [17485] = 0x9270, [17486] = 0x9231,
++  [17487] = 0x9254, [17488] = 0x9263, [17489] = 0x9250, [17490] = 0x9272,
++  [17491] = 0x924E, [17492] = 0x9253, [17493] = 0x924C, [17494] = 0x9256,
++  [17495] = 0x9232, [17496] = 0x959F, [17497] = 0x959C, [17498] = 0x959E,
++  [17499] = 0x959B, [17500] = 0x9692, [17501] = 0x9693, [17502] = 0x9691,
++  [17503] = 0x9697, [17504] = 0x96CE, [17505] = 0x96FA, [17506] = 0x96FD,
++  [17507] = 0x96F8, [17508] = 0x96F5, [17509] = 0x9773, [17510] = 0x9777,
++  [17511] = 0x9778, [17512] = 0x9772, [17513] = 0x980F, [17514] = 0x980D,
++  [17515] = 0x980E, [17516] = 0x98AC, [17517] = 0x98F6, [17518] = 0x98F9,
++  [17519] = 0x99AF, [17520] = 0x99B2, [17521] = 0x99B0, [17522] = 0x99B5,
++  [17523] = 0x9AAD, [17524] = 0x9AAB, [17525] = 0x9B5B, [17526] = 0x9CEA,
++  [17527] = 0x9CED, [17528] = 0x9CE7, [17529] = 0x9E80, [17530] = 0x9EFD,
++  [17531] = 0x50E6, [17532] = 0x50D4, [17533] = 0x50D7, [17534] = 0x50E8,
++  [17535] = 0x50F3, [17536] = 0x50DB, [17537] = 0x50EA, [17538] = 0x50DD,
++  [17539] = 0x50E4, [17540] = 0x50D3, [17541] = 0x50EC, [17542] = 0x50F0,
++  [17543] = 0x50EF, [17544] = 0x50E3, [17545] = 0x50E0, [17550] = 0x51D8,
++  [17551] = 0x5280, [17552] = 0x5281, [17553] = 0x52E9, [17554] = 0x52EB,
++  [17555] = 0x5330, [17556] = 0x53AC, [17557] = 0x5627, [17558] = 0x5615,
++  [17559] = 0x560C, [17560] = 0x5612, [17561] = 0x55FC, [17562] = 0x560F,
++  [17563] = 0x561C, [17564] = 0x5601, [17565] = 0x5613, [17566] = 0x5602,
++  [17567] = 0x55FA, [17568] = 0x561D, [17569] = 0x5604, [17570] = 0x55FF,
++  [17571] = 0x55F9, [17572] = 0x5889, [17573] = 0x587C, [17574] = 0x5890,
++  [17575] = 0x5898, [17576] = 0x5886, [17577] = 0x5881, [17578] = 0x587F,
++  [17579] = 0x5874, [17580] = 0x588B, [17581] = 0x587A, [17582] = 0x5887,
++  [17583] = 0x5891, [17584] = 0x588E, [17585] = 0x5876, [17586] = 0x5882,
++  [17587] = 0x5888, [17588] = 0x587B, [17589] = 0x5894, [17590] = 0x588F,
++  [17591] = 0x58FE, [17592] = 0x596B, [17593] = 0x5ADC, [17594] = 0x5AEE,
++  [17595] = 0x5AE5, [17596] = 0x5AD5, [17597] = 0x5AEA, [17598] = 0x5ADA,
++  [17599] = 0x5AED, [17600] = 0x5AEB, [17601] = 0x5AF3, [17602] = 0x5AE2,
++  [17603] = 0x5AE0, [17604] = 0x5ADB, [17605] = 0x5AEC, [17606] = 0x5ADE,
++  [17607] = 0x5ADD, [17608] = 0x5AD9, [17609] = 0x5AE8, [17610] = 0x5ADF,
++  [17611] = 0x5B77, [17612] = 0x5BE0, [17647] = 0x5BE3, [17648] = 0x5C63,
++  [17649] = 0x5D82, [17650] = 0x5D80, [17651] = 0x5D7D, [17652] = 0x5D86,
++  [17653] = 0x5D7A, [17654] = 0x5D81, [17655] = 0x5D77, [17656] = 0x5D8A,
++  [17657] = 0x5D89, [17658] = 0x5D88, [17659] = 0x5D7E, [17660] = 0x5D7C,
++  [17661] = 0x5D8D, [17662] = 0x5D79, [17663] = 0x5D7F, [17664] = 0x5E58,
++  [17665] = 0x5E59, [17666] = 0x5E53, [17667] = 0x5ED8, [17668] = 0x5ED1,
++  [17669] = 0x5ED7, [17670] = 0x5ECE, [17671] = 0x5EDC, [17672] = 0x5ED5,
++  [17673] = 0x5ED9, [17674] = 0x5ED2, [17675] = 0x5ED4, [17676] = 0x5F44,
++  [17677] = 0x5F43, [17678] = 0x5F6F, [17679] = 0x5FB6, [17680] = 0x612C,
++  [17681] = 0x6128, [17682] = 0x6141, [17683] = 0x615E, [17684] = 0x6171,
++  [17685] = 0x6173, [17686] = 0x6152, [17687] = 0x6153, [17688] = 0x6172,
++  [17689] = 0x616C, [17690] = 0x6180, [17691] = 0x6174, [17692] = 0x6154,
++  [17693] = 0x617A, [17694] = 0x615B, [17695] = 0x6165, [17696] = 0x613B,
++  [17697] = 0x616A, [17698] = 0x6161, [17699] = 0x6156, [17700] = 0x6229,
++  [17701] = 0x6227, [17702] = 0x622B, [17703] = 0x642B, [17704] = 0x644D,
++  [17705] = 0x645B, [17706] = 0x645D, [17707] = 0x6474, [17708] = 0x6476,
++  [17709] = 0x6472, [17710] = 0x6473, [17711] = 0x647D, [17712] = 0x6475,
++  [17713] = 0x6466, [17714] = 0x64A6, [17715] = 0x644E, [17716] = 0x6482,
++  [17717] = 0x645E, [17718] = 0x645C, [17719] = 0x644B, [17720] = 0x6453,
++  [17721] = 0x6460, [17722] = 0x6450, [17723] = 0x647F, [17724] = 0x643F,
++  [17725] = 0x646C, [17726] = 0x646B, [17727] = 0x6459, [17728] = 0x6465,
++  [17729] = 0x6477, [17730] = 0x6573, [17731] = 0x65A0, [17732] = 0x66A1,
++  [17733] = 0x66A0, [17734] = 0x669F, [17735] = 0x6705, [17736] = 0x6704,
++  [17737] = 0x6722, [17738] = 0x69B1, [17739] = 0x69B6, [17740] = 0x69C9,
++  [17745] = 0x69A0, [17746] = 0x69CE, [17747] = 0x6996, [17748] = 0x69B0,
++  [17749] = 0x69AC, [17750] = 0x69BC, [17751] = 0x6991, [17752] = 0x6999,
++  [17753] = 0x698E, [17754] = 0x69A7, [17755] = 0x698D, [17756] = 0x69A9,
++  [17757] = 0x69BE, [17758] = 0x69AF, [17759] = 0x69BF, [17760] = 0x69C4,
++  [17761] = 0x69BD, [17762] = 0x69A4, [17763] = 0x69D4, [17764] = 0x69B9,
++  [17765] = 0x69CA, [17766] = 0x699A, [17767] = 0x69CF, [17768] = 0x69B3,
++  [17769] = 0x6993, [17770] = 0x69AA, [17771] = 0x69A1, [17772] = 0x699E,
++  [17773] = 0x69D9, [17774] = 0x6997, [17775] = 0x6990, [17776] = 0x69C2,
++  [17777] = 0x69B5, [17778] = 0x69A5, [17779] = 0x69C6, [17780] = 0x6B4A,
++  [17781] = 0x6B4D, [17782] = 0x6B4B, [17783] = 0x6B9E, [17784] = 0x6B9F,
++  [17785] = 0x6BA0, [17786] = 0x6BC3, [17787] = 0x6BC4, [17788] = 0x6BFE,
++  [17789] = 0x6ECE, [17790] = 0x6EF5, [17791] = 0x6EF1, [17792] = 0x6F03,
++  [17793] = 0x6F25, [17794] = 0x6EF8, [17795] = 0x6F37, [17796] = 0x6EFB,
++  [17797] = 0x6F2E, [17798] = 0x6F09, [17799] = 0x6F4E, [17800] = 0x6F19,
++  [17801] = 0x6F1A, [17802] = 0x6F27, [17803] = 0x6F18, [17804] = 0x6F3B,
++  [17805] = 0x6F12, [17806] = 0x6EED, [17807] = 0x6F0A, [17842] = 0x6F36,
++  [17843] = 0x6F73, [17844] = 0x6EF9, [17845] = 0x6EEE, [17846] = 0x6F2D,
++  [17847] = 0x6F40, [17848] = 0x6F30, [17849] = 0x6F3C, [17850] = 0x6F35,
++  [17851] = 0x6EEB, [17852] = 0x6F07, [17853] = 0x6F0E, [17854] = 0x6F43,
++  [17855] = 0x6F05, [17856] = 0x6EFD, [17857] = 0x6EF6, [17858] = 0x6F39,
++  [17859] = 0x6F1C, [17860] = 0x6EFC, [17861] = 0x6F3A, [17862] = 0x6F1F,
++  [17863] = 0x6F0D, [17864] = 0x6F1E, [17865] = 0x6F08, [17866] = 0x6F21,
++  [17867] = 0x7187, [17868] = 0x7190, [17869] = 0x7189, [17870] = 0x7180,
++  [17871] = 0x7185, [17872] = 0x7182, [17873] = 0x718F, [17874] = 0x717B,
++  [17875] = 0x7186, [17876] = 0x7181, [17877] = 0x7197, [17878] = 0x7244,
++  [17879] = 0x7253, [17880] = 0x7297, [17881] = 0x7295, [17882] = 0x7293,
++  [17883] = 0x7343, [17884] = 0x734D, [17885] = 0x7351, [17886] = 0x734C,
++  [17887] = 0x7462, [17888] = 0x7473, [17889] = 0x7471, [17890] = 0x7475,
++  [17891] = 0x7472, [17892] = 0x7467, [17893] = 0x746E, [17894] = 0x7500,
++  [17895] = 0x7502, [17896] = 0x7503, [17897] = 0x757D, [17898] = 0x7590,
++  [17899] = 0x7616, [17900] = 0x7608, [17901] = 0x760C, [17902] = 0x7615,
++  [17903] = 0x7611, [17904] = 0x760A, [17905] = 0x7614, [17906] = 0x76B8,
++  [17907] = 0x7781, [17908] = 0x777C, [17909] = 0x7785, [17910] = 0x7782,
++  [17911] = 0x776E, [17912] = 0x7780, [17913] = 0x776F, [17914] = 0x777E,
++  [17915] = 0x7783, [17916] = 0x78B2, [17917] = 0x78AA, [17918] = 0x78B4,
++  [17919] = 0x78AD, [17920] = 0x78A8, [17921] = 0x787E, [17922] = 0x78AB,
++  [17923] = 0x789E, [17924] = 0x78A5, [17925] = 0x78A0, [17926] = 0x78AC,
++  [17927] = 0x78A2, [17928] = 0x78A4, [17929] = 0x7998, [17930] = 0x798A,
++  [17931] = 0x798B, [17932] = 0x7996, [17933] = 0x7995, [17934] = 0x7994,
++  [17935] = 0x7993, [17940] = 0x7997, [17941] = 0x7988, [17942] = 0x7992,
++  [17943] = 0x7990, [17944] = 0x7A2B, [17945] = 0x7A4A, [17946] = 0x7A30,
++  [17947] = 0x7A2F, [17948] = 0x7A28, [17949] = 0x7A26, [17950] = 0x7AA8,
++  [17951] = 0x7AAB, [17952] = 0x7AAC, [17953] = 0x7AEE, [17954] = 0x7B88,
++  [17955] = 0x7B9C, [17956] = 0x7B8A, [17957] = 0x7B91, [17958] = 0x7B90,
++  [17959] = 0x7B96, [17960] = 0x7B8D, [17961] = 0x7B8C, [17962] = 0x7B9B,
++  [17963] = 0x7B8E, [17964] = 0x7B85, [17965] = 0x7B98, [17966] = 0x5284,
++  [17967] = 0x7B99, [17968] = 0x7BA4, [17969] = 0x7B82, [17970] = 0x7CBB,
++  [17971] = 0x7CBF, [17972] = 0x7CBC, [17973] = 0x7CBA, [17974] = 0x7DA7,
++  [17975] = 0x7DB7, [17976] = 0x7DC2, [17977] = 0x7DA3, [17978] = 0x7DAA,
++  [17979] = 0x7DC1, [17980] = 0x7DC0, [17981] = 0x7DC5, [17982] = 0x7D9D,
++  [17983] = 0x7DCE, [17984] = 0x7DC4, [17985] = 0x7DC6, [17986] = 0x7DCB,
++  [17987] = 0x7DCC, [17988] = 0x7DAF, [17989] = 0x7DB9, [17990] = 0x7D96,
++  [17991] = 0x7DBC, [17992] = 0x7D9F, [17993] = 0x7DA6, [17994] = 0x7DAE,
++  [17995] = 0x7DA9, [17996] = 0x7DA1, [17997] = 0x7DC9, [17998] = 0x7F73,
++  [17999] = 0x7FE2, [18000] = 0x7FE3, [18001] = 0x7FE5, [18002] = 0x7FDE,
++  [18037] = 0x8024, [18038] = 0x805D, [18039] = 0x805C, [18040] = 0x8189,
++  [18041] = 0x8186, [18042] = 0x8183, [18043] = 0x8187, [18044] = 0x818D,
++  [18045] = 0x818C, [18046] = 0x818B, [18047] = 0x8215, [18048] = 0x8497,
++  [18049] = 0x84A4, [18050] = 0x84A1, [18051] = 0x849F, [18052] = 0x84BA,
++  [18053] = 0x84CE, [18054] = 0x84C2, [18055] = 0x84AC, [18056] = 0x84AE,
++  [18057] = 0x84AB, [18058] = 0x84B9, [18059] = 0x84B4, [18060] = 0x84C1,
++  [18061] = 0x84CD, [18062] = 0x84AA, [18063] = 0x849A, [18064] = 0x84B1,
++  [18065] = 0x84D0, [18066] = 0x849D, [18067] = 0x84A7, [18068] = 0x84BB,
++  [18069] = 0x84A2, [18070] = 0x8494, [18071] = 0x84C7, [18072] = 0x84CC,
++  [18073] = 0x849B, [18074] = 0x84A9, [18075] = 0x84AF, [18076] = 0x84A8,
++  [18077] = 0x84D6, [18078] = 0x8498, [18079] = 0x84B6, [18080] = 0x84CF,
++  [18081] = 0x84A0, [18082] = 0x84D7, [18083] = 0x84D4, [18084] = 0x84D2,
++  [18085] = 0x84DB, [18086] = 0x84B0, [18087] = 0x8491, [18088] = 0x8661,
++  [18089] = 0x8733, [18090] = 0x8723, [18091] = 0x8728, [18092] = 0x876B,
++  [18093] = 0x8740, [18094] = 0x872E, [18095] = 0x871E, [18096] = 0x8721,
++  [18097] = 0x8719, [18098] = 0x871B, [18099] = 0x8743, [18100] = 0x872C,
++  [18101] = 0x8741, [18102] = 0x873E, [18103] = 0x8746, [18104] = 0x8720,
++  [18105] = 0x8732, [18106] = 0x872A, [18107] = 0x872D, [18108] = 0x873C,
++  [18109] = 0x8712, [18110] = 0x873A, [18111] = 0x8731, [18112] = 0x8735,
++  [18113] = 0x8742, [18114] = 0x8726, [18115] = 0x8727, [18116] = 0x8738,
++  [18117] = 0x8724, [18118] = 0x871A, [18119] = 0x8730, [18120] = 0x8711,
++  [18121] = 0x88F7, [18122] = 0x88E7, [18123] = 0x88F1, [18124] = 0x88F2,
++  [18125] = 0x88FA, [18126] = 0x88FE, [18127] = 0x88EE, [18128] = 0x88FC,
++  [18129] = 0x88F6, [18130] = 0x88FB, [18135] = 0x88F0, [18136] = 0x88EC,
++  [18137] = 0x88EB, [18138] = 0x899D, [18139] = 0x89A1, [18140] = 0x899F,
++  [18141] = 0x899E, [18142] = 0x89E9, [18143] = 0x89EB, [18144] = 0x89E8,
++  [18145] = 0x8AAB, [18146] = 0x8A99, [18147] = 0x8A8B, [18148] = 0x8A92,
++  [18149] = 0x8A8F, [18150] = 0x8A96, [18151] = 0x8C3D, [18152] = 0x8C68,
++  [18153] = 0x8C69, [18154] = 0x8CD5, [18155] = 0x8CCF, [18156] = 0x8CD7,
++  [18157] = 0x8D96, [18158] = 0x8E09, [18159] = 0x8E02, [18160] = 0x8DFF,
++  [18161] = 0x8E0D, [18162] = 0x8DFD, [18163] = 0x8E0A, [18164] = 0x8E03,
++  [18165] = 0x8E07, [18166] = 0x8E06, [18167] = 0x8E05, [18168] = 0x8DFE,
++  [18169] = 0x8E00, [18170] = 0x8E04, [18171] = 0x8F10, [18172] = 0x8F11,
++  [18173] = 0x8F0E, [18174] = 0x8F0D, [18175] = 0x9123, [18176] = 0x911C,
++  [18177] = 0x9120, [18178] = 0x9122, [18179] = 0x911F, [18180] = 0x911D,
++  [18181] = 0x911A, [18182] = 0x9124, [18183] = 0x9121, [18184] = 0x911B,
++  [18185] = 0x917A, [18186] = 0x9172, [18187] = 0x9179, [18188] = 0x9173,
++  [18189] = 0x92A5, [18190] = 0x92A4, [18191] = 0x9276, [18192] = 0x929B,
++  [18193] = 0x927A, [18194] = 0x92A0, [18195] = 0x9294, [18196] = 0x92AA,
++  [18197] = 0x928D, [18232] = 0x92A6, [18233] = 0x929A, [18234] = 0x92AB,
++  [18235] = 0x9279, [18236] = 0x9297, [18237] = 0x927F, [18238] = 0x92A3,
++  [18239] = 0x92EE, [18240] = 0x928E, [18241] = 0x9282, [18242] = 0x9295,
++  [18243] = 0x92A2, [18244] = 0x927D, [18245] = 0x9288, [18246] = 0x92A1,
++  [18247] = 0x928A, [18248] = 0x9286, [18249] = 0x928C, [18250] = 0x9299,
++  [18251] = 0x92A7, [18252] = 0x927E, [18253] = 0x9287, [18254] = 0x92A9,
++  [18255] = 0x929D, [18256] = 0x928B, [18257] = 0x922D, [18258] = 0x969E,
++  [18259] = 0x96A1, [18260] = 0x96FF, [18261] = 0x9758, [18262] = 0x977D,
++  [18263] = 0x977A, [18264] = 0x977E, [18265] = 0x9783, [18266] = 0x9780,
++  [18267] = 0x9782, [18268] = 0x977B, [18269] = 0x9784, [18270] = 0x9781,
++  [18271] = 0x977F, [18272] = 0x97CE, [18273] = 0x97CD, [18274] = 0x9816,
++  [18275] = 0x98AD, [18276] = 0x98AE, [18277] = 0x9902, [18278] = 0x9900,
++  [18279] = 0x9907, [18280] = 0x999D, [18281] = 0x999C, [18282] = 0x99C3,
++  [18283] = 0x99B9, [18284] = 0x99BB, [18285] = 0x99BA, [18286] = 0x99C2,
++  [18287] = 0x99BD, [18288] = 0x99C7, [18289] = 0x9AB1, [18290] = 0x9AE3,
++  [18291] = 0x9AE7, [18292] = 0x9B3E, [18293] = 0x9B3F, [18294] = 0x9B60,
++  [18295] = 0x9B61, [18296] = 0x9B5F, [18297] = 0x9CF1, [18298] = 0x9CF2,
++  [18299] = 0x9CF5, [18300] = 0x9EA7, [18301] = 0x50FF, [18302] = 0x5103,
++  [18303] = 0x5130, [18304] = 0x50F8, [18305] = 0x5106, [18306] = 0x5107,
++  [18307] = 0x50F6, [18308] = 0x50FE, [18309] = 0x510B, [18310] = 0x510C,
++  [18311] = 0x50FD, [18312] = 0x510A, [18313] = 0x528B, [18314] = 0x528C,
++  [18315] = 0x52F1, [18316] = 0x52EF, [18317] = 0x5648, [18318] = 0x5642,
++  [18319] = 0x564C, [18320] = 0x5635, [18321] = 0x5641, [18322] = 0x564A,
++  [18323] = 0x5649, [18324] = 0x5646, [18325] = 0x5658, [18330] = 0x565A,
++  [18331] = 0x5640, [18332] = 0x5633, [18333] = 0x563D, [18334] = 0x562C,
++  [18335] = 0x563E, [18336] = 0x5638, [18337] = 0x562A, [18338] = 0x563A,
++  [18339] = 0x571A, [18340] = 0x58AB, [18341] = 0x589D, [18342] = 0x58B1,
++  [18343] = 0x58A0, [18344] = 0x58A3, [18345] = 0x58AF, [18346] = 0x58AC,
++  [18347] = 0x58A5, [18348] = 0x58A1, [18349] = 0x58FF, [18350] = 0x5AFF,
++  [18351] = 0x5AF4, [18352] = 0x5AFD, [18353] = 0x5AF7, [18354] = 0x5AF6,
++  [18355] = 0x5B03, [18356] = 0x5AF8, [18357] = 0x5B02, [18358] = 0x5AF9,
++  [18359] = 0x5B01, [18360] = 0x5B07, [18361] = 0x5B05, [18362] = 0x5B0F,
++  [18363] = 0x5C67, [18364] = 0x5D99, [18365] = 0x5D97, [18366] = 0x5D9F,
++  [18367] = 0x5D92, [18368] = 0x5DA2, [18369] = 0x5D93, [18370] = 0x5D95,
++  [18371] = 0x5DA0, [18372] = 0x5D9C, [18373] = 0x5DA1, [18374] = 0x5D9A,
++  [18375] = 0x5D9E, [18376] = 0x5E69, [18377] = 0x5E5D, [18378] = 0x5E60,
++  [18379] = 0x5E5C, [18380] = 0x7DF3, [18381] = 0x5EDB, [18382] = 0x5EDE,
++  [18383] = 0x5EE1, [18384] = 0x5F49, [18385] = 0x5FB2, [18386] = 0x618B,
++  [18387] = 0x6183, [18388] = 0x6179, [18389] = 0x61B1, [18390] = 0x61B0,
++  [18391] = 0x61A2, [18392] = 0x6189, [18427] = 0x619B, [18428] = 0x6193,
++  [18429] = 0x61AF, [18430] = 0x61AD, [18431] = 0x619F, [18432] = 0x6192,
++  [18433] = 0x61AA, [18434] = 0x61A1, [18435] = 0x618D, [18436] = 0x6166,
++  [18437] = 0x61B3, [18438] = 0x622D, [18439] = 0x646E, [18440] = 0x6470,
++  [18441] = 0x6496, [18442] = 0x64A0, [18443] = 0x6485, [18444] = 0x6497,
++  [18445] = 0x649C, [18446] = 0x648F, [18447] = 0x648B, [18448] = 0x648A,
++  [18449] = 0x648C, [18450] = 0x64A3, [18451] = 0x649F, [18452] = 0x6468,
++  [18453] = 0x64B1, [18454] = 0x6498, [18455] = 0x6576, [18456] = 0x657A,
++  [18457] = 0x6579, [18458] = 0x657B, [18459] = 0x65B2, [18460] = 0x65B3,
++  [18461] = 0x66B5, [18462] = 0x66B0, [18463] = 0x66A9, [18464] = 0x66B2,
++  [18465] = 0x66B7, [18466] = 0x66AA, [18467] = 0x66AF, [18468] = 0x6A00,
++  [18469] = 0x6A06, [18470] = 0x6A17, [18471] = 0x69E5, [18472] = 0x69F8,
++  [18473] = 0x6A15, [18474] = 0x69F1, [18475] = 0x69E4, [18476] = 0x6A20,
++  [18477] = 0x69FF, [18478] = 0x69EC, [18479] = 0x69E2, [18480] = 0x6A1B,
++  [18481] = 0x6A1D, [18482] = 0x69FE, [18483] = 0x6A27, [18484] = 0x69F2,
++  [18485] = 0x69EE, [18486] = 0x6A14, [18487] = 0x69F7, [18488] = 0x69E7,
++  [18489] = 0x6A40, [18490] = 0x6A08, [18491] = 0x69E6, [18492] = 0x69FB,
++  [18493] = 0x6A0D, [18494] = 0x69FC, [18495] = 0x69EB, [18496] = 0x6A09,
++  [18497] = 0x6A04, [18498] = 0x6A18, [18499] = 0x6A25, [18500] = 0x6A0F,
++  [18501] = 0x69F6, [18502] = 0x6A26, [18503] = 0x6A07, [18504] = 0x69F4,
++  [18505] = 0x6A16, [18506] = 0x6B51, [18507] = 0x6BA5, [18508] = 0x6BA3,
++  [18509] = 0x6BA2, [18510] = 0x6BA6, [18511] = 0x6C01, [18512] = 0x6C00,
++  [18513] = 0x6BFF, [18514] = 0x6C02, [18515] = 0x6F41, [18516] = 0x6F26,
++  [18517] = 0x6F7E, [18518] = 0x6F87, [18519] = 0x6FC6, [18520] = 0x6F92,
++  [18525] = 0x6F8D, [18526] = 0x6F89, [18527] = 0x6F8C, [18528] = 0x6F62,
++  [18529] = 0x6F4F, [18530] = 0x6F85, [18531] = 0x6F5A, [18532] = 0x6F96,
++  [18533] = 0x6F76, [18534] = 0x6F6C, [18535] = 0x6F82, [18536] = 0x6F55,
++  [18537] = 0x6F72, [18538] = 0x6F52, [18539] = 0x6F50, [18540] = 0x6F57,
++  [18541] = 0x6F94, [18542] = 0x6F93, [18543] = 0x6F5D, [18544] = 0x6F00,
++  [18545] = 0x6F61, [18546] = 0x6F6B, [18547] = 0x6F7D, [18548] = 0x6F67,
++  [18549] = 0x6F90, [18550] = 0x6F53, [18551] = 0x6F8B, [18552] = 0x6F69,
++  [18553] = 0x6F7F, [18554] = 0x6F95, [18555] = 0x6F63, [18556] = 0x6F77,
++  [18557] = 0x6F6A, [18558] = 0x6F7B, [18559] = 0x71B2, [18560] = 0x71AF,
++  [18561] = 0x719B, [18562] = 0x71B0, [18563] = 0x71A0, [18564] = 0x719A,
++  [18565] = 0x71A9, [18566] = 0x71B5, [18567] = 0x719D, [18568] = 0x71A5,
++  [18569] = 0x719E, [18570] = 0x71A4, [18571] = 0x71A1, [18572] = 0x71AA,
++  [18573] = 0x719C, [18574] = 0x71A7, [18575] = 0x71B3, [18576] = 0x7298,
++  [18577] = 0x729A, [18578] = 0x7358, [18579] = 0x7352, [18580] = 0x735E,
++  [18581] = 0x735F, [18582] = 0x7360, [18583] = 0x735D, [18584] = 0x735B,
++  [18585] = 0x7361, [18586] = 0x735A, [18587] = 0x7359, [18622] = 0x7362,
++  [18623] = 0x7487, [18624] = 0x7489, [18625] = 0x748A, [18626] = 0x7486,
++  [18627] = 0x7481, [18628] = 0x747D, [18629] = 0x7485, [18630] = 0x7488,
++  [18631] = 0x747C, [18632] = 0x7479, [18633] = 0x7508, [18634] = 0x7507,
++  [18635] = 0x757E, [18636] = 0x7625, [18637] = 0x761E, [18638] = 0x7619,
++  [18639] = 0x761D, [18640] = 0x761C, [18641] = 0x7623, [18642] = 0x761A,
++  [18643] = 0x7628, [18644] = 0x761B, [18645] = 0x769C, [18646] = 0x769D,
++  [18647] = 0x769E, [18648] = 0x769B, [18649] = 0x778D, [18650] = 0x778F,
++  [18651] = 0x7789, [18652] = 0x7788, [18653] = 0x78CD, [18654] = 0x78BB,
++  [18655] = 0x78CF, [18656] = 0x78CC, [18657] = 0x78D1, [18658] = 0x78CE,
++  [18659] = 0x78D4, [18660] = 0x78C8, [18661] = 0x78C3, [18662] = 0x78C4,
++  [18663] = 0x78C9, [18664] = 0x799A, [18665] = 0x79A1, [18666] = 0x79A0,
++  [18667] = 0x799C, [18668] = 0x79A2, [18669] = 0x799B, [18670] = 0x6B76,
++  [18671] = 0x7A39, [18672] = 0x7AB2, [18673] = 0x7AB4, [18674] = 0x7AB3,
++  [18675] = 0x7BB7, [18676] = 0x7BCB, [18677] = 0x7BBE, [18678] = 0x7BAC,
++  [18679] = 0x7BCE, [18680] = 0x7BAF, [18681] = 0x7BB9, [18682] = 0x7BCA,
++  [18683] = 0x7BB5, [18684] = 0x7CC5, [18685] = 0x7CC8, [18686] = 0x7CCC,
++  [18687] = 0x7CCB, [18688] = 0x7DF7, [18689] = 0x7DDB, [18690] = 0x7DEA,
++  [18691] = 0x7DE7, [18692] = 0x7DD7, [18693] = 0x7DE1, [18694] = 0x7E03,
++  [18695] = 0x7DFA, [18696] = 0x7DE6, [18697] = 0x7DF6, [18698] = 0x7DF1,
++  [18699] = 0x7DF0, [18700] = 0x7DEE, [18701] = 0x7DDF, [18702] = 0x7F76,
++  [18703] = 0x7FAC, [18704] = 0x7FB0, [18705] = 0x7FAD, [18706] = 0x7FED,
++  [18707] = 0x7FEB, [18708] = 0x7FEA, [18709] = 0x7FEC, [18710] = 0x7FE6,
++  [18711] = 0x7FE8, [18712] = 0x8064, [18713] = 0x8067, [18714] = 0x81A3,
++  [18715] = 0x819F, [18720] = 0x819E, [18721] = 0x8195, [18722] = 0x81A2,
++  [18723] = 0x8199, [18724] = 0x8197, [18725] = 0x8216, [18726] = 0x824F,
++  [18727] = 0x8253, [18728] = 0x8252, [18729] = 0x8250, [18730] = 0x824E,
++  [18731] = 0x8251, [18732] = 0x8524, [18733] = 0x853B, [18734] = 0x850F,
++  [18735] = 0x8500, [18736] = 0x8529, [18737] = 0x850E, [18738] = 0x8509,
++  [18739] = 0x850D, [18740] = 0x851F, [18741] = 0x850A, [18742] = 0x8527,
++  [18743] = 0x851C, [18744] = 0x84FB, [18745] = 0x852B, [18746] = 0x84FA,
++  [18747] = 0x8508, [18748] = 0x850C, [18749] = 0x84F4, [18750] = 0x852A,
++  [18751] = 0x84F2, [18752] = 0x8515, [18753] = 0x84F7, [18754] = 0x84EB,
++  [18755] = 0x84F3, [18756] = 0x84FC, [18757] = 0x8512, [18758] = 0x84EA,
++  [18759] = 0x84E9, [18760] = 0x8516, [18761] = 0x84FE, [18762] = 0x8528,
++  [18763] = 0x851D, [18764] = 0x852E, [18765] = 0x8502, [18766] = 0x84FD,
++  [18767] = 0x851E, [18768] = 0x84F6, [18769] = 0x8531, [18770] = 0x8526,
++  [18771] = 0x84E7, [18772] = 0x84E8, [18773] = 0x84F0, [18774] = 0x84EF,
++  [18775] = 0x84F9, [18776] = 0x8518, [18777] = 0x8520, [18778] = 0x8530,
++  [18779] = 0x850B, [18780] = 0x8519, [18781] = 0x852F, [18782] = 0x8662,
++  [18817] = 0x8756, [18818] = 0x8763, [18819] = 0x8764, [18820] = 0x8777,
++  [18821] = 0x87E1, [18822] = 0x8773, [18823] = 0x8758, [18824] = 0x8754,
++  [18825] = 0x875B, [18826] = 0x8752, [18827] = 0x8761, [18828] = 0x875A,
++  [18829] = 0x8751, [18830] = 0x875E, [18831] = 0x876D, [18832] = 0x876A,
++  [18833] = 0x8750, [18834] = 0x874E, [18835] = 0x875F, [18836] = 0x875D,
++  [18837] = 0x876F, [18838] = 0x876C, [18839] = 0x877A, [18840] = 0x876E,
++  [18841] = 0x875C, [18842] = 0x8765, [18843] = 0x874F, [18844] = 0x877B,
++  [18845] = 0x8775, [18846] = 0x8762, [18847] = 0x8767, [18848] = 0x8769,
++  [18849] = 0x885A, [18850] = 0x8905, [18851] = 0x890C, [18852] = 0x8914,
++  [18853] = 0x890B, [18854] = 0x8917, [18855] = 0x8918, [18856] = 0x8919,
++  [18857] = 0x8906, [18858] = 0x8916, [18859] = 0x8911, [18860] = 0x890E,
++  [18861] = 0x8909, [18862] = 0x89A2, [18863] = 0x89A4, [18864] = 0x89A3,
++  [18865] = 0x89ED, [18866] = 0x89F0, [18867] = 0x89EC, [18868] = 0x8ACF,
++  [18869] = 0x8AC6, [18870] = 0x8AB8, [18871] = 0x8AD3, [18872] = 0x8AD1,
++  [18873] = 0x8AD4, [18874] = 0x8AD5, [18875] = 0x8ABB, [18876] = 0x8AD7,
++  [18877] = 0x8ABE, [18878] = 0x8AC0, [18879] = 0x8AC5, [18880] = 0x8AD8,
++  [18881] = 0x8AC3, [18882] = 0x8ABA, [18883] = 0x8ABD, [18884] = 0x8AD9,
++  [18885] = 0x8C3E, [18886] = 0x8C4D, [18887] = 0x8C8F, [18888] = 0x8CE5,
++  [18889] = 0x8CDF, [18890] = 0x8CD9, [18891] = 0x8CE8, [18892] = 0x8CDA,
++  [18893] = 0x8CDD, [18894] = 0x8CE7, [18895] = 0x8DA0, [18896] = 0x8D9C,
++  [18897] = 0x8DA1, [18898] = 0x8D9B, [18899] = 0x8E20, [18900] = 0x8E23,
++  [18901] = 0x8E25, [18902] = 0x8E24, [18903] = 0x8E2E, [18904] = 0x8E15,
++  [18905] = 0x8E1B, [18906] = 0x8E16, [18907] = 0x8E11, [18908] = 0x8E19,
++  [18909] = 0x8E26, [18910] = 0x8E27, [18915] = 0x8E14, [18916] = 0x8E12,
++  [18917] = 0x8E18, [18918] = 0x8E13, [18919] = 0x8E1C, [18920] = 0x8E17,
++  [18921] = 0x8E1A, [18922] = 0x8F2C, [18923] = 0x8F24, [18924] = 0x8F18,
++  [18925] = 0x8F1A, [18926] = 0x8F20, [18927] = 0x8F23, [18928] = 0x8F16,
++  [18929] = 0x8F17, [18930] = 0x9073, [18931] = 0x9070, [18932] = 0x906F,
++  [18933] = 0x9067, [18934] = 0x906B, [18935] = 0x912F, [18936] = 0x912B,
++  [18937] = 0x9129, [18938] = 0x912A, [18939] = 0x9132, [18940] = 0x9126,
++  [18941] = 0x912E, [18942] = 0x9185, [18943] = 0x9186, [18944] = 0x918A,
++  [18945] = 0x9181, [18946] = 0x9182, [18947] = 0x9184, [18948] = 0x9180,
++  [18949] = 0x92D0, [18950] = 0x92C3, [18951] = 0x92C4, [18952] = 0x92C0,
++  [18953] = 0x92D9, [18954] = 0x92B6, [18955] = 0x92CF, [18956] = 0x92F1,
++  [18957] = 0x92DF, [18958] = 0x92D8, [18959] = 0x92E9, [18960] = 0x92D7,
++  [18961] = 0x92DD, [18962] = 0x92CC, [18963] = 0x92EF, [18964] = 0x92C2,
++  [18965] = 0x92E8, [18966] = 0x92CA, [18967] = 0x92C8, [18968] = 0x92CE,
++  [18969] = 0x92E6, [18970] = 0x92CD, [18971] = 0x92D5, [18972] = 0x92C9,
++  [18973] = 0x92E0, [18974] = 0x92DE, [18975] = 0x92E7, [18976] = 0x92D1,
++  [18977] = 0x92D3, [19012] = 0x92B5, [19013] = 0x92E1, [19014] = 0x92C6,
++  [19015] = 0x92B4, [19016] = 0x957C, [19017] = 0x95AC, [19018] = 0x95AB,
++  [19019] = 0x95AE, [19020] = 0x95B0, [19021] = 0x96A4, [19022] = 0x96A2,
++  [19023] = 0x96D3, [19024] = 0x9705, [19025] = 0x9708, [19026] = 0x9702,
++  [19027] = 0x975A, [19028] = 0x978A, [19029] = 0x978E, [19030] = 0x9788,
++  [19031] = 0x97D0, [19032] = 0x97CF, [19033] = 0x981E, [19034] = 0x981D,
++  [19035] = 0x9826, [19036] = 0x9829, [19037] = 0x9828, [19038] = 0x9820,
++  [19039] = 0x981B, [19040] = 0x9827, [19041] = 0x98B2, [19042] = 0x9908,
++  [19043] = 0x98FA, [19044] = 0x9911, [19045] = 0x9914, [19046] = 0x9916,
++  [19047] = 0x9917, [19048] = 0x9915, [19049] = 0x99DC, [19050] = 0x99CD,
++  [19051] = 0x99CF, [19052] = 0x99D3, [19053] = 0x99D4, [19054] = 0x99CE,
++  [19055] = 0x99C9, [19056] = 0x99D6, [19057] = 0x99D8, [19058] = 0x99CB,
++  [19059] = 0x99D7, [19060] = 0x99CC, [19061] = 0x9AB3, [19062] = 0x9AEC,
++  [19063] = 0x9AEB, [19064] = 0x9AF3, [19065] = 0x9AF2, [19066] = 0x9AF1,
++  [19067] = 0x9B46, [19068] = 0x9B43, [19069] = 0x9B67, [19070] = 0x9B74,
++  [19071] = 0x9B71, [19072] = 0x9B66, [19073] = 0x9B76, [19074] = 0x9B75,
++  [19075] = 0x9B70, [19076] = 0x9B68, [19077] = 0x9B64, [19078] = 0x9B6C,
++  [19079] = 0x9CFC, [19080] = 0x9CFA, [19081] = 0x9CFD, [19082] = 0x9CFF,
++  [19083] = 0x9CF7, [19084] = 0x9D07, [19085] = 0x9D00, [19086] = 0x9CF9,
++  [19087] = 0x9CFB, [19088] = 0x9D08, [19089] = 0x9D05, [19090] = 0x9D04,
++  [19091] = 0x9E83, [19092] = 0x9ED3, [19093] = 0x9F0F, [19094] = 0x9F10,
++  [19095] = 0x511C, [19096] = 0x5113, [19097] = 0x5117, [19098] = 0x511A,
++  [19099] = 0x5111, [19100] = 0x51DE, [19101] = 0x5334, [19102] = 0x53E1,
++  [19103] = 0x5670, [19104] = 0x5660, [19105] = 0x566E, [19110] = 0x5673,
++  [19111] = 0x5666, [19112] = 0x5663, [19113] = 0x566D, [19114] = 0x5672,
++  [19115] = 0x565E, [19116] = 0x5677, [19117] = 0x571C, [19118] = 0x571B,
++  [19119] = 0x58C8, [19120] = 0x58BD, [19121] = 0x58C9, [19122] = 0x58BF,
++  [19123] = 0x58BA, [19124] = 0x58C2, [19125] = 0x58BC, [19126] = 0x58C6,
++  [19127] = 0x5B17, [19128] = 0x5B19, [19129] = 0x5B1B, [19130] = 0x5B21,
++  [19131] = 0x5B14, [19132] = 0x5B13, [19133] = 0x5B10, [19134] = 0x5B16,
++  [19135] = 0x5B28, [19136] = 0x5B1A, [19137] = 0x5B20, [19138] = 0x5B1E,
++  [19139] = 0x5BEF, [19140] = 0x5DAC, [19141] = 0x5DB1, [19142] = 0x5DA9,
++  [19143] = 0x5DA7, [19144] = 0x5DB5, [19145] = 0x5DB0, [19146] = 0x5DAE,
++  [19147] = 0x5DAA, [19148] = 0x5DA8, [19149] = 0x5DB2, [19150] = 0x5DAD,
++  [19151] = 0x5DAF, [19152] = 0x5DB4, [19153] = 0x5E67, [19154] = 0x5E68,
++  [19155] = 0x5E66, [19156] = 0x5E6F, [19157] = 0x5EE9, [19158] = 0x5EE7,
++  [19159] = 0x5EE6, [19160] = 0x5EE8, [19161] = 0x5EE5, [19162] = 0x5F4B,
++  [19163] = 0x5FBC, [19164] = 0x619D, [19165] = 0x61A8, [19166] = 0x6196,
++  [19167] = 0x61C5, [19168] = 0x61B4, [19169] = 0x61C6, [19170] = 0x61C1,
++  [19171] = 0x61CC, [19172] = 0x61BA, [19207] = 0x61BF, [19208] = 0x61B8,
++  [19209] = 0x618C, [19210] = 0x64D7, [19211] = 0x64D6, [19212] = 0x64D0,
++  [19213] = 0x64CF, [19214] = 0x64C9, [19215] = 0x64BD, [19216] = 0x6489,
++  [19217] = 0x64C3, [19218] = 0x64DB, [19219] = 0x64F3, [19220] = 0x64D9,
++  [19221] = 0x6533, [19222] = 0x657F, [19223] = 0x657C, [19224] = 0x65A2,
++  [19225] = 0x66C8, [19226] = 0x66BE, [19227] = 0x66C0, [19228] = 0x66CA,
++  [19229] = 0x66CB, [19230] = 0x66CF, [19231] = 0x66BD, [19232] = 0x66BB,
++  [19233] = 0x66BA, [19234] = 0x66CC, [19235] = 0x6723, [19236] = 0x6A34,
++  [19237] = 0x6A66, [19238] = 0x6A49, [19239] = 0x6A67, [19240] = 0x6A32,
++  [19241] = 0x6A68, [19242] = 0x6A3E, [19243] = 0x6A5D, [19244] = 0x6A6D,
++  [19245] = 0x6A76, [19246] = 0x6A5B, [19247] = 0x6A51, [19248] = 0x6A28,
++  [19249] = 0x6A5A, [19250] = 0x6A3B, [19251] = 0x6A3F, [19252] = 0x6A41,
++  [19253] = 0x6A6A, [19254] = 0x6A64, [19255] = 0x6A50, [19256] = 0x6A4F,
++  [19257] = 0x6A54, [19258] = 0x6A6F, [19259] = 0x6A69, [19260] = 0x6A60,
++  [19261] = 0x6A3C, [19262] = 0x6A5E, [19263] = 0x6A56, [19264] = 0x6A55,
++  [19265] = 0x6A4D, [19266] = 0x6A4E, [19267] = 0x6A46, [19268] = 0x6B55,
++  [19269] = 0x6B54, [19270] = 0x6B56, [19271] = 0x6BA7, [19272] = 0x6BAA,
++  [19273] = 0x6BAB, [19274] = 0x6BC8, [19275] = 0x6BC7, [19276] = 0x6C04,
++  [19277] = 0x6C03, [19278] = 0x6C06, [19279] = 0x6FAD, [19280] = 0x6FCB,
++  [19281] = 0x6FA3, [19282] = 0x6FC7, [19283] = 0x6FBC, [19284] = 0x6FCE,
++  [19285] = 0x6FC8, [19286] = 0x6F5E, [19287] = 0x6FC4, [19288] = 0x6FBD,
++  [19289] = 0x6F9E, [19290] = 0x6FCA, [19291] = 0x6FA8, [19292] = 0x7004,
++  [19293] = 0x6FA5, [19294] = 0x6FAE, [19295] = 0x6FBA, [19296] = 0x6FAC,
++  [19297] = 0x6FAA, [19298] = 0x6FCF, [19299] = 0x6FBF, [19300] = 0x6FB8,
++  [19305] = 0x6FA2, [19306] = 0x6FC9, [19307] = 0x6FAB, [19308] = 0x6FCD,
++  [19309] = 0x6FAF, [19310] = 0x6FB2, [19311] = 0x6FB0, [19312] = 0x71C5,
++  [19313] = 0x71C2, [19314] = 0x71BF, [19315] = 0x71B8, [19316] = 0x71D6,
++  [19317] = 0x71C0, [19318] = 0x71C1, [19319] = 0x71CB, [19320] = 0x71D4,
++  [19321] = 0x71CA, [19322] = 0x71C7, [19323] = 0x71CF, [19324] = 0x71BD,
++  [19325] = 0x71D8, [19326] = 0x71BC, [19327] = 0x71C6, [19328] = 0x71DA,
++  [19329] = 0x71DB, [19330] = 0x729D, [19331] = 0x729E, [19332] = 0x7369,
++  [19333] = 0x7366, [19334] = 0x7367, [19335] = 0x736C, [19336] = 0x7365,
++  [19337] = 0x736B, [19338] = 0x736A, [19339] = 0x747F, [19340] = 0x749A,
++  [19341] = 0x74A0, [19342] = 0x7494, [19343] = 0x7492, [19344] = 0x7495,
++  [19345] = 0x74A1, [19346] = 0x750B, [19347] = 0x7580, [19348] = 0x762F,
++  [19349] = 0x762D, [19350] = 0x7631, [19351] = 0x763D, [19352] = 0x7633,
++  [19353] = 0x763C, [19354] = 0x7635, [19355] = 0x7632, [19356] = 0x7630,
++  [19357] = 0x76BB, [19358] = 0x76E6, [19359] = 0x779A, [19360] = 0x779D,
++  [19361] = 0x77A1, [19362] = 0x779C, [19363] = 0x779B, [19364] = 0x77A2,
++  [19365] = 0x77A3, [19366] = 0x7795, [19367] = 0x7799, [19402] = 0x7797,
++  [19403] = 0x78DD, [19404] = 0x78E9, [19405] = 0x78E5, [19406] = 0x78EA,
++  [19407] = 0x78DE, [19408] = 0x78E3, [19409] = 0x78DB, [19410] = 0x78E1,
++  [19411] = 0x78E2, [19412] = 0x78ED, [19413] = 0x78DF, [19414] = 0x78E0,
++  [19415] = 0x79A4, [19416] = 0x7A44, [19417] = 0x7A48, [19418] = 0x7A47,
++  [19419] = 0x7AB6, [19420] = 0x7AB8, [19421] = 0x7AB5, [19422] = 0x7AB1,
++  [19423] = 0x7AB7, [19424] = 0x7BDE, [19425] = 0x7BE3, [19426] = 0x7BE7,
++  [19427] = 0x7BDD, [19428] = 0x7BD5, [19429] = 0x7BE5, [19430] = 0x7BDA,
++  [19431] = 0x7BE8, [19432] = 0x7BF9, [19433] = 0x7BD4, [19434] = 0x7BEA,
++  [19435] = 0x7BE2, [19436] = 0x7BDC, [19437] = 0x7BEB, [19438] = 0x7BD8,
++  [19439] = 0x7BDF, [19440] = 0x7CD2, [19441] = 0x7CD4, [19442] = 0x7CD7,
++  [19443] = 0x7CD0, [19444] = 0x7CD1, [19445] = 0x7E12, [19446] = 0x7E21,
++  [19447] = 0x7E17, [19448] = 0x7E0C, [19449] = 0x7E1F, [19450] = 0x7E20,
++  [19451] = 0x7E13, [19452] = 0x7E0E, [19453] = 0x7E1C, [19454] = 0x7E15,
++  [19455] = 0x7E1A, [19456] = 0x7E22, [19457] = 0x7E0B, [19458] = 0x7E0F,
++  [19459] = 0x7E16, [19460] = 0x7E0D, [19461] = 0x7E14, [19462] = 0x7E25,
++  [19463] = 0x7E24, [19464] = 0x7F43, [19465] = 0x7F7B, [19466] = 0x7F7C,
++  [19467] = 0x7F7A, [19468] = 0x7FB1, [19469] = 0x7FEF, [19470] = 0x802A,
++  [19471] = 0x8029, [19472] = 0x806C, [19473] = 0x81B1, [19474] = 0x81A6,
++  [19475] = 0x81AE, [19476] = 0x81B9, [19477] = 0x81B5, [19478] = 0x81AB,
++  [19479] = 0x81B0, [19480] = 0x81AC, [19481] = 0x81B4, [19482] = 0x81B2,
++  [19483] = 0x81B7, [19484] = 0x81A7, [19485] = 0x81F2, [19486] = 0x8255,
++  [19487] = 0x8256, [19488] = 0x8257, [19489] = 0x8556, [19490] = 0x8545,
++  [19491] = 0x856B, [19492] = 0x854D, [19493] = 0x8553, [19494] = 0x8561,
++  [19495] = 0x8558, [19500] = 0x8540, [19501] = 0x8546, [19502] = 0x8564,
++  [19503] = 0x8541, [19504] = 0x8562, [19505] = 0x8544, [19506] = 0x8551,
++  [19507] = 0x8547, [19508] = 0x8563, [19509] = 0x853E, [19510] = 0x855B,
++  [19511] = 0x8571, [19512] = 0x854E, [19513] = 0x856E, [19514] = 0x8575,
++  [19515] = 0x8555, [19516] = 0x8567, [19517] = 0x8560, [19518] = 0x858C,
++  [19519] = 0x8566, [19520] = 0x855D, [19521] = 0x8554, [19522] = 0x8565,
++  [19523] = 0x856C, [19524] = 0x8663, [19525] = 0x8665, [19526] = 0x8664,
++  [19527] = 0x879B, [19528] = 0x878F, [19529] = 0x8797, [19530] = 0x8793,
++  [19531] = 0x8792, [19532] = 0x8788, [19533] = 0x8781, [19534] = 0x8796,
++  [19535] = 0x8798, [19536] = 0x8779, [19537] = 0x8787, [19538] = 0x87A3,
++  [19539] = 0x8785, [19540] = 0x8790, [19541] = 0x8791, [19542] = 0x879D,
++  [19543] = 0x8784, [19544] = 0x8794, [19545] = 0x879C, [19546] = 0x879A,
++  [19547] = 0x8789, [19548] = 0x891E, [19549] = 0x8926, [19550] = 0x8930,
++  [19551] = 0x892D, [19552] = 0x892E, [19553] = 0x8927, [19554] = 0x8931,
++  [19555] = 0x8922, [19556] = 0x8929, [19557] = 0x8923, [19558] = 0x892F,
++  [19559] = 0x892C, [19560] = 0x891F, [19561] = 0x89F1, [19562] = 0x8AE0,
++  [19597] = 0x8AE2, [19598] = 0x8AF2, [19599] = 0x8AF4, [19600] = 0x8AF5,
++  [19601] = 0x8ADD, [19602] = 0x8B14, [19603] = 0x8AE4, [19604] = 0x8ADF,
++  [19605] = 0x8AF0, [19606] = 0x8AC8, [19607] = 0x8ADE, [19608] = 0x8AE1,
++  [19609] = 0x8AE8, [19610] = 0x8AFF, [19611] = 0x8AEF, [19612] = 0x8AFB,
++  [19613] = 0x8C91, [19614] = 0x8C92, [19615] = 0x8C90, [19616] = 0x8CF5,
++  [19617] = 0x8CEE, [19618] = 0x8CF1, [19619] = 0x8CF0, [19620] = 0x8CF3,
++  [19621] = 0x8D6C, [19622] = 0x8D6E, [19623] = 0x8DA5, [19624] = 0x8DA7,
++  [19625] = 0x8E33, [19626] = 0x8E3E, [19627] = 0x8E38, [19628] = 0x8E40,
++  [19629] = 0x8E45, [19630] = 0x8E36, [19631] = 0x8E3C, [19632] = 0x8E3D,
++  [19633] = 0x8E41, [19634] = 0x8E30, [19635] = 0x8E3F, [19636] = 0x8EBD,
++  [19637] = 0x8F36, [19638] = 0x8F2E, [19639] = 0x8F35, [19640] = 0x8F32,
++  [19641] = 0x8F39, [19642] = 0x8F37, [19643] = 0x8F34, [19644] = 0x9076,
++  [19645] = 0x9079, [19646] = 0x907B, [19647] = 0x9086, [19648] = 0x90FA,
++  [19649] = 0x9133, [19650] = 0x9135, [19651] = 0x9136, [19652] = 0x9193,
++  [19653] = 0x9190, [19654] = 0x9191, [19655] = 0x918D, [19656] = 0x918F,
++  [19657] = 0x9327, [19658] = 0x931E, [19659] = 0x9308, [19660] = 0x931F,
++  [19661] = 0x9306, [19662] = 0x930F, [19663] = 0x937A, [19664] = 0x9338,
++  [19665] = 0x933C, [19666] = 0x931B, [19667] = 0x9323, [19668] = 0x9312,
++  [19669] = 0x9301, [19670] = 0x9346, [19671] = 0x932D, [19672] = 0x930E,
++  [19673] = 0x930D, [19674] = 0x92CB, [19675] = 0x931D, [19676] = 0x92FA,
++  [19677] = 0x9325, [19678] = 0x9313, [19679] = 0x92F9, [19680] = 0x92F7,
++  [19681] = 0x9334, [19682] = 0x9302, [19683] = 0x9324, [19684] = 0x92FF,
++  [19685] = 0x9329, [19686] = 0x9339, [19687] = 0x9335, [19688] = 0x932A,
++  [19689] = 0x9314, [19690] = 0x930C, [19695] = 0x930B, [19696] = 0x92FE,
++  [19697] = 0x9309, [19698] = 0x9300, [19699] = 0x92FB, [19700] = 0x9316,
++  [19701] = 0x95BC, [19702] = 0x95CD, [19703] = 0x95BE, [19704] = 0x95B9,
++  [19705] = 0x95BA, [19706] = 0x95B6, [19707] = 0x95BF, [19708] = 0x95B5,
++  [19709] = 0x95BD, [19710] = 0x96A9, [19711] = 0x96D4, [19712] = 0x970B,
++  [19713] = 0x9712, [19714] = 0x9710, [19715] = 0x9799, [19716] = 0x9797,
++  [19717] = 0x9794, [19718] = 0x97F0, [19719] = 0x97F8, [19720] = 0x9835,
++  [19721] = 0x982F, [19722] = 0x9832, [19723] = 0x9924, [19724] = 0x991F,
++  [19725] = 0x9927, [19726] = 0x9929, [19727] = 0x999E, [19728] = 0x99EE,
++  [19729] = 0x99EC, [19730] = 0x99E5, [19731] = 0x99E4, [19732] = 0x99F0,
++  [19733] = 0x99E3, [19734] = 0x99EA, [19735] = 0x99E9, [19736] = 0x99E7,
++  [19737] = 0x9AB9, [19738] = 0x9ABF, [19739] = 0x9AB4, [19740] = 0x9ABB,
++  [19741] = 0x9AF6, [19742] = 0x9AFA, [19743] = 0x9AF9, [19744] = 0x9AF7,
++  [19745] = 0x9B33, [19746] = 0x9B80, [19747] = 0x9B85, [19748] = 0x9B87,
++  [19749] = 0x9B7C, [19750] = 0x9B7E, [19751] = 0x9B7B, [19752] = 0x9B82,
++  [19753] = 0x9B93, [19754] = 0x9B92, [19755] = 0x9B90, [19756] = 0x9B7A,
++  [19757] = 0x9B95, [19792] = 0x9B7D, [19793] = 0x9B88, [19794] = 0x9D25,
++  [19795] = 0x9D17, [19796] = 0x9D20, [19797] = 0x9D1E, [19798] = 0x9D14,
++  [19799] = 0x9D29, [19800] = 0x9D1D, [19801] = 0x9D18, [19802] = 0x9D22,
++  [19803] = 0x9D10, [19804] = 0x9D19, [19805] = 0x9D1F, [19806] = 0x9E88,
++  [19807] = 0x9E86, [19808] = 0x9E87, [19809] = 0x9EAE, [19810] = 0x9EAD,
++  [19811] = 0x9ED5, [19812] = 0x9ED6, [19813] = 0x9EFA, [19814] = 0x9F12,
++  [19815] = 0x9F3D, [19816] = 0x5126, [19817] = 0x5125, [19818] = 0x5122,
++  [19819] = 0x5124, [19820] = 0x5120, [19821] = 0x5129, [19822] = 0x52F4,
++  [19823] = 0x5693, [19824] = 0x568C, [19825] = 0x568D, [19826] = 0x5686,
++  [19827] = 0x5684, [19828] = 0x5683, [19829] = 0x567E, [19830] = 0x5682,
++  [19831] = 0x567F, [19832] = 0x5681, [19833] = 0x58D6, [19834] = 0x58D4,
++  [19835] = 0x58CF, [19836] = 0x58D2, [19837] = 0x5B2D, [19838] = 0x5B25,
++  [19839] = 0x5B32, [19840] = 0x5B23, [19841] = 0x5B2C, [19842] = 0x5B27,
++  [19843] = 0x5B26, [19844] = 0x5B2F, [19845] = 0x5B2E, [19846] = 0x5B7B,
++  [19847] = 0x5BF1, [19848] = 0x5BF2, [19849] = 0x5DB7, [19850] = 0x5E6C,
++  [19851] = 0x5E6A, [19852] = 0x5FBE, [19853] = 0x5FBB, [19854] = 0x61C3,
++  [19855] = 0x61B5, [19856] = 0x61BC, [19857] = 0x61E7, [19858] = 0x61E0,
++  [19859] = 0x61E5, [19860] = 0x61E4, [19861] = 0x61E8, [19862] = 0x61DE,
++  [19863] = 0x64EF, [19864] = 0x64E9, [19865] = 0x64E3, [19866] = 0x64EB,
++  [19867] = 0x64E4, [19868] = 0x64E8, [19869] = 0x6581, [19870] = 0x6580,
++  [19871] = 0x65B6, [19872] = 0x65DA, [19873] = 0x66D2, [19874] = 0x6A8D,
++  [19875] = 0x6A96, [19876] = 0x6A81, [19877] = 0x6AA5, [19878] = 0x6A89,
++  [19879] = 0x6A9F, [19880] = 0x6A9B, [19881] = 0x6AA1, [19882] = 0x6A9E,
++  [19883] = 0x6A87, [19884] = 0x6A93, [19885] = 0x6A8E, [19890] = 0x6A95,
++  [19891] = 0x6A83, [19892] = 0x6AA8, [19893] = 0x6AA4, [19894] = 0x6A91,
++  [19895] = 0x6A7F, [19896] = 0x6AA6, [19897] = 0x6A9A, [19898] = 0x6A85,
++  [19899] = 0x6A8C, [19900] = 0x6A92, [19901] = 0x6B5B, [19902] = 0x6BAD,
++  [19903] = 0x6C09, [19904] = 0x6FCC, [19905] = 0x6FA9, [19906] = 0x6FF4,
++  [19907] = 0x6FD4, [19908] = 0x6FE3, [19909] = 0x6FDC, [19910] = 0x6FED,
++  [19911] = 0x6FE7, [19912] = 0x6FE6, [19913] = 0x6FDE, [19914] = 0x6FF2,
++  [19915] = 0x6FDD, [19916] = 0x6FE2, [19917] = 0x6FE8, [19918] = 0x71E1,
++  [19919] = 0x71F1, [19920] = 0x71E8, [19921] = 0x71F2, [19922] = 0x71E4,
++  [19923] = 0x71F0, [19924] = 0x71E2, [19925] = 0x7373, [19926] = 0x736E,
++  [19927] = 0x736F, [19928] = 0x7497, [19929] = 0x74B2, [19930] = 0x74AB,
++  [19931] = 0x7490, [19932] = 0x74AA, [19933] = 0x74AD, [19934] = 0x74B1,
++  [19935] = 0x74A5, [19936] = 0x74AF, [19937] = 0x7510, [19938] = 0x7511,
++  [19939] = 0x7512, [19940] = 0x750F, [19941] = 0x7584, [19942] = 0x7643,
++  [19943] = 0x7648, [19944] = 0x7649, [19945] = 0x7647, [19946] = 0x76A4,
++  [19947] = 0x76E9, [19948] = 0x77B5, [19949] = 0x77AB, [19950] = 0x77B2,
++  [19951] = 0x77B7, [19952] = 0x77B6, [19987] = 0x77B4, [19988] = 0x77B1,
++  [19989] = 0x77A8, [19990] = 0x77F0, [19991] = 0x78F3, [19992] = 0x78FD,
++  [19993] = 0x7902, [19994] = 0x78FB, [19995] = 0x78FC, [19996] = 0x78F2,
++  [19997] = 0x7905, [19998] = 0x78F9, [19999] = 0x78FE, [20000] = 0x7904,
++  [20001] = 0x79AB, [20002] = 0x79A8, [20003] = 0x7A5C, [20004] = 0x7A5B,
++  [20005] = 0x7A56, [20006] = 0x7A58, [20007] = 0x7A54, [20008] = 0x7A5A,
++  [20009] = 0x7ABE, [20010] = 0x7AC0, [20011] = 0x7AC1, [20012] = 0x7C05,
++  [20013] = 0x7C0F, [20014] = 0x7BF2, [20015] = 0x7C00, [20016] = 0x7BFF,
++  [20017] = 0x7BFB, [20018] = 0x7C0E, [20019] = 0x7BF4, [20020] = 0x7C0B,
++  [20021] = 0x7BF3, [20022] = 0x7C02, [20023] = 0x7C09, [20024] = 0x7C03,
++  [20025] = 0x7C01, [20026] = 0x7BF8, [20027] = 0x7BFD, [20028] = 0x7C06,
++  [20029] = 0x7BF0, [20030] = 0x7BF1, [20031] = 0x7C10, [20032] = 0x7C0A,
++  [20033] = 0x7CE8, [20034] = 0x7E2D, [20035] = 0x7E3C, [20036] = 0x7E42,
++  [20037] = 0x7E33, [20038] = 0x9848, [20039] = 0x7E38, [20040] = 0x7E2A,
++  [20041] = 0x7E49, [20042] = 0x7E40, [20043] = 0x7E47, [20044] = 0x7E29,
++  [20045] = 0x7E4C, [20046] = 0x7E30, [20047] = 0x7E3B, [20048] = 0x7E36,
++  [20049] = 0x7E44, [20050] = 0x7E3A, [20051] = 0x7F45, [20052] = 0x7F7F,
++  [20053] = 0x7F7E, [20054] = 0x7F7D, [20055] = 0x7FF4, [20056] = 0x7FF2,
++  [20057] = 0x802C, [20058] = 0x81BB, [20059] = 0x81C4, [20060] = 0x81CC,
++  [20061] = 0x81CA, [20062] = 0x81C5, [20063] = 0x81C7, [20064] = 0x81BC,
++  [20065] = 0x81E9, [20066] = 0x825B, [20067] = 0x825A, [20068] = 0x825C,
++  [20069] = 0x8583, [20070] = 0x8580, [20071] = 0x858F, [20072] = 0x85A7,
++  [20073] = 0x8595, [20074] = 0x85A0, [20075] = 0x858B, [20076] = 0x85A3,
++  [20077] = 0x857B, [20078] = 0x85A4, [20079] = 0x859A, [20080] = 0x859E,
++  [20085] = 0x8577, [20086] = 0x857C, [20087] = 0x8589, [20088] = 0x85A1,
++  [20089] = 0x857A, [20090] = 0x8578, [20091] = 0x8557, [20092] = 0x858E,
++  [20093] = 0x8596, [20094] = 0x8586, [20095] = 0x858D, [20096] = 0x8599,
++  [20097] = 0x859D, [20098] = 0x8581, [20099] = 0x85A2, [20100] = 0x8582,
++  [20101] = 0x8588, [20102] = 0x8585, [20103] = 0x8579, [20104] = 0x8576,
++  [20105] = 0x8598, [20106] = 0x8590, [20107] = 0x859F, [20108] = 0x8668,
++  [20109] = 0x87BE, [20110] = 0x87AA, [20111] = 0x87AD, [20112] = 0x87C5,
++  [20113] = 0x87B0, [20114] = 0x87AC, [20115] = 0x87B9, [20116] = 0x87B5,
++  [20117] = 0x87BC, [20118] = 0x87AE, [20119] = 0x87C9, [20120] = 0x87C3,
++  [20121] = 0x87C2, [20122] = 0x87CC, [20123] = 0x87B7, [20124] = 0x87AF,
++  [20125] = 0x87C4, [20126] = 0x87CA, [20127] = 0x87B4, [20128] = 0x87B6,
++  [20129] = 0x87BF, [20130] = 0x87B8, [20131] = 0x87BD, [20132] = 0x87DE,
++  [20133] = 0x87B2, [20134] = 0x8935, [20135] = 0x8933, [20136] = 0x893C,
++  [20137] = 0x893E, [20138] = 0x8941, [20139] = 0x8952, [20140] = 0x8937,
++  [20141] = 0x8942, [20142] = 0x89AD, [20143] = 0x89AF, [20144] = 0x89AE,
++  [20145] = 0x89F2, [20146] = 0x89F3, [20147] = 0x8B1E, [20182] = 0x8B18,
++  [20183] = 0x8B16, [20184] = 0x8B11, [20185] = 0x8B05, [20186] = 0x8B0B,
++  [20187] = 0x8B22, [20188] = 0x8B0F, [20189] = 0x8B12, [20190] = 0x8B15,
++  [20191] = 0x8B07, [20192] = 0x8B0D, [20193] = 0x8B08, [20194] = 0x8B06,
++  [20195] = 0x8B1C, [20196] = 0x8B13, [20197] = 0x8B1A, [20198] = 0x8C4F,
++  [20199] = 0x8C70, [20200] = 0x8C72, [20201] = 0x8C71, [20202] = 0x8C6F,
++  [20203] = 0x8C95, [20204] = 0x8C94, [20205] = 0x8CF9, [20206] = 0x8D6F,
++  [20207] = 0x8E4E, [20208] = 0x8E4D, [20209] = 0x8E53, [20210] = 0x8E50,
++  [20211] = 0x8E4C, [20212] = 0x8E47, [20213] = 0x8F43, [20214] = 0x8F40,
++  [20215] = 0x9085, [20216] = 0x907E, [20217] = 0x9138, [20218] = 0x919A,
++  [20219] = 0x91A2, [20220] = 0x919B, [20221] = 0x9199, [20222] = 0x919F,
++  [20223] = 0x91A1, [20224] = 0x919D, [20225] = 0x91A0, [20226] = 0x93A1,
++  [20227] = 0x9383, [20228] = 0x93AF, [20229] = 0x9364, [20230] = 0x9356,
++  [20231] = 0x9347, [20232] = 0x937C, [20233] = 0x9358, [20234] = 0x935C,
++  [20235] = 0x9376, [20236] = 0x9349, [20237] = 0x9350, [20238] = 0x9351,
++  [20239] = 0x9360, [20240] = 0x936D, [20241] = 0x938F, [20242] = 0x934C,
++  [20243] = 0x936A, [20244] = 0x9379, [20245] = 0x9357, [20246] = 0x9355,
++  [20247] = 0x9352, [20248] = 0x934F, [20249] = 0x9371, [20250] = 0x9377,
++  [20251] = 0x937B, [20252] = 0x9361, [20253] = 0x935E, [20254] = 0x9363,
++  [20255] = 0x9367, [20256] = 0x9380, [20257] = 0x934E, [20258] = 0x9359,
++  [20259] = 0x95C7, [20260] = 0x95C0, [20261] = 0x95C9, [20262] = 0x95C3,
++  [20263] = 0x95C5, [20264] = 0x95B7, [20265] = 0x96AE, [20266] = 0x96B0,
++  [20267] = 0x96AC, [20268] = 0x9720, [20269] = 0x971F, [20270] = 0x9718,
++  [20271] = 0x971D, [20272] = 0x9719, [20273] = 0x979A, [20274] = 0x97A1,
++  [20275] = 0x979C, [20280] = 0x979E, [20281] = 0x979D, [20282] = 0x97D5,
++  [20283] = 0x97D4, [20284] = 0x97F1, [20285] = 0x9841, [20286] = 0x9844,
++  [20287] = 0x984A, [20288] = 0x9849, [20289] = 0x9845, [20290] = 0x9843,
++  [20291] = 0x9925, [20292] = 0x992B, [20293] = 0x992C, [20294] = 0x992A,
++  [20295] = 0x9933, [20296] = 0x9932, [20297] = 0x992F, [20298] = 0x992D,
++  [20299] = 0x9931, [20300] = 0x9930, [20301] = 0x9998, [20302] = 0x99A3,
++  [20303] = 0x99A1, [20304] = 0x9A02, [20305] = 0x99FA, [20306] = 0x99F4,
++  [20307] = 0x99F7, [20308] = 0x99F9, [20309] = 0x99F8, [20310] = 0x99F6,
++  [20311] = 0x99FB, [20312] = 0x99FD, [20313] = 0x99FE, [20314] = 0x99FC,
++  [20315] = 0x9A03, [20316] = 0x9ABE, [20317] = 0x9AFE, [20318] = 0x9AFD,
++  [20319] = 0x9B01, [20320] = 0x9AFC, [20321] = 0x9B48, [20322] = 0x9B9A,
++  [20323] = 0x9BA8, [20324] = 0x9B9E, [20325] = 0x9B9B, [20326] = 0x9BA6,
++  [20327] = 0x9BA1, [20328] = 0x9BA5, [20329] = 0x9BA4, [20330] = 0x9B86,
++  [20331] = 0x9BA2, [20332] = 0x9BA0, [20333] = 0x9BAF, [20334] = 0x9D33,
++  [20335] = 0x9D41, [20336] = 0x9D67, [20337] = 0x9D36, [20338] = 0x9D2E,
++  [20339] = 0x9D2F, [20340] = 0x9D31, [20341] = 0x9D38, [20342] = 0x9D30,
++  [20377] = 0x9D45, [20378] = 0x9D42, [20379] = 0x9D43, [20380] = 0x9D3E,
++  [20381] = 0x9D37, [20382] = 0x9D40, [20383] = 0x9D3D, [20384] = 0x7FF5,
++  [20385] = 0x9D2D, [20386] = 0x9E8A, [20387] = 0x9E89, [20388] = 0x9E8D,
++  [20389] = 0x9EB0, [20390] = 0x9EC8, [20391] = 0x9EDA, [20392] = 0x9EFB,
++  [20393] = 0x9EFF, [20394] = 0x9F24, [20395] = 0x9F23, [20396] = 0x9F22,
++  [20397] = 0x9F54, [20398] = 0x9FA0, [20399] = 0x5131, [20400] = 0x512D,
++  [20401] = 0x512E, [20402] = 0x5698, [20403] = 0x569C, [20404] = 0x5697,
++  [20405] = 0x569A, [20406] = 0x569D, [20407] = 0x5699, [20408] = 0x5970,
++  [20409] = 0x5B3C, [20410] = 0x5C69, [20411] = 0x5C6A, [20412] = 0x5DC0,
++  [20413] = 0x5E6D, [20414] = 0x5E6E, [20415] = 0x61D8, [20416] = 0x61DF,
++  [20417] = 0x61ED, [20418] = 0x61EE, [20419] = 0x61F1, [20420] = 0x61EA,
++  [20421] = 0x61F0, [20422] = 0x61EB, [20423] = 0x61D6, [20424] = 0x61E9,
++  [20425] = 0x64FF, [20426] = 0x6504, [20427] = 0x64FD, [20428] = 0x64F8,
++  [20429] = 0x6501, [20430] = 0x6503, [20431] = 0x64FC, [20432] = 0x6594,
++  [20433] = 0x65DB, [20434] = 0x66DA, [20435] = 0x66DB, [20436] = 0x66D8,
++  [20437] = 0x6AC5, [20438] = 0x6AB9, [20439] = 0x6ABD, [20440] = 0x6AE1,
++  [20441] = 0x6AC6, [20442] = 0x6ABA, [20443] = 0x6AB6, [20444] = 0x6AB7,
++  [20445] = 0x6AC7, [20446] = 0x6AB4, [20447] = 0x6AAD, [20448] = 0x6B5E,
++  [20449] = 0x6BC9, [20450] = 0x6C0B, [20451] = 0x7007, [20452] = 0x700C,
++  [20453] = 0x700D, [20454] = 0x7001, [20455] = 0x7005, [20456] = 0x7014,
++  [20457] = 0x700E, [20458] = 0x6FFF, [20459] = 0x7000, [20460] = 0x6FFB,
++  [20461] = 0x7026, [20462] = 0x6FFC, [20463] = 0x6FF7, [20464] = 0x700A,
++  [20465] = 0x7201, [20466] = 0x71FF, [20467] = 0x71F9, [20468] = 0x7203,
++  [20469] = 0x71FD, [20470] = 0x7376, [20475] = 0x74B8, [20476] = 0x74C0,
++  [20477] = 0x74B5, [20478] = 0x74C1, [20479] = 0x74BE, [20480] = 0x74B6,
++  [20481] = 0x74BB, [20482] = 0x74C2, [20483] = 0x7514, [20484] = 0x7513,
++  [20485] = 0x765C, [20486] = 0x7664, [20487] = 0x7659, [20488] = 0x7650,
++  [20489] = 0x7653, [20490] = 0x7657, [20491] = 0x765A, [20492] = 0x76A6,
++  [20493] = 0x76BD, [20494] = 0x76EC, [20495] = 0x77C2, [20496] = 0x77BA,
++  [20497] = 0x78FF, [20498] = 0x790C, [20499] = 0x7913, [20500] = 0x7914,
++  [20501] = 0x7909, [20502] = 0x7910, [20503] = 0x7912, [20504] = 0x7911,
++  [20505] = 0x79AD, [20506] = 0x79AC, [20507] = 0x7A5F, [20508] = 0x7C1C,
++  [20509] = 0x7C29, [20510] = 0x7C19, [20511] = 0x7C20, [20512] = 0x7C1F,
++  [20513] = 0x7C2D, [20514] = 0x7C1D, [20515] = 0x7C26, [20516] = 0x7C28,
++  [20517] = 0x7C22, [20518] = 0x7C25, [20519] = 0x7C30, [20520] = 0x7E5C,
++  [20521] = 0x7E50, [20522] = 0x7E56, [20523] = 0x7E63, [20524] = 0x7E58,
++  [20525] = 0x7E62, [20526] = 0x7E5F, [20527] = 0x7E51, [20528] = 0x7E60,
++  [20529] = 0x7E57, [20530] = 0x7E53, [20531] = 0x7FB5, [20532] = 0x7FB3,
++  [20533] = 0x7FF7, [20534] = 0x7FF8, [20535] = 0x8075, [20536] = 0x81D1,
++  [20537] = 0x81D2, [20572] = 0x81D0, [20573] = 0x825F, [20574] = 0x825E,
++  [20575] = 0x85B4, [20576] = 0x85C6, [20577] = 0x85C0, [20578] = 0x85C3,
++  [20579] = 0x85C2, [20580] = 0x85B3, [20581] = 0x85B5, [20582] = 0x85BD,
++  [20583] = 0x85C7, [20584] = 0x85C4, [20585] = 0x85BF, [20586] = 0x85CB,
++  [20587] = 0x85CE, [20588] = 0x85C8, [20589] = 0x85C5, [20590] = 0x85B1,
++  [20591] = 0x85B6, [20592] = 0x85D2, [20593] = 0x8624, [20594] = 0x85B8,
++  [20595] = 0x85B7, [20596] = 0x85BE, [20597] = 0x8669, [20598] = 0x87E7,
++  [20599] = 0x87E6, [20600] = 0x87E2, [20601] = 0x87DB, [20602] = 0x87EB,
++  [20603] = 0x87EA, [20604] = 0x87E5, [20605] = 0x87DF, [20606] = 0x87F3,
++  [20607] = 0x87E4, [20608] = 0x87D4, [20609] = 0x87DC, [20610] = 0x87D3,
++  [20611] = 0x87ED, [20612] = 0x87D8, [20613] = 0x87E3, [20614] = 0x87A4,
++  [20615] = 0x87D7, [20616] = 0x87D9, [20617] = 0x8801, [20618] = 0x87F4,
++  [20619] = 0x87E8, [20620] = 0x87DD, [20621] = 0x8953, [20622] = 0x894B,
++  [20623] = 0x894F, [20624] = 0x894C, [20625] = 0x8946, [20626] = 0x8950,
++  [20627] = 0x8951, [20628] = 0x8949, [20629] = 0x8B2A, [20630] = 0x8B27,
++  [20631] = 0x8B23, [20632] = 0x8B33, [20633] = 0x8B30, [20634] = 0x8B35,
++  [20635] = 0x8B47, [20636] = 0x8B2F, [20637] = 0x8B3C, [20638] = 0x8B3E,
++  [20639] = 0x8B31, [20640] = 0x8B25, [20641] = 0x8B37, [20642] = 0x8B26,
++  [20643] = 0x8B36, [20644] = 0x8B2E, [20645] = 0x8B24, [20646] = 0x8B3B,
++  [20647] = 0x8B3D, [20648] = 0x8B3A, [20649] = 0x8C42, [20650] = 0x8C75,
++  [20651] = 0x8C99, [20652] = 0x8C98, [20653] = 0x8C97, [20654] = 0x8CFE,
++  [20655] = 0x8D04, [20656] = 0x8D02, [20657] = 0x8D00, [20658] = 0x8E5C,
++  [20659] = 0x8E62, [20660] = 0x8E60, [20661] = 0x8E57, [20662] = 0x8E56,
++  [20663] = 0x8E5E, [20664] = 0x8E65, [20665] = 0x8E67, [20670] = 0x8E5B,
++  [20671] = 0x8E5A, [20672] = 0x8E61, [20673] = 0x8E5D, [20674] = 0x8E69,
++  [20675] = 0x8E54, [20676] = 0x8F46, [20677] = 0x8F47, [20678] = 0x8F48,
++  [20679] = 0x8F4B, [20680] = 0x9128, [20681] = 0x913A, [20682] = 0x913B,
++  [20683] = 0x913E, [20684] = 0x91A8, [20685] = 0x91A5, [20686] = 0x91A7,
++  [20687] = 0x91AF, [20688] = 0x91AA, [20689] = 0x93B5, [20690] = 0x938C,
++  [20691] = 0x9392, [20692] = 0x93B7, [20693] = 0x939B, [20694] = 0x939D,
++  [20695] = 0x9389, [20696] = 0x93A7, [20697] = 0x938E, [20698] = 0x93AA,
++  [20699] = 0x939E, [20700] = 0x93A6, [20701] = 0x9395, [20702] = 0x9388,
++  [20703] = 0x9399, [20704] = 0x939F, [20705] = 0x938D, [20706] = 0x93B1,
++  [20707] = 0x9391, [20708] = 0x93B2, [20709] = 0x93A4, [20710] = 0x93A8,
++  [20711] = 0x93B4, [20712] = 0x93A3, [20713] = 0x93A5, [20714] = 0x95D2,
++  [20715] = 0x95D3, [20716] = 0x95D1, [20717] = 0x96B3, [20718] = 0x96D7,
++  [20719] = 0x96DA, [20720] = 0x5DC2, [20721] = 0x96DF, [20722] = 0x96D8,
++  [20723] = 0x96DD, [20724] = 0x9723, [20725] = 0x9722, [20726] = 0x9725,
++  [20727] = 0x97AC, [20728] = 0x97AE, [20729] = 0x97A8, [20730] = 0x97AB,
++  [20731] = 0x97A4, [20732] = 0x97AA, [20767] = 0x97A2, [20768] = 0x97A5,
++  [20769] = 0x97D7, [20770] = 0x97D9, [20771] = 0x97D6, [20772] = 0x97D8,
++  [20773] = 0x97FA, [20774] = 0x9850, [20775] = 0x9851, [20776] = 0x9852,
++  [20777] = 0x98B8, [20778] = 0x9941, [20779] = 0x993C, [20780] = 0x993A,
++  [20781] = 0x9A0F, [20782] = 0x9A0B, [20783] = 0x9A09, [20784] = 0x9A0D,
++  [20785] = 0x9A04, [20786] = 0x9A11, [20787] = 0x9A0A, [20788] = 0x9A05,
++  [20789] = 0x9A07, [20790] = 0x9A06, [20791] = 0x9AC0, [20792] = 0x9ADC,
++  [20793] = 0x9B08, [20794] = 0x9B04, [20795] = 0x9B05, [20796] = 0x9B29,
++  [20797] = 0x9B35, [20798] = 0x9B4A, [20799] = 0x9B4C, [20800] = 0x9B4B,
++  [20801] = 0x9BC7, [20802] = 0x9BC6, [20803] = 0x9BC3, [20804] = 0x9BBF,
++  [20805] = 0x9BC1, [20806] = 0x9BB5, [20807] = 0x9BB8, [20808] = 0x9BD3,
++  [20809] = 0x9BB6, [20810] = 0x9BC4, [20811] = 0x9BB9, [20812] = 0x9BBD,
++  [20813] = 0x9D5C, [20814] = 0x9D53, [20815] = 0x9D4F, [20816] = 0x9D4A,
++  [20817] = 0x9D5B, [20818] = 0x9D4B, [20819] = 0x9D59, [20820] = 0x9D56,
++  [20821] = 0x9D4C, [20822] = 0x9D57, [20823] = 0x9D52, [20824] = 0x9D54,
++  [20825] = 0x9D5F, [20826] = 0x9D58, [20827] = 0x9D5A, [20828] = 0x9E8E,
++  [20829] = 0x9E8C, [20830] = 0x9EDF, [20831] = 0x9F01, [20832] = 0x9F00,
++  [20833] = 0x9F16, [20834] = 0x9F25, [20835] = 0x9F2B, [20836] = 0x9F2A,
++  [20837] = 0x9F29, [20838] = 0x9F28, [20839] = 0x9F4C, [20840] = 0x9F55,
++  [20841] = 0x5134, [20842] = 0x5135, [20843] = 0x5296, [20844] = 0x52F7,
++  [20845] = 0x53B4, [20846] = 0x56AB, [20847] = 0x56AD, [20848] = 0x56A6,
++  [20849] = 0x56A7, [20850] = 0x56AA, [20851] = 0x56AC, [20852] = 0x58DA,
++  [20853] = 0x58DD, [20854] = 0x58DB, [20855] = 0x5912, [20856] = 0x5B3D,
++  [20857] = 0x5B3E, [20858] = 0x5B3F, [20859] = 0x5DC3, [20860] = 0x5E70,
++  [20865] = 0x5FBF, [20866] = 0x61FB, [20867] = 0x6507, [20868] = 0x6510,
++  [20869] = 0x650D, [20870] = 0x6509, [20871] = 0x650C, [20872] = 0x650E,
++  [20873] = 0x6584, [20874] = 0x65DE, [20875] = 0x65DD, [20876] = 0x66DE,
++  [20877] = 0x6AE7, [20878] = 0x6AE0, [20879] = 0x6ACC, [20880] = 0x6AD1,
++  [20881] = 0x6AD9, [20882] = 0x6ACB, [20883] = 0x6ADF, [20884] = 0x6ADC,
++  [20885] = 0x6AD0, [20886] = 0x6AEB, [20887] = 0x6ACF, [20888] = 0x6ACD,
++  [20889] = 0x6ADE, [20890] = 0x6B60, [20891] = 0x6BB0, [20892] = 0x6C0C,
++  [20893] = 0x7019, [20894] = 0x7027, [20895] = 0x7020, [20896] = 0x7016,
++  [20897] = 0x702B, [20898] = 0x7021, [20899] = 0x7022, [20900] = 0x7023,
++  [20901] = 0x7029, [20902] = 0x7017, [20903] = 0x7024, [20904] = 0x701C,
++  [20905] = 0x702A, [20906] = 0x720C, [20907] = 0x720A, [20908] = 0x7207,
++  [20909] = 0x7202, [20910] = 0x7205, [20911] = 0x72A5, [20912] = 0x72A6,
++  [20913] = 0x72A4, [20914] = 0x72A3, [20915] = 0x72A1, [20916] = 0x74CB,
++  [20917] = 0x74C5, [20918] = 0x74B7, [20919] = 0x74C3, [20920] = 0x7516,
++  [20921] = 0x7660, [20922] = 0x77C9, [20923] = 0x77CA, [20924] = 0x77C4,
++  [20925] = 0x77F1, [20926] = 0x791D, [20927] = 0x791B, [20962] = 0x7921,
++  [20963] = 0x791C, [20964] = 0x7917, [20965] = 0x791E, [20966] = 0x79B0,
++  [20967] = 0x7A67, [20968] = 0x7A68, [20969] = 0x7C33, [20970] = 0x7C3C,
++  [20971] = 0x7C39, [20972] = 0x7C2C, [20973] = 0x7C3B, [20974] = 0x7CEC,
++  [20975] = 0x7CEA, [20976] = 0x7E76, [20977] = 0x7E75, [20978] = 0x7E78,
++  [20979] = 0x7E70, [20980] = 0x7E77, [20981] = 0x7E6F, [20982] = 0x7E7A,
++  [20983] = 0x7E72, [20984] = 0x7E74, [20985] = 0x7E68, [20986] = 0x7F4B,
++  [20987] = 0x7F4A, [20988] = 0x7F83, [20989] = 0x7F86, [20990] = 0x7FB7,
++  [20991] = 0x7FFD, [20992] = 0x7FFE, [20993] = 0x8078, [20994] = 0x81D7,
++  [20995] = 0x81D5, [20996] = 0x8264, [20997] = 0x8261, [20998] = 0x8263,
++  [20999] = 0x85EB, [21000] = 0x85F1, [21001] = 0x85ED, [21002] = 0x85D9,
++  [21003] = 0x85E1, [21004] = 0x85E8, [21005] = 0x85DA, [21006] = 0x85D7,
++  [21007] = 0x85EC, [21008] = 0x85F2, [21009] = 0x85F8, [21010] = 0x85D8,
++  [21011] = 0x85DF, [21012] = 0x85E3, [21013] = 0x85DC, [21014] = 0x85D1,
++  [21015] = 0x85F0, [21016] = 0x85E6, [21017] = 0x85EF, [21018] = 0x85DE,
++  [21019] = 0x85E2, [21020] = 0x8800, [21021] = 0x87FA, [21022] = 0x8803,
++  [21023] = 0x87F6, [21024] = 0x87F7, [21025] = 0x8809, [21026] = 0x880C,
++  [21027] = 0x880B, [21028] = 0x8806, [21029] = 0x87FC, [21030] = 0x8808,
++  [21031] = 0x87FF, [21032] = 0x880A, [21033] = 0x8802, [21034] = 0x8962,
++  [21035] = 0x895A, [21036] = 0x895B, [21037] = 0x8957, [21038] = 0x8961,
++  [21039] = 0x895C, [21040] = 0x8958, [21041] = 0x895D, [21042] = 0x8959,
++  [21043] = 0x8988, [21044] = 0x89B7, [21045] = 0x89B6, [21046] = 0x89F6,
++  [21047] = 0x8B50, [21048] = 0x8B48, [21049] = 0x8B4A, [21050] = 0x8B40,
++  [21051] = 0x8B53, [21052] = 0x8B56, [21053] = 0x8B54, [21054] = 0x8B4B,
++  [21055] = 0x8B55, [21060] = 0x8B51, [21061] = 0x8B42, [21062] = 0x8B52,
++  [21063] = 0x8B57, [21064] = 0x8C43, [21065] = 0x8C77, [21066] = 0x8C76,
++  [21067] = 0x8C9A, [21068] = 0x8D06, [21069] = 0x8D07, [21070] = 0x8D09,
++  [21071] = 0x8DAC, [21072] = 0x8DAA, [21073] = 0x8DAD, [21074] = 0x8DAB,
++  [21075] = 0x8E6D, [21076] = 0x8E78, [21077] = 0x8E73, [21078] = 0x8E6A,
++  [21079] = 0x8E6F, [21080] = 0x8E7B, [21081] = 0x8EC2, [21082] = 0x8F52,
++  [21083] = 0x8F51, [21084] = 0x8F4F, [21085] = 0x8F50, [21086] = 0x8F53,
++  [21087] = 0x8FB4, [21088] = 0x9140, [21089] = 0x913F, [21090] = 0x91B0,
++  [21091] = 0x91AD, [21092] = 0x93DE, [21093] = 0x93C7, [21094] = 0x93CF,
++  [21095] = 0x93C2, [21096] = 0x93DA, [21097] = 0x93D0, [21098] = 0x93F9,
++  [21099] = 0x93EC, [21100] = 0x93CC, [21101] = 0x93D9, [21102] = 0x93A9,
++  [21103] = 0x93E6, [21104] = 0x93CA, [21105] = 0x93D4, [21106] = 0x93EE,
++  [21107] = 0x93E3, [21108] = 0x93D5, [21109] = 0x93C4, [21110] = 0x93CE,
++  [21111] = 0x93C0, [21112] = 0x93D2, [21113] = 0x93E7, [21114] = 0x957D,
++  [21115] = 0x95DA, [21116] = 0x95DB, [21117] = 0x96E1, [21118] = 0x9729,
++  [21119] = 0x972B, [21120] = 0x972C, [21121] = 0x9728, [21122] = 0x9726,
++  [21157] = 0x97B3, [21158] = 0x97B7, [21159] = 0x97B6, [21160] = 0x97DD,
++  [21161] = 0x97DE, [21162] = 0x97DF, [21163] = 0x985C, [21164] = 0x9859,
++  [21165] = 0x985D, [21166] = 0x9857, [21167] = 0x98BF, [21168] = 0x98BD,
++  [21169] = 0x98BB, [21170] = 0x98BE, [21171] = 0x9948, [21172] = 0x9947,
++  [21173] = 0x9943, [21174] = 0x99A6, [21175] = 0x99A7, [21176] = 0x9A1A,
++  [21177] = 0x9A15, [21178] = 0x9A25, [21179] = 0x9A1D, [21180] = 0x9A24,
++  [21181] = 0x9A1B, [21182] = 0x9A22, [21183] = 0x9A20, [21184] = 0x9A27,
++  [21185] = 0x9A23, [21186] = 0x9A1E, [21187] = 0x9A1C, [21188] = 0x9A14,
++  [21189] = 0x9AC2, [21190] = 0x9B0B, [21191] = 0x9B0A, [21192] = 0x9B0E,
++  [21193] = 0x9B0C, [21194] = 0x9B37, [21195] = 0x9BEA, [21196] = 0x9BEB,
++  [21197] = 0x9BE0, [21198] = 0x9BDE, [21199] = 0x9BE4, [21200] = 0x9BE6,
++  [21201] = 0x9BE2, [21202] = 0x9BF0, [21203] = 0x9BD4, [21204] = 0x9BD7,
++  [21205] = 0x9BEC, [21206] = 0x9BDC, [21207] = 0x9BD9, [21208] = 0x9BE5,
++  [21209] = 0x9BD5, [21210] = 0x9BE1, [21211] = 0x9BDA, [21212] = 0x9D77,
++  [21213] = 0x9D81, [21214] = 0x9D8A, [21215] = 0x9D84, [21216] = 0x9D88,
++  [21217] = 0x9D71, [21218] = 0x9D80, [21219] = 0x9D78, [21220] = 0x9D86,
++  [21221] = 0x9D8B, [21222] = 0x9D8C, [21223] = 0x9D7D, [21224] = 0x9D6B,
++  [21225] = 0x9D74, [21226] = 0x9D75, [21227] = 0x9D70, [21228] = 0x9D69,
++  [21229] = 0x9D85, [21230] = 0x9D73, [21231] = 0x9D7B, [21232] = 0x9D82,
++  [21233] = 0x9D6F, [21234] = 0x9D79, [21235] = 0x9D7F, [21236] = 0x9D87,
++  [21237] = 0x9D68, [21238] = 0x9E94, [21239] = 0x9E91, [21240] = 0x9EC0,
++  [21241] = 0x9EFC, [21242] = 0x9F2D, [21243] = 0x9F40, [21244] = 0x9F41,
++  [21245] = 0x9F4D, [21246] = 0x9F56, [21247] = 0x9F57, [21248] = 0x9F58,
++  [21249] = 0x5337, [21250] = 0x56B2, [21255] = 0x56B5, [21256] = 0x56B3,
++  [21257] = 0x58E3, [21258] = 0x5B45, [21259] = 0x5DC6, [21260] = 0x5DC7,
++  [21261] = 0x5EEE, [21262] = 0x5EEF, [21263] = 0x5FC0, [21264] = 0x5FC1,
++  [21265] = 0x61F9, [21266] = 0x6517, [21267] = 0x6516, [21268] = 0x6515,
++  [21269] = 0x6513, [21270] = 0x65DF, [21271] = 0x66E8, [21272] = 0x66E3,
++  [21273] = 0x66E4, [21274] = 0x6AF3, [21275] = 0x6AF0, [21276] = 0x6AEA,
++  [21277] = 0x6AE8, [21278] = 0x6AF9, [21279] = 0x6AF1, [21280] = 0x6AEE,
++  [21281] = 0x6AEF, [21282] = 0x703C, [21283] = 0x7035, [21284] = 0x702F,
++  [21285] = 0x7037, [21286] = 0x7034, [21287] = 0x7031, [21288] = 0x7042,
++  [21289] = 0x7038, [21290] = 0x703F, [21291] = 0x703A, [21292] = 0x7039,
++  [21293] = 0x7040, [21294] = 0x703B, [21295] = 0x7033, [21296] = 0x7041,
++  [21297] = 0x7213, [21298] = 0x7214, [21299] = 0x72A8, [21300] = 0x737D,
++  [21301] = 0x737C, [21302] = 0x74BA, [21303] = 0x76AB, [21304] = 0x76AA,
++  [21305] = 0x76BE, [21306] = 0x76ED, [21307] = 0x77CC, [21308] = 0x77CE,
++  [21309] = 0x77CF, [21310] = 0x77CD, [21311] = 0x77F2, [21312] = 0x7925,
++  [21313] = 0x7923, [21314] = 0x7927, [21315] = 0x7928, [21316] = 0x7924,
++  [21317] = 0x7929, [21352] = 0x79B2, [21353] = 0x7A6E, [21354] = 0x7A6C,
++  [21355] = 0x7A6D, [21356] = 0x7AF7, [21357] = 0x7C49, [21358] = 0x7C48,
++  [21359] = 0x7C4A, [21360] = 0x7C47, [21361] = 0x7C45, [21362] = 0x7CEE,
++  [21363] = 0x7E7B, [21364] = 0x7E7E, [21365] = 0x7E81, [21366] = 0x7E80,
++  [21367] = 0x7FBA, [21368] = 0x7FFF, [21369] = 0x8079, [21370] = 0x81DB,
++  [21371] = 0x81D9, [21372] = 0x820B, [21373] = 0x8268, [21374] = 0x8269,
++  [21375] = 0x8622, [21376] = 0x85FF, [21377] = 0x8601, [21378] = 0x85FE,
++  [21379] = 0x861B, [21380] = 0x8600, [21381] = 0x85F6, [21382] = 0x8604,
++  [21383] = 0x8609, [21384] = 0x8605, [21385] = 0x860C, [21386] = 0x85FD,
++  [21387] = 0x8819, [21388] = 0x8810, [21389] = 0x8811, [21390] = 0x8817,
++  [21391] = 0x8813, [21392] = 0x8816, [21393] = 0x8963, [21394] = 0x8966,
++  [21395] = 0x89B9, [21396] = 0x89F7, [21397] = 0x8B60, [21398] = 0x8B6A,
++  [21399] = 0x8B5D, [21400] = 0x8B68, [21401] = 0x8B63, [21402] = 0x8B65,
++  [21403] = 0x8B67, [21404] = 0x8B6D, [21405] = 0x8DAE, [21406] = 0x8E86,
++  [21407] = 0x8E88, [21408] = 0x8E84, [21409] = 0x8F59, [21410] = 0x8F56,
++  [21411] = 0x8F57, [21412] = 0x8F55, [21413] = 0x8F58, [21414] = 0x8F5A,
++  [21415] = 0x908D, [21416] = 0x9143, [21417] = 0x9141, [21418] = 0x91B7,
++  [21419] = 0x91B5, [21420] = 0x91B2, [21421] = 0x91B3, [21422] = 0x940B,
++  [21423] = 0x9413, [21424] = 0x93FB, [21425] = 0x9420, [21426] = 0x940F,
++  [21427] = 0x9414, [21428] = 0x93FE, [21429] = 0x9415, [21430] = 0x9410,
++  [21431] = 0x9428, [21432] = 0x9419, [21433] = 0x940D, [21434] = 0x93F5,
++  [21435] = 0x9400, [21436] = 0x93F7, [21437] = 0x9407, [21438] = 0x940E,
++  [21439] = 0x9416, [21440] = 0x9412, [21441] = 0x93FA, [21442] = 0x9409,
++  [21443] = 0x93F8, [21444] = 0x940A, [21445] = 0x93FF, [21450] = 0x93FC,
++  [21451] = 0x940C, [21452] = 0x93F6, [21453] = 0x9411, [21454] = 0x9406,
++  [21455] = 0x95DE, [21456] = 0x95E0, [21457] = 0x95DF, [21458] = 0x972E,
++  [21459] = 0x972F, [21460] = 0x97B9, [21461] = 0x97BB, [21462] = 0x97FD,
++  [21463] = 0x97FE, [21464] = 0x9860, [21465] = 0x9862, [21466] = 0x9863,
++  [21467] = 0x985F, [21468] = 0x98C1, [21469] = 0x98C2, [21470] = 0x9950,
++  [21471] = 0x994E, [21472] = 0x9959, [21473] = 0x994C, [21474] = 0x994B,
++  [21475] = 0x9953, [21476] = 0x9A32, [21477] = 0x9A34, [21478] = 0x9A31,
++  [21479] = 0x9A2C, [21480] = 0x9A2A, [21481] = 0x9A36, [21482] = 0x9A29,
++  [21483] = 0x9A2E, [21484] = 0x9A38, [21485] = 0x9A2D, [21486] = 0x9AC7,
++  [21487] = 0x9ACA, [21488] = 0x9AC6, [21489] = 0x9B10, [21490] = 0x9B12,
++  [21491] = 0x9B11, [21492] = 0x9C0B, [21493] = 0x9C08, [21494] = 0x9BF7,
++  [21495] = 0x9C05, [21496] = 0x9C12, [21497] = 0x9BF8, [21498] = 0x9C40,
++  [21499] = 0x9C07, [21500] = 0x9C0E, [21501] = 0x9C06, [21502] = 0x9C17,
++  [21503] = 0x9C14, [21504] = 0x9C09, [21505] = 0x9D9F, [21506] = 0x9D99,
++  [21507] = 0x9DA4, [21508] = 0x9D9D, [21509] = 0x9D92, [21510] = 0x9D98,
++  [21511] = 0x9D90, [21512] = 0x9D9B, [21547] = 0x9DA0, [21548] = 0x9D94,
++  [21549] = 0x9D9C, [21550] = 0x9DAA, [21551] = 0x9D97, [21552] = 0x9DA1,
++  [21553] = 0x9D9A, [21554] = 0x9DA2, [21555] = 0x9DA8, [21556] = 0x9D9E,
++  [21557] = 0x9DA3, [21558] = 0x9DBF, [21559] = 0x9DA9, [21560] = 0x9D96,
++  [21561] = 0x9DA6, [21562] = 0x9DA7, [21563] = 0x9E99, [21564] = 0x9E9B,
++  [21565] = 0x9E9A, [21566] = 0x9EE5, [21567] = 0x9EE4, [21568] = 0x9EE7,
++  [21569] = 0x9EE6, [21570] = 0x9F30, [21571] = 0x9F2E, [21572] = 0x9F5B,
++  [21573] = 0x9F60, [21574] = 0x9F5E, [21575] = 0x9F5D, [21576] = 0x9F59,
++  [21577] = 0x9F91, [21578] = 0x513A, [21579] = 0x5139, [21580] = 0x5298,
++  [21581] = 0x5297, [21582] = 0x56C3, [21583] = 0x56BD, [21584] = 0x56BE,
++  [21585] = 0x5B48, [21586] = 0x5B47, [21587] = 0x5DCB, [21588] = 0x5DCF,
++  [21589] = 0x5EF1, [21590] = 0x61FD, [21591] = 0x651B, [21592] = 0x6B02,
++  [21593] = 0x6AFC, [21594] = 0x6B03, [21595] = 0x6AF8, [21596] = 0x6B00,
++  [21597] = 0x7043, [21598] = 0x7044, [21599] = 0x704A, [21600] = 0x7048,
++  [21601] = 0x7049, [21602] = 0x7045, [21603] = 0x7046, [21604] = 0x721D,
++  [21605] = 0x721A, [21606] = 0x7219, [21607] = 0x737E, [21608] = 0x7517,
++  [21609] = 0x766A, [21610] = 0x77D0, [21611] = 0x792D, [21612] = 0x7931,
++  [21613] = 0x792F, [21614] = 0x7C54, [21615] = 0x7C53, [21616] = 0x7CF2,
++  [21617] = 0x7E8A, [21618] = 0x7E87, [21619] = 0x7E88, [21620] = 0x7E8B,
++  [21621] = 0x7E86, [21622] = 0x7E8D, [21623] = 0x7F4D, [21624] = 0x7FBB,
++  [21625] = 0x8030, [21626] = 0x81DD, [21627] = 0x8618, [21628] = 0x862A,
++  [21629] = 0x8626, [21630] = 0x861F, [21631] = 0x8623, [21632] = 0x861C,
++  [21633] = 0x8619, [21634] = 0x8627, [21635] = 0x862E, [21636] = 0x8621,
++  [21637] = 0x8620, [21638] = 0x8629, [21639] = 0x861E, [21640] = 0x8625,
++  [21645] = 0x8829, [21646] = 0x881D, [21647] = 0x881B, [21648] = 0x8820,
++  [21649] = 0x8824, [21650] = 0x881C, [21651] = 0x882B, [21652] = 0x884A,
++  [21653] = 0x896D, [21654] = 0x8969, [21655] = 0x896E, [21656] = 0x896B,
++  [21657] = 0x89FA, [21658] = 0x8B79, [21659] = 0x8B78, [21660] = 0x8B45,
++  [21661] = 0x8B7A, [21662] = 0x8B7B, [21663] = 0x8D10, [21664] = 0x8D14,
++  [21665] = 0x8DAF, [21666] = 0x8E8E, [21667] = 0x8E8C, [21668] = 0x8F5E,
++  [21669] = 0x8F5B, [21670] = 0x8F5D, [21671] = 0x9146, [21672] = 0x9144,
++  [21673] = 0x9145, [21674] = 0x91B9, [21675] = 0x943F, [21676] = 0x943B,
++  [21677] = 0x9436, [21678] = 0x9429, [21679] = 0x943D, [21680] = 0x943C,
++  [21681] = 0x9430, [21682] = 0x9439, [21683] = 0x942A, [21684] = 0x9437,
++  [21685] = 0x942C, [21686] = 0x9440, [21687] = 0x9431, [21688] = 0x95E5,
++  [21689] = 0x95E4, [21690] = 0x95E3, [21691] = 0x9735, [21692] = 0x973A,
++  [21693] = 0x97BF, [21694] = 0x97E1, [21695] = 0x9864, [21696] = 0x98C9,
++  [21697] = 0x98C6, [21698] = 0x98C0, [21699] = 0x9958, [21700] = 0x9956,
++  [21701] = 0x9A39, [21702] = 0x9A3D, [21703] = 0x9A46, [21704] = 0x9A44,
++  [21705] = 0x9A42, [21706] = 0x9A41, [21707] = 0x9A3A, [21742] = 0x9A3F,
++  [21743] = 0x9ACD, [21744] = 0x9B15, [21745] = 0x9B17, [21746] = 0x9B18,
++  [21747] = 0x9B16, [21748] = 0x9B3A, [21749] = 0x9B52, [21750] = 0x9C2B,
++  [21751] = 0x9C1D, [21752] = 0x9C1C, [21753] = 0x9C2C, [21754] = 0x9C23,
++  [21755] = 0x9C28, [21756] = 0x9C29, [21757] = 0x9C24, [21758] = 0x9C21,
++  [21759] = 0x9DB7, [21760] = 0x9DB6, [21761] = 0x9DBC, [21762] = 0x9DC1,
++  [21763] = 0x9DC7, [21764] = 0x9DCA, [21765] = 0x9DCF, [21766] = 0x9DBE,
++  [21767] = 0x9DC5, [21768] = 0x9DC3, [21769] = 0x9DBB, [21770] = 0x9DB5,
++  [21771] = 0x9DCE, [21772] = 0x9DB9, [21773] = 0x9DBA, [21774] = 0x9DAC,
++  [21775] = 0x9DC8, [21776] = 0x9DB1, [21777] = 0x9DAD, [21778] = 0x9DCC,
++  [21779] = 0x9DB3, [21780] = 0x9DCD, [21781] = 0x9DB2, [21782] = 0x9E7A,
++  [21783] = 0x9E9C, [21784] = 0x9EEB, [21785] = 0x9EEE, [21786] = 0x9EED,
++  [21787] = 0x9F1B, [21788] = 0x9F18, [21789] = 0x9F1A, [21790] = 0x9F31,
++  [21791] = 0x9F4E, [21792] = 0x9F65, [21793] = 0x9F64, [21794] = 0x9F92,
++  [21795] = 0x4EB9, [21796] = 0x56C6, [21797] = 0x56C5, [21798] = 0x56CB,
++  [21799] = 0x5971, [21800] = 0x5B4B, [21801] = 0x5B4C, [21802] = 0x5DD5,
++  [21803] = 0x5DD1, [21804] = 0x5EF2, [21805] = 0x6521, [21806] = 0x6520,
++  [21807] = 0x6526, [21808] = 0x6522, [21809] = 0x6B0B, [21810] = 0x6B08,
++  [21811] = 0x6B09, [21812] = 0x6C0D, [21813] = 0x7055, [21814] = 0x7056,
++  [21815] = 0x7057, [21816] = 0x7052, [21817] = 0x721E, [21818] = 0x721F,
++  [21819] = 0x72A9, [21820] = 0x737F, [21821] = 0x74D8, [21822] = 0x74D5,
++  [21823] = 0x74D9, [21824] = 0x74D7, [21825] = 0x766D, [21826] = 0x76AD,
++  [21827] = 0x7935, [21828] = 0x79B4, [21829] = 0x7A70, [21830] = 0x7A71,
++  [21831] = 0x7C57, [21832] = 0x7C5C, [21833] = 0x7C59, [21834] = 0x7C5B,
++  [21835] = 0x7C5A, [21840] = 0x7CF4, [21841] = 0x7CF1, [21842] = 0x7E91,
++  [21843] = 0x7F4F, [21844] = 0x7F87, [21845] = 0x81DE, [21846] = 0x826B,
++  [21847] = 0x8634, [21848] = 0x8635, [21849] = 0x8633, [21850] = 0x862C,
++  [21851] = 0x8632, [21852] = 0x8636, [21853] = 0x882C, [21854] = 0x8828,
++  [21855] = 0x8826, [21856] = 0x882A, [21857] = 0x8825, [21858] = 0x8971,
++  [21859] = 0x89BF, [21860] = 0x89BE, [21861] = 0x89FB, [21862] = 0x8B7E,
++  [21863] = 0x8B84, [21864] = 0x8B82, [21865] = 0x8B86, [21866] = 0x8B85,
++  [21867] = 0x8B7F, [21868] = 0x8D15, [21869] = 0x8E95, [21870] = 0x8E94,
++  [21871] = 0x8E9A, [21872] = 0x8E92, [21873] = 0x8E90, [21874] = 0x8E96,
++  [21875] = 0x8E97, [21876] = 0x8F60, [21877] = 0x8F62, [21878] = 0x9147,
++  [21879] = 0x944C, [21880] = 0x9450, [21881] = 0x944A, [21882] = 0x944B,
++  [21883] = 0x944F, [21884] = 0x9447, [21885] = 0x9445, [21886] = 0x9448,
++  [21887] = 0x9449, [21888] = 0x9446, [21889] = 0x973F, [21890] = 0x97E3,
++  [21891] = 0x986A, [21892] = 0x9869, [21893] = 0x98CB, [21894] = 0x9954,
++  [21895] = 0x995B, [21896] = 0x9A4E, [21897] = 0x9A53, [21898] = 0x9A54,
++  [21899] = 0x9A4C, [21900] = 0x9A4F, [21901] = 0x9A48, [21902] = 0x9A4A,
++  [21937] = 0x9A49, [21938] = 0x9A52, [21939] = 0x9A50, [21940] = 0x9AD0,
++  [21941] = 0x9B19, [21942] = 0x9B2B, [21943] = 0x9B3B, [21944] = 0x9B56,
++  [21945] = 0x9B55, [21946] = 0x9C46, [21947] = 0x9C48, [21948] = 0x9C3F,
++  [21949] = 0x9C44, [21950] = 0x9C39, [21951] = 0x9C33, [21952] = 0x9C41,
++  [21953] = 0x9C3C, [21954] = 0x9C37, [21955] = 0x9C34, [21956] = 0x9C32,
++  [21957] = 0x9C3D, [21958] = 0x9C36, [21959] = 0x9DDB, [21960] = 0x9DD2,
++  [21961] = 0x9DDE, [21962] = 0x9DDA, [21963] = 0x9DCB, [21964] = 0x9DD0,
++  [21965] = 0x9DDC, [21966] = 0x9DD1, [21967] = 0x9DDF, [21968] = 0x9DE9,
++  [21969] = 0x9DD9, [21970] = 0x9DD8, [21971] = 0x9DD6, [21972] = 0x9DF5,
++  [21973] = 0x9DD5, [21974] = 0x9DDD, [21975] = 0x9EB6, [21976] = 0x9EF0,
++  [21977] = 0x9F35, [21978] = 0x9F33, [21979] = 0x9F32, [21980] = 0x9F42,
++  [21981] = 0x9F6B, [21982] = 0x9F95, [21983] = 0x9FA2, [21984] = 0x513D,
++  [21985] = 0x5299, [21986] = 0x58E8, [21987] = 0x58E7, [21988] = 0x5972,
++  [21989] = 0x5B4D, [21990] = 0x5DD8, [21991] = 0x882F, [21992] = 0x5F4F,
++  [21993] = 0x6201, [21994] = 0x6203, [21995] = 0x6204, [21996] = 0x6529,
++  [21997] = 0x6525, [21998] = 0x6596, [21999] = 0x66EB, [22000] = 0x6B11,
++  [22001] = 0x6B12, [22002] = 0x6B0F, [22003] = 0x6BCA, [22004] = 0x705B,
++  [22005] = 0x705A, [22006] = 0x7222, [22007] = 0x7382, [22008] = 0x7381,
++  [22009] = 0x7383, [22010] = 0x7670, [22011] = 0x77D4, [22012] = 0x7C67,
++  [22013] = 0x7C66, [22014] = 0x7E95, [22015] = 0x826C, [22016] = 0x863A,
++  [22017] = 0x8640, [22018] = 0x8639, [22019] = 0x863C, [22020] = 0x8631,
++  [22021] = 0x863B, [22022] = 0x863E, [22023] = 0x8830, [22024] = 0x8832,
++  [22025] = 0x882E, [22026] = 0x8833, [22027] = 0x8976, [22028] = 0x8974,
++  [22029] = 0x8973, [22030] = 0x89FE, [22035] = 0x8B8C, [22036] = 0x8B8E,
++  [22037] = 0x8B8B, [22038] = 0x8B88, [22039] = 0x8C45, [22040] = 0x8D19,
++  [22041] = 0x8E98, [22042] = 0x8F64, [22043] = 0x8F63, [22044] = 0x91BC,
++  [22045] = 0x9462, [22046] = 0x9455, [22047] = 0x945D, [22048] = 0x9457,
++  [22049] = 0x945E, [22050] = 0x97C4, [22051] = 0x97C5, [22052] = 0x9800,
++  [22053] = 0x9A56, [22054] = 0x9A59, [22055] = 0x9B1E, [22056] = 0x9B1F,
++  [22057] = 0x9B20, [22058] = 0x9C52, [22059] = 0x9C58, [22060] = 0x9C50,
++  [22061] = 0x9C4A, [22062] = 0x9C4D, [22063] = 0x9C4B, [22064] = 0x9C55,
++  [22065] = 0x9C59, [22066] = 0x9C4C, [22067] = 0x9C4E, [22068] = 0x9DFB,
++  [22069] = 0x9DF7, [22070] = 0x9DEF, [22071] = 0x9DE3, [22072] = 0x9DEB,
++  [22073] = 0x9DF8, [22074] = 0x9DE4, [22075] = 0x9DF6, [22076] = 0x9DE1,
++  [22077] = 0x9DEE, [22078] = 0x9DE6, [22079] = 0x9DF2, [22080] = 0x9DF0,
++  [22081] = 0x9DE2, [22082] = 0x9DEC, [22083] = 0x9DF4, [22084] = 0x9DF3,
++  [22085] = 0x9DE8, [22086] = 0x9DED, [22087] = 0x9EC2, [22088] = 0x9ED0,
++  [22089] = 0x9EF2, [22090] = 0x9EF3, [22091] = 0x9F06, [22092] = 0x9F1C,
++  [22093] = 0x9F38, [22094] = 0x9F37, [22095] = 0x9F36, [22096] = 0x9F43,
++  [22097] = 0x9F4F, [22132] = 0x9F71, [22133] = 0x9F70, [22134] = 0x9F6E,
++  [22135] = 0x9F6F, [22136] = 0x56D3, [22137] = 0x56CD, [22138] = 0x5B4E,
++  [22139] = 0x5C6D, [22140] = 0x652D, [22141] = 0x66ED, [22142] = 0x66EE,
++  [22143] = 0x6B13, [22144] = 0x705F, [22145] = 0x7061, [22146] = 0x705D,
++  [22147] = 0x7060, [22148] = 0x7223, [22149] = 0x74DB, [22150] = 0x74E5,
++  [22151] = 0x77D5, [22152] = 0x7938, [22153] = 0x79B7, [22154] = 0x79B6,
++  [22155] = 0x7C6A, [22156] = 0x7E97, [22157] = 0x7F89, [22158] = 0x826D,
++  [22159] = 0x8643, [22160] = 0x8838, [22161] = 0x8837, [22162] = 0x8835,
++  [22163] = 0x884B, [22164] = 0x8B94, [22165] = 0x8B95, [22166] = 0x8E9E,
++  [22167] = 0x8E9F, [22168] = 0x8EA0, [22169] = 0x8E9D, [22170] = 0x91BE,
++  [22171] = 0x91BD, [22172] = 0x91C2, [22173] = 0x946B, [22174] = 0x9468,
++  [22175] = 0x9469, [22176] = 0x96E5, [22177] = 0x9746, [22178] = 0x9743,
++  [22179] = 0x9747, [22180] = 0x97C7, [22181] = 0x97E5, [22182] = 0x9A5E,
++  [22183] = 0x9AD5, [22184] = 0x9B59, [22185] = 0x9C63, [22186] = 0x9C67,
++  [22187] = 0x9C66, [22188] = 0x9C62, [22189] = 0x9C5E, [22190] = 0x9C60,
++  [22191] = 0x9E02, [22192] = 0x9DFE, [22193] = 0x9E07, [22194] = 0x9E03,
++  [22195] = 0x9E06, [22196] = 0x9E05, [22197] = 0x9E00, [22198] = 0x9E01,
++  [22199] = 0x9E09, [22200] = 0x9DFF, [22201] = 0x9DFD, [22202] = 0x9E04,
++  [22203] = 0x9EA0, [22204] = 0x9F1E, [22205] = 0x9F46, [22206] = 0x9F74,
++  [22207] = 0x9F75, [22208] = 0x9F76, [22209] = 0x56D4, [22210] = 0x652E,
++  [22211] = 0x65B8, [22212] = 0x6B18, [22213] = 0x6B19, [22214] = 0x6B17,
++  [22215] = 0x6B1A, [22216] = 0x7062, [22217] = 0x7226, [22218] = 0x72AA,
++  [22219] = 0x77D8, [22220] = 0x77D9, [22221] = 0x7939, [22222] = 0x7C69,
++  [22223] = 0x7C6B, [22224] = 0x7CF6, [22225] = 0x7E9A, [22230] = 0x7E98,
++  [22231] = 0x7E9B, [22232] = 0x7E99, [22233] = 0x81E0, [22234] = 0x81E1,
++  [22235] = 0x8646, [22236] = 0x8647, [22237] = 0x8648, [22238] = 0x8979,
++  [22239] = 0x897A, [22240] = 0x897C, [22241] = 0x897B, [22242] = 0x89FF,
++  [22243] = 0x8B98, [22244] = 0x8B99, [22245] = 0x8EA5, [22246] = 0x8EA4,
++  [22247] = 0x8EA3, [22248] = 0x946E, [22249] = 0x946D, [22250] = 0x946F,
++  [22251] = 0x9471, [22252] = 0x9473, [22253] = 0x9749, [22254] = 0x9872,
++  [22255] = 0x995F, [22256] = 0x9C68, [22257] = 0x9C6E, [22258] = 0x9C6D,
++  [22259] = 0x9E0B, [22260] = 0x9E0D, [22261] = 0x9E10, [22262] = 0x9E0F,
++  [22263] = 0x9E12, [22264] = 0x9E11, [22265] = 0x9EA1, [22266] = 0x9EF5,
++  [22267] = 0x9F09, [22268] = 0x9F47, [22269] = 0x9F78, [22270] = 0x9F7B,
++  [22271] = 0x9F7A, [22272] = 0x9F79, [22273] = 0x571E, [22274] = 0x7066,
++  [22275] = 0x7C6F, [22276] = 0x883C, [22277] = 0x8DB2, [22278] = 0x8EA6,
++  [22279] = 0x91C3, [22280] = 0x9474, [22281] = 0x9478, [22282] = 0x9476,
++  [22283] = 0x9475, [22284] = 0x9A60, [22285] = 0x9C74, [22286] = 0x9C73,
++  [22287] = 0x9C71, [22288] = 0x9C75, [22289] = 0x9E14, [22290] = 0x9E13,
++  [22291] = 0x9EF6, [22292] = 0x9F0A, [22327] = 0x9FA4, [22328] = 0x7068,
++  [22329] = 0x7065, [22330] = 0x7CF7, [22331] = 0x866A, [22332] = 0x883E,
++  [22333] = 0x883D, [22334] = 0x883F, [22335] = 0x8B9E, [22336] = 0x8C9C,
++  [22337] = 0x8EA9, [22338] = 0x8EC9, [22339] = 0x974B, [22340] = 0x9873,
++  [22341] = 0x9874, [22342] = 0x98CC, [22343] = 0x9961, [22344] = 0x99AB,
++  [22345] = 0x9A64, [22346] = 0x9A66, [22347] = 0x9A67, [22348] = 0x9B24,
++  [22349] = 0x9E15, [22350] = 0x9E17, [22351] = 0x9F48, [22352] = 0x6207,
++  [22353] = 0x6B1E, [22354] = 0x7227, [22355] = 0x864C, [22356] = 0x8EA8,
++  [22357] = 0x9482, [22358] = 0x9480, [22359] = 0x9481, [22360] = 0x9A69,
++  [22361] = 0x9A68, [22362] = 0x9B2E, [22363] = 0x9E19, [22364] = 0x7229,
++  [22365] = 0x864B, [22366] = 0x8B9F, [22367] = 0x9483, [22368] = 0x9C79,
++  [22369] = 0x9EB7, [22370] = 0x7675, [22371] = 0x9A6B, [22372] = 0x9C7A,
++  [22373] = 0x9E1D, [22374] = 0x7069, [22375] = 0x706A, [22376] = 0x9EA4,
++  [22377] = 0x9F7E, [22378] = 0x9F49, [22379] = 0x9F98, [22380] = 0x7881,
++  [22381] = 0x92B9, [22382] = 0x88CF, [22383] = 0x58BB, [22384] = 0x6052,
++  [22385] = 0x7CA7, [22386] = 0x5AFA, [22387] = 0x2554, [22388] = 0x2566,
++  [22389] = 0x2557, [22390] = 0x2560, [22391] = 0x256C, [22392] = 0x2563,
++  [22393] = 0x255A, [22394] = 0x2569, [22395] = 0x255D, [22396] = 0x2552,
++  [22397] = 0x2564, [22398] = 0x2555, [22399] = 0x255E, [22400] = 0x256A,
++  [22401] = 0x2561, [22402] = 0x2558, [22403] = 0x2567, [22404] = 0x255B,
++  [22405] = 0x2553, [22406] = 0x2565, [22407] = 0x2556, [22408] = 0x255F,
++  [22409] = 0x256B, [22410] = 0x2562, [22411] = 0x2559, [22412] = 0x2568,
++  [22413] = 0x255C, [22414] = 0x2551, [22415] = 0x2550, [22416] = 0x256D,
++  [22417] = 0x256E, [22418] = 0x2570, [22419] = 0x256F, [22420] = 0xFFED,
++  [22425] = 0x20547, [22426] = 0x92DB, [22427] = 0x205DF, [22428] = 0x23FC5,
++  [22429] = 0x854C, [22430] = 0x42B5, [22431] = 0x73EF, [22432] = 0x51B5,
++  [22433] = 0x3649, [22434] = 0x24942, [22435] = 0x289E4, [22436] = 0x9344,
++  [22437] = 0x219DB, [22438] = 0x82EE, [22439] = 0x23CC8, [22440] = 0x783C,
++  [22441] = 0x6744, [22442] = 0x62DF, [22443] = 0x24933, [22444] = 0x289AA,
++  [22445] = 0x202A0, [22446] = 0x26BB3, [22447] = 0x21305, [22448] = 0x4FAB,
++  [22449] = 0x224ED, [22450] = 0x5008, [22451] = 0x26D29, [22452] = 0x27A84,
++  [22453] = 0x23600, [22454] = 0x24AB1, [22455] = 0x22513, [22457] = 0x2037E,
++  [22458] = 0x5FA4, [22459] = 0x20380, [22460] = 0x20347, [22461] = 0x6EDB,
++  [22462] = 0x2041F, [22464] = 0x5101, [22465] = 0x347A, [22466] = 0x510E,
++  [22467] = 0x986C, [22468] = 0x3743, [22469] = 0x8416, [22470] = 0x249A4,
++  [22471] = 0x20487, [22472] = 0x5160, [22473] = 0x233B4, [22474] = 0x516A,
++  [22475] = 0x20BFF, [22476] = 0x220FC, [22477] = 0x202E5, [22478] = 0x22530,
++  [22479] = 0x2058E, [22480] = 0x23233, [22481] = 0x21983, [22482] = 0x5B82,
++  [22483] = 0x877D, [22484] = 0x205B3, [22485] = 0x23C99, [22486] = 0x51B2,
++  [22487] = 0x51B8, [22522] = 0x9D34, [22523] = 0x51C9, [22524] = 0x51CF,
++  [22525] = 0x51D1, [22526] = 0x3CDC, [22527] = 0x51D3, [22528] = 0x24AA6,
++  [22529] = 0x51B3, [22530] = 0x51E2, [22531] = 0x5342, [22532] = 0x51ED,
++  [22533] = 0x83CD, [22534] = 0x693E, [22535] = 0x2372D, [22536] = 0x5F7B,
++  [22537] = 0x520B, [22538] = 0x5226, [22539] = 0x523C, [22540] = 0x52B5,
++  [22541] = 0x5257, [22542] = 0x5294, [22543] = 0x52B9, [22544] = 0x52C5,
++  [22545] = 0x7C15, [22546] = 0x8542, [22547] = 0x52E0, [22548] = 0x860D,
++  [22549] = 0x26B13, [22551] = 0x28ADE, [22552] = 0x5549, [22553] = 0x6ED9,
++  [22554] = 0x23F80, [22555] = 0x20954, [22556] = 0x23FEC, [22557] = 0x5333,
++  [22559] = 0x20BE2, [22560] = 0x6CCB, [22561] = 0x21726, [22562] = 0x681B,
++  [22563] = 0x73D5, [22564] = 0x604A, [22565] = 0x3EAA, [22566] = 0x38CC,
++  [22567] = 0x216E8, [22568] = 0x71DD, [22569] = 0x44A2, [22570] = 0x536D,
++  [22571] = 0x5374, [22572] = 0x286AB, [22573] = 0x537E, [22575] = 0x21596,
++  [22576] = 0x21613, [22577] = 0x77E6, [22578] = 0x5393, [22579] = 0x28A9B,
++  [22580] = 0x53A0, [22581] = 0x53AB, [22582] = 0x53AE, [22583] = 0x73A7,
++  [22584] = 0x25772, [22585] = 0x3F59, [22586] = 0x739C, [22587] = 0x53C1,
++  [22588] = 0x53C5, [22589] = 0x6C49, [22590] = 0x4E49, [22591] = 0x57FE,
++  [22592] = 0x53D9, [22593] = 0x3AAB, [22594] = 0x20B8F, [22595] = 0x53E0,
++  [22596] = 0x23FEB, [22597] = 0x22DA3, [22598] = 0x53F6, [22599] = 0x20C77,
++  [22600] = 0x5413, [22601] = 0x7079, [22602] = 0x552B, [22603] = 0x6657,
++  [22604] = 0x6D5B, [22605] = 0x546D, [22606] = 0x26B53, [22607] = 0x20D74,
++  [22608] = 0x555D, [22609] = 0x548F, [22610] = 0x54A4, [22611] = 0x47A6,
++  [22612] = 0x2170D, [22613] = 0x20EDD, [22614] = 0x3DB4, [22615] = 0x20D4D,
++  [22620] = 0x289BC, [22621] = 0x22698, [22622] = 0x5547, [22623] = 0x4CED,
++  [22624] = 0x542F, [22625] = 0x7417, [22626] = 0x5586, [22627] = 0x55A9,
++  [22629] = 0x218D7, [22630] = 0x2403A, [22631] = 0x4552, [22632] = 0x24435,
++  [22633] = 0x66B3, [22634] = 0x210B4, [22635] = 0x5637, [22636] = 0x66CD,
++  [22637] = 0x2328A, [22638] = 0x66A4, [22639] = 0x66AD, [22640] = 0x564D,
++  [22641] = 0x564F, [22642] = 0x78F1, [22643] = 0x56F1, [22644] = 0x9787,
++  [22645] = 0x53FE, [22646] = 0x5700, [22647] = 0x56EF, [22648] = 0x56ED,
++  [22649] = 0x28B66, [22650] = 0x3623, [22651] = 0x2124F, [22652] = 0x5746,
++  [22653] = 0x241A5, [22654] = 0x6C6E, [22655] = 0x708B, [22656] = 0x5742,
++  [22657] = 0x36B1, [22658] = 0x26C7E, [22659] = 0x57E6, [22660] = 0x21416,
++  [22661] = 0x5803, [22662] = 0x21454, [22663] = 0x24363, [22664] = 0x5826,
++  [22665] = 0x24BF5, [22666] = 0x585C, [22667] = 0x58AA, [22668] = 0x3561,
++  [22669] = 0x58E0, [22670] = 0x58DC, [22671] = 0x2123C, [22672] = 0x58FB,
++  [22673] = 0x5BFF, [22674] = 0x5743, [22675] = 0x2A150, [22676] = 0x24278,
++  [22677] = 0x93D3, [22678] = 0x35A1, [22679] = 0x591F, [22680] = 0x68A6,
++  [22681] = 0x36C3, [22682] = 0x6E59, [22717] = 0x2163E, [22718] = 0x5A24,
++  [22719] = 0x5553, [22720] = 0x21692, [22721] = 0x8505, [22722] = 0x59C9,
++  [22723] = 0x20D4E, [22724] = 0x26C81, [22725] = 0x26D2A, [22726] = 0x217DC,
++  [22727] = 0x59D9, [22728] = 0x217FB, [22729] = 0x217B2, [22730] = 0x26DA6,
++  [22731] = 0x6D71, [22732] = 0x21828, [22733] = 0x216D5, [22734] = 0x59F9,
++  [22735] = 0x26E45, [22736] = 0x5AAB, [22737] = 0x5A63, [22738] = 0x36E6,
++  [22739] = 0x249A9, [22741] = 0x3708, [22742] = 0x5A96, [22743] = 0x7465,
++  [22744] = 0x5AD3, [22745] = 0x26FA1, [22746] = 0x22554, [22747] = 0x3D85,
++  [22748] = 0x21911, [22749] = 0x3732, [22750] = 0x216B8, [22751] = 0x5E83,
++  [22752] = 0x52D0, [22753] = 0x5B76, [22754] = 0x6588, [22755] = 0x5B7C,
++  [22756] = 0x27A0E, [22757] = 0x4004, [22758] = 0x485D, [22759] = 0x20204,
++  [22760] = 0x5BD5, [22761] = 0x6160, [22762] = 0x21A34, [22763] = 0x259CC,
++  [22764] = 0x205A5, [22765] = 0x5BF3, [22766] = 0x5B9D, [22767] = 0x4D10,
++  [22768] = 0x5C05, [22769] = 0x21B44, [22770] = 0x5C13, [22771] = 0x73CE,
++  [22772] = 0x5C14, [22773] = 0x21CA5, [22774] = 0x26B28, [22775] = 0x5C49,
++  [22776] = 0x48DD, [22777] = 0x5C85, [22778] = 0x5CE9, [22779] = 0x5CEF,
++  [22780] = 0x5D8B, [22781] = 0x21DF9, [22782] = 0x21E37, [22783] = 0x5D10,
++  [22784] = 0x5D18, [22785] = 0x5D46, [22786] = 0x21EA4, [22787] = 0x5CBA,
++  [22788] = 0x5DD7, [22789] = 0x82FC, [22790] = 0x382D, [22791] = 0x24901,
++  [22792] = 0x22049, [22793] = 0x22173, [22794] = 0x8287, [22795] = 0x3836,
++  [22796] = 0x3BC2, [22797] = 0x5E2E, [22798] = 0x6A8A, [22800] = 0x5E7A,
++  [22801] = 0x244BC, [22802] = 0x20CD3, [22803] = 0x53A6, [22804] = 0x4EB7,
++  [22806] = 0x53A8, [22807] = 0x21771, [22808] = 0x5E09, [22809] = 0x5EF4,
++  [22810] = 0x28482, [22815] = 0x5EF9, [22816] = 0x5EFB, [22817] = 0x38A0,
++  [22818] = 0x5EFC, [22819] = 0x683E, [22820] = 0x941B, [22821] = 0x5F0D,
++  [22822] = 0x201C1, [22823] = 0x2F894, [22824] = 0x3ADE, [22825] = 0x48AE,
++  [22826] = 0x2133A, [22827] = 0x5F3A, [22828] = 0x26888, [22829] = 0x223D0,
++  [22831] = 0x22471, [22832] = 0x5F63, [22833] = 0x97BD, [22834] = 0x26E6E,
++  [22835] = 0x5F72, [22836] = 0x9340, [22837] = 0x28A36, [22838] = 0x5FA7,
++  [22839] = 0x5DB6, [22840] = 0x3D5F, [22841] = 0x25250, [22842] = 0x21F6A,
++  [22843] = 0x270F8, [22844] = 0x22668, [22845] = 0x91D6, [22846] = 0x2029E,
++  [22847] = 0x28A29, [22848] = 0x6031, [22849] = 0x6685, [22850] = 0x21877,
++  [22851] = 0x3963, [22852] = 0x3DC7, [22853] = 0x3639, [22854] = 0x5790,
++  [22855] = 0x227B4, [22856] = 0x7971, [22857] = 0x3E40, [22858] = 0x609E,
++  [22860] = 0x60B3, [22861] = 0x24982, [22862] = 0x2498F, [22863] = 0x27A53,
++  [22864] = 0x74A4, [22865] = 0x50E1, [22866] = 0x5AA0, [22867] = 0x6164,
++  [22868] = 0x8424, [22869] = 0x6142, [22870] = 0x2F8A6, [22871] = 0x26ED2,
++  [22872] = 0x6181, [22873] = 0x51F4, [22874] = 0x20656, [22875] = 0x6187,
++  [22876] = 0x5BAA, [22877] = 0x23FB7, [22912] = 0x2285F, [22913] = 0x61D3,
++  [22914] = 0x28B9D, [22915] = 0x2995D, [22916] = 0x61D0, [22917] = 0x3932,
++  [22918] = 0x22980, [22919] = 0x228C1, [22920] = 0x6023, [22921] = 0x615C,
++  [22922] = 0x651E, [22923] = 0x638B, [22924] = 0x20118, [22925] = 0x62C5,
++  [22926] = 0x21770, [22927] = 0x62D5, [22928] = 0x22E0D, [22929] = 0x636C,
++  [22930] = 0x249DF, [22931] = 0x3A17, [22932] = 0x6438, [22933] = 0x63F8,
++  [22934] = 0x2138E, [22935] = 0x217FC, [22937] = 0x6F8A, [22938] = 0x22E36,
++  [22939] = 0x9814, [22940] = 0x2408C, [22941] = 0x2571D, [22942] = 0x64E1,
++  [22943] = 0x64E5, [22944] = 0x947B, [22945] = 0x3A66, [22946] = 0x643A,
++  [22947] = 0x3A57, [22948] = 0x654D, [22949] = 0x6F16, [22950] = 0x24A28,
++  [22951] = 0x24A23, [22952] = 0x6585, [22953] = 0x656D, [22954] = 0x655F,
++  [22955] = 0x2307E, [22956] = 0x65B5, [22957] = 0x24940, [22958] = 0x4B37,
++  [22959] = 0x65D1, [22960] = 0x40D8, [22961] = 0x21829, [22962] = 0x65E0,
++  [22963] = 0x65E3, [22964] = 0x5FDF, [22965] = 0x23400, [22966] = 0x6618,
++  [22967] = 0x231F7, [22968] = 0x231F8, [22969] = 0x6644, [22970] = 0x231A4,
++  [22971] = 0x231A5, [22972] = 0x664B, [22973] = 0x20E75, [22974] = 0x6667,
++  [22975] = 0x251E6, [22976] = 0x6673, [22978] = 0x21E3D, [22979] = 0x23231,
++  [22980] = 0x285F4, [22981] = 0x231C8, [22982] = 0x25313, [22983] = 0x77C5,
++  [22984] = 0x228F7, [22985] = 0x99A4, [22986] = 0x6702, [22987] = 0x2439C,
++  [22988] = 0x24A21, [22989] = 0x3B2B, [22990] = 0x69FA, [22991] = 0x237C2,
++  [22993] = 0x6767, [22994] = 0x6762, [22995] = 0x241CD, [22996] = 0x290ED,
++  [22997] = 0x67D7, [22998] = 0x44E9, [22999] = 0x6822, [23000] = 0x6E50,
++  [23001] = 0x923C, [23002] = 0x6801, [23003] = 0x233E6, [23004] = 0x26DA0,
++  [23005] = 0x685D, [23010] = 0x2346F, [23011] = 0x69E1, [23012] = 0x6A0B,
++  [23013] = 0x28ADF, [23014] = 0x6973, [23015] = 0x68C3, [23016] = 0x235CD,
++  [23017] = 0x6901, [23018] = 0x6900, [23019] = 0x3D32, [23020] = 0x3A01,
++  [23021] = 0x2363C, [23022] = 0x3B80, [23023] = 0x67AC, [23024] = 0x6961,
++  [23025] = 0x28A4A, [23026] = 0x42FC, [23027] = 0x6936, [23028] = 0x6998,
++  [23029] = 0x3BA1, [23030] = 0x203C9, [23031] = 0x8363, [23032] = 0x5090,
++  [23033] = 0x69F9, [23034] = 0x23659, [23035] = 0x2212A, [23036] = 0x6A45,
++  [23037] = 0x23703, [23038] = 0x6A9D, [23039] = 0x3BF3, [23040] = 0x67B1,
++  [23041] = 0x6AC8, [23042] = 0x2919C, [23043] = 0x3C0D, [23044] = 0x6B1D,
++  [23045] = 0x20923, [23046] = 0x60DE, [23047] = 0x6B35, [23048] = 0x6B74,
++  [23049] = 0x227CD, [23050] = 0x6EB5, [23051] = 0x23ADB, [23052] = 0x203B5,
++  [23053] = 0x21958, [23054] = 0x3740, [23055] = 0x5421, [23056] = 0x23B5A,
++  [23057] = 0x6BE1, [23058] = 0x23EFC, [23059] = 0x6BDC, [23060] = 0x6C37,
++  [23061] = 0x2248B, [23062] = 0x248F1, [23063] = 0x26B51, [23064] = 0x6C5A,
++  [23065] = 0x8226, [23066] = 0x6C79, [23067] = 0x23DBC, [23068] = 0x44C5,
++  [23069] = 0x23DBD, [23070] = 0x241A4, [23071] = 0x2490C, [23072] = 0x24900,
++  [23107] = 0x23CC9, [23108] = 0x36E5, [23109] = 0x3CEB, [23110] = 0x20D32,
++  [23111] = 0x9B83, [23112] = 0x231F9, [23113] = 0x22491, [23114] = 0x7F8F,
++  [23115] = 0x6837, [23116] = 0x26D25, [23117] = 0x26DA1, [23118] = 0x26DEB,
++  [23119] = 0x6D96, [23120] = 0x6D5C, [23121] = 0x6E7C, [23122] = 0x6F04,
++  [23123] = 0x2497F, [23124] = 0x24085, [23125] = 0x26E72, [23126] = 0x8533,
++  [23127] = 0x26F74, [23128] = 0x51C7, [23131] = 0x842E, [23132] = 0x28B21,
++  [23134] = 0x23E2F, [23135] = 0x7453, [23136] = 0x23F82, [23137] = 0x79CC,
++  [23138] = 0x6E4F, [23139] = 0x5A91, [23140] = 0x2304B, [23141] = 0x6FF8,
++  [23142] = 0x370D, [23143] = 0x6F9D, [23144] = 0x23E30, [23145] = 0x6EFA,
++  [23146] = 0x21497, [23147] = 0x2403D, [23148] = 0x4555, [23149] = 0x93F0,
++  [23150] = 0x6F44, [23151] = 0x6F5C, [23152] = 0x3D4E, [23153] = 0x6F74,
++  [23154] = 0x29170, [23155] = 0x3D3B, [23156] = 0x6F9F, [23157] = 0x24144,
++  [23158] = 0x6FD3, [23159] = 0x24091, [23160] = 0x24155, [23161] = 0x24039,
++  [23162] = 0x23FF0, [23163] = 0x23FB4, [23164] = 0x2413F, [23165] = 0x51DF,
++  [23166] = 0x24156, [23167] = 0x24157, [23168] = 0x24140, [23169] = 0x261DD,
++  [23170] = 0x704B, [23171] = 0x707E, [23172] = 0x70A7, [23173] = 0x7081,
++  [23174] = 0x70CC, [23175] = 0x70D5, [23176] = 0x70D6, [23177] = 0x70DF,
++  [23178] = 0x4104, [23179] = 0x3DE8, [23180] = 0x71B4, [23181] = 0x7196,
++  [23182] = 0x24277, [23183] = 0x712B, [23184] = 0x7145, [23185] = 0x5A88,
++  [23186] = 0x714A, [23188] = 0x5C9C, [23189] = 0x24365, [23190] = 0x714F,
++  [23191] = 0x9362, [23192] = 0x242C1, [23193] = 0x712C, [23194] = 0x2445A,
++  [23195] = 0x24A27, [23196] = 0x24A22, [23197] = 0x71BA, [23198] = 0x28BE8,
++  [23199] = 0x70BD, [23200] = 0x720E, [23205] = 0x9442, [23206] = 0x7215,
++  [23207] = 0x5911, [23208] = 0x9443, [23209] = 0x7224, [23210] = 0x9341,
++  [23211] = 0x25605, [23212] = 0x722E, [23213] = 0x7240, [23214] = 0x24974,
++  [23215] = 0x68BD, [23216] = 0x7255, [23217] = 0x7257, [23218] = 0x3E55,
++  [23219] = 0x23044, [23220] = 0x680D, [23221] = 0x6F3D, [23222] = 0x7282,
++  [23224] = 0x732B, [23225] = 0x24823, [23226] = 0x2882B, [23227] = 0x48ED,
++  [23228] = 0x28804, [23229] = 0x7328, [23230] = 0x732E, [23231] = 0x73CF,
++  [23232] = 0x73AA, [23233] = 0x20C3A, [23234] = 0x26A2E, [23235] = 0x73C9,
++  [23236] = 0x7449, [23237] = 0x241E2, [23238] = 0x216E7, [23239] = 0x24A24,
++  [23240] = 0x6623, [23241] = 0x36C5, [23242] = 0x249B7, [23243] = 0x2498D,
++  [23244] = 0x249FB, [23245] = 0x73F7, [23246] = 0x7415, [23247] = 0x6903,
++  [23248] = 0x24A26, [23249] = 0x7439, [23250] = 0x205C3, [23251] = 0x3ED7,
++  [23253] = 0x228AD, [23254] = 0x7460, [23255] = 0x28EB2, [23256] = 0x7447,
++  [23257] = 0x73E4, [23258] = 0x7476, [23259] = 0x83B9, [23260] = 0x746C,
++  [23261] = 0x3730, [23262] = 0x7474, [23263] = 0x93F1, [23264] = 0x6A2C,
++  [23265] = 0x7482, [23266] = 0x4953, [23267] = 0x24A8C, [23302] = 0x2415F,
++  [23303] = 0x24A79, [23304] = 0x28B8F, [23305] = 0x5B46, [23306] = 0x28C03,
++  [23307] = 0x2189E, [23308] = 0x74C8, [23309] = 0x21988, [23310] = 0x750E,
++  [23312] = 0x751E, [23313] = 0x28ED9, [23314] = 0x21A4B, [23315] = 0x5BD7,
++  [23316] = 0x28EAC, [23317] = 0x9385, [23318] = 0x754D, [23319] = 0x754A,
++  [23320] = 0x7567, [23321] = 0x756E, [23322] = 0x24F82, [23323] = 0x3F04,
++  [23324] = 0x24D13, [23325] = 0x758E, [23326] = 0x745D, [23327] = 0x759E,
++  [23328] = 0x75B4, [23329] = 0x7602, [23330] = 0x762C, [23331] = 0x7651,
++  [23332] = 0x764F, [23333] = 0x766F, [23334] = 0x7676, [23335] = 0x263F5,
++  [23336] = 0x7690, [23337] = 0x81EF, [23338] = 0x37F8, [23339] = 0x26911,
++  [23340] = 0x2690E, [23341] = 0x76A1, [23342] = 0x76A5, [23343] = 0x76B7,
++  [23344] = 0x76CC, [23345] = 0x26F9F, [23346] = 0x8462, [23347] = 0x2509D,
++  [23348] = 0x2517D, [23349] = 0x21E1C, [23350] = 0x771E, [23351] = 0x7726,
++  [23352] = 0x7740, [23353] = 0x64AF, [23354] = 0x25220, [23355] = 0x7758,
++  [23356] = 0x232AC, [23357] = 0x77AF, [23358] = 0x28964, [23359] = 0x28968,
++  [23360] = 0x216C1, [23361] = 0x77F4, [23363] = 0x21376, [23364] = 0x24A12,
++  [23365] = 0x68CA, [23366] = 0x78AF, [23367] = 0x78C7, [23368] = 0x78D3,
++  [23369] = 0x96A5, [23370] = 0x792E, [23371] = 0x255E0, [23372] = 0x78D7,
++  [23373] = 0x7934, [23374] = 0x78B1, [23375] = 0x2760C, [23376] = 0x8FB8,
++  [23377] = 0x8884, [23378] = 0x28B2B, [23379] = 0x26083, [23380] = 0x2261C,
++  [23381] = 0x7986, [23382] = 0x8900, [23383] = 0x6902, [23384] = 0x7980,
++  [23385] = 0x25857, [23386] = 0x799D, [23387] = 0x27B39, [23388] = 0x793C,
++  [23389] = 0x79A9, [23390] = 0x6E2A, [23391] = 0x27126, [23392] = 0x3EA8,
++  [23393] = 0x79C6, [23394] = 0x2910D, [23395] = 0x79D4
+ };
+ 
+ 
+@@ -4636,7 +4711,7 @@ static const uint32_t big5hkscs_to_ucs[] =
+    }
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+-static const char from_ucs4[][2] =
++static const unsigned char from_ucs4[][2] =
+ {
+   /* 0x00a2 */ "\xa2\x46", "\xa2\x47", "\x00\x00", "\xa2\x44", "\x00\x00",
+   /* 0x00a7 */ "\xa1\xb1", "\xc6\xd8", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -4895,6 +4970,8 @@ static const char from_ucs4[][2] =
+   /* 0x22b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xa1\xe9",
+ 
++  /* 0x23da */ "\x88\xa9", "\x88\xaa",
++
+   /* 0x2460 */ "\xc6\xa1", "\xc6\xa2", "\xc6\xa3", "\xc6\xa4", "\xc6\xa5",
+   /* 0x2465 */ "\xc6\xa6", "\xc6\xa7", "\xc6\xa8", "\xc6\xa9", "\xc6\xaa",
+   /* 0x2469 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5068,29 +5145,52 @@ static const char from_ucs4[][2] =
+   /* 0x3122 */ "\xa3\xb3", "\xa3\xb4", "\xa3\xb5", "\xa3\xb6", "\xa3\xb7",
+   /* 0x3127 */ "\xa3\xb8", "\xa3\xb9", "\xa3\xba",
+ 
+-  /* 0x3231 */ "\xc8\xd1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3235 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x323a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x323f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3244 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3249 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x324e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3253 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3258 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x325d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3262 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3267 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x326c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3271 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3276 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x327b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3280 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3285 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x328a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x328f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3294 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3299 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x329e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xa1\xc0",
++  /* 0x31c0 */ "\x88\x40", "\x88\x41", "\x88\x42", "\x88\x43", "\x88\x44",
++  /* 0x31c5 */ "\x88\x46", "\x88\x49", "\x88\x4a", "\x88\x4d", "\x88\x4f",
++  /* 0x31ca */ "\x88\x50", "\x88\x51", "\x88\x52", "\x88\x54", "\x88\x55",
++  /* 0x31cf */ "\xc8\x79", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x31d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x31d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x31dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x31e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x31e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x31ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x31f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x31f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x31fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3200 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3205 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x320a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x320f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3214 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3219 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x321e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3223 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3228 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x322d */ "\x00\x00", "\x00\x00", "\x00\x00", "\xc8\xd1", "\x00\x00",
++  /* 0x3232 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3237 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x323c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3241 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3246 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x324b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3250 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3255 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x325a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x325f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3264 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3269 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x326e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3273 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3278 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x327d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3282 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3287 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x328c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3291 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3296 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x329b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x32a0 */ "\x00\x00", "\x00\x00", "\xa1\xc0",
+ 
+   /* 0x338e */ "\xa2\x55", "\xa2\x56", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3392 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5129,7 +5229,7 @@ static const char from_ucs4[][2] =
+   /* 0x3437 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x343c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xdf", "\x00\x00",
+   /* 0x3441 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3446 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3446 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xf4", "\x00\x00",
+   /* 0x344c */ "\x89\xd5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3450 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3455 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5160,7 +5260,7 @@ static const char from_ucs4[][2] =
+   /* 0x34d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x34d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x34dc */ "\x00\x00", "\x00\x00", "\x9e\x53", "\x00\x00", "\x00\x00",
+-  /* 0x34e1 */ "\x00\x00", "\x00\x00", "\x9d\xaa", "\x00\x00", "\x00\x00",
++  /* 0x34e1 */ "\x00\x00", "\x00\x00", "\x9d\xaa", "\x00\x00", "\x87\xbe",
+   /* 0x34e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x34eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x34f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5183,7 +5283,7 @@ static const char from_ucs4[][2] =
+   /* 0x3545 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x354a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x354f */ "\x00\x00", "\x89\xe8", "\x00\x00", "\x89\xea", "\x00\x00",
+-  /* 0x3554 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3554 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x4b",
+   /* 0x3559 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x355e */ "\x00\x00", "\x00\x00", "\xfb\x70", "\x00\x00", "\x00\x00",
+   /* 0x3563 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5224,7 +5324,7 @@ static const char from_ucs4[][2] =
+   /* 0x3612 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3618 */ "\x9c\x5c", "\x00\x00", "\x8b\xb1", "\x00\x00", "\x00\x00",
+   /* 0x361c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3621 */ "\x00\x00", "\xfb\x5e", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3621 */ "\x00\x00", "\xfb\x5e", "\x00\x00", "\x87\x70", "\x00\x00",
+   /* 0x3626 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x362b */ "\x00\x00", "\x9d\xf3", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3630 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\xd0",
+@@ -5236,7 +5336,7 @@ static const char from_ucs4[][2] =
+   /* 0x364e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3653 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3658 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x365d */ "\x00\x00", "\x9c\x6f", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x365d */ "\x00\x00", "\x9c\x6f", "\x00\x00", "\x8d\x5c", "\x00\x00",
+   /* 0x3662 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3667 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x366c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5311,7 +5411,7 @@ static const char from_ucs4[][2] =
+   /* 0x37c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x37ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x37cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x37d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x37d4 */ "\x00\x00", "\x8d\x4b", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x37d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x37de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x37e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5343,7 +5443,7 @@ static const char from_ucs4[][2] =
+   /* 0x3865 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x386a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x386f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3874 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3875 */ "\x87\x7a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3879 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x387e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3883 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5362,7 +5462,7 @@ static const char from_ucs4[][2] =
+   /* 0x38c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x38c9 */ "\x00\x00", "\x00\x00", "\xfa\xcd", "\x00\x00", "\x00\x00",
+   /* 0x38ce */ "\x00\x00", "\x00\x00", "\x93\xdd", "\x00\x00", "\x00\x00",
+-  /* 0x38d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x38d4 */ "\x8d\x52", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x38d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x38dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x38e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5394,7 +5494,7 @@ static const char from_ucs4[][2] =
+   /* 0x3964 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3969 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x396e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3973 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3973 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xf3",
+   /* 0x3978 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x397d */ "\x00\x00", "\x00\x00", "\x90\x60", "\x00\x00", "\x00\x00",
+   /* 0x3982 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5471,7 +5571,7 @@ static const char from_ucs4[][2] =
+   /* 0x3ae5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3aea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3af0 */ "\x90\x6f", "\x00\x00", "\x8d\xb0", "\x00\x00", "\x00\x00",
+-  /* 0x3af4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3af5 */ "\x87\xa2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3af9 */ "\x00\x00", "\x94\x7e", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3afe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3b03 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5503,7 +5603,7 @@ static const char from_ucs4[][2] =
+   /* 0x3b85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3b8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3b8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3b94 */ "\x00\x00", "\x93\xe4", "\x00\x00", "\x00\x00", "\x93\xe0",
++  /* 0x3b95 */ "\x87\x4b", "\x93\xe4", "\x00\x00", "\x00\x00", "\x93\xe0",
+   /* 0x3b99 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3b9e */ "\x00\x00", "\x00\x00", "\xfd\x53", "\x00\x00", "\x00\x00",
+   /* 0x3ba3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5552,7 +5652,7 @@ static const char from_ucs4[][2] =
+   /* 0x3c7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3c7f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3c84 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3c89 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3c89 */ "\x00\x00", "\x8c\x56", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3c8e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3c93 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3c98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5579,7 +5679,7 @@ static const char from_ucs4[][2] =
+   /* 0x3d01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3d06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3d0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3d10 */ "\x00\x00", "\x00\x00", "\x8e\xaf", "\x00\x00", "\x00\x00",
++  /* 0x3d10 */ "\x00\x00", "\x8c\xea", "\x8e\xaf", "\x00\x00", "\x00\x00",
+   /* 0x3d15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3d1a */ "\x00\x00", "\x00\x00", "\x91\xb5", "\x00\x00", "\x00\x00",
+   /* 0x3d1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5602,7 +5702,7 @@ static const char from_ucs4[][2] =
+   /* 0x3d75 */ "\x8d\xf0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3d79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xa6", "\x00\x00",
+   /* 0x3d7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3d83 */ "\x00\x00", "\xfb\xbf", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3d83 */ "\x00\x00", "\xfb\xbf", "\x00\x00", "\x00\x00", "\x8c\xdf",
+   /* 0x3d88 */ "\x00\x00", "\x8d\xf3", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3d8d */ "\x00\x00", "\x94\x49", "\x00\x00", "\x8d\xf5", "\x00\x00",
+   /* 0x3d92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5615,7 +5715,7 @@ static const char from_ucs4[][2] =
+   /* 0x3db5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3dba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\x50",
+   /* 0x3dbf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3dc4 */ "\x00\x00", "\x9d\xcc", "\xfc\x65", "\x00\x00", "\x00\x00",
++  /* 0x3dc4 */ "\x00\x00", "\x9d\xcc", "\xfc\x65", "\x00\x00", "\x8c\x44",
+   /* 0x3dc9 */ "\x00\x00", "\x00\x00", "\x99\x6e", "\x94\xa1", "\x00\x00",
+   /* 0x3dce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\x63",
+   /* 0x3dd3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5624,7 +5724,7 @@ static const char from_ucs4[][2] =
+   /* 0x3de2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x53",
+   /* 0x3de8 */ "\xfd\xe9", "\x00\x00", "\x00\x00", "\x9d\xb5", "\x00\x00",
+   /* 0x3dec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3df1 */ "\x00\x00", "\x98\x79", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3df1 */ "\x00\x00", "\x98\x79", "\x87\x6a", "\x00\x00", "\x00\x00",
+   /* 0x3df7 */ "\x9d\x5d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3dfc */ "\x8d\x63", "\x96\x69", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3e00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5670,16 +5770,16 @@ static const char from_ucs4[][2] =
+   /* 0x3ec8 */ "\x00\x00", "\x98\xc3", "\x00\x00", "\x95\xf6", "\x00\x00",
+   /* 0x3ecd */ "\x00\x00", "\x00\x00", "\x8f\xfd", "\x98\xc5", "\x00\x00",
+   /* 0x3ed2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\x66", "\xfe\x6e",
+-  /* 0x3ed7 */ "\x00\x00", "\x00\x00", "\x97\xdd", "\x00\x00", "\x00\x00",
++  /* 0x3ed7 */ "\x00\x00", "\x00\x00", "\x97\xdd", "\x8c\xaa", "\x00\x00",
+   /* 0x3edc */ "\x00\x00", "\x92\xd2", "\x00\x00", "\x00\x00", "\x97\x61",
+   /* 0x3ee2 */ "\x98\xcb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3ee7 */ "\x95\xf0", "\x00\x00", "\x97\x5d", "\x00\x00", "\x91\xe3",
+-  /* 0x3eeb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xcc",
++  /* 0x3eec */ "\x87\x7e", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xcc",
+   /* 0x3ef0 */ "\x00\x00", "\x00\x00", "\x94\x69", "\x98\xcd", "\x00\x00",
+   /* 0x3ef5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xce",
+   /* 0x3efa */ "\x00\x00", "\x95\xfc", "\x00\x00", "\x00\x00", "\x94\xa3",
+   /* 0x3f00 */ "\x96\x62", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xb6",
+-  /* 0x3f04 */ "\x00\x00", "\x94\x63", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3f04 */ "\x00\x00", "\x94\x63", "\x8d\x47", "\x00\x00", "\x00\x00",
+   /* 0x3f09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xd0",
+   /* 0x3f0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3f13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5718,7 +5818,7 @@ static const char from_ucs4[][2] =
+   /* 0x3fb8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3fbd */ "\x00\x00", "\x00\x00", "\x98\xd9", "\x00\x00", "\x00\x00",
+   /* 0x3fc2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x3fc7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x3fc8 */ "\x8d\x5a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3fcc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3fd1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3fd7 */ "\x98\xdb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5731,7 +5831,7 @@ static const char from_ucs4[][2] =
+   /* 0x3ffa */ "\x8a\xae", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x3ffe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4004 */ "\xfb\xc9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4008 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4009 */ "\x8c\x5d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x400d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4012 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4017 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5751,7 +5851,7 @@ static const char from_ucs4[][2] =
+   /* 0x405d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xdf",
+   /* 0x4062 */ "\x00\x00", "\x00\x00", "\xa0\xac", "\x00\x00", "\x00\x00",
+   /* 0x4067 */ "\x00\x00", "\x00\x00", "\x98\xeb", "\x00\x00", "\x00\x00",
+-  /* 0x406c */ "\x00\x00", "\x00\x00", "\x98\xec", "\x00\x00", "\x00\x00",
++  /* 0x406c */ "\x00\x00", "\x00\x00", "\x98\xec", "\x00\x00", "\x8c\xc3",
+   /* 0x4071 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4076 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x407b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5765,7 +5865,7 @@ static const char from_ucs4[][2] =
+   /* 0x40a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xf4",
+   /* 0x40a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x40ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x40b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x40b2 */ "\x00\x00", "\x87\xd9", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x40b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xb8", "\x00\x00",
+   /* 0x40bc */ "\x00\x00", "\x00\x00", "\x9e\xe7", "\x00\x00", "\x00\x00",
+   /* 0x40c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5778,9 +5878,9 @@ static const char from_ucs4[][2] =
+   /* 0x40e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x40e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x40ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x40f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x40f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x4a",
+   /* 0x40f8 */ "\x00\x00", "\x9e\x7e", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x40fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x40fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x44",
+   /* 0x4103 */ "\x98\xfe", "\xfd\xe8", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4107 */ "\x00\x00", "\x99\x40", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x410c */ "\x00\x00", "\x94\xc9", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5790,7 +5890,7 @@ static const char from_ucs4[][2] =
+   /* 0x4120 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4125 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x412a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x412f */ "\x00\x00", "\x00\x00", "\x94\xd3", "\x00\x00", "\x00\x00",
++  /* 0x412f */ "\x00\x00", "\x87\xc6", "\x94\xd3", "\x00\x00", "\x00\x00",
+   /* 0x4134 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4139 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x413e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5805,8 +5905,8 @@ static const char from_ucs4[][2] =
+   /* 0x416c */ "\x90\xc0", "\x00\x00", "\x94\xd1", "\x00\x00", "\x00\x00",
+   /* 0x4170 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4175 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x417a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x73",
+-  /* 0x417f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x417a */ "\x00\x00", "\x8d\x4e", "\x00\x00", "\x00\x00", "\x95\x73",
++  /* 0x417f */ "\x00\x00", "\x87\xce", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4184 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4189 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x418e */ "\x00\x00", "\x93\xc2", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5827,7 +5927,7 @@ static const char from_ucs4[][2] =
+   /* 0x41d9 */ "\x00\x00", "\x8e\xfe", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x41de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x41e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x41e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x41e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x5f",
+   /* 0x41ed */ "\x00\x00", "\x8e\x59", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x41f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x41f7 */ "\x00\x00", "\x94\xec", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5838,7 +5938,7 @@ static const char from_ucs4[][2] =
+   /* 0x4211 */ "\x94\xef", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4215 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x421a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x421f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x421f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x60", "\x00\x00",
+   /* 0x4224 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4229 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x422e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5855,7 +5955,7 @@ static const char from_ucs4[][2] =
+   /* 0x4265 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x44",
+   /* 0x426a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x426f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4274 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4274 */ "\x00\x00", "\x8c\xcb", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x427a */ "\x99\x56", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x427e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4283 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5864,7 +5964,7 @@ static const char from_ucs4[][2] =
+   /* 0x4292 */ "\x00\x00", "\x99\x5b", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4297 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x429c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x42a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x42a2 */ "\x8c\xc4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x42a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x42ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x42b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x45",
+@@ -5884,7 +5984,7 @@ static const char from_ucs4[][2] =
+   /* 0x42f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xc9",
+   /* 0x42fc */ "\xfd\x50", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4300 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4305 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4305 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\xaa",
+   /* 0x430a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x430f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4314 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5913,7 +6013,7 @@ static const char from_ucs4[][2] =
+   /* 0x4387 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x438c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4391 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4397 */ "\x99\x67", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4397 */ "\x99\x67", "\x00\x00", "\x00\x00", "\x8c\xe3", "\x00\x00",
+   /* 0x439b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x43a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x43a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5930,7 +6030,7 @@ static const char from_ucs4[][2] =
+   /* 0x43dc */ "\x00\x00", "\x00\x00", "\x9d\x51", "\x00\x00", "\x00\x00",
+   /* 0x43e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x43e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x43eb */ "\x00\x00", "\x99\x73", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x43eb */ "\x00\x00", "\x99\x73", "\x00\x00", "\x00\x00", "\x87\x40",
+   /* 0x43f0 */ "\x00\x00", "\x9d\x4f", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x43f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x43fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -5963,7 +6063,7 @@ static const char from_ucs4[][2] =
+   /* 0x4481 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4486 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x448b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x99\xad", "\x00\x00",
+-  /* 0x4490 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4491 */ "\xc8\x7e", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4495 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x449a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x6e",
+   /* 0x44a0 */ "\x8f\x70", "\x00\x00", "\xfa\xd0", "\x00\x00", "\x00\x00",
+@@ -5971,15 +6071,15 @@ static const char from_ucs4[][2] =
+   /* 0x44a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x44ae */ "\x00\x00", "\x99\xb3", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x44b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\x53", "\x00\x00",
+-  /* 0x44b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x44b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x5e",
+   /* 0x44bd */ "\x00\x00", "\x00\x00", "\x96\x5c", "\x00\x00", "\x00\x00",
+-  /* 0x44c2 */ "\x00\x00", "\x00\x00", "\xfd\x7a", "\x00\x00", "\x00\x00",
++  /* 0x44c3 */ "\x8c\xe0", "\x00\x00", "\xfd\x7a", "\x00\x00", "\x00\x00",
+   /* 0x44c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x44cc */ "\x00\x00", "\x97\xfe", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x44d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x44d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x44db */ "\x00\x00", "\x92\xbd", "\x00\x00", "\x97\xfd", "\x00\x00",
+-  /* 0x44e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\x64", "\x00\x00",
++  /* 0x44db */ "\x00\x00", "\x92\xbd", "\x8d\x5d", "\x97\xfd", "\x00\x00",
++  /* 0x44e1 */ "\x87\xdb", "\x00\x00", "\x00\x00", "\x8f\x64", "\x00\x00",
+   /* 0x44e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xf7", "\x95\x62",
+   /* 0x44eb */ "\x97\xcd", "\x9e\x64", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x44ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x4c",
+@@ -5990,26 +6090,26 @@ static const char from_ucs4[][2] =
+   /* 0x4509 */ "\x9d\xa5", "\x00\x00", "\x8f\x54", "\x00\x00", "\x00\x00",
+   /* 0x450d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4512 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\x7c", "\x00\x00",
+-  /* 0x4517 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4517 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x55", "\x00\x00",
+   /* 0x451d */ "\x8e\xa2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4521 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4527 */ "\x8f\x7a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x452b */ "\x00\x00", "\x00\x00", "\x97\xae", "\x00\x00", "\x00\x00",
+   /* 0x4530 */ "\x00\x00", "\x00\x00", "\x96\xc8", "\x00\x00", "\x00\x00",
+-  /* 0x4535 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4536 */ "\x8c\xe4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x453b */ "\x99\xc3", "\x00\x00", "\x90\xd6", "\x00\x00", "\x9c\xbe",
+   /* 0x453f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\x76", "\x00\x00",
+   /* 0x4544 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4549 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x454e */ "\x00\x00", "\x00\x00", "\x94\x70", "\xfb\x4b", "\x00\x00",
+-  /* 0x4553 */ "\x00\x00", "\xfd\xca", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4553 */ "\x00\x00", "\xfd\xca", "\x00\x00", "\x00\x00", "\x8c\xef",
+   /* 0x4558 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xc7", "\x00\x00",
+-  /* 0x455d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\xf9",
++  /* 0x455d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x54", "\xa0\xf9",
+   /* 0x4562 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4567 */ "\x00\x00", "\x00\x00", "\x8f\xa9", "\x00\x00", "\x00\x00",
+-  /* 0x456c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x456d */ "\x8d\x51", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4571 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4577 */ "\x99\xc7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4577 */ "\x99\xc7", "\x87\x44", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x457b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4580 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xd7",
+   /* 0x4585 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6018,26 +6118,26 @@ static const char from_ucs4[][2] =
+   /* 0x4594 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4599 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x459e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x45a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x45a3 */ "\x00\x00", "\x00\x00", "\x87\x43", "\x00\x00", "\x00\x00",
+   /* 0x45a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x45b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x45b3 */ "\x87\x47", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x45d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x45d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x58",
+   /* 0x45da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xdf",
+-  /* 0x45e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x45ea */ "\x8d\x59", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x45fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4602 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x99\xce", "\x00\x00",
++  /* 0x4603 */ "\x87\x42", "\x00\x00", "\x00\x00", "\x99\xce", "\x00\x00",
+   /* 0x4607 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x460c */ "\x00\x00", "\x00\x00", "\x8f\xba", "\x00\x00", "\x00\x00",
+   /* 0x4611 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xeb", "\x00\x00",
+@@ -6068,12 +6168,12 @@ static const char from_ucs4[][2] =
+   /* 0x468e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4693 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4698 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x469d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x469d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x5d", "\x00\x00",
+   /* 0x46a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x46a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x46ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x46ac */ "\x00\x00", "\x87\xcc", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x46b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x46b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x46b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x45",
+   /* 0x46bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x46c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x46c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6085,7 +6185,7 @@ static const char from_ucs4[][2] =
+   /* 0x46e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x46e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x46ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x46f2 */ "\x00\x00", "\x00\x00", "\x95\xb2", "\x00\x00", "\x00\x00",
++  /* 0x46f2 */ "\x00\x00", "\x00\x00", "\x95\xb2", "\x00\x00", "\x8d\x4c",
+   /* 0x46f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x46fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4701 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6098,12 +6198,12 @@ static const char from_ucs4[][2] =
+   /* 0x4724 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4729 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x472e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4733 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4733 */ "\x00\x00", "\x00\x00", "\x87\x4c", "\x00\x00", "\x00\x00",
+   /* 0x4738 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x473d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4742 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4742 */ "\x00\x00", "\x87\x4d", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4747 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x474c */ "\x00\x00", "\x9e\x7a", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x474c */ "\x00\x00", "\x9e\x7a", "\x87\x57", "\x00\x00", "\x00\x00",
+   /* 0x4751 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4756 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x475b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6124,7 +6224,7 @@ static const char from_ucs4[][2] =
+   /* 0x47a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x47ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x47b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x47b6 */ "\x9e\xe5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x47b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x47ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x47bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x47c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6199,7 +6299,7 @@ static const char from_ucs4[][2] =
+   /* 0x491e */ "\x99\xf8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4922 */ "\x00\x00", "\x00\x00", "\x96\x64", "\x00\x00", "\x00\x00",
+   /* 0x4927 */ "\x00\x00", "\x00\x00", "\x90\x55", "\x00\x00", "\x00\x00",
+-  /* 0x492d */ "\x96\xd4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x492d */ "\x96\xd4", "\x00\x00", "\x87\xc4", "\x87\xae", "\x00\x00",
+   /* 0x4931 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\x7c", "\x00\x00",
+   /* 0x4936 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x493c */ "\x96\x4d", "\x00\x00", "\x97\xe1", "\x00\x00", "\x00\x00",
+@@ -6274,7 +6374,7 @@ static const char from_ucs4[][2] =
+   /* 0x4a94 */ "\x00\x00", "\x97\xc2", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4a99 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4a9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4aa3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4aa4 */ "\x87\x5c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4aa8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4aad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4ab2 */ "\x00\x00", "\x8a\xbb", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6295,10 +6395,10 @@ static const char from_ucs4[][2] =
+   /* 0x4afd */ "\x00\x00", "\x91\x45", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4b02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4b07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4b0c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4b0c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x58", "\x00\x00",
+   /* 0x4b11 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4b16 */ "\x00\x00", "\x00\x00", "\x9a\x63", "\x00\x00", "\x00\x00",
+-  /* 0x4b1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4b1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x49",
+   /* 0x4b20 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4b25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4b2a */ "\x00\x00", "\x8b\xb6", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6353,24 +6453,24 @@ static const char from_ucs4[][2] =
+   /* 0x4c1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c24 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c29 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4c2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4c2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x41", "\x00\x00",
+   /* 0x4c33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c38 */ "\x00\x00", "\x00\x00", "\x9f\xa5", "\x00\x00", "\x00\x00",
+-  /* 0x4c3e */ "\x89\xba", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4c42 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4c3e */ "\x89\xba", "\x00\x00", "\x87\x4f", "\x00\x00", "\x00\x00",
++  /* 0x4c42 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x4e",
+   /* 0x4c47 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c4c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c51 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4c56 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xcd",
++  /* 0x4c57 */ "\x87\x55", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xcd",
+   /* 0x4c5b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c6a */ "\x00\x00", "\x00\x00", "\x9a\x79", "\x00\x00", "\x00\x00",
+   /* 0x4c6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4c74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4c79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xce", "\x00\x00",
+-  /* 0x4c7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4c83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4c74 */ "\x00\x00", "\x00\x00", "\x8c\xf2", "\x00\x00", "\x00\x00",
++  /* 0x4c79 */ "\x00\x00", "\x8d\x57", "\x00\x00", "\x9d\xce", "\x00\x00",
++  /* 0x4c7e */ "\x00\x00", "\x00\x00", "\x8c\xd2", "\x00\x00", "\x00\x00",
++  /* 0x4c83 */ "\x00\x00", "\x87\x59", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4c92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6388,7 +6488,7 @@ static const char from_ucs4[][2] =
+   /* 0x4cce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4cd3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4cd8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4cdd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xee", "\x00\x00",
++  /* 0x4cdd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xee", "\x87\x49",
+   /* 0x4ce2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4ce7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4ced */ "\xfb\x43", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6396,7 +6496,7 @@ static const char from_ucs4[][2] =
+   /* 0x4cf6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4cfb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4d00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4d05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xc9", "\x00\x00",
++  /* 0x4d05 */ "\x00\x00", "\x87\x5b", "\x00\x00", "\x9e\xc9", "\x00\x00",
+   /* 0x4d0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4d10 */ "\xfb\xd3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4d14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6418,11 +6518,11 @@ static const char from_ucs4[][2] =
+   /* 0x4d64 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4d69 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4d6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4d73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4d73 */ "\x00\x00", "\x00\x00", "\x8d\x58", "\x87\x46", "\x00\x00",
+   /* 0x4d78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4d7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4d82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x4d87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x4d87 */ "\x00\x00", "\x8d\x56", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4d8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x78",
+   /* 0x4d91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4d96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6455,7 +6555,7 @@ static const char from_ucs4[][2] =
+   /* 0x4e1e */ "\xa5\xe0", "\xa5\xe1", "\x00\x00", "\x99\x4f", "\x00\x00",
+   /* 0x4e22 */ "\x00\x00", "\x89\xce", "\x00\x00", "\xa8\xc3", "\x00\x00",
+   /* 0x4e28 */ "\x8b\xc0", "\x00\x00", "\x9f\xc4", "\xa4\x58", "\x8b\xd4",
+-  /* 0x4e2d */ "\xa4\xa4", "\xc9\x50", "\x00\x00", "\xa4\xa5", "\xc9\x63",
++  /* 0x4e2d */ "\xa4\xa4", "\xc9\x50", "\x8c\x72", "\xa4\xa5", "\xc9\x63",
+   /* 0x4e32 */ "\xa6\xea", "\xcb\xb1", "\x00\x00", "\x00\x00", "\xc6\xbf",
+   /* 0x4e37 */ "\x8b\xf9", "\xa4\x59", "\xa4\xa6", "\x00\x00", "\xa5\x44",
+   /* 0x4e3c */ "\xc9\x64", "\x89\x46", "\x00\x00", "\xc6\xc0", "\x00\x00",
+@@ -6478,7 +6578,7 @@ static const char from_ucs4[][2] =
+   /* 0x4e91 */ "\xa4\xaa", "\xa4\xac", "\xc9\x51", "\xa4\xad", "\xa4\xab",
+   /* 0x4e95 */ "\x00\x00", "\x00\x00", "\x92\x7e", "\xa5\xe5", "\x9d\xba",
+   /* 0x4e9b */ "\xa8\xc7", "\x00\x00", "\x00\x00", "\xa8\xc8", "\xab\x45",
+-  /* 0x4ea0 */ "\xc6\xc2", "\xa4\x60", "\xa4\xae", "\x00\x00", "\xa5\xe6",
++  /* 0x4ea0 */ "\xc6\xc2", "\xa4\x60", "\xa4\xae", "\x8c\x6f", "\xa5\xe6",
+   /* 0x4ea5 */ "\xa5\xe8", "\xa5\xe7", "\x00\x00", "\xa6\xeb", "\x00\x00",
+   /* 0x4ea9 */ "\x00\x00", "\xa8\xc9", "\xa8\xca", "\xab\x46", "\xab\x47",
+   /* 0x4eae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xad\xbd",
+@@ -6501,7 +6601,7 @@ static const char from_ucs4[][2] =
+   /* 0x4f04 */ "\xc9\xb9", "\xc9\xb6", "\x00\x00", "\x00\x00", "\xc9\xb3",
+   /* 0x4f09 */ "\xa5\xea", "\xa5\xec", "\xa5\xf9", "\x00\x00", "\xa5\xee",
+   /* 0x4f0e */ "\xc9\xab", "\xa5\xf1", "\xa5\xef", "\xa5\xf0", "\xc9\xbb",
+-  /* 0x4f13 */ "\xc9\xb8", "\xc9\xaf", "\xa5\xed", "\x00\x00", "\x00\x00",
++  /* 0x4f13 */ "\xc9\xb8", "\xc9\xaf", "\xa5\xed", "\x00\x00", "\x8c\x73",
+   /* 0x4f18 */ "\xc9\xac", "\xa5\xeb", "\x89\x4e", "\x00\x00", "\x00\x00",
+   /* 0x4f1d */ "\xc9\xb4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4f22 */ "\xc9\xb7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6533,7 +6633,7 @@ static const char from_ucs4[][2] =
+   /* 0x4fa3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x89\x50",
+   /* 0x4fa8 */ "\x00\x00", "\x00\x00", "\xfa\x57", "\x00\x00", "\x00\x00",
+   /* 0x4fae */ "\xab\x56", "\xab\x4a", "\x98\x66", "\x00\x00", "\xcd\xe0",
+-  /* 0x4fb3 */ "\xcd\xe8", "\x00\x00", "\xab\x49", "\xab\x51", "\xab\x5d",
++  /* 0x4fb3 */ "\xcd\xe8", "\x8c\xf8", "\xab\x49", "\xab\x51", "\xab\x5d",
+   /* 0x4fb7 */ "\x00\x00", "\xcd\xee", "\xcd\xec", "\xcd\xe7", "\x00\x00",
+   /* 0x4fbd */ "\x89\xd6", "\x00\x00", "\xab\x4b", "\xcd\xed", "\xcd\xe3",
+   /* 0x4fc2 */ "\xab\x59", "\xab\x50", "\xab\x58", "\xcd\xde", "\x00\x00",
+@@ -6545,7 +6645,7 @@ static const char from_ucs4[][2] =
+   /* 0x4fe0 */ "\xab\x4c", "\xab\x48", "\x00\x00", "\x00\x00", "\x96\xde",
+   /* 0x4fe5 */ "\x92\xac", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x4fe9 */ "\x00\x00", "\x00\x00", "\xcd\xef", "\x00\x00", "\xad\xd7",
+-  /* 0x4fef */ "\xad\xc1", "\x00\x00", "\xad\xd1", "\x9f\x6e", "\xad\xd6",
++  /* 0x4fef */ "\xad\xc1", "\x8c\x70", "\xad\xd1", "\x9f\x6e", "\xad\xd6",
+   /* 0x4ff4 */ "\xd0\xd0", "\xd0\xcf", "\xd0\xd4", "\xd0\xd5", "\xad\xc4",
+   /* 0x4ff9 */ "\x8e\xf2", "\xad\xcd", "\x00\x00", "\x00\x00", "\x9f\x6c",
+   /* 0x4ffe */ "\xad\xda", "\x00\x00", "\xad\xce", "\x00\x00", "\x00\x00",
+@@ -6560,7 +6660,7 @@ static const char from_ucs4[][2] =
+   /* 0x502b */ "\xad\xdb", "\xd0\xd3", "\xad\xd8", "\x92\xa8", "\xd0\xdb",
+   /* 0x5030 */ "\xd0\xcd", "\xd0\xdc", "\x00\x00", "\xd0\xd1", "\x91\x63",
+   /* 0x5035 */ "\xd0\xda", "\x00\x00", "\xd0\xd2", "\x00\x00", "\x00\x00",
+-  /* 0x5039 */ "\x00\x00", "\x00\x00", "\xad\xc8", "\x00\x00", "\x00\x00",
++  /* 0x5039 */ "\x00\x00", "\x8c\x40", "\xad\xc8", "\x00\x00", "\x00\x00",
+   /* 0x503e */ "\x00\x00", "\xd4\x63", "\xd4\x57", "\x00\x00", "\xb0\xb3",
+   /* 0x5043 */ "\x00\x00", "\xd4\x5c", "\xd4\x62", "\xb0\xb2", "\xd4\x55",
+   /* 0x5049 */ "\xb0\xb6", "\xd4\x59", "\xd4\x52", "\xb0\xb4", "\xd4\x56",
+@@ -6586,7 +6686,7 @@ static const char from_ucs4[][2] =
+   /* 0x50ad */ "\xb6\xc4", "\xdc\xb7", "\xb6\xcd", "\xdc\xbd", "\xdc\xc0",
+   /* 0x50b2 */ "\xb6\xc6", "\xb6\xc7", "\xdc\xba", "\xb6\xc5", "\xdc\xc3",
+   /* 0x50b7 */ "\xb6\xcb", "\xdc\xc4", "\x00\x00", "\xdc\xbf", "\xb6\xcc",
+-  /* 0x50bb */ "\x00\x00", "\xdc\xb4", "\xb6\xc9", "\xdc\xb5", "\x00\x00",
++  /* 0x50bc */ "\x8c\x71", "\xdc\xb4", "\xb6\xc9", "\xdc\xb5", "\x00\x00",
+   /* 0x50c1 */ "\xdc\xbe", "\xdc\xbc", "\x00\x00", "\xdc\xb8", "\xb6\xc8",
+   /* 0x50c6 */ "\xdc\xb6", "\xb6\xce", "\xdc\xbb", "\xdc\xc2", "\xdc\xb9",
+   /* 0x50cb */ "\xdc\xc1", "\x00\x00", "\x92\xa1", "\xb9\xb6", "\xb9\xb3",
+@@ -6634,7 +6734,7 @@ static const char from_ucs4[][2] =
+   /* 0x519c */ "\x00\x00", "\xcb\xcd", "\x00\x00", "\xab\x61", "\x00\x00",
+   /* 0x51a2 */ "\xad\xe0", "\x00\x00", "\xad\xde", "\xad\xdf", "\x00\x00",
+   /* 0x51a7 */ "\x9e\x55", "\x92\xba", "\x00\x00", "\xbe\xad", "\xc6\xc5",
+-  /* 0x51ac */ "\xa5\x56", "\x00\x00", "\x00\x00", "\x00\x00", "\xa6\x42",
++  /* 0x51ac */ "\xa5\x56", "\x00\x00", "\x8c\x5b", "\x00\x00", "\xa6\x42",
+   /* 0x51b1 */ "\xc9\xbc", "\xfa\x7d", "\xfa\xa8", "\x9a\x68", "\xfa\x47",
+   /* 0x51b6 */ "\xa7\x4d", "\xa7\x4e", "\xfa\x7e", "\xca\x6b", "\x00\x00",
+   /* 0x51ba */ "\x00\x00", "\xcb\xce", "\xa8\xe6", "\xcb\xcf", "\x00\x00",
+@@ -6666,7 +6766,7 @@ static const char from_ucs4[][2] =
+   /* 0x523c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xa8\xef",
+   /* 0x5241 */ "\x00\x00", "\xab\x63", "\xcd\xf0", "\x00\x00", "\xcb\xd3",
+   /* 0x5247 */ "\xab\x68", "\x00\x00", "\xcd\xf1", "\xab\x64", "\xab\x67",
+-  /* 0x524c */ "\xab\x66", "\xab\x65", "\xab\x62", "\x00\x00", "\x00\x00",
++  /* 0x524c */ "\xab\x66", "\xab\x65", "\xab\x62", "\x87\xbc", "\x00\x00",
+   /* 0x5250 */ "\x00\x00", "\xd0\xe8", "\x00\x00", "\xad\xe7", "\xd0\xeb",
+   /* 0x5256 */ "\xad\xe5", "\xfa\xb4", "\x00\x00", "\x92\xc4", "\xd0\xe7",
+   /* 0x525b */ "\xad\xe8", "\xad\xe6", "\xad\xe9", "\xd0\xe9", "\xd0\xea",
+@@ -6709,7 +6809,7 @@ static const char from_ucs4[][2] =
+   /* 0x5313 */ "\x00\x00", "\xa4\x50", "\xa4\xc6", "\xa5\x5f", "\x00\x00",
+   /* 0x5319 */ "\xb0\xcd", "\xc9\x43", "\x00\x00", "\xc9\x6c", "\xa5\x60",
+   /* 0x531d */ "\x00\x00", "\xc9\xc2", "\xa6\x4b", "\xa6\x4a", "\xc9\xc1",
+-  /* 0x5323 */ "\xa7\x58", "\x00\x00", "\x00\x00", "\x00\x00", "\x89\xe5",
++  /* 0x5323 */ "\xa7\x58", "\x8c\x68", "\x00\x00", "\x00\x00", "\x89\xe5",
+   /* 0x5327 */ "\x00\x00", "\x00\x00", "\xad\xea", "\x00\x00", "\x9f\x7d",
+   /* 0x532d */ "\xd4\x6f", "\x00\x00", "\xb6\xd7", "\xe1\x45", "\xb9\xbc",
+   /* 0x5332 */ "\xa0\xa9", "\xfa\xc4", "\xe8\xfa", "\x00\x00", "\x00\x00",
+@@ -6763,12 +6863,12 @@ static const char from_ucs4[][2] =
+   /* 0x5421 */ "\x00\x00", "\x89\xec", "\xca\xa5", "\xca\x7d", "\xa7\x5f",
+   /* 0x5427 */ "\xa7\x61", "\xca\xa4", "\xa7\x68", "\xca\x78", "\xa7\x74",
+   /* 0x542c */ "\xa7\x76", "\xa7\x5c", "\xa7\x6d", "\xfb\x44", "\xca\x76",
+-  /* 0x5431 */ "\xa7\x73", "\x9d\xe2", "\xa7\x64", "\x00\x00", "\xa7\x6e",
++  /* 0x5431 */ "\xa7\x73", "\x9d\xe2", "\xa7\x64", "\x8c\x75", "\xa7\x6e",
+   /* 0x5436 */ "\xa7\x6f", "\xca\x77", "\xa7\x6c", "\xa7\x6a", "\x00\x00",
+   /* 0x543b */ "\xa7\x6b", "\xa7\x71", "\xca\xa1", "\xa7\x5e", "\x00\x00",
+   /* 0x5440 */ "\xa7\x72", "\xca\xa3", "\xa7\x66", "\xa7\x63", "\x00\x00",
+   /* 0x5445 */ "\xca\x7a", "\xa7\x62", "\xca\xa6", "\xa7\x65", "\x00\x00",
+-  /* 0x544a */ "\xa7\x69", "\x9e\xc0", "\x00\x00", "\x9e\x56", "\xa7\x60",
++  /* 0x544a */ "\xa7\x69", "\x9e\xc0", "\x87\xc5", "\x9e\x56", "\xa7\x60",
+   /* 0x544f */ "\xca\xa2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x5454 */ "\xca\x79", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x5458 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -6905,7 +7005,7 @@ static const char from_ucs4[][2] =
+   /* 0x56e7 */ "\x00\x00", "\x00\x00", "\xa7\x77", "\xa7\x7a", "\x00\x00",
+   /* 0x56ed */ "\xfb\x5c", "\xca\xa7", "\xfb\x5b", "\xa7\x78", "\xfb\x57",
+   /* 0x56f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x56f7 */ "\xcb\xf0", "\x00\x00", "\xcb\xf1", "\xa9\x54", "\x00\x00",
++  /* 0x56f7 */ "\xcb\xf0", "\x00\x00", "\xcb\xf1", "\xa9\x54", "\x87\x65",
+   /* 0x56fb */ "\x00\x00", "\x98\xc7", "\x00\x00", "\xab\xaa", "\xfb\x5a",
+   /* 0x5701 */ "\xd1\x48", "\xd1\x49", "\xae\x45", "\xae\x46", "\x00\x00",
+   /* 0x5705 */ "\x00\x00", "\xd4\xac", "\xb0\xe9", "\xb0\xeb", "\xd4\xab",
+@@ -6919,7 +7019,7 @@ static const char from_ucs4[][2] =
+   /* 0x572e */ "\xc9\xc8", "\xa6\x65", "\xa6\x61", "\x00\x00", "\x94\xa7",
+   /* 0x5733 */ "\xa6\x60", "\xc9\xca", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x5737 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa7\xa6", "\x00\x00",
+-  /* 0x573c */ "\x00\x00", "\xa7\xa3", "\x9b\xd4", "\xa7\x7d", "\xca\xaa",
++  /* 0x573d */ "\x8c\xcc", "\xa7\xa3", "\x9b\xd4", "\xa7\x7d", "\xca\xaa",
+   /* 0x5742 */ "\xfb\x64", "\xfb\x76", "\x00\x00", "\xca\xab", "\xfb\x60",
+   /* 0x5747 */ "\xa7\xa1", "\x00\x00", "\xca\xad", "\xa7\x7b", "\xca\xae",
+   /* 0x574c */ "\xca\xac", "\xa7\x7e", "\xa7\xa2", "\xa7\xa5", "\xa7\xa4",
+@@ -6942,7 +7042,7 @@ static const char from_ucs4[][2] =
+   /* 0x57a1 */ "\x9b\xf4", "\xab\xaf", "\xab\xae", "\xce\x53", "\xce\x5c",
+   /* 0x57a5 */ "\x00\x00", "\x9e\xf7", "\x00\x00", "\x00\x00", "\x9e\xc1",
+   /* 0x57aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\xab\xb1", "\x00\x00",
+-  /* 0x57af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x99\x6f",
++  /* 0x57af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x87\xc3", "\x99\x6f",
+   /* 0x57b5 */ "\xce\x50", "\xd1\x53", "\x00\x00", "\xd1\x52", "\xd1\x57",
+   /* 0x57ba */ "\xd1\x4e", "\x96\xf1", "\xd1\x51", "\xd1\x50", "\x8e\x41",
+   /* 0x57bf */ "\xd1\x54", "\x00\x00", "\xd1\x58", "\xae\x47", "\xae\x4a",
+@@ -6962,7 +7062,7 @@ static const char from_ucs4[][2] =
+   /* 0x5805 */ "\xb0\xed", "\xb0\xef", "\xd4\xbb", "\xd4\xb6", "\xae\x4b",
+   /* 0x580a */ "\xb0\xee", "\xd4\xb8", "\xd4\xc7", "\xd4\xcb", "\xd4\xc2",
+   /* 0x580e */ "\x00\x00", "\xd4\xc4", "\x00\x00", "\x97\xe5", "\x00\x00",
+-  /* 0x5814 */ "\xd4\xae", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x5814 */ "\xd4\xae", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\xc8",
+   /* 0x5819 */ "\xd8\xa1", "\x00\x00", "\xd8\xaa", "\xd8\xa9", "\xb3\xfa",
+   /* 0x581e */ "\xd8\xa2", "\x00\x00", "\xb3\xfb", "\xb3\xf9", "\x96\x7d",
+   /* 0x5823 */ "\xd8\xa4", "\xb3\xf6", "\xd8\xa8", "\xfb\x6c", "\xd8\xa3",
+@@ -6987,8 +7087,8 @@ static const char from_ucs4[][2] =
+   /* 0x5882 */ "\xe1\x64", "\xb9\xd2", "\x00\x00", "\xb9\xd6", "\xe1\x5a",
+   /* 0x5887 */ "\xe1\x60", "\xe1\x65", "\xe1\x56", "\xb9\xd4", "\xe1\x5e",
+   /* 0x588b */ "\x00\x00", "\x00\x00", "\xe1\x62", "\xe1\x68", "\xe1\x58",
+-  /* 0x5891 */ "\xe1\x61", "\x00\x00", "\xb9\xd3", "\xe1\x67", "\x00\x00",
+-  /* 0x5895 */ "\x00\x00", "\x00\x00", "\xe1\x59", "\x8b\xaf", "\x9e\xbd",
++  /* 0x5891 */ "\xe1\x61", "\x8c\x77", "\xb9\xd3", "\xe1\x67", "\x00\x00",
++  /* 0x5896 */ "\x87\xb0", "\x00\x00", "\xe1\x59", "\x8b\xaf", "\x9e\xbd",
+   /* 0x589a */ "\x00\x00", "\xbc\x59", "\xe5\x4b", "\xbc\x57", "\xbc\x56",
+   /* 0x58a0 */ "\xe5\x4d", "\xe5\x52", "\x00\x00", "\xe5\x4e", "\x00\x00",
+   /* 0x58a5 */ "\xe5\x51", "\xbc\x5c", "\x9e\xe6", "\xbe\xa5", "\xbc\x5b",
+@@ -6999,7 +7099,7 @@ static const char from_ucs4[][2] =
+   /* 0x58be */ "\xbe\xc1", "\xe9\x4c", "\x00\x00", "\xbe\xc0", "\xe9\x4e",
+   /* 0x58c2 */ "\x00\x00", "\x00\x00", "\xbe\xc3", "\xe9\x50", "\xbe\xc2",
+   /* 0x58c8 */ "\xe9\x49", "\xe9\x4b", "\x00\x00", "\x92\xea", "\x00\x00",
+-  /* 0x58cc */ "\x00\x00", "\xc0\xa5", "\xec\xcc", "\x00\x00", "\xc0\xa4",
++  /* 0x58cc */ "\x00\x00", "\xc0\xa5", "\xec\xcc", "\x8c\x78", "\xc0\xa4",
+   /* 0x58d2 */ "\xec\xcd", "\xc0\xa3", "\xec\xcb", "\xc0\xa2", "\xec\xca",
+   /* 0x58d6 */ "\x00\x00", "\xc2\x53", "\xc2\x52", "\xf1\xf6", "\xf1\xf8",
+   /* 0x58dc */ "\xfb\x72", "\xf1\xf7", "\xc3\x61", "\xc3\x62", "\xfb\x71",
+@@ -7015,7 +7115,7 @@ static const char from_ucs4[][2] =
+   /* 0x590e */ "\xd1\x59", "\xae\x4c", "\x00\x00", "\xfe\x42", "\xf1\xf9",
+   /* 0x5912 */ "\x00\x00", "\xc4\xdc", "\xa4\x69", "\xa5\x7e", "\xc9\x70",
+   /* 0x5917 */ "\x00\x00", "\xa6\x67", "\xa6\x68", "\x00\x00", "\xa9\x5d",
+-  /* 0x591c */ "\x00\x00", "\x00\x00", "\xfb\x7b", "\xb0\xf7", "\x00\x00",
++  /* 0x591d */ "\x87\x68", "\x00\x00", "\xfb\x7b", "\xb0\xf7", "\x00\x00",
+   /* 0x5922 */ "\xb9\xda", "\x00\x00", "\xb9\xdb", "\xb9\xd9", "\x00\x00",
+   /* 0x5927 */ "\xa4\x6a", "\x00\x00", "\xa4\xd1", "\xa4\xd3", "\xa4\xd2",
+   /* 0x592c */ "\xc9\x5b", "\xa4\xd4", "\xa5\xa1", "\xc9\x71", "\x00\x00",
+@@ -7047,7 +7147,7 @@ static const char from_ucs4[][2] =
+   /* 0x59ae */ "\xa9\x67", "\xa9\x6f", "\x97\xb3", "\xcc\x4f", "\xcc\x48",
+   /* 0x59b3 */ "\xa9\x70", "\xcc\x53", "\xcc\x44", "\xcc\x4b", "\x9f\x74",
+   /* 0x59b8 */ "\x92\xf1", "\xa9\x66", "\xcc\x45", "\xa9\x64", "\xcc\x4c",
+-  /* 0x59bd */ "\xcc\x50", "\xa9\x63", "\x00\x00", "\xcc\x51", "\xcc\x4a",
++  /* 0x59bd */ "\xcc\x50", "\xa9\x63", "\x8c\xfa", "\xcc\x51", "\xcc\x4a",
+   /* 0x59c1 */ "\x00\x00", "\xcc\x4d", "\x97\xdf", "\xa9\x72", "\xa9\x69",
+   /* 0x59c7 */ "\xcc\x54", "\xcc\x52", "\xfb\xa6", "\xa9\x6e", "\xa9\x6c",
+   /* 0x59cc */ "\xcc\x49", "\xa9\x6b", "\xcc\x47", "\xcc\x46", "\xa9\x6a",
+@@ -7065,7 +7165,7 @@ static const char from_ucs4[][2] =
+   /* 0x5a07 */ "\x00\x00", "\xae\x5c", "\xd1\x62", "\x97\x42", "\xae\x5b",
+   /* 0x5a0d */ "\x94\xe6", "\x00\x00", "\xd1\x60", "\x00\x00", "\xae\x50",
+   /* 0x5a12 */ "\x92\xf5", "\xae\x55", "\x00\x00", "\xd1\x5f", "\xd1\x5c",
+-  /* 0x5a17 */ "\xd1\x61", "\xae\x51", "\xd1\x5b", "\x00\x00", "\xae\x54",
++  /* 0x5a17 */ "\xd1\x61", "\xae\x51", "\xd1\x5b", "\x8c\xc5", "\xae\x54",
+   /* 0x5a1c */ "\xae\x52", "\x00\x00", "\xd1\x63", "\xae\x53", "\xae\x57",
+   /* 0x5a21 */ "\x92\xfd", "\x00\x00", "\xae\x58", "\xfb\xa2", "\xae\x5a",
+   /* 0x5a25 */ "\x00\x00", "\x9c\x51", "\x00\x00", "\xae\x59", "\x94\xe9",
+@@ -7093,7 +7193,7 @@ static const char from_ucs4[][2] =
+   /* 0x5a94 */ "\xd8\xb6", "\xd8\xc0", "\xfb\xba", "\xd8\xc5", "\x00\x00",
+   /* 0x5a99 */ "\x92\xeb", "\xb4\x41", "\xb4\x44", "\xd8\xcc", "\xd8\xcf",
+   /* 0x5a9e */ "\xd8\xba", "\xd8\xb7", "\xfc\x73", "\x97\xb7", "\xd8\xb9",
+-  /* 0x5aa2 */ "\x00\x00", "\x00\x00", "\xd8\xbe", "\xd8\xbc", "\xb4\x45",
++  /* 0x5aa2 */ "\x00\x00", "\x87\x6f", "\xd8\xbe", "\xd8\xbc", "\xb4\x45",
+   /* 0x5aa7 */ "\x00\x00", "\xd8\xc8", "\x00\x00", "\xfb\xb4", "\xd8\xbf",
+   /* 0x5aac */ "\x00\x00", "\xd8\xc1", "\xd8\xb5", "\xdc\xfa", "\xdc\xf8",
+   /* 0x5ab2 */ "\xb7\x42", "\xb7\x40", "\xdd\x43", "\xdc\xf9", "\xdd\x44",
+@@ -7102,7 +7202,7 @@ static const char from_ucs4[][2] =
+   /* 0x5ac1 */ "\xb6\xf9", "\xb7\x41", "\x90\xa7", "\xdc\xf4", "\x00\x00",
+   /* 0x5ac6 */ "\xdc\xfe", "\xdc\xf3", "\xdc\xfc", "\xb6\xfa", "\xdd\x42",
+   /* 0x5acb */ "\xdc\xf5", "\xb6\xfb", "\xdd\x45", "\x97\x41", "\x92\xf4",
+-  /* 0x5acf */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xbc", "\x00\x00",
++  /* 0x5acf */ "\x00\x00", "\x87\x72", "\x00\x00", "\xfb\xbc", "\x00\x00",
+   /* 0x5ad5 */ "\xe1\x6e", "\xb9\xe2", "\xb9\xe1", "\xb9\xe3", "\xe1\x7a",
+   /* 0x5ada */ "\xe1\x70", "\xe1\x76", "\xe1\x6b", "\xe1\x79", "\xe1\x78",
+   /* 0x5adf */ "\xe1\x7c", "\xe1\x75", "\xb9\xde", "\xe1\x74", "\xb9\xe4",
+@@ -7115,7 +7215,7 @@ static const char from_ucs4[][2] =
+   /* 0x5b02 */ "\xe5\x5b", "\xe5\x59", "\x00\x00", "\xe5\x5f", "\x00\x00",
+   /* 0x5b07 */ "\xe5\x5e", "\xbc\x63", "\xbc\x5e", "\x00\x00", "\xbc\x60",
+   /* 0x5b0c */ "\xbc\x62", "\x9e\xb5", "\x00\x00", "\xe5\x60", "\xe9\x57",
+-  /* 0x5b11 */ "\x96\x4b", "\x00\x00", "\xe9\x56", "\xe9\x55", "\x00\x00",
++  /* 0x5b11 */ "\x96\x4b", "\x00\x00", "\xe9\x56", "\xe9\x55", "\x8c\xac",
+   /* 0x5b16 */ "\xe9\x58", "\xe9\x51", "\x00\x00", "\xe9\x52", "\xe9\x5a",
+   /* 0x5b1b */ "\xe9\x53", "\x00\x00", "\xbe\xc5", "\xe9\x5c", "\xa0\xfa",
+   /* 0x5b20 */ "\xe9\x5b", "\xe9\x54", "\x00\x00", "\xec\xd1", "\xc0\xa8",
+@@ -7141,21 +7241,21 @@ static const char from_ucs4[][2] =
+   /* 0x5b84 */ "\xc9\x73", "\xa6\x76", "\x00\x00", "\xa6\x74", "\xa6\x75",
+   /* 0x5b89 */ "\xa6\x77", "\x00\x00", "\xa7\xba", "\xa7\xb9", "\x00\x00",
+   /* 0x5b8e */ "\xca\xbc", "\xa7\xbb", "\x9e\x67", "\x00\x00", "\xca\xbd",
+-  /* 0x5b93 */ "\xcc\x57", "\x00\x00", "\xcc\x58", "\x00\x00", "\xa9\x76",
++  /* 0x5b93 */ "\xcc\x57", "\x00\x00", "\xcc\x58", "\x8c\xd9", "\xa9\x76",
+   /* 0x5b98 */ "\xa9\x78", "\xa9\x7a", "\xa9\x77", "\xa9\x7b", "\xa9\x79",
+   /* 0x5b9d */ "\xfb\xd2", "\x89\x62", "\x89\x63", "\x00\x00", "\x00\x00",
+   /* 0x5ba2 */ "\xab\xc8", "\xab\xc5", "\xab\xc7", "\xab\xc9", "\xab\xc6",
+   /* 0x5ba7 */ "\xd1\x66", "\xce\x77", "\x00\x00", "\xfc\x7d", "\x00\x00",
+   /* 0x5bac */ "\xd1\x68", "\xd1\x67", "\xae\x63", "\x00\x00", "\xae\x5f",
+   /* 0x5bb0 */ "\x00\x00", "\x00\x00", "\xae\x60", "\xae\x62", "\xae\x64",
+-  /* 0x5bb6 */ "\xae\x61", "\x00\x00", "\xae\x66", "\xae\x65", "\x00\x00",
++  /* 0x5bb6 */ "\xae\x61", "\x87\x73", "\xae\x66", "\xae\x65", "\x00\x00",
+   /* 0x5bba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xb1\x4a",
+   /* 0x5bc0 */ "\xd4\xf2", "\xd4\xf1", "\xb1\x49", "\x9f\x6b", "\xb1\x48",
+   /* 0x5bc5 */ "\xb1\x47", "\xb1\x4b", "\xb1\x46", "\x00\x00", "\x00\x00",
+   /* 0x5bca */ "\xd8\xd5", "\xd8\xd2", "\xb4\x49", "\xd8\xd1", "\xd8\xd6",
+   /* 0x5bce */ "\x00\x00", "\xb4\x4b", "\xd8\xd4", "\xb4\x48", "\xb4\x4a",
+   /* 0x5bd4 */ "\xd8\xd3", "\xfb\xcc", "\xdd\x48", "\xfe\xae", "\xdd\x49",
+-  /* 0x5bd9 */ "\xdd\x4a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x5bd9 */ "\xdd\x4a", "\x00\x00", "\x87\x6d", "\x00\x00", "\x00\x00",
+   /* 0x5bde */ "\xb9\xe6", "\xb9\xee", "\xe1\x7e", "\xb9\xe8", "\xb9\xec",
+   /* 0x5be3 */ "\xe1\xa1", "\xb9\xed", "\xb9\xe9", "\xb9\xea", "\xb9\xe7",
+   /* 0x5be8 */ "\xb9\xeb", "\xbc\x66", "\xd8\xd0", "\xbc\x67", "\xbc\x65",
+@@ -7186,7 +7286,7 @@ static const char from_ucs4[][2] =
+   /* 0x5c65 */ "\xbc\x69", "\x00\x00", "\xe5\x61", "\xc0\xab", "\xef\xc2",
+   /* 0x5c6a */ "\xef\xc3", "\x00\x00", "\xc4\xdd", "\xf8\xa8", "\xc9\x4b",
+   /* 0x5c6f */ "\xa4\xd9", "\x00\x00", "\xa4\x73", "\x00\x00", "\xc9\x77",
+-  /* 0x5c74 */ "\xc9\x76", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x5c74 */ "\xc9\x76", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xe9",
+   /* 0x5c79 */ "\xa6\x7a", "\xc9\xd7", "\xc9\xd8", "\xc9\xd6", "\x00\x00",
+   /* 0x5c7e */ "\xc9\xd9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x5c82 */ "\x00\x00", "\x00\x00", "\xfb\xdd", "\xca\xc7", "\x00\x00",
+@@ -7205,15 +7305,15 @@ static const char from_ucs4[][2] =
+   /* 0x5cc3 */ "\x00\x00", "\x00\x00", "\xce\xab", "\xce\xa4", "\xce\xaa",
+   /* 0x5cc9 */ "\xce\xa3", "\xce\xa5", "\xce\x7d", "\xce\x7b", "\x00\x00",
+   /* 0x5cce */ "\xce\xac", "\xce\xa9", "\xce\x79", "\x9f\x58", "\xab\xd0",
+-  /* 0x5cd3 */ "\xce\xa7", "\xce\xa8", "\x00\x00", "\xce\xa6", "\xce\x7c",
++  /* 0x5cd3 */ "\xce\xa7", "\xce\xa8", "\x8c\xe6", "\xce\xa6", "\xce\x7c",
+   /* 0x5cd8 */ "\xce\x7a", "\xab\xcf", "\xce\xa2", "\xce\x7e", "\x00\x00",
+   /* 0x5cdc */ "\x00\x00", "\xce\xa1", "\xce\xad", "\x00\x00", "\x00\x00",
+   /* 0x5ce1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x73", "\x00\x00",
+   /* 0x5ce6 */ "\x00\x00", "\xae\x6f", "\xfb\xde", "\xae\x6e", "\x00\x00",
+   /* 0x5cec */ "\xd1\x6c", "\xae\x6b", "\xd1\x6e", "\xfb\xdf", "\xae\x70",
+-  /* 0x5cf1 */ "\xd1\x6f", "\x00\x00", "\x00\x00", "\xae\x73", "\x00\x00",
++  /* 0x5cf1 */ "\xd1\x6f", "\x00\x00", "\x00\x00", "\xae\x73", "\x8c\x48",
+   /* 0x5cf6 */ "\xae\x71", "\xd1\x70", "\xce\xae", "\xd1\x72", "\x00\x00",
+-  /* 0x5cfb */ "\xae\x6d", "\x00\x00", "\xae\x6c", "\x00\x00", "\xd1\x6d",
++  /* 0x5cfb */ "\xae\x6d", "\x87\x74", "\xae\x6c", "\x00\x00", "\xd1\x6d",
+   /* 0x5d00 */ "\xd1\x71", "\xae\x72", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x5d04 */ "\x00\x00", "\xb1\x53", "\xb1\x52", "\x00\x00", "\x00\x00",
+   /* 0x5d09 */ "\x00\x00", "\xd4\xf5", "\xd4\xf9", "\xd4\xfb", "\xb1\x54",
+@@ -7238,7 +7338,7 @@ static const char from_ucs4[][2] =
+   /* 0x5d69 */ "\xb7\x43", "\x00\x00", "\xd8\xdb", "\xdd\x52", "\x00\x00",
+   /* 0x5d6d */ "\x00\x00", "\xb7\x44", "\x98\xad", "\xdd\x4d", "\xdd\x51",
+   /* 0x5d72 */ "\x00\x00", "\x9e\xea", "\x00\x00", "\x00\x00", "\xe1\xa9",
+-  /* 0x5d77 */ "\x00\x00", "\xe1\xb0", "\xe1\xa7", "\x00\x00", "\xe1\xae",
++  /* 0x5d78 */ "\x8c\xec", "\xe1\xb0", "\xe1\xa7", "\x8c\xd4", "\xe1\xae",
+   /* 0x5d7d */ "\xe1\xa5", "\xe1\xad", "\xe1\xb1", "\xe1\xa4", "\xe1\xa8",
+   /* 0x5d82 */ "\xe1\xa3", "\x00\x00", "\xb9\xf1", "\x9c\xeb", "\xe1\xa6",
+   /* 0x5d87 */ "\xb9\xf2", "\xe1\xac", "\xe1\xab", "\xe1\xaa", "\xfb\xe0",
+@@ -7294,8 +7394,8 @@ static const char from_ucs4[][2] =
+   /* 0x5e80 */ "\x00\x00", "\xc9\x7a", "\xfb\xc3", "\xc9\xdc", "\x00\x00",
+   /* 0x5e86 */ "\x89\x65", "\xa7\xc8", "\xca\xd0", "\xca\xce", "\xa7\xc9",
+   /* 0x5e8b */ "\xca\xcd", "\xca\xcf", "\xca\xd1", "\x00\x00", "\xa7\xc7",
+-  /* 0x5e8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x5e95 */ "\xa9\xb3", "\xa9\xb4", "\xa9\xb1", "\x00\x00", "\x00\x00",
++  /* 0x5e8f */ "\x00\x00", "\x00\x00", "\x8c\x7a", "\x00\x00", "\x00\x00",
++  /* 0x5e95 */ "\xa9\xb3", "\xa9\xb4", "\xa9\xb1", "\x00\x00", "\x8c\x7b",
+   /* 0x5e9a */ "\xa9\xb0", "\xce\xb8", "\xa9\xb2", "\x00\x00", "\x00\x00",
+   /* 0x5e9e */ "\x00\x00", "\xab\xd6", "\x00\x00", "\xce\xb7", "\xce\xb9",
+   /* 0x5ea4 */ "\xce\xb6", "\xce\xba", "\xab\xd7", "\xae\x79", "\xd1\x75",
+@@ -7328,7 +7428,7 @@ static const char from_ucs4[][2] =
+   /* 0x5f2a */ "\x00\x00", "\x00\x00", "\xab\xda", "\xce\xbc", "\x00\x00",
+   /* 0x5f30 */ "\xd1\x7a", "\xae\x7a", "\x00\x00", "\xd1\x79", "\x00\x00",
+   /* 0x5f35 */ "\xb1\x69", "\xd5\x4c", "\xb1\x6a", "\xd5\x4d", "\x00\x00",
+-  /* 0x5f3a */ "\xfc\x4c", "\x00\x00", "\xb4\x5d", "\x00\x00", "\x00\x00",
++  /* 0x5f3a */ "\xfc\x4c", "\x8c\xfe", "\xb4\x5d", "\x00\x00", "\x00\x00",
+   /* 0x5f3e */ "\x00\x00", "\xdd\x62", "\x00\x00", "\x00\x00", "\xe1\xbf",
+   /* 0x5f44 */ "\xe1\xbe", "\x00\x00", "\xb9\xfb", "\x00\x00", "\xbc\x75",
+   /* 0x5f49 */ "\xe5\x76", "\xbe\xca", "\xe9\x74", "\xc0\xb1", "\x95\xb8",
+@@ -7355,7 +7455,7 @@ static const char from_ucs4[][2] =
+   /* 0x5fb2 */ "\xe5\x77", "\x00\x00", "\x00\x00", "\xbc\x78", "\xe1\xc1",
+   /* 0x5fb7 */ "\xbc\x77", "\x00\x00", "\xb9\xfd", "\xa0\x51", "\xec\xde",
+   /* 0x5fbc */ "\xe9\x75", "\xc0\xb2", "\xec\xdd", "\xf2\x40", "\xf4\x48",
+-  /* 0x5fc1 */ "\xf4\x49", "\x00\x00", "\xa4\xdf", "\x8b\xcb", "\xa5\xb2",
++  /* 0x5fc1 */ "\xf4\x49", "\x8c\x7c", "\xa4\xdf", "\x8b\xcb", "\xa5\xb2",
+   /* 0x5fc5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xc9\x7b", "\x00\x00",
+   /* 0x5fca */ "\x00\x00", "\xa7\xd2", "\xa7\xd4", "\x00\x00", "\xc9\xe2",
+   /* 0x5fd0 */ "\xca\xd8", "\xca\xd7", "\xca\xd6", "\x00\x00", "\xc9\xe1",
+@@ -7425,7 +7525,7 @@ static const char from_ucs4[][2] =
+   /* 0x6110 */ "\xd9\x4d", "\x00\x00", "\xb4\x74", "\xd9\x45", "\xd8\xfe",
+   /* 0x6115 */ "\xb4\x6a", "\xd9\x42", "\x00\x00", "\xd9\x4b", "\x9e\xf1",
+   /* 0x611a */ "\xb7\x4d", "\xb7\x52", "\xb4\x67", "\xd9\x4c", "\x00\x00",
+-  /* 0x611f */ "\xb7\x50", "\x00\x00", "\x00\x00", "\x00\x00", "\xb4\x68",
++  /* 0x611f */ "\xb7\x50", "\x00\x00", "\x00\x00", "\x8c\x4d", "\xb4\x68",
+   /* 0x6123 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xb7\x5c", "\xe1\xc3",
+   /* 0x6129 */ "\xdd\x70", "\x00\x00", "\xdd\x68", "\xe1\xc2", "\x00\x00",
+   /* 0x612e */ "\xdd\x6c", "\xdd\x6e", "\x9f\x7e", "\x00\x00", "\xdd\x6b",
+@@ -7508,7 +7608,7 @@ static const char from_ucs4[][2] =
+   /* 0x62af */ "\xcc\xbc", "\xcc\xbf", "\xa9\xea", "\x00\x00", "\xcc\xbb",
+   /* 0x62b4 */ "\xcc\xb4", "\xa9\xe8", "\xcc\xb8", "\x00\x00", "\xcc\xc0",
+   /* 0x62b9 */ "\xa9\xd9", "\x00\x00", "\xcc\xbd", "\xa9\xe3", "\xa9\xe2",
+-  /* 0x62be */ "\xcc\xb6", "\xa9\xd7", "\x00\x00", "\x00\x00", "\xa9\xd8",
++  /* 0x62be */ "\xcc\xb6", "\xa9\xd7", "\x00\x00", "\x87\xdd", "\xa9\xd8",
+   /* 0x62c3 */ "\x9b\x46", "\xa9\xd6", "\xfc\xae", "\xa9\xee", "\xa9\xe6",
+   /* 0x62c8 */ "\xa9\xe0", "\xa9\xd4", "\xcc\xb9", "\xa9\xdf", "\xa9\xd5",
+   /* 0x62cd */ "\xa9\xe7", "\xa9\xf0", "\xce\xd4", "\xa9\xe4", "\xcc\xb5",
+@@ -7651,7 +7751,7 @@ static const char from_ucs4[][2] =
+   /* 0x657a */ "\xe5\xbe", "\xe5\xc0", "\xe9\xb1", "\x00\x00", "\x00\x00",
+   /* 0x657f */ "\xe9\xb0", "\xec\xef", "\xec\xee", "\xc0\xc4", "\xc0\xc5",
+   /* 0x6584 */ "\xf2\x48", "\xfc\xc9", "\x8d\xac", "\xa4\xe5", "\xfb\xc6",
+-  /* 0x6589 */ "\x89\x67", "\x00\x00", "\x00\x00", "\xd9\x79", "\x00\x00",
++  /* 0x6589 */ "\x89\x67", "\x00\x00", "\x8c\x7e", "\xd9\x79", "\x00\x00",
+   /* 0x658d */ "\x00\x00", "\x00\x00", "\xb4\xb4", "\xb4\xb3", "\xdd\xbd",
+   /* 0x6592 */ "\x00\x00", "\xef\xd8", "\xc4\xe3", "\xf7\xde", "\xa4\xe6",
+   /* 0x6597 */ "\x00\x00", "\xae\xc6", "\x00\x00", "\xb1\xd8", "\xb1\xd7",
+@@ -7690,11 +7790,11 @@ static const char from_ucs4[][2] =
+   /* 0x663c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xae\xd0",
+   /* 0x6642 */ "\xae\xc9", "\xae\xcc", "\xfc\xda", "\xae\xcf", "\x00\x00",
+   /* 0x6647 */ "\xd1\xd5", "\x9b\x71", "\xae\xca", "\xd1\xd3", "\xfc\xdd",
+-  /* 0x664c */ "\xae\xce", "\x00\x00", "\x00\x00", "\xae\xcb", "\x00\x00",
++  /* 0x664c */ "\xae\xce", "\x87\x64", "\x00\x00", "\xae\xcb", "\x00\x00",
+   /* 0x6651 */ "\xd1\xd6", "\xae\xcd", "\x8d\xaf", "\x00\x00", "\x00\x00",
+   /* 0x6655 */ "\x00\x00", "\xfa\xf2", "\x00\x00", "\xd5\xac", "\xb1\xdf",
+   /* 0x665b */ "\xd5\xab", "\xd5\xad", "\xb1\xde", "\xb1\xe3", "\xd1\xd4",
+-  /* 0x665f */ "\x00\x00", "\xd5\xaa", "\xd5\xae", "\x93\xd8", "\xb1\xe0",
++  /* 0x6660 */ "\x87\xb5", "\xd5\xaa", "\xd5\xae", "\x93\xd8", "\xb1\xe0",
+   /* 0x6665 */ "\xd5\xa9", "\xb1\xe2", "\xfc\xdf", "\xb1\xe1", "\x00\x00",
+   /* 0x666a */ "\xd9\xa7", "\x93\xd3", "\xd9\xa2", "\x00\x00", "\xb4\xb6",
+   /* 0x666f */ "\xb4\xba", "\xb4\xb7", "\xd9\xa5", "\xd9\xa8", "\xfc\xe1",
+@@ -7721,7 +7821,7 @@ static const char from_ucs4[][2] =
+   /* 0x66d8 */ "\xef\xdc", "\xc0\xc6", "\xef\xda", "\xef\xdb", "\xc2\x60",
+   /* 0x66dd */ "\xc3\x6e", "\xf2\x4b", "\x00\x00", "\xc3\x6d", "\x00\x00",
+   /* 0x66e1 */ "\x00\x00", "\xf4\x51", "\xf4\x52", "\x00\x00", "\xc4\x66",
+-  /* 0x66e6 */ "\x00\x00", "\xf4\x50", "\xc4\xe4", "\x00\x00", "\xf7\xdf",
++  /* 0x66e7 */ "\x8c\xdb", "\xf4\x50", "\xc4\xe4", "\x00\x00", "\xf7\xdf",
+   /* 0x66ec */ "\xc5\xce", "\xf8\xaa", "\xf8\xab", "\x00\x00", "\xa4\xea",
+   /* 0x66f1 */ "\x9d\xf1", "\xa6\xb1", "\xa6\xb2", "\xa7\xf3", "\x00\x00",
+   /* 0x66f6 */ "\xcc\xd1", "\xac\x54", "\xae\xd1", "\xb1\xe4", "\x00\x00",
+@@ -7731,7 +7831,7 @@ static const char from_ucs4[][2] =
+   /* 0x670a */ "\xcc\xd2", "\xaa\x42", "\xa0\xbb", "\xaa\x41", "\x9b\x7e",
+   /* 0x670f */ "\xce\xf9", "\xce\xfa", "\x00\x00", "\xd1\xd7", "\xd1\xd8",
+   /* 0x6714 */ "\xae\xd2", "\xae\xd3", "\x8d\xb3", "\xae\xd4", "\xd5\xaf",
+-  /* 0x6718 */ "\x00\x00", "\x00\x00", "\xb1\xe6", "\x00\x00", "\xb4\xc2",
++  /* 0x6719 */ "\x8c\x52", "\x00\x00", "\xb1\xe6", "\x00\x00", "\xb4\xc2",
+   /* 0x671e */ "\x9a\xe8", "\xb4\xc1", "\xdd\xc8", "\xdf\x7a", "\xe1\xfb",
+   /* 0x6723 */ "\xe9\xbd", "\x00\x00", "\x8e\xdc", "\xc2\x61", "\xc4\x67",
+   /* 0x6728 */ "\xa4\xec", "\x00\x00", "\xa5\xbc", "\xa5\xbd", "\xa5\xbb",
+@@ -7747,12 +7847,12 @@ static const char from_ucs4[][2] =
+   /* 0x675a */ "\xcb\x46", "\x00\x00", "\xa7\xf9", "\xcb\x44", "\xa7\xfb",
+   /* 0x675f */ "\xa7\xf4", "\xa7\xfe", "\x98\xe7", "\xfc\xf3", "\x00\x00",
+   /* 0x6763 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xf2", "\x00\x00",
+-  /* 0x6768 */ "\x00\x00", "\xaa\x57", "\x00\x00", "\xcc\xd4", "\xaa\x43",
+-  /* 0x676d */ "\x00\x00", "\xaa\x4d", "\xaa\x4e", "\xaa\x46", "\xaa\x58",
++  /* 0x6768 */ "\x00\x00", "\xaa\x57", "\x8c\xca", "\xcc\xd4", "\xaa\x43",
++  /* 0x676e */ "\x87\x75", "\xaa\x4d", "\xaa\x4e", "\xaa\x46", "\xaa\x58",
+   /* 0x6773 */ "\xaa\x48", "\xcc\xdc", "\xaa\x53", "\xcc\xd7", "\xaa\x49",
+   /* 0x6778 */ "\xcc\xe6", "\xcc\xe7", "\xcc\xdf", "\xcc\xd8", "\xaa\x56",
+   /* 0x677d */ "\xcc\xe4", "\xaa\x51", "\xaa\x4f", "\x00\x00", "\xcc\xe5",
+-  /* 0x6781 */ "\x00\x00", "\xcc\xe3", "\xcc\xdb", "\xcc\xd3", "\xcc\xda",
++  /* 0x6782 */ "\x87\xba", "\xcc\xe3", "\xcc\xdb", "\xcc\xd3", "\xcc\xda",
+   /* 0x6787 */ "\xaa\x4a", "\x00\x00", "\xaa\x50", "\x00\x00", "\xaa\x44",
+   /* 0x678c */ "\xcc\xde", "\xcc\xdd", "\xcc\xd5", "\x93\xe5", "\xaa\x52",
+   /* 0x6791 */ "\xcc\xe1", "\xcc\xd6", "\xaa\x55", "\xcc\xe8", "\xaa\x45",
+@@ -7833,7 +7933,7 @@ static const char from_ucs4[][2] =
+   /* 0x6908 */ "\xd9\xbe", "\x8d\xbd", "\xd9\xcb", "\xd9\xca", "\xd9\xaa",
+   /* 0x690d */ "\xb4\xd3", "\xb4\xd5", "\xd9\xb2", "\xd9\xb9", "\xd9\xc1",
+   /* 0x6912 */ "\xb4\xd4", "\xd9\xb8", "\xd9\xc4", "\xd9\xd7", "\x00\x00",
+-  /* 0x6917 */ "\xd9\xcc", "\x9b\xa1", "\x00\x00", "\x9a\xb7", "\x8e\xfc",
++  /* 0x6917 */ "\xd9\xcc", "\x9b\xa1", "\x8c\xa2", "\x9a\xb7", "\x8e\xfc",
+   /* 0x691b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x6920 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xd9\xd8",
+   /* 0x6925 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xd9\xae",
+@@ -7887,19 +7987,19 @@ static const char from_ucs4[][2] =
+   /* 0x6a16 */ "\xe5\xef", "\xe5\xcc", "\xe5\xe8", "\xbc\xd0", "\x97\xf9",
+   /* 0x6a1b */ "\xe5\xd6", "\x95\x58", "\xe5\xd7", "\xbc\xcf", "\xbc\xcc",
+   /* 0x6a20 */ "\xe5\xd2", "\xbc\xd2", "\x00\x00", "\xbc\xcb", "\x00\x00",
+-  /* 0x6a25 */ "\xe5\xe9", "\xe5\xec", "\xe5\xd9", "\xe9\xca", "\x00\x00",
++  /* 0x6a25 */ "\xe5\xe9", "\xe5\xec", "\xe5\xd9", "\xe9\xca", "\x87\xb6",
+   /* 0x6a29 */ "\x00\x00", "\x98\x5e", "\xfe\x7b", "\x94\xcd", "\x00\x00",
+   /* 0x6a2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\xe9\xc2", "\x93\xee",
+   /* 0x6a34 */ "\xe9\xbe", "\xbe\xf6", "\x00\x00", "\x00\x00", "\xbe\xeb",
+   /* 0x6a39 */ "\xbe\xf0", "\xbe\xec", "\xe9\xcc", "\xe9\xd7", "\xbe\xea",
+   /* 0x6a3e */ "\xe9\xc4", "\xe9\xcd", "\xe5\xdf", "\xe9\xce", "\x00\x00",
+-  /* 0x6a42 */ "\x00\x00", "\xbe\xf1", "\xfd\x5a", "\xe9\xdd", "\xbe\xf5",
++  /* 0x6a43 */ "\x8c\xa3", "\xbe\xf1", "\xfd\x5a", "\xe9\xdd", "\xbe\xf5",
+   /* 0x6a48 */ "\xbe\xf8", "\xe9\xc0", "\x00\x00", "\xbe\xf4", "\x93\xf5",
+   /* 0x6a4d */ "\xe9\xdb", "\xe9\xdc", "\xe9\xd2", "\xe9\xd1", "\xe9\xc9",
+   /* 0x6a52 */ "\x93\xef", "\x8e\xea", "\xe9\xd3", "\xe9\xda", "\xe9\xd9",
+   /* 0x6a57 */ "\x8f\x5b", "\xbe\xef", "\xbe\xed", "\xe9\xcb", "\xe9\xc8",
+   /* 0x6a5b */ "\x00\x00", "\xe9\xc5", "\xe9\xd8", "\xbe\xf7", "\xe9\xd6",
+-  /* 0x6a61 */ "\xbe\xf3", "\xbe\xf2", "\x00\x00", "\xe9\xd0", "\x8d\xc6",
++  /* 0x6a61 */ "\xbe\xf3", "\xbe\xf2", "\x8c\x5e", "\xe9\xd0", "\x8d\xc6",
+   /* 0x6a66 */ "\xe9\xbf", "\xe9\xc1", "\xe9\xc3", "\xe9\xd5", "\xe9\xcf",
+   /* 0x6a6b */ "\xbe\xee", "\x00\x00", "\xe9\xc6", "\x00\x00", "\xe9\xd4",
+   /* 0x6a6f */ "\x00\x00", "\x8d\xc8", "\x00\x00", "\x00\x00", "\x8d\xc7",
+@@ -8033,7 +8133,7 @@ static const char from_ucs4[][2] =
+   /* 0x6cf0 */ "\xae\xf5", "\xaa\x74", "\xcc\xfe", "\xaa\x61", "\x00\x00",
+   /* 0x6cf5 */ "\xac\xa6", "\x00\x00", "\x00\x00", "\x00\x00", "\xcd\x4c",
+   /* 0x6cf9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x6cfe */ "\x00\x00", "\xcf\x7c", "\xcf\xa1", "\x8d\xd7", "\xcf\xa4",
++  /* 0x6cff */ "\x8c\xa5", "\xcf\x7c", "\xcf\xa1", "\x8d\xd7", "\xcf\xa4",
+   /* 0x6d04 */ "\xcf\x77", "\x92\xfb", "\x8d\xd8", "\xcf\xa7", "\xcf\xaa",
+   /* 0x6d09 */ "\xcf\xac", "\xcf\x74", "\xac\x76", "\xac\x7b", "\xd2\x49",
+   /* 0x6d0e */ "\xac\xad", "\xcf\xa5", "\xcf\xad", "\xcf\x7b", "\xcf\x73",
+@@ -8084,7 +8184,7 @@ static const char from_ucs4[][2] =
+   /* 0x6def */ "\xd2\x52", "\xd5\xf9", "\xb2\x60", "\xd6\x41", "\xb2\x45",
+   /* 0x6df4 */ "\xd5\xf5", "\xb2\x57", "\xd5\xe9", "\xb2\x56", "\x00\x00",
+   /* 0x6df9 */ "\xb2\x54", "\xb2\x4c", "\xb2\x4b", "\xd9\xe7", "\xd6\x43",
+-  /* 0x6dfd */ "\x00\x00", "\x00\x00", "\xd5\xeb", "\x00\x00", "\x97\xd5",
++  /* 0x6dfe */ "\x8c\x41", "\x00\x00", "\xd5\xeb", "\x00\x00", "\x97\xd5",
+   /* 0x6e03 */ "\xd9\xfc", "\x94\x4a", "\xb2\x4d", "\x00\x00", "\x00\x00",
+   /* 0x6e07 */ "\x00\x00", "\x00\x00", "\x94\x4d", "\x00\x00", "\x00\x00",
+   /* 0x6e0c */ "\x00\x00", "\x00\x00", "\x97\xcb", "\x00\x00", "\x00\x00",
+@@ -8101,7 +8201,7 @@ static const char from_ucs4[][2] =
+   /* 0x6e44 */ "\xb5\x44", "\xd9\xef", "\xd9\xe8", "\xd9\xe9", "\x00\x00",
+   /* 0x6e49 */ "\xd9\xeb", "\xb4\xea", "\xd9\xf8", "\x00\x00", "\xb4\xf8",
+   /* 0x6e4e */ "\xb5\x42", "\xfd\xc0", "\xfc\xf9", "\xd9\xfa", "\xda\x53",
+-  /* 0x6e53 */ "\xda\x4b", "\xb4\xe6", "\xda\x51", "\xb4\xf2", "\x00\x00",
++  /* 0x6e53 */ "\xda\x4b", "\xb4\xe6", "\xda\x51", "\xb4\xf2", "\x8c\xdd",
+   /* 0x6e58 */ "\xb4\xf0", "\xfb\x7e", "\xda\x57", "\xb4\xef", "\xda\x41",
+   /* 0x6e5d */ "\xd9\xf4", "\xd9\xfe", "\xb5\x47", "\xda\x45", "\xda\x42",
+   /* 0x6e62 */ "\xd9\xf0", "\xb5\x43", "\xda\x4f", "\xda\x4c", "\xda\x54",
+@@ -8202,15 +8302,15 @@ static const char from_ucs4[][2] =
+   /* 0x703c */ "\x00\x00", "\xc4\x69", "\xf4\x63", "\xf4\x66", "\xf4\x69",
+   /* 0x7042 */ "\xf4\x61", "\xf5\xd3", "\xf5\xd4", "\xf5\xd8", "\xf5\xd9",
+   /* 0x7046 */ "\x00\x00", "\xf5\xd6", "\xf5\xd7", "\xf5\xd5", "\xfd\xe0",
+-  /* 0x704c */ "\xc4\xe9", "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\xf6",
++  /* 0x704c */ "\xc4\xe9", "\x8c\x67", "\x00\x00", "\x00\x00", "\x8d\xf6",
+   /* 0x7051 */ "\xc5\x78", "\xf6\xeb", "\x00\x00", "\x8d\xf7", "\xf6\xe8",
+   /* 0x7056 */ "\xf6\xe9", "\xf6\xea", "\xc5\x79", "\x00\x00", "\xf7\xe5",
+   /* 0x705b */ "\xf7\xe4", "\x8f\xfa", "\xf8\xaf", "\xc5\xf4", "\xf8\xad",
+   /* 0x7060 */ "\xf8\xb0", "\xf8\xae", "\xf8\xf5", "\xc6\x57", "\xc6\x65",
+   /* 0x7065 */ "\xf9\xa3", "\xf9\x6c", "\x97\xd0", "\xf9\xa2", "\xf9\xd0",
+-  /* 0x706a */ "\xf9\xd1", "\xa4\xf5", "\x8b\xd2", "\x00\x00", "\x00\x00",
++  /* 0x706a */ "\xf9\xd1", "\xa4\xf5", "\x8b\xd2", "\x00\x00", "\x87\xde",
+   /* 0x706f */ "\x8d\xf8", "\xa6\xc7", "\xca\x41", "\x00\x00", "\x00\x00",
+-  /* 0x7074 */ "\xcb\x5e", "\x90\xd9", "\xa8\x5f", "\x00\x00", "\xa8\x62",
++  /* 0x7074 */ "\xcb\x5e", "\x90\xd9", "\xa8\x5f", "\x8c\x47", "\xa8\x62",
+   /* 0x7079 */ "\xfa\xf0", "\xcb\x5f", "\x00\x00", "\xa8\x60", "\xa8\x61",
+   /* 0x707e */ "\xfd\xe1", "\x8d\xf9", "\x00\x00", "\xfd\xe3", "\xcd\x58",
+   /* 0x7083 */ "\xcd\x5a", "\xcd\x55", "\xcd\x52", "\xcd\x54", "\x00\x00",
+@@ -8255,7 +8355,7 @@ static const char from_ucs4[][2] =
+   /* 0x7146 */ "\xb7\xda", "\xde\x6b", "\x00\x00", "\xb7\xd2", "\xfd\xf0",
+   /* 0x714b */ "\xde\x7a", "\xb7\xd7", "\xde\xa2", "\xb7\xce", "\xfd\xf4",
+   /* 0x7150 */ "\xde\x7d", "\x9b\xf5", "\xde\x6d", "\xde\x7e", "\xde\x6c",
+-  /* 0x7154 */ "\x00\x00", "\xb7\xdc", "\x00\x00", "\xde\x78", "\xb7\xcf",
++  /* 0x7154 */ "\x00\x00", "\xb7\xdc", "\x8c\xee", "\xde\x78", "\xb7\xcf",
+   /* 0x715a */ "\xde\xa3", "\x00\x00", "\xb7\xd4", "\xde\x71", "\xb7\xd9",
+   /* 0x715f */ "\xde\x7c", "\xde\x6f", "\xde\x76", "\xde\x72", "\xde\x6e",
+   /* 0x7164 */ "\xb7\xd1", "\xb7\xd8", "\xb7\xd6", "\xb7\xd3", "\xb7\xdb",
+@@ -8267,7 +8367,7 @@ static const char from_ucs4[][2] =
+   /* 0x7182 */ "\xe2\xbf", "\x00\x00", "\xba\xb6", "\xe2\xbe", "\xe2\xc2",
+   /* 0x7187 */ "\xe2\xba", "\x98\xe0", "\xe2\xbc", "\xba\xb5", "\x00\x00",
+   /* 0x718c */ "\x92\xca", "\x00\x00", "\x98\x57", "\xe2\xc0", "\xe2\xbb",
+-  /* 0x7190 */ "\x00\x00", "\xba\xb7", "\x00\x00", "\xba\xb2", "\x00\x00",
++  /* 0x7191 */ "\x8c\x51", "\xba\xb7", "\x00\x00", "\xba\xb2", "\x00\x00",
+   /* 0x7196 */ "\xfd\xeb", "\xe2\xc4", "\x9b\x49", "\xba\xb3", "\xe6\x67",
+   /* 0x719b */ "\xe6\x64", "\xe6\x70", "\xe6\x6a", "\xe6\x6c", "\xbc\xf4",
+   /* 0x71a0 */ "\xe6\x66", "\xe6\x6e", "\x9d\x76", "\x9e\xaf", "\xe6\x6d",
+@@ -8289,14 +8389,14 @@ static const char from_ucs4[][2] =
+   /* 0x71f0 */ "\xed\x61", "\xed\x5d", "\xed\x5f", "\x00\x00", "\xc0\xed",
+   /* 0x71f5 */ "\x98\xbf", "\x9e\x49", "\x00\x00", "\xc2\x77", "\xef\xfb",
+   /* 0x71f9 */ "\x00\x00", "\xc2\x74", "\xc2\x75", "\xef\xfd", "\xc2\x76",
+-  /* 0x71ff */ "\xef\xfa", "\x00\x00", "\xef\xf9", "\xf2\x6c", "\xef\xfc",
++  /* 0x71ff */ "\xef\xfa", "\x8c\xa7", "\xef\xf9", "\xf2\x6c", "\xef\xfc",
+   /* 0x7203 */ "\x00\x00", "\xf2\x6d", "\xc3\x7a", "\xf2\x6b", "\x00\x00",
+   /* 0x7209 */ "\x9b\xca", "\xf2\x6a", "\x00\x00", "\xf2\x69", "\xc3\x7b",
+   /* 0x720e */ "\xfd\xfe", "\x92\xdc", "\xc4\x6c", "\x00\x00", "\x00\x00",
+   /* 0x7213 */ "\xf4\x6a", "\xf4\x6b", "\xfe\x41", "\x91\xcc", "\x91\xe2",
+   /* 0x7217 */ "\x00\x00", "\xf5\xdc", "\xf5\xdb", "\xc4\xea", "\x00\x00",
+   /* 0x721d */ "\xf5\xda", "\xf6\xec", "\xf6\xed", "\x00\x00", "\x00\x00",
+-  /* 0x7222 */ "\xf7\xe6", "\xf8\xb1", "\xfe\x44", "\x00\x00", "\xf8\xf6",
++  /* 0x7222 */ "\xf7\xe6", "\xf8\xb1", "\xfe\x44", "\x87\x5f", "\xf8\xf6",
+   /* 0x7227 */ "\xf9\xbc", "\xc6\x79", "\xf9\xc6", "\xa4\xf6", "\x8b\xd3",
+   /* 0x722c */ "\xaa\xa6", "\xaa\xa7", "\xfe\x47", "\x00\x00", "\xac\xb8",
+   /* 0x7230 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xc0\xef",
+@@ -8368,7 +8468,7 @@ static const char from_ucs4[][2] =
+   /* 0x737b */ "\xc4\x6d", "\xf4\x6e", "\xf4\x6d", "\xf5\xdd", "\xf6\xef",
+   /* 0x7380 */ "\xc5\x7a", "\xf7\xe8", "\xf7\xe7", "\xf7\xe9", "\xa5\xc8",
+   /* 0x7385 */ "\xcf\xc6", "\xaf\x59", "\xb2\x76", "\xd6\x6a", "\xa5\xc9",
+-  /* 0x738a */ "\xc9\xa7", "\xa4\xfd", "\x00\x00", "\x00\x00", "\xca\x45",
++  /* 0x738a */ "\xc9\xa7", "\xa4\xfd", "\x8c\xa9", "\x00\x00", "\xca\x45",
+   /* 0x738f */ "\x98\xae", "\x00\x00", "\x00\x00", "\xcb\x6c", "\xcb\x6a",
+   /* 0x7394 */ "\xcb\x6b", "\xcb\x68", "\xa8\x68", "\xcb\x69", "\x92\xd6",
+   /* 0x7398 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\xe1", "\xcd\x6d",
+@@ -8377,9 +8477,9 @@ static const char from_ucs4[][2] =
+   /* 0x73a8 */ "\xaa\xb2", "\xaa\xb1", "\xfe\x5b", "\xaa\xb4", "\xcd\x6c",
+   /* 0x73ad */ "\xcd\x68", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x73b2 */ "\xac\xc2", "\xac\xc5", "\xcf\xce", "\xcf\xcd", "\xcf\xcc",
+-  /* 0x73b7 */ "\xac\xbf", "\xcf\xd5", "\xcf\xcb", "\x00\x00", "\xac\xc1",
++  /* 0x73b7 */ "\xac\xbf", "\xcf\xd5", "\xcf\xcb", "\x8c\x53", "\xac\xc1",
+   /* 0x73bc */ "\xd2\xaf", "\x00\x00", "\xcf\xd2", "\xcf\xd0", "\xac\xc4",
+-  /* 0x73c0 */ "\x00\x00", "\xcf\xc8", "\xcf\xd3", "\x00\x00", "\xcf\xca",
++  /* 0x73c0 */ "\x00\x00", "\xcf\xc8", "\xcf\xd3", "\x87\xbf", "\xcf\xca",
+   /* 0x73c6 */ "\xcf\xd4", "\xcf\xd1", "\xcf\xc9", "\xfe\x5e", "\xac\xc0",
+   /* 0x73cb */ "\xcf\xd6", "\xcf\xc7", "\xac\xc3", "\xfb\xd7", "\xfe\x5a",
+   /* 0x73d0 */ "\x94\xc5", "\x00\x00", "\xd2\xb4", "\xd2\xab", "\xd2\xb6",
+@@ -8392,7 +8492,7 @@ static const char from_ucs4[][2] =
+   /* 0x73f3 */ "\x97\x64", "\xd6\x78", "\xd6\x6d", "\xd6\x6b", "\xfe\x68",
+   /* 0x73f8 */ "\xd6\x6c", "\x96\x4e", "\xd6\x73", "\x97\x65", "\xd6\x74",
+   /* 0x73fd */ "\xd6\x70", "\xb2\x7b", "\xd6\x75", "\xd6\x72", "\xd6\x6f",
+-  /* 0x7401 */ "\x00\x00", "\xb2\x79", "\xd6\x6e", "\xb2\x77", "\xb2\x7a",
++  /* 0x7402 */ "\x8c\x5a", "\xb2\x79", "\xd6\x6e", "\xb2\x77", "\xb2\x7a",
+   /* 0x7407 */ "\xd6\x71", "\xd6\x79", "\xaf\x5b", "\xb2\x78", "\xd6\x77",
+   /* 0x740c */ "\xd6\x76", "\xb2\x7c", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x7411 */ "\x89\xa1", "\x95\xfa", "\x00\x00", "\x92\xd4", "\xfe\x69",
+@@ -8406,12 +8506,12 @@ static const char from_ucs4[][2] =
+   /* 0x7439 */ "\xfe\x6c", "\xb5\x57", "\x00\x00", "\x94\x6b", "\x00\x00",
+   /* 0x743d */ "\x00\x00", "\xb7\xe9", "\xde\xb7", "\xb7\xe8", "\xde\xbb",
+   /* 0x7443 */ "\x92\xfc", "\xde\xb1", "\x95\xeb", "\xde\xbc", "\xfe\x73",
+-  /* 0x7448 */ "\x97\x6e", "\xfe\x5f", "\xde\xb2", "\xde\xb3", "\x00\x00",
++  /* 0x7448 */ "\x97\x6e", "\xfe\x5f", "\xde\xb2", "\xde\xb3", "\x87\xb8",
+   /* 0x744d */ "\xde\xbd", "\xde\xba", "\xde\xb8", "\xde\xb9", "\xde\xb5",
+   /* 0x7452 */ "\xde\xb4", "\xfd\xbd", "\xde\xbe", "\xb7\xe5", "\x92\xd5",
+   /* 0x7457 */ "\xde\xb6", "\x00\x00", "\xb7\xea", "\xb7\xe4", "\xb7\xeb",
+   /* 0x745c */ "\xb7\xec", "\xfe\xb9", "\xb7\xe7", "\xb7\xe6", "\xfe\x71",
+-  /* 0x7460 */ "\x00\x00", "\xe2\xce", "\xba\xbe", "\xba\xbd", "\xfb\xbb",
++  /* 0x7461 */ "\x87\x78", "\xe2\xce", "\xba\xbe", "\xba\xbd", "\xfb\xbb",
+   /* 0x7465 */ "\x00\x00", "\xe2\xd3", "\x94\x7a", "\xbc\xfc", "\xba\xbf",
+   /* 0x746b */ "\x95\xfb", "\xfe\x77", "\xba\xc1", "\xe2\xd4", "\xb7\xe3",
+   /* 0x7470 */ "\xba\xc0", "\xe2\xd0", "\xe2\xd2", "\xe2\xcf", "\xfe\x79",
+@@ -8423,15 +8523,15 @@ static const char from_ucs4[][2] =
+   /* 0x748d */ "\x00\x00", "\x00\x00", "\xed\x69", "\x00\x00", "\xea\x66",
+   /* 0x7492 */ "\x00\x00", "\xea\x65", "\xea\x67", "\x00\x00", "\xed\x66",
+   /* 0x7498 */ "\xbf\x5a", "\x92\xd3", "\xea\x63", "\x94\xb8", "\xbf\x58",
+-  /* 0x749c */ "\x00\x00", "\xbf\x5c", "\xbf\x5b", "\xea\x64", "\xea\x68",
++  /* 0x749d */ "\x87\x79", "\xbf\x5c", "\xbf\x5b", "\xea\x64", "\xea\x68",
+   /* 0x74a1 */ "\x00\x00", "\xbf\x59", "\xfc\x71", "\xed\x6d", "\xc0\xf5",
+   /* 0x74a7 */ "\xc2\x7a", "\xc0\xf6", "\xc0\xf3", "\xed\x6a", "\xed\x68",
+   /* 0x74ab */ "\x00\x00", "\xed\x6b", "\x00\x00", "\xed\x6e", "\xc0\xf4",
+   /* 0x74b1 */ "\xed\x6c", "\xed\x67", "\x00\x00", "\x97\x5e", "\xf0\x42",
+-  /* 0x74b6 */ "\xf0\x45", "\xf2\x75", "\xf0\x40", "\x00\x00", "\xf4\x6f",
++  /* 0x74b6 */ "\xf0\x45", "\xf2\x75", "\xf0\x40", "\x8c\xad", "\xf4\x6f",
+   /* 0x74bb */ "\xf0\x46", "\x00\x00", "\xc3\xa2", "\xf0\x44", "\xc2\x7b",
+   /* 0x74c0 */ "\xf0\x41", "\xf0\x43", "\xf0\x47", "\xf2\x76", "\x00\x00",
+-  /* 0x74c5 */ "\xf2\x74", "\x00\x00", "\x00\x00", "\xfe\xa7", "\x00\x00",
++  /* 0x74c5 */ "\xf2\x74", "\x87\xc1", "\x00\x00", "\xfe\xa7", "\x00\x00",
+   /* 0x74ca */ "\xc3\xa3", "\xf2\x73", "\x94\x6a", "\x00\x00", "\x00\x00",
+   /* 0x74cf */ "\xc4\x6e", "\x93\xe3", "\x00\x00", "\x00\x00", "\x98\xcf",
+   /* 0x74d4 */ "\xc4\xed", "\xf6\xf1", "\xc4\xec", "\xf6\xf3", "\xf6\xf0",
+@@ -8537,7 +8637,7 @@ static const char from_ucs4[][2] =
+   /* 0x76c8 */ "\xac\xd5", "\xd2\xcc", "\xaf\x71", "\x00\x00", "\xfe\xcb",
+   /* 0x76cd */ "\xaf\x72", "\xaf\x73", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x76d2 */ "\xb2\xb0", "\xd6\xa7", "\xb2\xaf", "\x00\x00", "\x9f\xc2",
+-  /* 0x76d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xda\xb9", "\xb2\xb1",
++  /* 0x76d6 */ "\x00\x00", "\x00\x00", "\x8c\x6b", "\xda\xb9", "\xb2\xb1",
+   /* 0x76dc */ "\xb5\x73", "\xde\xd7", "\xb7\xf8", "\xb7\xf9", "\x00\x00",
+   /* 0x76e1 */ "\xba\xc9", "\x00\x00", "\xba\xca", "\xbd\x4c", "\xbf\x64",
+   /* 0x76e6 */ "\xea\x75", "\xbf\x63", "\x00\x00", "\xed\x79", "\xc0\xfa",
+@@ -8589,7 +8689,7 @@ static const char from_ucs4[][2] =
+   /* 0x77cc */ "\xf4\x74", "\xf4\x77", "\xf4\x75", "\xf4\x76", "\xf5\xe0",
+   /* 0x77d0 */ "\x00\x00", "\x00\x00", "\xc4\xef", "\xf7\xeb", "\xf8\xb4",
+   /* 0x77d5 */ "\x00\x00", "\xc5\xf7", "\xf8\xf8", "\xf8\xf9", "\xc6\x66",
+-  /* 0x77db */ "\xa5\xd9", "\xac\xe1", "\x00\x00", "\xda\xc3", "\x00\x00",
++  /* 0x77db */ "\xa5\xd9", "\xac\xe1", "\x8c\x6e", "\xda\xc3", "\x00\x00",
+   /* 0x77e0 */ "\xde\xe3", "\x00\x00", "\xa5\xda", "\xa8\x6f", "\x00\x00",
+   /* 0x77e5 */ "\xaa\xbe", "\xfa\xd8", "\xcf\xe8", "\xcf\xe9", "\xaf\x78",
+   /* 0x77e9 */ "\x00\x00", "\x00\x00", "\xda\xc4", "\xb5\x75", "\xb8\x47",
+@@ -8642,7 +8742,7 @@ static const char from_ucs4[][2] =
+   /* 0x78d5 */ "\xbd\x57", "\x00\x00", "\xfe\xe7", "\x9f\xfb", "\x00\x00",
+   /* 0x78da */ "\xbf\x6a", "\xea\xa8", "\x00\x00", "\xea\xa2", "\xea\xa6",
+   /* 0x78df */ "\xea\xac", "\xea\xad", "\xea\xa9", "\xea\xaa", "\xea\xa7",
+-  /* 0x78e3 */ "\x00\x00", "\xea\xa4", "\x00\x00", "\xbf\x6c", "\xbf\x69",
++  /* 0x78e4 */ "\x8c\x59", "\xea\xa4", "\x00\x00", "\xbf\x6c", "\xbf\x69",
+   /* 0x78e9 */ "\xea\xa3", "\xea\xa5", "\x00\x00", "\xbf\x6b", "\xea\xab",
+   /* 0x78ee */ "\x93\xc9", "\xc1\x46", "\x94\xe8", "\xfb\x56", "\xed\xaa",
+   /* 0x78f3 */ "\xed\xa5", "\xc1\x45", "\x90\xc5", "\x00\x00", "\xc1\x43",
+@@ -8688,8 +8788,8 @@ static const char from_ucs4[][2] =
+   /* 0x79bb */ "\xd6\xc3", "\x00\x00", "\xb8\x56", "\xa5\xdd", "\xa8\x72",
+   /* 0x79c0 */ "\xa8\x71", "\xa8\x70", "\x00\x00", "\x00\x00", "\x97\xa8",
+   /* 0x79c5 */ "\xcd\xa4", "\xfe\xfc", "\x00\x00", "\xaa\xc4", "\xaa\xc3",
+-  /* 0x79c9 */ "\x00\x00", "\xac\xee", "\xfd\xbf", "\xcf\xfa", "\xcf\xfd",
+-  /* 0x79cf */ "\xcf\xfb", "\x00\x00", "\xac\xec", "\xac\xed", "\x00\x00",
++  /* 0x79ca */ "\x8c\xde", "\xac\xee", "\xfd\xbf", "\xcf\xfa", "\xcf\xfd",
++  /* 0x79cf */ "\xcf\xfb", "\x87\xb3", "\xac\xec", "\xac\xed", "\x00\x00",
+   /* 0x79d4 */ "\xfe\xfe", "\xcf\xf9", "\xcf\xfc", "\x00\x00", "\xaf\xb5",
+   /* 0x79d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xd2\xf3", "\xd2\xf5",
+   /* 0x79de */ "\xd2\xf4", "\xaf\xb2", "\xd2\xef", "\x00\x00", "\x96\xd1",
+@@ -8707,8 +8807,8 @@ static const char from_ucs4[][2] =
+   /* 0x7a1a */ "\xb8\x58", "\xdf\x40", "\xb8\x57", "\x00\x00", "\xb8\x5c",
+   /* 0x7a1f */ "\xb8\x5b", "\xb8\x59", "\x00\x00", "\xde\xfd", "\x00\x00",
+   /* 0x7a23 */ "\x00\x00", "\x00\x00", "\xe3\x49", "\x00\x00", "\xe3\x48",
+-  /* 0x7a28 */ "\x00\x00", "\x00\x00", "\xe3\x44", "\x00\x00", "\xa0\xb3",
+-  /* 0x7a2e */ "\xba\xd8", "\xe3\x47", "\xe3\x46", "\xba\xd9", "\x00\x00",
++  /* 0x7a28 */ "\x00\x00", "\x8c\x63", "\xe3\x44", "\x87\xbb", "\xa0\xb3",
++  /* 0x7a2e */ "\xba\xd8", "\xe3\x47", "\xe3\x46", "\xba\xd9", "\x87\xb4",
+   /* 0x7a32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xbd\x5e",
+   /* 0x7a37 */ "\x00\x00", "\xe6\xd2", "\x94\xcf", "\xbd\x5f", "\xbd\x5b",
+   /* 0x7a3d */ "\xbd\x5d", "\x9f\xfa", "\xbd\x5a", "\xbd\x5c", "\x00\x00",
+@@ -8721,14 +8821,14 @@ static const char from_ucs4[][2] =
+   /* 0x7a60 */ "\xc2\xaa", "\xc2\xa8", "\xc2\xa9", "\x00\x00", "\x00\x00",
+   /* 0x7a65 */ "\x8e\x4c", "\x00\x00", "\xf2\xa6", "\xf2\xa7", "\xc3\xad",
+   /* 0x7a69 */ "\x00\x00", "\xc3\xac", "\xf4\xa3", "\xf4\xa4", "\xf4\xa2",
+-  /* 0x7a6e */ "\x00\x00", "\xf6\xf8", "\xf6\xf9", "\x00\x00", "\x00\x00",
++  /* 0x7a6e */ "\x00\x00", "\xf6\xf8", "\xf6\xf9", "\x87\xc9", "\x00\x00",
+   /* 0x7a74 */ "\xa5\xde", "\xca\x48", "\xa8\x73", "\x00\x00", "\xcd\xa5",
+   /* 0x7a79 */ "\xaa\xc6", "\xaa\xc5", "\xcd\xa6", "\x00\x00", "\x8e\x4d",
+   /* 0x7a7e */ "\xd0\x40", "\xac\xef", "\xcf\xfe", "\xac\xf0", "\x00\x00",
+   /* 0x7a83 */ "\x9a\x73", "\xaf\xb6", "\xd2\xf8", "\xd2\xf6", "\xd2\xfc",
+   /* 0x7a88 */ "\xaf\xb7", "\xd2\xf7", "\xd2\xfb", "\xd2\xf9", "\xd2\xfa",
+   /* 0x7a8c */ "\x00\x00", "\x00\x00", "\xd6\xc8", "\xd6\xca", "\x99\x47",
+-  /* 0x7a92 */ "\xb2\xbf", "\x00\x00", "\xd6\xc9", "\xb2\xc0", "\xb5\xa2",
++  /* 0x7a92 */ "\xb2\xbf", "\x8c\xb1", "\xd6\xc9", "\xb2\xc0", "\xb5\xa2",
+   /* 0x7a97 */ "\xb5\xa1", "\xb5\x7e", "\xda\xdb", "\x00\x00", "\x00\x00",
+   /* 0x7a9b */ "\x00\x00", "\x00\x00", "\xdf\x44", "\xb8\x5d", "\xb8\x5e",
+   /* 0x7aa0 */ "\x00\x00", "\xdf\x43", "\xdf\x42", "\x00\x00", "\x00\x00",
+@@ -8749,7 +8849,7 @@ static const char from_ucs4[][2] =
+   /* 0x7aeb */ "\x00\x00", "\xba\xdc", "\xe3\x4d", "\xba\xdd", "\x00\x00",
+   /* 0x7af0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x7af6 */ "\xc4\x76", "\xf4\xa5", "\x00\x00", "\xa6\xcb", "\xaa\xc7",
+-  /* 0x7afb */ "\xcd\xa7", "\x00\x00", "\xac\xf2", "\x94\xeb", "\xac\xf1",
++  /* 0x7afb */ "\xcd\xa7", "\x87\xa3", "\xac\xf2", "\x94\xeb", "\xac\xf1",
+   /* 0x7b00 */ "\xd0\x42", "\xd0\x43", "\x00\x00", "\x00\x00", "\xd3\x40",
+   /* 0x7b05 */ "\xd3\x42", "\xaf\xb9", "\x00\x00", "\xd3\x44", "\xd3\x47",
+   /* 0x7b0a */ "\xd3\x45", "\x8e\x5c", "\x95\x53", "\x00\x00", "\xd3\x46",
+@@ -8784,12 +8884,12 @@ static const char from_ucs4[][2] =
+   /* 0x7b9b */ "\xe3\x56", "\xe3\x4f", "\xba\xe3", "\x00\x00", "\x00\x00",
+   /* 0x7ba0 */ "\xbd\x69", "\xba\xde", "\x8e\x61", "\x9f\x59", "\xe3\x5c",
+   /* 0x7ba4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x7ba9 */ "\x00\x00", "\x00\x00", "\xe6\xd9", "\xbd\x62", "\x00\x00",
++  /* 0x7ba9 */ "\x00\x00", "\x00\x00", "\xe6\xd9", "\xbd\x62", "\x87\xd0",
+   /* 0x7baf */ "\xe6\xdb", "\x00\x00", "\xbd\x63", "\x8b\xb3", "\x00\x00",
+   /* 0x7bb4 */ "\xbd\x65", "\xe6\xde", "\x00\x00", "\xe6\xd6", "\xba\xe6",
+   /* 0x7bb9 */ "\xe6\xdc", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x7bbe */ "\xe6\xd8", "\x00\x00", "\xb8\x60", "\xbd\x68", "\x00\x00",
+-  /* 0x7bc2 */ "\x00\x00", "\xbd\x64", "\x00\x00", "\xbd\x66", "\xbd\x67",
++  /* 0x7bc2 */ "\x00\x00", "\xbd\x64", "\x87\xb9", "\xbd\x66", "\xbd\x67",
+   /* 0x7bc7 */ "\x00\x00", "\xbf\x76", "\xe6\xdd", "\xe6\xd7", "\xbd\x6a",
+   /* 0x7bcc */ "\x00\x00", "\xe6\xda", "\x9f\x5d", "\x8e\x66", "\x00\x00",
+   /* 0x7bd1 */ "\x00\x00", "\x00\x00", "\xea\xc0", "\xea\xbb", "\x00\x00",
+@@ -8797,7 +8897,7 @@ static const char from_ucs4[][2] =
+   /* 0x7bdc */ "\xea\xc3", "\xea\xba", "\xea\xb7", "\xea\xc6", "\xc1\x51",
+   /* 0x7be1 */ "\xbf\x79", "\xea\xc2", "\xea\xb8", "\xbf\x77", "\xea\xbc",
+   /* 0x7be6 */ "\xbf\x7b", "\xea\xb9", "\xea\xbe", "\xbf\x7a", "\xea\xc1",
+-  /* 0x7beb */ "\xea\xc4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x7beb */ "\xea\xc4", "\x8c\xb2", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x7bf0 */ "\xed\xcb", "\xed\xcc", "\xed\xbc", "\xed\xc3", "\xed\xc1",
+   /* 0x7bf4 */ "\x00\x00", "\x00\x00", "\xc1\x4f", "\xed\xc8", "\xea\xbf",
+   /* 0x7bfa */ "\x8e\x6e", "\xed\xbf", "\x9f\x64", "\xed\xc9", "\xc1\x4e",
+@@ -8840,7 +8940,7 @@ static const char from_ucs4[][2] =
+   /* 0x7cb3 */ "\xb8\x65", "\xdf\x55", "\xb8\x66", "\x00\x00", "\x00\x00",
+   /* 0x7cb8 */ "\x99\x5a", "\xba\xe9", "\xe3\x61", "\xe3\x5e", "\xe3\x60",
+   /* 0x7cbd */ "\xba\xea", "\xba\xeb", "\xe3\x5f", "\x00\x00", "\x00\x00",
+-  /* 0x7cc2 */ "\xa0\xb0", "\x00\x00", "\x00\x00", "\xe6\xdf", "\x00\x00",
++  /* 0x7cc2 */ "\xa0\xb0", "\x8c\xb3", "\x00\x00", "\xe6\xdf", "\x00\x00",
+   /* 0x7cc7 */ "\x8e\x79", "\xe6\xe0", "\x8e\x78", "\xbd\x6b", "\xe6\xe2",
+   /* 0x7ccc */ "\xe6\xe1", "\x94\xf3", "\xa2\x61", "\x00\x00", "\xea\xca",
+   /* 0x7cd1 */ "\xea\xcb", "\xea\xc7", "\x98\xaf", "\xea\xc8", "\xbf\x7c",
+@@ -8880,9 +8980,9 @@ static const char from_ucs4[][2] =
+   /* 0x7d7b */ "\xdf\x5f", "\xdf\x61", "\xdf\x65", "\x00\x00", "\xdf\x5b",
+   /* 0x7d80 */ "\xdf\x59", "\xb8\x6a", "\x00\x00", "\xdf\x60", "\xdf\x64",
+   /* 0x7d85 */ "\xdf\x5c", "\xdf\x58", "\x00\x00", "\xdf\x57", "\x8e\xa7",
+-  /* 0x7d89 */ "\x00\x00", "\x00\x00", "\xdf\x62", "\xdf\x5a", "\xdf\x5e",
++  /* 0x7d89 */ "\x00\x00", "\x8c\x76", "\xdf\x62", "\xdf\x5a", "\xdf\x5e",
+   /* 0x7d8f */ "\xb8\x6b", "\x00\x00", "\xb8\x69", "\xdf\x66", "\xb8\x67",
+-  /* 0x7d94 */ "\xdf\x63", "\x00\x00", "\xe3\x72", "\x95\x42", "\x00\x00",
++  /* 0x7d94 */ "\xdf\x63", "\x87\x67", "\xe3\x72", "\x95\x42", "\x00\x00",
+   /* 0x7d98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xba\xee", "\xe3\x6a",
+   /* 0x7d9e */ "\xbd\x78", "\xe3\x74", "\xba\xf1", "\xe3\x78", "\xba\xf7",
+   /* 0x7da3 */ "\xe3\x65", "\x98\x7d", "\x00\x00", "\xe3\x75", "\xe3\x62",
+@@ -8921,11 +9021,11 @@ static const char from_ucs4[][2] =
+   /* 0x7e48 */ "\xc1\x66", "\xed\xd7", "\x00\x00", "\x00\x00", "\xed\xdb",
+   /* 0x7e4c */ "\x00\x00", "\x00\x00", "\x00\x00", "\xf0\x6e", "\xf0\x74",
+   /* 0x7e52 */ "\xc2\xb9", "\xf0\x77", "\xc2\xb4", "\xc2\xb5", "\xf0\x6f",
+-  /* 0x7e57 */ "\xf0\x76", "\xf0\x71", "\xc2\xba", "\xc2\xb7", "\x00\x00",
++  /* 0x7e57 */ "\xf0\x76", "\xf0\x71", "\xc2\xba", "\xc2\xb7", "\x8c\xdc",
+   /* 0x7e5c */ "\xf0\x6d", "\x00\x00", "\xc2\xb6", "\xf0\x73", "\xf0\x75",
+   /* 0x7e61 */ "\xc2\xb8", "\xf0\x72", "\xf0\x70", "\x00\x00", "\x98\x76",
+   /* 0x7e65 */ "\x00\x00", "\x8e\xa1", "\xf2\xb8", "\xc3\xb7", "\xc3\xb8",
+-  /* 0x7e6b */ "\xc3\xb4", "\x00\x00", "\xc3\xb5", "\x8e\xb7", "\xf2\xb4",
++  /* 0x7e6b */ "\xc3\xb4", "\x8c\xb4", "\xc3\xb5", "\x8e\xb7", "\xf2\xb4",
+   /* 0x7e70 */ "\xf2\xb2", "\x00\x00", "\xf2\xb6", "\xc3\xba", "\xf2\xb7",
+   /* 0x7e75 */ "\xf2\xb0", "\xf2\xaf", "\xf2\xb3", "\xf2\xb1", "\xc3\xb6",
+   /* 0x7e7a */ "\xf2\xb5", "\xf4\xac", "\xc4\x7e", "\xc4\x7d", "\xf4\xad",
+@@ -9078,7 +9178,7 @@ static const char from_ucs4[][2] =
+   /* 0x8159 */ "\x99\x7d", "\x99\x7e", "\xdf\x77", "\xdf\x75", "\x00\x00",
+   /* 0x815e */ "\xdf\x7b", "\x00\x00", "\xdf\x73", "\xdf\xa2", "\xdf\x78",
+   /* 0x8162 */ "\x00\x00", "\xdf\x72", "\xb8\x7b", "\xb8\xa3", "\xdf\x7d",
+-  /* 0x8167 */ "\x00\x00", "\xdf\x76", "\x00\x00", "\xb8\x7e", "\x00\x00",
++  /* 0x8167 */ "\x00\x00", "\xdf\x76", "\x00\x00", "\xb8\x7e", "\x8c\xfb",
+   /* 0x816d */ "\x8b\x5b", "\xb8\x7c", "\xdf\x7e", "\xb8\x79", "\xb8\x78",
+   /* 0x8172 */ "\xdf\x79", "\xb8\x7d", "\xb5\xcd", "\x00\x00", "\xdf\x7c",
+   /* 0x8177 */ "\xdf\x74", "\xb8\x7a", "\xb8\xa1", "\xb8\xa2", "\x00\x00",
+@@ -9146,7 +9246,7 @@ static const char from_ucs4[][2] =
+   /* 0x82ad */ "\xaa\xdd", "\xcd\xba", "\xaa\xe4", "\xaa\xe7", "\xaa\xe1",
+   /* 0x82b1 */ "\x00\x00", "\xaa\xda", "\xcd\xbe", "\xcd\xb8", "\xcd\xc5",
+   /* 0x82b7 */ "\xaa\xe9", "\xaa\xe5", "\xaa\xe0", "\xcd\xbd", "\xaf\xec",
+-  /* 0x82bc */ "\xcd\xbb", "\xaa\xde", "\xaa\xe8", "\x00\x00", "\xcd\xb3",
++  /* 0x82bc */ "\xcd\xbb", "\xaa\xde", "\xaa\xe8", "\x8c\xd0", "\xcd\xb3",
+   /* 0x82c0 */ "\x00\x00", "\xcd\xc2", "\xcd\xc4", "\x8b\x52", "\x00\x00",
+   /* 0x82c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x99\xb0",
+   /* 0x82ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x89\x77",
+@@ -9158,7 +9258,7 @@ static const char from_ucs4[][2] =
+   /* 0x82e8 */ "\x00\x00", "\xd0\x7e", "\xd0\x73", "\xd0\x76", "\xd0\xa5",
+   /* 0x82ee */ "\xfa\x4d", "\xad\x66", "\xd0\x7d", "\xad\x5e", "\xd0\x78",
+   /* 0x82f3 */ "\xd0\xa4", "\xd0\x75", "\xd0\x79", "\xd0\x7c", "\x9d\xe4",
+-  /* 0x82f7 */ "\x00\x00", "\xd0\x6d", "\xd0\xa3", "\xd0\x7b", "\xfb\xe9",
++  /* 0x82f8 */ "\x8c\xb5", "\xd0\x6d", "\xd0\xa3", "\xd0\x7b", "\xfb\xe9",
+   /* 0x82fd */ "\x9b\x54", "\xd0\x6c", "\x99\xb2", "\xd0\x70", "\xad\x5f",
+   /* 0x8302 */ "\xad\x5a", "\xad\x53", "\xad\x58", "\xad\x54", "\xad\x67",
+   /* 0x8307 */ "\xd0\x6e", "\xd3\xa5", "\xad\x5b", "\x00\x00", "\x9e\x68",
+@@ -9237,7 +9337,7 @@ static const char from_ucs4[][2] =
+   /* 0x8474 */ "\xdf\xba", "\xb8\xaa", "\xdf\xac", "\xb8\xa7", "\xdf\xc4",
+   /* 0x8479 */ "\xdf\xad", "\xdf\xc2", "\x00\x00", "\x00\x00", "\xdf\xb7",
+   /* 0x847e */ "\xdf\xdb", "\x91\xc7", "\x95\x5f", "\x00\x00", "\xb8\xa6",
+-  /* 0x8482 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xdf\xb3", "\x00\x00",
++  /* 0x8482 */ "\x00\x00", "\x87\xab", "\x00\x00", "\xdf\xb3", "\x00\x00",
+   /* 0x8488 */ "\x99\xbb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x848d */ "\xdf\xaf", "\xdf\xd5", "\xdf\xae", "\xbb\x60", "\xe3\xd3",
+   /* 0x8492 */ "\x8e\x6d", "\x8f\x71", "\xe3\xc2", "\x00\x00", "\x94\xcb",
+@@ -9262,7 +9362,7 @@ static const char from_ucs4[][2] =
+   /* 0x84f1 */ "\xdf\xa9", "\xe7\x5f", "\xe7\x63", "\xe7\x5d", "\x00\x00",
+   /* 0x84f6 */ "\xe7\x70", "\xe7\x61", "\x99\xbf", "\xe7\x77", "\xe7\x5a",
+   /* 0x84fb */ "\xe7\x58", "\xe7\x64", "\xe7\x6e", "\xe7\x69", "\xbd\xb6",
+-  /* 0x8500 */ "\xe7\x4f", "\x00\x00", "\xe7\x6d", "\x92\x42", "\x00\x00",
++  /* 0x8500 */ "\xe7\x4f", "\x00\x00", "\xe7\x6d", "\x92\x42", "\x87\xd7",
+   /* 0x8505 */ "\xfb\xa5", "\xbd\xb7", "\xdf\xbd", "\xe7\x5b", "\xe7\x52",
+   /* 0x850a */ "\xe7\x55", "\xe7\x7b", "\xe7\x5c", "\xe7\x53", "\xe7\x51",
+   /* 0x850f */ "\xe7\x4e", "\x99\xc0", "\xbd\xb0", "\xe7\x65", "\xbd\xaf",
+@@ -9281,7 +9381,7 @@ static const char from_ucs4[][2] =
+   /* 0x854f */ "\x00\x00", "\xeb\x46", "\x99\xc2", "\xea\xfc", "\xeb\x55",
+   /* 0x8555 */ "\xeb\x4f", "\xea\xf8", "\xee\x46", "\xea\xfe", "\xbf\xb7",
+   /* 0x855a */ "\x8f\x5c", "\xeb\x4a", "\x00\x00", "\xeb\x54", "\xbf\xbf",
+-  /* 0x855e */ "\x00\x00", "\xeb\x51", "\xea\xfd", "\xeb\x44", "\xeb\x48",
++  /* 0x855f */ "\x8c\xbd", "\xeb\x51", "\xea\xfd", "\xeb\x44", "\xeb\x48",
+   /* 0x8564 */ "\xeb\x42", "\xeb\x56", "\xeb\x53", "\xeb\x50", "\xbf\xb9",
+   /* 0x8569 */ "\xbf\xba", "\xbf\xbe", "\xea\xfa", "\xeb\x57", "\xbf\xbd",
+   /* 0x856e */ "\xeb\x4d", "\x99\xc4", "\x99\xc5", "\xeb\x4b", "\x00\x00",
+@@ -9291,8 +9391,8 @@ static const char from_ucs4[][2] =
+   /* 0x8582 */ "\xee\x4f", "\xed\xf3", "\xc1\xa1", "\xee\x51", "\xee\x49",
+   /* 0x8587 */ "\xc1\xa8", "\xee\x50", "\xee\x42", "\xc1\xaa", "\xed\xf9",
+   /* 0x858c */ "\xeb\x52", "\xee\x4a", "\xee\x47", "\xed\xf5", "\xee\x55",
+-  /* 0x8591 */ "\xc1\xa4", "\x00\x00", "\x00\x00", "\xc1\xa5", "\xed\xf7",
+-  /* 0x8596 */ "\xee\x48", "\x00\x00", "\xee\x54", "\xee\x4b", "\xed\xfd",
++  /* 0x8591 */ "\xc1\xa4", "\x00\x00", "\x87\x76", "\xc1\xa5", "\xed\xf7",
++  /* 0x8596 */ "\xee\x48", "\x8c\xb6", "\xee\x54", "\xee\x4b", "\xed\xfd",
+   /* 0x859b */ "\xc1\xa7", "\xc1\xa3", "\xee\x4c", "\xed\xfe", "\xee\x56",
+   /* 0x85a0 */ "\xed\xf8", "\xee\x43", "\xee\x4e", "\xed\xfa", "\xed\xfc",
+   /* 0x85a4 */ "\x00\x00", "\xc2\xcb", "\xed\xf6", "\xc1\xa9", "\xc2\xc4",
+@@ -9304,7 +9404,7 @@ static const char from_ucs4[][2] =
+   /* 0x85c3 */ "\xf0\xa7", "\xf0\xad", "\xf0\xb2", "\xf0\xa5", "\xf0\xac",
+   /* 0x85c8 */ "\xf0\xb1", "\xc2\xc7", "\x00\x00", "\xf0\xaf", "\x00\x00",
+   /* 0x85cd */ "\xc2\xc5", "\xf0\xb0", "\xc2\xc3", "\xc2\xc6", "\xf2\xd5",
+-  /* 0x85d2 */ "\xf0\xb5", "\x00\x00", "\x00\x00", "\xc3\xc2", "\x00\x00",
++  /* 0x85d2 */ "\xf0\xb5", "\x00\x00", "\x00\x00", "\xc3\xc2", "\x8c\xce",
+   /* 0x85d7 */ "\xf2\xcd", "\xf2\xd1", "\xf2\xc9", "\xf2\xcc", "\x00\x00",
+   /* 0x85dc */ "\xf2\xd4", "\xc3\xc0", "\xf2\xd9", "\xf2\xd2", "\x99\xc6",
+   /* 0x85e1 */ "\xf2\xca", "\xf2\xda", "\xf2\xd3", "\xc3\xc3", "\xc3\xc4",
+@@ -9316,8 +9416,8 @@ static const char from_ucs4[][2] =
+   /* 0x85ff */ "\xf4\xb9", "\xf4\xbd", "\xf4\xba", "\x8f\xa5", "\x00\x00",
+   /* 0x8604 */ "\xf4\xbf", "\xf4\xc1", "\xc4\xaa", "\xc4\xac", "\x00\x00",
+   /* 0x8609 */ "\xf4\xc0", "\xc4\xad", "\xc4\xab", "\xf4\xc2", "\xfa\xbb",
+-  /* 0x860d */ "\x00\x00", "\x00\x00", "\x95\x70", "\xc4\xa8", "\x00\x00",
+-  /* 0x8612 */ "\x00\x00", "\x93\x68", "\x00\x00", "\x8f\x7e", "\xc4\xf4",
++  /* 0x860d */ "\x00\x00", "\x8c\x61", "\x95\x70", "\xc4\xa8", "\x00\x00",
++  /* 0x8613 */ "\x87\xaf", "\x93\x68", "\x00\x00", "\x8f\x7e", "\xc4\xf4",
+   /* 0x8618 */ "\xf5\xf1", "\xf5\xf7", "\xc4\xf6", "\xf4\xbc", "\xf5\xf6",
+   /* 0x861c */ "\x00\x00", "\xf5\xfd", "\xf5\xf4", "\xf5\xfb", "\xf5\xfa",
+   /* 0x8622 */ "\xf4\xb8", "\xf5\xf5", "\xf0\xb6", "\xf5\xfe", "\xf5\xf3",
+@@ -9444,10 +9544,10 @@ static const char from_ucs4[][2] =
+   /* 0x887f */ "\xd3\xd7", "\xd3\xd5", "\xb0\x4b", "\xb0\x4c", "\xd3\xd9",
+   /* 0x8884 */ "\xfe\xec", "\x00\x00", "\x00\x00", "\x95\xa3", "\xb3\x50",
+   /* 0x8889 */ "\xd7\xb2", "\x00\x00", "\xb3\x55", "\xd7\xc2", "\xb3\x54",
+-  /* 0x888e */ "\xd7\xc4", "\x00\x00", "\x00\x00", "\xd7\xb8", "\xb3\x52",
++  /* 0x888e */ "\xd7\xc4", "\x8c\x45", "\x8c\xb8", "\xd7\xb8", "\xb3\x52",
+   /* 0x8893 */ "\xd7\xc3", "\x00\x00", "\xd7\xb3", "\xb3\x53", "\xd7\xbf",
+   /* 0x8898 */ "\xd7\xbb", "\xd7\xbd", "\xd7\xb7", "\xd7\xbe", "\x8f\xc1",
+-  /* 0x889c */ "\x00\x00", "\xb3\x4f", "\xd7\xba", "\xa0\x52", "\xd7\xb9",
++  /* 0x889d */ "\x87\xb7", "\xb3\x4f", "\xd7\xba", "\xa0\x52", "\xd7\xb9",
+   /* 0x88a2 */ "\xd7\xb5", "\x00\x00", "\xd7\xc0", "\x00\x00", "\x00\x00",
+   /* 0x88a7 */ "\xd7\xbc", "\xd7\xb4", "\x00\x00", "\xd7\xb6", "\xb3\x51",
+   /* 0x88ac */ "\xd7\xc1", "\x00\x00", "\x99\xd0", "\x00\x00", "\x00\x00",
+@@ -9558,7 +9658,7 @@ static const char from_ucs4[][2] =
+   /* 0x8ab9 */ "\xbd\xda", "\xe7\xe2", "\xe7\xdb", "\xbd\xcb", "\xe7\xe3",
+   /* 0x8abe */ "\xe7\xdd", "\xbd\xd5", "\xe7\xde", "\x00\x00", "\xbd\xd4",
+   /* 0x8ac3 */ "\xe7\xe1", "\xbd\xce", "\xe7\xdf", "\xe7\xd5", "\xbd\xcd",
+-  /* 0x8ac8 */ "\xeb\xaa", "\xbd\xd3", "\x00\x00", "\xbd\xd0", "\x00\x00",
++  /* 0x8ac8 */ "\xeb\xaa", "\xbd\xd3", "\x00\x00", "\xbd\xd0", "\x8c\xf7",
+   /* 0x8acd */ "\xbd\xd8", "\x00\x00", "\xe7\xd4", "\x00\x00", "\xe7\xd8",
+   /* 0x8ad2 */ "\xbd\xcc", "\xe7\xd7", "\xe7\xd9", "\xe7\xda", "\xbd\xd7",
+   /* 0x8ad7 */ "\xe7\xdc", "\xe7\xe0", "\xe7\xe4", "\x92\x7c", "\xbd\xdb",
+@@ -9567,7 +9667,7 @@ static const char from_ucs4[][2] =
+   /* 0x8ae6 */ "\xbf\xcd", "\xbf\xd3", "\xeb\xad", "\x00\x00", "\x9c\x45",
+   /* 0x8aeb */ "\xbf\xcf", "\x00\x00", "\xbf\xd9", "\xbf\xd4", "\xeb\xaf",
+   /* 0x8af0 */ "\xeb\xa9", "\xbf\xd0", "\xeb\xa2", "\xbf\xda", "\xeb\xa3",
+-  /* 0x8af5 */ "\xeb\xa4", "\xbf\xdb", "\xbf\xd8", "\xbd\xd1", "\x00\x00",
++  /* 0x8af5 */ "\xeb\xa4", "\xbf\xdb", "\xbf\xd8", "\xbd\xd1", "\x8c\xe8",
+   /* 0x8afa */ "\xbf\xce", "\xeb\xb0", "\xbf\xdc", "\x00\x00", "\xbf\xd5",
+   /* 0x8aff */ "\xeb\xae", "\xbf\xd1", "\xbf\xd6", "\xbf\xd7", "\x00\x00",
+   /* 0x8b04 */ "\xc1\xc3", "\xee\xa4", "\xee\xad", "\xee\xaa", "\xee\xac",
+@@ -9595,9 +9695,9 @@ static const char from_ucs4[][2] =
+   /* 0x8b71 */ "\x00\x00", "\x00\x00", "\xc4\xfe", "\x00\x00", "\x00\x00",
+   /* 0x8b77 */ "\xc5\x40", "\xf6\x4e", "\xf6\x4d", "\xf6\x50", "\xf6\x51",
+   /* 0x8b7b */ "\x00\x00", "\xc5\x41", "\xf7\x56", "\xf7\x5b", "\xc5\xaa",
+-  /* 0x8b81 */ "\x9a\xf6", "\xf7\x58", "\x00\x00", "\xf7\x57", "\xf7\x5a",
++  /* 0x8b81 */ "\x9a\xf6", "\xf7\x58", "\x8c\xae", "\xf7\x57", "\xf7\x5a",
+   /* 0x8b86 */ "\xf7\x59", "\x00\x00", "\xf8\x43", "\x00\x00", "\xc5\xdc",
+-  /* 0x8b8b */ "\xf8\x42", "\xf8\x40", "\x00\x00", "\xf8\x41", "\x00\x00",
++  /* 0x8b8b */ "\xf8\x42", "\xf8\x40", "\x00\x00", "\xf8\x41", "\x87\xcb",
+   /* 0x8b90 */ "\x8f\xe7", "\x00\x00", "\xc5\xfe", "\xc5\xfd", "\xf8\xc1",
+   /* 0x8b95 */ "\xf8\xc2", "\xc6\x40", "\x00\x00", "\xf9\x4d", "\xf9\x4e",
+   /* 0x8b9a */ "\xc6\x67", "\x8f\xe8", "\xc6\x6d", "\x00\x00", "\xf9\xa9",
+@@ -9759,7 +9859,7 @@ static const char from_ucs4[][2] =
+   /* 0x8ea6 */ "\xf9\x70", "\x95\xc9", "\xf9\xbe", "\xf9\xab", "\xc6\x6e",
+   /* 0x8eab */ "\xa8\xad", "\xb0\x60", "\x90\x48", "\x00\x00", "\x00\x00",
+   /* 0x8eb0 */ "\x99\xe8", "\x00\x00", "\xb8\xfa", "\x00\x00", "\x00\x00",
+-  /* 0x8eb4 */ "\x00\x00", "\x90\x49", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x8eb4 */ "\x00\x00", "\x90\x49", "\x00\x00", "\x00\x00", "\x8c\xba",
+   /* 0x8eba */ "\xbd\xf6", "\x00\x00", "\x90\xb1", "\xeb\xc8", "\x00\x00",
+   /* 0x8ebe */ "\x00\x00", "\xc2\xdf", "\x00\x00", "\xf3\x55", "\x90\x4a",
+   /* 0x8ec3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -9807,7 +9907,7 @@ static const char from_ucs4[][2] =
+   /* 0x8f95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x8f9b */ "\xa8\xaf", "\xb6\x64", "\x00\x00", "\x00\x00", "\xb9\x40",
+   /* 0x8fa0 */ "\x9b\x5a", "\x00\x00", "\x00\x00", "\xbb\xb6", "\x00\x00",
+-  /* 0x8fa5 */ "\x90\x50", "\xbf\xec", "\x00\x00", "\xbf\xeb", "\x00\x00",
++  /* 0x8fa5 */ "\x90\x50", "\xbf\xec", "\x8c\x4f", "\xbf\xeb", "\x00\x00",
+   /* 0x8fa9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xc3\xe3", "\xc4\x7c",
+   /* 0x8faf */ "\xc5\x47", "\xa8\xb0", "\xb0\x64", "\xb9\x41", "\x90\x54",
+   /* 0x8fb4 */ "\xf3\x5b", "\xc6\xd6", "\x9a\xa8", "\x99\xef", "\xfe\xeb",
+@@ -9815,7 +9915,7 @@ static const char from_ucs4[][2] =
+   /* 0x8fbe */ "\x9d\x7d", "\xcb\xa6", "\x00\x00", "\x99\xf0", "\xa8\xb1",
+   /* 0x8fc2 */ "\x00\x00", "\xa8\xb4", "\xa8\xb3", "\xa8\xb2", "\x00\x00",
+   /* 0x8fc7 */ "\x00\x00", "\xcb\xa5", "\x99\xf1", "\xcd\xcd", "\x99\xf2",
+-  /* 0x8fcd */ "\xcd\xcf", "\xaa\xef", "\x00\x00", "\x9d\x60", "\xaa\xf1",
++  /* 0x8fcd */ "\xcd\xcf", "\xaa\xef", "\x8c\xbc", "\x9d\x60", "\xaa\xf1",
+   /* 0x8fd2 */ "\xcd\xcc", "\xcd\xce", "\xaa\xf0", "\xcd\xd1", "\xcd\xd0",
+   /* 0x8fd7 */ "\xcd\xd2", "\x00\x00", "\x00\x00", "\xa0\xa3", "\x00\x00",
+   /* 0x8fdb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xd0\xb6",
+@@ -9839,7 +9939,7 @@ static const char from_ucs4[][2] =
+   /* 0x9036 */ "\xb6\x6a", "\x90\x62", "\xb6\x68", "\x00\x00", "\x00\x00",
+   /* 0x903a */ "\x00\x00", "\xb9\x47", "\xe0\xa3", "\xb9\x4f", "\xe0\x7e",
+   /* 0x903f */ "\x00\x00", "\xb9\x50", "\xb9\x45", "\x00\x00", "\xe0\xa1",
+-  /* 0x9044 */ "\x00\x00", "\x00\x00", "\xb9\x4a", "\x00\x00", "\xe0\xa2",
++  /* 0x9044 */ "\x00\x00", "\x87\xbd", "\xb9\x4a", "\x00\x00", "\xe0\xa2",
+   /* 0x904a */ "\xb9\x43", "\xb9\x42", "\x9f\x55", "\xb9\x4d", "\xb9\x4c",
+   /* 0x904f */ "\xb9\x4b", "\xb9\x49", "\xb9\x4e", "\xe0\x7d", "\xb9\x44",
+   /* 0x9054 */ "\xb9\x46", "\xb9\x48", "\x9b\xf9", "\x00\x00", "\xbb\xb8",
+@@ -9925,16 +10025,16 @@ static const char from_ucs4[][2] =
+   /* 0x91e4 */ "\xd7\xfc", "\x96\x5b", "\xb3\xa7", "\xb3\xa9", "\xd8\x42",
+   /* 0x91e9 */ "\xb3\xab", "\xd7\xfe", "\xd8\x40", "\xd7\xf7", "\xb3\xaa",
+   /* 0x91ee */ "\xd8\x43", "\x00\x00", "\x00\x00", "\xd7\xf9", "\x00\x00",
+-  /* 0x91f3 */ "\xd7\xfa", "\xd7\xf8", "\xb3\xa6", "\x00\x00", "\xd8\x41",
++  /* 0x91f3 */ "\xd7\xfa", "\xd7\xf8", "\xb3\xa6", "\x8c\x50", "\xd8\x41",
+   /* 0x91f8 */ "\xd7\xfb", "\xd7\xfd", "\x94\xa6", "\x00\x00", "\x00\x00",
+   /* 0x91fd */ "\xdc\x6d", "\x8f\xd5", "\xdc\x6c", "\xdc\x6a", "\xdc\x62",
+   /* 0x9202 */ "\xdc\x71", "\xdc\x65", "\xdc\x6f", "\xdc\x76", "\xdc\x6e",
+   /* 0x9207 */ "\xb6\x79", "\x9e\x73", "\xb6\x75", "\xdc\x63", "\x00\x00",
+   /* 0x920c */ "\xdc\x69", "\xb6\x77", "\x90\x75", "\xdc\x68", "\xb6\x78",
+   /* 0x9211 */ "\xb6\x7a", "\xdc\x6b", "\x99\xf7", "\xb6\x72", "\xb6\x73",
+-  /* 0x9216 */ "\xdc\x77", "\xdc\x75", "\x00\x00", "\xdc\x74", "\xdc\x66",
++  /* 0x9216 */ "\xdc\x77", "\xdc\x75", "\x87\xb2", "\xdc\x74", "\xdc\x66",
+   /* 0x921a */ "\x00\x00", "\xdc\x72", "\x00\x00", "\xb6\x76", "\x00\x00",
+-  /* 0x921f */ "\x00\x00", "\x00\x00", "\x00\x00", "\xb6\x74", "\xdc\x73",
++  /* 0x921f */ "\x00\x00", "\x8c\xbf", "\x00\x00", "\xb6\x74", "\xdc\x73",
+   /* 0x9225 */ "\xdc\x64", "\xdc\x67", "\xdc\x70", "\x99\xf9", "\x00\x00",
+   /* 0x922a */ "\x96\x63", "\x95\xb9", "\x00\x00", "\xe4\xba", "\xe0\xb7",
+   /* 0x922e */ "\x00\x00", "\xe0\xb0", "\xe0\xc3", "\xe0\xcc", "\xe0\xb3",
+@@ -10027,7 +10127,7 @@ static const char from_ucs4[][2] =
+   /* 0x93e2 */ "\xc3\xf0", "\xf3\x6f", "\xc3\xf3", "\x00\x00", "\xf3\x6b",
+   /* 0x93e7 */ "\xf3\x75", "\xc3\xf5", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x93ec */ "\xf3\x67", "\x00\x00", "\xf3\x6e", "\x00\x00", "\xfd\xcb",
+-  /* 0x93f1 */ "\xfe\x7a", "\x00\x00", "\x91\xdb", "\x00\x00", "\xf4\xf3",
++  /* 0x93f1 */ "\xfe\x7a", "\x00\x00", "\x91\xdb", "\x8c\x6a", "\xf4\xf3",
+   /* 0x93f6 */ "\xf5\x42", "\xf4\xf5", "\xf4\xfc", "\xf3\x66", "\xf4\xfa",
+   /* 0x93fb */ "\xf4\xe9", "\xf5\x40", "\xc4\xc3", "\xf4\xed", "\xf4\xfe",
+   /* 0x9400 */ "\xf4\xf4", "\x97\xaf", "\x00\x00", "\xc4\xc2", "\x95\xdd",
+@@ -10039,7 +10139,7 @@ static const char from_ucs4[][2] =
+   /* 0x941d */ "\x00\x00", "\x00\x00", "\xf4\xea", "\x00\x00", "\x00\x00",
+   /* 0x9422 */ "\x00\x00", "\x91\xbc", "\x90\xe2", "\x90\xb4", "\x95\xe1",
+   /* 0x9428 */ "\xf4\xf0", "\xf6\x61", "\xf6\x66", "\xc5\x4f", "\xf6\x68",
+-  /* 0x942d */ "\x9a\x4e", "\xc5\x49", "\x00\x00", "\xf6\x64", "\xf6\x6a",
++  /* 0x942d */ "\x9a\x4e", "\xc5\x49", "\x87\xad", "\xf6\x64", "\xf6\x6a",
+   /* 0x9432 */ "\xc5\x4e", "\xc5\x4a", "\x00\x00", "\xc5\x4b", "\xf6\x60",
+   /* 0x9437 */ "\xf6\x67", "\xc5\x4d", "\xf6\x65", "\xc5\x4c", "\xf6\x5f",
+   /* 0x943c */ "\xf6\x63", "\xf6\x62", "\x9a\x4f", "\xf6\x5e", "\xf6\x69",
+@@ -10194,13 +10294,13 @@ static const char from_ucs4[][2] =
+   /* 0x9725 */ "\xf1\x78", "\xf3\x7e", "\xc3\xfa", "\xf3\x7d", "\xf3\x7a",
+   /* 0x972a */ "\xc3\xf9", "\xf3\x7b", "\xf3\x7c", "\x00\x00", "\xf5\x48",
+   /* 0x972f */ "\xf5\x49", "\xc4\xc5", "\x90\xd2", "\xc5\x53", "\x00\x00",
+-  /* 0x9733 */ "\x00\x00", "\xf6\x6e", "\x90\xd4", "\x00\x00", "\xc5\x51",
++  /* 0x9734 */ "\x87\x6b", "\xf6\x6e", "\x90\xd4", "\x00\x00", "\xc5\x51",
+   /* 0x9739 */ "\xc5\x52", "\xf6\x6f", "\x00\x00", "\x00\x00", "\xc5\xb4",
+   /* 0x973e */ "\xc5\xb5", "\xf7\x71", "\x9a\x5b", "\x95\xfd", "\xc6\x45",
+   /* 0x9743 */ "\xf8\xcf", "\xc6\x47", "\x00\x00", "\xf8\xce", "\xf8\xd0",
+-  /* 0x9748 */ "\xc6\x46", "\xf9\x57", "\x00\x00", "\xf9\xad", "\x00\x00",
++  /* 0x9748 */ "\xc6\x46", "\xf9\x57", "\x87\xb1", "\xf9\xad", "\x00\x00",
+   /* 0x974c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xc4",
+-  /* 0x9752 */ "\xab\x43", "\x00\x00", "\x00\x00", "\x00\x00", "\xb9\x74",
++  /* 0x9752 */ "\xab\x43", "\x00\x00", "\x00\x00", "\x8c\x66", "\xb9\x74",
+   /* 0x9757 */ "\x90\xde", "\xe4\xbe", "\x00\x00", "\xe8\xb0", "\xc0\x51",
+   /* 0x975c */ "\xc0\x52", "\x9c\xe4", "\xab\x44", "\x90\xe1", "\xbe\x61",
+   /* 0x9761 */ "\xc3\xfb", "\xad\xb1", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -10252,10 +10352,10 @@ static const char from_ucs4[][2] =
+   /* 0x9847 */ "\x9b\x5e", "\xed\xd4", "\xef\x48", "\xef\x47", "\x90\xf8",
+   /* 0x984c */ "\xc3\x44", "\xc3\x42", "\xc3\x45", "\xc3\x43", "\xf1\xa8",
+   /* 0x9851 */ "\xf1\xa9", "\xf1\xaa", "\xc3\x46", "\x00\x00", "\x00\x00",
+-  /* 0x9855 */ "\x00\x00", "\xf3\xaa", "\xc4\x40", "\xf3\xa8", "\x00\x00",
++  /* 0x9856 */ "\x8c\xfc", "\xf3\xaa", "\xc4\x40", "\xf3\xa8", "\x00\x00",
+   /* 0x985b */ "\xc4\x41", "\xf3\xa7", "\xf3\xa9", "\xc3\xfe", "\xf5\x51",
+   /* 0x9860 */ "\xf5\x4e", "\x00\x00", "\xf5\x4f", "\xf5\x50", "\xf6\x72",
+-  /* 0x9865 */ "\xc5\x56", "\x90\xf9", "\xc5\x55", "\x00\x00", "\xf7\x74",
++  /* 0x9865 */ "\xc5\x56", "\x90\xf9", "\xc5\x55", "\x8c\xc9", "\xf7\x74",
+   /* 0x986a */ "\xf7\x73", "\xc5\xb8", "\xfa\x6a", "\x00\x00", "\x00\x00",
+   /* 0x986f */ "\xc5\xe3", "\xc6\x49", "\xc6\x60", "\xf9\x58", "\xf9\xae",
+   /* 0x9874 */ "\xf9\xaf", "\x8b\xef", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -10330,7 +10430,7 @@ static const char from_ucs4[][2] =
+   /* 0x99cd */ "\xe8\xc7", "\xe8\xcb", "\xe8\xc8", "\xbe\x6e", "\xbe\x71",
+   /* 0x99d2 */ "\xbe\x73", "\xe8\xc9", "\xe8\xca", "\xbe\x72", "\xe8\xcd",
+   /* 0x99d7 */ "\xe8\xd0", "\xe8\xce", "\xbe\x74", "\x9f\xab", "\xbe\x70",
+-  /* 0x99dc */ "\xe8\xc6", "\xbe\x6d", "\x00\x00", "\xbe\x6f", "\x00\x00",
++  /* 0x99dc */ "\xe8\xc6", "\xbe\x6d", "\x00\x00", "\xbe\x6f", "\x8c\xbe",
+   /* 0x99e1 */ "\x8e\xc1", "\xc0\x63", "\xec\x66", "\xec\x64", "\xec\x63",
+   /* 0x99e6 */ "\x95\x55", "\xec\x69", "\x00\x00", "\xec\x68", "\xec\x67",
+   /* 0x99ea */ "\x00\x00", "\xec\x62", "\xc0\x62", "\xec\x61", "\x00\x00",
+@@ -10623,852 +10723,19 @@ static const char from_ucs4[][2] =
+   /* 0x9f85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x9f8a */ "\x00\x00", "\x00\x00", "\xc0\x73", "\x91\xcb", "\x00\x00",
+   /* 0x9f90 */ "\xc3\x65", "\xf5\xbf", "\xf6\xd5", "\x00\x00", "\xc5\xc7",
+-  /* 0x9f95 */ "\xf7\xce", "\x00\x00", "\x00\x00", "\xf9\xd5", "\x89\xc8",
++  /* 0x9f95 */ "\xf7\xce", "\x87\xac", "\x87\xa4", "\xf9\xd5", "\x89\xc8",
+   /* 0x9f99 */ "\x00\x00", "\x00\x00", "\xc0\x74", "\x00\x00", "\x00\x00",
+   /* 0x9f9f */ "\x8d\xaa", "\xef\xb6", "\x00\x00", "\xf7\xcf", "\x00\x00",
+-  /* 0x9fa4 */ "\xf9\xa1", "\x9f\xdd",
+-
+-  /* 0xe003 */ "\xfa\x43", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe007 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe00c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe011 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe016 */ "\x00\x00", "\xfa\x58", "\x00\x00", "\x00\x00", "\xfa\x5b",
+-  /* 0xe01b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe020 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe025 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe02a */ "\x00\x00", "\x00\x00", "\xfa\x6d", "\x00\x00", "\x00\x00",
+-  /* 0xe02f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe034 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x78", "\x00\x00",
+-  /* 0xe039 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe03e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe043 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe048 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\xae", "\x00\x00",
+-  /* 0xe04d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe052 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe057 */ "\x00\x00", "\x00\x00", "\xfa\xbc", "\x00\x00", "\x00\x00",
+-  /* 0xe05c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe061 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe066 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe06b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe070 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe075 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe07a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe07f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe084 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe089 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe08e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe094 */ "\xfa\xf6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe099 */ "\xfa\xfb", "\xfa\xfc", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe09d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\x68",
+-  /* 0xe0c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0d0 */ "\xfb\x73", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xb7",
+-  /* 0xe0f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0f7 */ "\x00\x00", "\xfb\xbe", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe0fd */ "\xfb\xc2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe101 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xcb",
+-  /* 0xe106 */ "\x00\x00", "\x00\x00", "\xfb\xce", "\xfb\xcf", "\x00\x00",
+-  /* 0xe10b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe110 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe115 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe11a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe11f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe124 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe129 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe12e */ "\x00\x00", "\xfb\xf5", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe133 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe138 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe13d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe142 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe147 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe14c */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x56", "\x00\x00",
+-  /* 0xe151 */ "\x00\x00", "\x00\x00", "\xfc\x5a", "\x00\x00", "\x00\x00",
+-  /* 0xe156 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe15b */ "\x00\x00", "\xfc\x63", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe160 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe165 */ "\x00\x00", "\x00\x00", "\xfc\x6e", "\x00\x00", "\xfc\x70",
+-  /* 0xe16a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe16f */ "\x00\x00", "\xfc\x77", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe175 */ "\xfc\x7b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe179 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe17e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe183 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe188 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe18d */ "\x00\x00", "\xfc\xb7", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe192 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe197 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe19c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1bb */ "\xfc\xe3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1c9 */ "\x00\x00", "\x00\x00", "\xfc\xf4", "\xfc\xf5", "\x00\x00",
+-  /* 0xe1ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\x40", "\x00\x00",
+-  /* 0xe1d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1ec */ "\x00\x00", "\x00\x00", "\xfd\x58", "\x00\x00", "\x00\x00",
+-  /* 0xe1f2 */ "\xfd\x5b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe1f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\x63", "\x00\x00",
+-  /* 0xe1fb */ "\x00\x00", "\x00\x00", "\xfd\x67", "\x00\x00", "\x00\x00",
+-  /* 0xe200 */ "\x00\x00", "\xfd\x6b", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe205 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe20b */ "\xfd\x74", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe20f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe214 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xa4",
+-  /* 0xe219 */ "\x00\x00", "\x00\x00", "\xfd\xa7", "\x00\x00", "\x00\x00",
+-  /* 0xe21e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe223 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xb2", "\x00\x00",
+-  /* 0xe228 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe22d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe232 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe237 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe23c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe241 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xd0", "\x00\x00",
+-  /* 0xe246 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xd5", "\x00\x00",
+-  /* 0xe24b */ "\x00\x00", "\x00\x00", "\xfd\xd9", "\x00\x00", "\x00\x00",
+-  /* 0xe250 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe255 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe25a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe25f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe264 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe269 */ "\x00\x00", "\xfd\xf6", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe26e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe273 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe278 */ "\x00\x00", "\xfe\x46", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe27d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x4e",
+-  /* 0xe282 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe287 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe28c */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x5c", "\x00\x00",
+-  /* 0xe291 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe296 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x67",
+-  /* 0xe29b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2a1 */ "\xfe\x6d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2af */ "\x00\x00", "\x00\x00", "\xfe\x7e", "\x00\x00", "\x00\x00",
+-  /* 0xe2b4 */ "\x00\x00", "\x00\x00", "\xfe\xa5", "\x00\x00", "\x00\x00",
+-  /* 0xe2b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2be */ "\x00\x00", "\x00\x00", "\xfe\xaf", "\x00\x00", "\x00\x00",
+-  /* 0xe2c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2c9 */ "\xfe\xb7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2d2 */ "\x00\x00", "\xfe\xc2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2e2 */ "\xfe\xd0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xd9",
+-  /* 0xe2ec */ "\xfe\xda", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xde",
+-  /* 0xe2f1 */ "\xfe\xdf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe2fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe300 */ "\xfe\xee", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe304 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe309 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe30e */ "\x00\x00", "\x00\x00", "\x8e\x40", "\x00\x00", "\x00\x00",
+-  /* 0xe313 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe318 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe31d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe322 */ "\x00\x00", "\x00\x00", "\x8e\x54", "\x00\x00", "\x00\x00",
+-  /* 0xe327 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe32c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\x5f", "\x00\x00",
+-  /* 0xe331 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe336 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe33b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe340 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\x74",
+-  /* 0xe345 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe34a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe34f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe354 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe359 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe35e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xb3", "\x00\x00",
+-  /* 0xe363 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe368 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe36d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe372 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe377 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe37c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xd2",
+-  /* 0xe382 */ "\x8e\xd3", "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xd7",
+-  /* 0xe386 */ "\x00\x00", "\x00\x00", "\x8e\xda", "\x00\x00", "\x00\x00",
+-  /* 0xe38b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe390 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xe5", "\x00\x00",
+-  /* 0xe396 */ "\x8e\xe7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe39a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xef", "\x00\x00",
+-  /* 0xe3a0 */ "\x8e\xf1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3b4 */ "\x8f\x46", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3b8 */ "\x00\x00", "\x00\x00", "\x8f\x4d", "\x00\x00", "\x00\x00",
+-  /* 0xe3bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3cd */ "\x8f\x5f", "\x00\x00", "\x8f\x61", "\x00\x00", "\x00\x00",
+-  /* 0xe3d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\x67", "\x00\x00",
+-  /* 0xe3d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3e1 */ "\x8f\x73", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3e5 */ "\x00\x00", "\x8f\x79", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3f0 */ "\x8f\xa4", "\x00\x00", "\x8f\xa6", "\x00\x00", "\x8f\xa8",
+-  /* 0xe3f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe3fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe403 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe408 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe40d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe412 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe417 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe41c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe421 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xda",
+-  /* 0xe426 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe42b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe430 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe436 */ "\x8f\xea", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe43a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe43f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe444 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xfc", "\x00\x00",
+-  /* 0xe449 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x42", "\x00\x00",
+-  /* 0xe44e */ "\x00\x00", "\x90\x45", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe453 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe458 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe45d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe462 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x5c",
+-  /* 0xe468 */ "\x90\x5d", "\x90\x5e", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe46c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe471 */ "\x00\x00", "\x00\x00", "\x90\x69", "\x00\x00", "\x00\x00",
+-  /* 0xe476 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe47b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe480 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe485 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xa1",
+-  /* 0xe48a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe48f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe494 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe499 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe49e */ "\x00\x00", "\x00\x00", "\x90\xb8", "\x00\x00", "\x00\x00",
+-  /* 0xe4a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xd8",
+-  /* 0xe4c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xdd",
+-  /* 0xe4c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4da */ "\x00\x00", "\x00\x00", "\x90\xf4", "\x00\x00", "\x00\x00",
+-  /* 0xe4df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe4fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe502 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe507 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe50c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe511 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe516 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe51b */ "\x00\x00", "\x00\x00", "\x91\x76", "\x00\x00", "\x00\x00",
+-  /* 0xe520 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x7c", "\x00\x00",
+-  /* 0xe525 */ "\x00\x00", "\x00\x00", "\x91\xa2", "\x00\x00", "\x00\x00",
+-  /* 0xe52a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xa8", "\x91\xa9",
+-  /* 0xe52f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe534 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe539 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe53e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe543 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe548 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe54d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe552 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe557 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe55c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe561 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe566 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe56b */ "\x00\x00", "\x91\xe7", "\x00\x00", "\x00\x00", "\x91\xea",
+-  /* 0xe570 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe575 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xf4",
+-  /* 0xe57a */ "\x00\x00", "\x00\x00", "\x91\xf7", "\x00\x00", "\x00\x00",
+-  /* 0xe57f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xfe",
+-  /* 0xe584 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe589 */ "\x00\x00", "\x92\x46", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe58e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe593 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe598 */ "\x00\x00", "\x92\x55", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe59e */ "\x92\x59", "\x00\x00", "\x92\x5b", "\x00\x00", "\x00\x00",
+-  /* 0xe5a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x61", "\x00\x00",
+-  /* 0xe5a7 */ "\x00\x00", "\x00\x00", "\x92\x65", "\x00\x00", "\x00\x00",
+-  /* 0xe5ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5c0 */ "\x00\x00", "\x92\x7d", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5c5 */ "\x00\x00", "\x00\x00", "\x92\xa5", "\x00\x00", "\x00\x00",
+-  /* 0xe5ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xb5", "\x00\x00",
+-  /* 0xe5d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xce", "\x00\x00",
+-  /* 0xe5f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe5fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe601 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe606 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe60b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe610 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe615 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xf6", "\x00\x00",
+-  /* 0xe61a */ "\x00\x00", "\x92\xf9", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe61f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe624 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe629 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe62e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe633 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe638 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe63d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe642 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x64", "\x00\x00",
+-  /* 0xe647 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe64c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe651 */ "\x00\x00", "\x00\x00", "\x93\x72", "\x00\x00", "\x00\x00",
+-  /* 0xe656 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe65b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x7e",
+-  /* 0xe660 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe665 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xaa",
+-  /* 0xe66a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe66f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe674 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe679 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xbd", "\x00\x00",
+-  /* 0xe67e */ "\x00\x00", "\x93\xc0", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe683 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe688 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe68e */ "\x93\xce", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe692 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xd7",
+-  /* 0xe697 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe69c */ "\x00\x00", "\x93\xde", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6c0 */ "\x94\x41", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6c5 */ "\x94\x46", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6de */ "\x94\x5f", "\x94\x60", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe6fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe701 */ "\x94\xa4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe705 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe70a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe70f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xb6", "\x00\x00",
+-  /* 0xe714 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe719 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe71e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe723 */ "\x00\x00", "\x94\xc8", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe728 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe72d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe732 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe737 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe73d */ "\x94\xe0", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xe4",
+-  /* 0xe741 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe746 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe74b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe750 */ "\x00\x00", "\x94\xf5", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe755 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe75a */ "\x00\x00", "\x00\x00", "\x95\x41", "\x00\x00", "\x00\x00",
+-  /* 0xe75f */ "\x00\x00", "\x95\x45", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe764 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x4c", "\x00\x00",
+-  /* 0xe769 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe76e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe773 */ "\x00\x00", "\x95\x59", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe778 */ "\x00\x00", "\x95\x5e", "\x00\x00", "\x00\x00", "\x95\x61",
+-  /* 0xe77d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe782 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe787 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe78c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x74", "\x00\x00",
+-  /* 0xe791 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe797 */ "\x95\x7b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe79b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7a6 */ "\x95\xac", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xba",
+-  /* 0xe7b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7d7 */ "\x00\x00", "\x00\x00", "\x95\xe0", "\x00\x00", "\x00\x00",
+-  /* 0xe7dd */ "\x95\xe3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7e6 */ "\x00\x00", "\x95\xee", "\x95\xef", "\x00\x00", "\x00\x00",
+-  /* 0xe7eb */ "\x00\x00", "\x95\xf3", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7f1 */ "\x95\xf7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe7fb */ "\x96\x42", "\x96\x43", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe800 */ "\x96\x47", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe804 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe809 */ "\x00\x00", "\x00\x00", "\x96\x53", "\x00\x00", "\x00\x00",
+-  /* 0xe80e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\x5a",
+-  /* 0xe813 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe818 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe81d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x96\x68", "\x00\x00",
+-  /* 0xe822 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe828 */ "\x96\x6f", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe82d */ "\x96\x74", "\x00\x00", "\x96\x76", "\x00\x00", "\x00\x00",
+-  /* 0xe831 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe836 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe83b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe840 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe845 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe84a */ "\x00\x00", "\x00\x00", "\x96\xb6", "\x00\x00", "\x00\x00",
+-  /* 0xe84f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe855 */ "\x96\xbe", "\x96\xbf", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe859 */ "\x00\x00", "\x96\xc4", "\x00\x00", "\x96\xc6", "\x00\x00",
+-  /* 0xe85e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe863 */ "\x00\x00", "\x96\xce", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe868 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe86d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe872 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe877 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe87c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe881 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe887 */ "\x96\xf0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe88b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xf8", "\x00\x00",
+-  /* 0xe891 */ "\x96\xfa", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe895 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe89a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe89f */ "\x00\x00", "\x97\x4b", "\x00\x00", "\x00\x00", "\x97\x4e",
+-  /* 0xe8a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\x6c",
+-  /* 0xe8c3 */ "\x97\x6d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8cd */ "\x97\x77", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xa1", "\x97\xa2",
+-  /* 0xe8d6 */ "\x00\x00", "\x00\x00", "\x97\xa5", "\x97\xa6", "\x00\x00",
+-  /* 0xe8db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8e1 */ "\x97\xad", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xb1",
+-  /* 0xe8e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe8f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xca",
+-  /* 0xe8fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe903 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe908 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe90d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe912 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xe3",
+-  /* 0xe918 */ "\x97\xe4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe91c */ "\x00\x00", "\x00\x00", "\x97\xeb", "\x00\x00", "\x00\x00",
+-  /* 0xe921 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xf1", "\x00\x00",
+-  /* 0xe926 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xf7",
+-  /* 0xe92b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe930 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x41", "\x00\x00",
+-  /* 0xe935 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe93a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe93f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe944 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe949 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe94e */ "\x00\x00", "\x98\x5d", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe953 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe958 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe95d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe962 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x74",
+-  /* 0xe967 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe96c */ "\x00\x00", "\x98\x7b", "\x98\x7c", "\x00\x00", "\x00\x00",
+-  /* 0xe971 */ "\x00\x00", "\x98\xa2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe977 */ "\x98\xa6", "\x00\x00", "\x00\x00", "\x98\xa9", "\x98\xaa",
+-  /* 0xe97b */ "\x00\x00", "\x98\xac", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe980 */ "\x00\x00", "\x98\xb1", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe985 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe98a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe98f */ "\x00\x00", "\x98\xc0", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe994 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe999 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe99e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe9a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe9a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe9ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe9b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe9b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe9bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe9c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xe9c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xfa",
+-
+-  /* 0xeaa9 */ "\x9a\x7c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeaad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeab2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeab7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeabc */ "\x00\x00", "\x00\x00", "\x9a\xb4", "\x9a\xb5", "\x9a\xb6",
+-  /* 0xeac1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xba", "\x00\x00",
+-  /* 0xeac6 */ "\x00\x00", "\x00\x00", "\x9a\xbe", "\x9a\xbf", "\x9a\xc0",
+-  /* 0xeacc */ "\x9a\xc1", "\x00\x00", "\x00\x00", "\x9a\xc4", "\x9a\xc5",
+-  /* 0xead1 */ "\x9a\xc6", "\x00\x00", "\x9a\xc8", "\x9a\xc9", "\x00\x00",
+-  /* 0xead6 */ "\x9a\xcb", "\x9a\xcc", "\x00\x00", "\x9a\xce", "\x9a\xcf",
+-  /* 0xeada */ "\x00\x00", "\x9a\xd1", "\x00\x00", "\x9a\xd3", "\x9a\xd4",
+-  /* 0xeae0 */ "\x9a\xd5", "\x9a\xd6", "\x9a\xd7", "\x9a\xd8", "\x00\x00",
+-  /* 0xeae4 */ "\x00\x00", "\x00\x00", "\x9a\xdc", "\x00\x00", "\x9a\xde",
+-  /* 0xeaea */ "\x9a\xdf", "\x00\x00", "\x9a\xe1", "\x00\x00", "\x9a\xe3",
+-  /* 0xeaee */ "\x00\x00", "\x9a\xe5", "\x9a\xe6", "\x00\x00", "\x00\x00",
+-  /* 0xeaf3 */ "\x00\x00", "\x9a\xea", "\x9a\xeb", "\x00\x00", "\x9a\xed",
+-  /* 0xeaf9 */ "\x9a\xee", "\x9a\xef", "\x9a\xf0", "\x00\x00", "\x00\x00",
+-  /* 0xeafd */ "\x00\x00", "\x9a\xf4", "\x9a\xf5", "\x00\x00", "\x9a\xf7",
+-  /* 0xeb03 */ "\x9a\xf8", "\x9a\xf9", "\x9a\xfa", "\x00\x00", "\x00\x00",
+-  /* 0xeb08 */ "\x9a\xfd", "\x9a\xfe", "\x9b\x40", "\x9b\x41", "\x9b\x42",
+-  /* 0xeb0d */ "\x9b\x43", "\x9b\x44", "\x9b\x45", "\x00\x00", "\x00\x00",
+-  /* 0xeb12 */ "\x9b\x48", "\x00\x00", "\x00\x00", "\x9b\x4b", "\x00\x00",
+-  /* 0xeb16 */ "\x00\x00", "\x00\x00", "\x9b\x4f", "\x9b\x50", "\x9b\x51",
+-  /* 0xeb1c */ "\x9b\x52", "\x9b\x53", "\x00\x00", "\x9b\x55", "\x9b\x56",
+-  /* 0xeb20 */ "\x00\x00", "\x00\x00", "\x9b\x59", "\x00\x00", "\x9b\x5b",
+-  /* 0xeb25 */ "\x00\x00", "\x9b\x5d", "\x00\x00", "\x00\x00", "\x9b\x60",
+-  /* 0xeb2a */ "\x00\x00", "\x9b\x62", "\x9b\x63", "\x9b\x64", "\x00\x00",
+-  /* 0xeb30 */ "\x9b\x66", "\x9b\x67", "\x9b\x68", "\x9b\x69", "\x9b\x6a",
+-  /* 0xeb35 */ "\x9b\x6b", "\x9b\x6c", "\x9b\x6d", "\x9b\x6e", "\x9b\x6f",
+-  /* 0xeb39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x73", "\x9b\x74",
+-  /* 0xeb3f */ "\x9b\x75", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x79",
+-  /* 0xeb44 */ "\x9b\x7a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeb48 */ "\x00\x00", "\x9b\xa2", "\x00\x00", "\x00\x00", "\x9b\xa5",
+-  /* 0xeb4e */ "\x9b\xa6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeb53 */ "\x9b\xab", "\x00\x00", "\x9b\xad", "\x9b\xae", "\x00\x00",
+-  /* 0xeb58 */ "\x9b\xb0", "\x00\x00", "\x9b\xb2", "\x9b\xb3", "\x00\x00",
+-  /* 0xeb5c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeb62 */ "\x9b\xba", "\x9b\xbb", "\x00\x00", "\x9b\xbd", "\x00\x00",
+-  /* 0xeb67 */ "\x9b\xbf", "\x9b\xc0", "\x9b\xc1", "\x00\x00", "\x00\x00",
+-  /* 0xeb6b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xc7", "\x9b\xc8",
+-  /* 0xeb71 */ "\x9b\xc9", "\x00\x00", "\x9b\xcb", "\x00\x00", "\x00\x00",
+-  /* 0xeb76 */ "\x9b\xce", "\x9b\xcf", "\x00\x00", "\x00\x00", "\x9b\xd2",
+-  /* 0xeb7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xd6", "\x9b\xd7",
+-  /* 0xeb80 */ "\x9b\xd8", "\x00\x00", "\x00\x00", "\x9b\xdb", "\x00\x00",
+-  /* 0xeb84 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xe0", "\x00\x00",
+-  /* 0xeb8a */ "\x9b\xe2", "\x00\x00", "\x9b\xe4", "\x00\x00", "\x00\x00",
+-  /* 0xeb8e */ "\x00\x00", "\x9b\xe8", "\x00\x00", "\x00\x00", "\x9b\xeb",
+-  /* 0xeb93 */ "\x00\x00", "\x9b\xed", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeb99 */ "\x9b\xf1", "\x00\x00", "\x9b\xf3", "\x00\x00", "\x00\x00",
+-  /* 0xeb9d */ "\x00\x00", "\x9b\xf7", "\x00\x00", "\x00\x00", "\x9b\xfa",
+-  /* 0xeba2 */ "\x00\x00", "\x00\x00", "\x9b\xfd", "\x9b\xfe", "\x00\x00",
+-  /* 0xeba7 */ "\x00\x00", "\x00\x00", "\x9c\x43", "\x9c\x44", "\x00\x00",
+-  /* 0xebac */ "\x00\x00", "\x9c\x47", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xebb2 */ "\x9c\x4b", "\x9c\x4c", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xebb6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xebbb */ "\x00\x00", "\x9c\x56", "\x00\x00", "\x9c\x58", "\x00\x00",
+-  /* 0xebc0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x5e",
+-  /* 0xebc5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x63",
+-  /* 0xebca */ "\x00\x00", "\x9c\x65", "\x00\x00", "\x9c\x67", "\x00\x00",
+-  /* 0xebd0 */ "\x9c\x69", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xebd5 */ "\x9c\x6e", "\x00\x00", "\x9c\x70", "\x9c\x71", "\x00\x00",
+-  /* 0xebda */ "\x9c\x73", "\x9c\x74", "\x00\x00", "\x9c\x76", "\x00\x00",
+-  /* 0xebdf */ "\x9c\x78", "\x00\x00", "\x9c\x7a", "\x00\x00", "\x00\x00",
+-  /* 0xebe4 */ "\x9c\x7d", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xa3",
+-  /* 0xebe9 */ "\x9c\xa4", "\x00\x00", "\x9c\xa6", "\x9c\xa7", "\x00\x00",
+-  /* 0xebed */ "\x00\x00", "\x9c\xaa", "\x00\x00", "\x00\x00", "\x9c\xad",
+-  /* 0xebf2 */ "\x00\x00", "\x00\x00", "\x9c\xb0", "\x00\x00", "\x00\x00",
+-  /* 0xebf7 */ "\x00\x00", "\x9c\xb4", "\x9c\xb5", "\x00\x00", "\x00\x00",
+-  /* 0xebfc */ "\x00\x00", "\x9c\xb9", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec06 */ "\x00\x00", "\x9c\xc3", "\x9c\xc4", "\x00\x00", "\x00\x00",
+-  /* 0xec0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xca", "\x00\x00",
+-  /* 0xec10 */ "\x00\x00", "\x00\x00", "\x9c\xce", "\x00\x00", "\x00\x00",
+-  /* 0xec15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xd4", "\x9c\xd5",
+-  /* 0xec1b */ "\x9c\xd6", "\x9c\xd7", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xdf",
+-  /* 0xec24 */ "\x00\x00", "\x9c\xe1", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec29 */ "\x00\x00", "\x9c\xe6", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec2f */ "\x9c\xea", "\x00\x00", "\x00\x00", "\x9c\xed", "\x00\x00",
+-  /* 0xec33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec38 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec3d */ "\x00\x00", "\x9c\xfa", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec43 */ "\x9c\xfe", "\x9d\x40", "\x9d\x41", "\x9d\x42", "\x9d\x43",
+-  /* 0xec48 */ "\x9d\x44", "\x9d\x45", "\x00\x00", "\x9d\x47", "\x00\x00",
+-  /* 0xec4c */ "\x00\x00", "\x00\x00", "\x9d\x4b", "\x00\x00", "\x00\x00",
+-  /* 0xec52 */ "\x9d\x4e", "\x00\x00", "\x9d\x50", "\x00\x00", "\x9d\x52",
+-  /* 0xec57 */ "\x9d\x53", "\x9d\x54", "\x00\x00", "\x9d\x56", "\x00\x00",
+-  /* 0xec5c */ "\x9d\x58", "\x9d\x59", "\x00\x00", "\x00\x00", "\x9d\x5c",
+-  /* 0xec60 */ "\x00\x00", "\x9d\x5e", "\x9d\x5f", "\x00\x00", "\x00\x00",
+-  /* 0xec65 */ "\x00\x00", "\x9d\x63", "\x00\x00", "\x9d\x65", "\x9d\x66",
+-  /* 0xec6b */ "\x9d\x67", "\x9d\x68", "\x9d\x69", "\x00\x00", "\x9d\x6b",
+-  /* 0xec70 */ "\x9d\x6c", "\x00\x00", "\x9d\x6e", "\x9d\x6f", "\x00\x00",
+-  /* 0xec75 */ "\x9d\x71", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x75",
+-  /* 0xec79 */ "\x00\x00", "\x9d\x77", "\x00\x00", "\x00\x00", "\x9d\x7a",
+-  /* 0xec7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec84 */ "\x9d\xa2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec8e */ "\x9d\xac", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xb0",
+-  /* 0xec92 */ "\x00\x00", "\x00\x00", "\x9d\xb3", "\x00\x00", "\x00\x00",
+-  /* 0xec97 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xec9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeca1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeca6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xcd", "\x00\x00",
+-  /* 0xecb0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecb6 */ "\x9d\xd4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecbf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecc4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecc9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeccf */ "\x9d\xed", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecd3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecd8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xfa", "\x00\x00",
+-  /* 0xecdd */ "\x00\x00", "\x00\x00", "\x9d\xfe", "\x9e\x40", "\x00\x00",
+-  /* 0xece2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xece7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x4f", "\x00\x00",
+-  /* 0xecf2 */ "\x9e\x51", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecf6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xecfc */ "\x9e\x5b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed0f */ "\x00\x00", "\x9e\x70", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x7c", "\x00\x00",
+-  /* 0xed1e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed24 */ "\x9e\xa5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed29 */ "\x9e\xaa", "\x00\x00", "\x00\x00", "\x9e\xad", "\x00\x00",
+-  /* 0xed2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xbc", "\x00\x00",
+-  /* 0xed3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xc2",
+-  /* 0xed41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed4b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xd0", "\x00\x00",
+-  /* 0xed50 */ "\x00\x00", "\x9e\xd3", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed55 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed5a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xe0",
+-  /* 0xed5f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed64 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed69 */ "\x00\x00", "\x9e\xec", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xf9",
+-  /* 0xed78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed82 */ "\x00\x00", "\x9f\x46", "\x9f\x47", "\x00\x00", "\x00\x00",
+-  /* 0xed88 */ "\x9f\x4a", "\x00\x00", "\x00\x00", "\x9f\x4d", "\x00\x00",
+-  /* 0xed8c */ "\x00\x00", "\x9f\x50", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xed9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeda0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeda5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedaa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedaf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedb4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedb9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedbe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedc3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedc8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedcd */ "\x00\x00", "\x9f\xb3", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedd2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedd7 */ "\x00\x00", "\x00\x00", "\x9f\xbe", "\x00\x00", "\x00\x00",
+-  /* 0xeddc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xede1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xede6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedeb */ "\x00\x00", "\x9f\xd1", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedf0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedf5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedfa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xedff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee04 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9f\xec", "\x00\x00",
+-  /* 0xee09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee22 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee27 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee36 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee3b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee40 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee45 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee4f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\xa4", "\x00\x00",
+-  /* 0xee5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee63 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee68 */ "\x00\x00", "\xa0\xb1", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee6d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee72 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee77 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xee9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeea5 */ "\xa0\xec", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeea9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeeae */ "\x00\x00", "\xa0\xf7", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xeeb4 */ "\xa0\xfb", "\x00\x00", "\x00\x00", "\xa0\xfe",
++  /* 0x9fa4 */ "\xf9\xa1", "\x9f\xdd", "\x8c\x43", "\x8c\x6d", "\x8c\x74",
++  /* 0x9fa9 */ "\x8c\xb7", "\x8c\xb9", "\x8c\xbb", "\x8c\xc0", "\x8c\xd7",
++  /* 0x9fae */ "\x8c\xd8", "\x8c\xda", "\xc8\xa1", "\xc8\xa3", "\x8c\xed",
++  /* 0x9fb3 */ "\x8d\x48", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x9fb7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x9fbc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x9fc1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x9fc7 */ "\x87\xc2", "\x87\xd2", "\x87\xd6", "\x87\xda", "\x87\xdf",
+ 
+-  /* 0xf303 */ "\x88\x40", "\x88\x41", "\x88\x42", "\x88\x43", "\x88\x44",
+-  /* 0xf308 */ "\x88\x45", "\x88\x46", "\x88\x47", "\x88\x48", "\x88\x49",
+-  /* 0xf30d */ "\x88\x4a", "\x88\x4b", "\x88\x4c", "\x88\x4d", "\x88\x4e",
+-  /* 0xf312 */ "\x88\x4f", "\x88\x50", "\x88\x51", "\x88\x52", "\x88\x53",
+-  /* 0xf317 */ "\x88\x54", "\x88\x55", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf31b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf320 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x88\x62",
+-  /* 0xf325 */ "\x00\x00", "\x88\x64", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf32a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf32f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf334 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf339 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf33e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf344 */ "\x88\xa3", "\x00\x00", "\x88\xa5", "\x00\x00", "\x00\x00",
+-  /* 0xf348 */ "\x00\x00", "\x88\xa9", "\x88\xaa", "\x00\x00", "\x00\x00",
+-  /* 0xf34d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf352 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf357 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf35c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf361 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf366 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf36b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf370 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf375 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf37a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf37f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf384 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf389 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf38e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf393 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf398 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf39d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x89\x41", "\x00\x00",
+-  /* 0xf3a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3ed */ "\x00\x00", "\x00\x00", "\x89\xb2", "\x00\x00", "\x00\x00",
+-  /* 0xf3f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf3f7 */ "\x00\x00", "\x89\xbb", "\x00\x00", "\x00\x00", "\x89\xbe",
+-  /* 0xf3fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf401 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf406 */ "\x00\x00", "\x89\xca", "\x00\x00", "\x00\x00", "\x89\xcd",
+-  /* 0xf40b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf410 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf415 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf41a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf41f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf424 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf429 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf42e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf433 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf438 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x40",
+-  /* 0xf43d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x44", "\x8a\x45",
+-  /* 0xf442 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf447 */ "\x00\x00", "\x8a\x4c", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf44d */ "\x8a\x50", "\x00\x00", "\x00\x00", "\x8a\x53", "\x00\x00",
+-  /* 0xf451 */ "\x00\x00", "\x00\x00", "\x8a\x57", "\x00\x00", "\x00\x00",
+-  /* 0xf456 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x5d", "\x8a\x5e",
+-  /* 0xf45c */ "\x8a\x5f", "\x8a\x60", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf460 */ "\x00\x00", "\x8a\x65", "\x00\x00", "\x00\x00", "\x8a\x68",
+-  /* 0xf466 */ "\x8a\x69", "\x00\x00", "\x00\x00", "\x8a\x6c", "\x00\x00",
+-  /* 0xf46a */ "\x00\x00", "\x00\x00", "\x8a\x70", "\x8a\x71", "\x8a\x72",
+-  /* 0xf46f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf474 */ "\x00\x00", "\x00\x00", "\x8a\x7a", "\x8a\x7b", "\x00\x00",
+-  /* 0xf479 */ "\x00\x00", "\x00\x00", "\x8a\xa1", "\x8a\xa2", "\x8a\xa3",
+-  /* 0xf47e */ "\x00\x00", "\x8a\xa5", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf483 */ "\x00\x00", "\x8a\xaa", "\x00\x00", "\x00\x00", "\x8a\xad",
+-  /* 0xf488 */ "\x00\x00", "\x00\x00", "\x8a\xb0", "\x00\x00", "\x8a\xb2",
+-  /* 0xf48d */ "\x00\x00", "\x8a\xb4", "\x8a\xb5", "\x8a\xb6", "\x00\x00",
+-  /* 0xf492 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xbc",
+-  /* 0xf498 */ "\x8a\xbd", "\x00\x00", "\x00\x00", "\x8a\xc0", "\x00\x00",
+-  /* 0xf49c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf4a1 */ "\x00\x00", "\x00\x00", "\x8a\xc9", "\x00\x00", "\x00\x00",
+-  /* 0xf4a7 */ "\x8a\xcc", "\x00\x00", "\x00\x00", "\x8a\xcf", "\x00\x00",
+-  /* 0xf4ab */ "\x00\x00", "\x8a\xd2", "\x00\x00", "\x8a\xd4", "\x00\x00",
+-  /* 0xf4b0 */ "\x00\x00", "\x00\x00", "\x8a\xd8", "\x8a\xd9", "\x00\x00",
+-  /* 0xf4b5 */ "\x00\x00", "\x8a\xdc", "\x00\x00", "\x00\x00", "\x8a\xdf",
+-  /* 0xf4bb */ "\x8a\xe0", "\x8a\xe1", "\x8a\xe2", "\x00\x00", "\x00\x00",
+-  /* 0xf4c0 */ "\x8a\xe5", "\x8a\xe6", "\x00\x00", "\x8a\xe8", "\x00\x00",
+-  /* 0xf4c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xed", "\x00\x00",
+-  /* 0xf4c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xf3",
+-  /* 0xf4cf */ "\x8a\xf4", "\x00\x00", "\x00\x00", "\x8a\xf7", "\x00\x00",
+-  /* 0xf4d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf4d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf4dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\x48",
+-  /* 0xf4e2 */ "\x00\x00", "\x00\x00", "\x8b\x4b", "\x00\x00", "\x8b\x4d",
+-  /* 0xf4e8 */ "\x8b\x4e", "\x8b\x4f", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf4ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf4f1 */ "\x00\x00", "\x8b\x59", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf4f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf4fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf500 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf505 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf50a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf50f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf514 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf519 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf51e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xaa", "\x8b\xab",
+-  /* 0xf523 */ "\x00\x00", "\x8b\xad", "\x8b\xae", "\x00\x00", "\x00\x00",
+-  /* 0xf528 */ "\x00\x00", "\x8b\xb2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf52d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf532 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf537 */ "\x00\x00", "\x00\x00", "\x8b\xc2", "\x8b\xc3", "\x00\x00",
+-  /* 0xf53d */ "\x8b\xc5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf541 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf546 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf54b */ "\x00\x00", "\x00\x00", "\x8b\xd6", "\x00\x00", "\x00\x00",
+-  /* 0xf550 */ "\x00\x00", "\x00\x00", "\x8b\xdb", "\x00\x00", "\x00\x00",
+-  /* 0xf556 */ "\x8b\xde", "\x00\x00", "\x00\x00", "\x8b\xe1", "\x8b\xe2",
+-  /* 0xf55a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xe6", "\x00\x00",
+-  /* 0xf55f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf565 */ "\x8b\xed", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf569 */ "\x00\x00", "\x8b\xf3", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0xf56e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xfa",
+-
+-  /* 0xf6b0 */ "\x8d\xfe",
+-
+-  /* 0xf7e5 */ "\xc8\x79", "\xc8\x7a", "\x00\x00", "\xc8\x7c", "\x00\x00",
+-  /* 0xf7ea */ "\xc8\x7e", "\xc8\xa1", "\x00\x00", "\xc8\xa3", "\xc8\xa4",
++  /* 0xf907 */ "\x8b\xf8",
+ 
+   /* 0xfa0c */ "\xc9\x4a", "\xdd\xfc",
+ 
+@@ -11534,258 +10801,304 @@ static const char from_ucs4[][2] =
+   /* 0xffe6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0xffeb */ "\x00\x00", "\xf9\xfe",
+ 
+-  /* 0x2003e */ "\x93\x75", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20042 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x76", "\x00\x00",
+-  /* 0x20047 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2004c */ "\x00\x00", "\x95\x48", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20051 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20056 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2005b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20060 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20065 */ "\x00\x00", "\x00\x00", "\x8e\xc6",
+-
++  /* 0x20021 */ "\x9c\x71", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20025 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2002a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2002f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20034 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20039 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x75",
++  /* 0x2003e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20043 */ "\x00\x00", "\x00\x00", "\x93\x76", "\x00\x00", "\x00\x00",
++  /* 0x20048 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2004e */ "\x95\x48", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20052 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20057 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2005c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20061 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20066 */ "\x00\x00", "\x8e\xc6", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2006b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20070 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20075 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2007a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2007f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20084 */ "\x00\x00", "\x8b\xc5", "\x8b\xfa", "\x00\x00", "\x00\x00",
++  /* 0x2008a */ "\xc8\x7c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2008e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20094 */ "\x9a\xb4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20098 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2009d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x88\x4e",
++  /* 0x200cb */ "\x88\x4b", "\xc8\x7a", "\x88\x48", "\x00\x00", "\x00\x00",
++  /* 0x200cf */ "\x00\x00", "\x88\x47", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x200e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x200ee */ "\xa0\xf6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x200f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x200f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x200fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20101 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20106 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2010b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2010c */ "\x88\x45", "\x00\x00", "\x88\x53", "\x00\x00", "\x00\x00",
+   /* 0x20110 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20115 */ "\x00\x00", "\x00\x00", "\xfc\xad",
+ 
+-  /* 0x201ab */ "\x92\x72", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201be */ "\x00\x00", "\x00\x00", "\xfc\x47", "\x00\x00", "\x00\x00",
+-  /* 0x201c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201d2 */ "\x00\x00", "\x94\xdf", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x201ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20204 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20209 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2020e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20214 */ "\x98\xa4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20218 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2021d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20222 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20227 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2022c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20231 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20236 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2023b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20240 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20245 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2024a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2024f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20254 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20259 */ "\x00\x00", "\x94\xe7", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2025e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20263 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20268 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2026d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20272 */ "\x00\x00", "\x90\xcb", "\x92\x7b", "\x00\x00", "\x00\x00",
+-  /* 0x20277 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2027c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20281 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20286 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2028b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20290 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20295 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xd8", "\x00\x00",
+-  /* 0x2029a */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x5f", "\x00\x00",
+-  /* 0x202a0 */ "\xfa\x54", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202bd */ "\x00\x00", "\x96\xda", "\x92\x79", "\x00\x00", "\x00\x00",
+-  /* 0x202c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x74",
+-  /* 0x202e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x202fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20303 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20308 */ "\x00\x00", "\x92\x75", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2030d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20312 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20317 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2031c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20321 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\xfb", "\x00\x00",
+-  /* 0x20326 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2032b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20330 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20335 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2033a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2033f */ "\x00\x00", "\x8a\x49", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20345 */ "\x92\xdf", "\x9b\x7c", "\xfa\x63", "\x00\x00", "\x00\x00",
+-  /* 0x20349 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2034e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20353 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20358 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2035d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20362 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20367 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2036c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20371 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20376 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2037b */ "\x00\x00", "\x00\x00", "\xfa\x60", "\x92\x6d", "\xfa\x62",
+-  /* 0x20380 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20385 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2038a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2038f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20394 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20399 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2039e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\x6b", "\x00\x00",
+-  /* 0x203a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203b2 */ "\x00\x00", "\x00\x00", "\xfd\x6a", "\x00\x00", "\x00\x00",
+-  /* 0x203b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203c6 */ "\x00\x00", "\x00\x00", "\xfd\x54", "\x00\x00", "\x92\x73",
+-  /* 0x203cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203f3 */ "\x00\x00", "\x97\xd8", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x203f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9f\xbb", "\x00\x00",
+-  /* 0x203fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20402 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20407 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2040c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20411 */ "\x00\x00", "\x93\x42", "\x92\x76", "\x00\x00", "\x00\x00",
+-  /* 0x20416 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2041b */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x65", "\x00\x00",
+-  /* 0x20420 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20425 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2042a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2042f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20434 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20439 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2043e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20443 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20448 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2044d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20452 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20457 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2045c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20461 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x6c", "\x00\x00",
+-  /* 0x20466 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2046b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20470 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20475 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2047a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2047f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20484 */ "\x00\x00", "\x00\x00", "\xfa\x6e", "\x00\x00", "\x00\x00",
+-  /* 0x20489 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2048e */ "\x00\x00", "\x00\x00", "\x92\xc0", "\x92\xbf", "\x00\x00",
+-  /* 0x20493 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20498 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2049d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204a3 */ "\x92\xbe", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x204f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xb3",
+-  /* 0x204fc */ "\x00\x00", "\x97\x75", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20501 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20506 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2050b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20510 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20515 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2051a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2051f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20524 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20529 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2052e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20533 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20538 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2053d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20542 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x40",
+-  /* 0x20547 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2054c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20551 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20556 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2055b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20560 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20565 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2056a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2056f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20574 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20579 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2057e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20583 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20588 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2058e */ "\xfa\x76", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20592 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20597 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2059c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xd0", "\x00\x00",
+-  /* 0x205a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205b0 */ "\x00\x00", "\x00\x00", "\xfa\x7b", "\x00\x00", "\x00\x00",
+-  /* 0x205b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205ce */ "\x00\x00", "\x89\xcc", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205dd */ "\x00\x00", "\xfa\x42", "\x92\xbc", "\x00\x00", "\x00\x00",
+-  /* 0x205e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x5c", "\x00\x00",
+-  /* 0x205ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x205fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20600 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20605 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2060a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2060f */ "\x00\x00", "\x9b\xb5", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20614 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xa7",
+-  /* 0x2061a */ "\x97\xa4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2061e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20623 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20628 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2062d */ "\x00\x00", "\x00\x00", "\x90\xfd",
++  /* 0x201a4 */ "\x8c\xf5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201a9 */ "\x8a\xad", "\x00\x00", "\x92\x72", "\x00\x00", "\x00\x00",
++  /* 0x201ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x47",
++  /* 0x201c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xdf", "\x00\x00",
++  /* 0x201d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9f\xd1", "\x00\x00",
++  /* 0x201f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x201fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20202 */ "\x00\x00", "\xfb\xcb", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20207 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x7d",
++  /* 0x2020c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20211 */ "\x00\x00", "\x00\x00", "\x98\xa4", "\x00\x00", "\x00\x00",
++  /* 0x20216 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2021b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20220 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20225 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2022a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2022f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20234 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xf9",
++  /* 0x20239 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2023e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20243 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20248 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2024d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20252 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20257 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xe7", "\x00\x00",
++  /* 0x2025c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20261 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20266 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2026b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20270 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xcb", "\x92\x7b",
++  /* 0x20275 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2027a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2027f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20284 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20289 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2028e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20293 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20299 */ "\x94\xd8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2029e */ "\xfc\x5f", "\x00\x00", "\xfa\x54", "\x00\x00", "\x00\x00",
++  /* 0x202a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202b7 */ "\x9a\xb5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xda", "\x92\x79",
++  /* 0x202c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202e3 */ "\x00\x00", "\xfa\x74", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x202fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20301 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20306 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x75", "\x00\x00",
++  /* 0x2030b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20310 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20315 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2031a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2031f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20325 */ "\x8d\xfb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20329 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2032e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20333 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20338 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2033d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x49", "\x00\x00",
++  /* 0x20342 */ "\x00\x00", "\x00\x00", "\x92\xdf", "\x9b\x7c", "\xfa\x63",
++  /* 0x20347 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2034c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20351 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20356 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2035b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20360 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20365 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2036a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2036f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20374 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20379 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x60",
++  /* 0x2037f */ "\x92\x6d", "\xfa\x62", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20383 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20388 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2038d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20392 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20397 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2039c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xb6", "\x00\x00",
++  /* 0x203a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203a7 */ "\x97\x6b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\x6a",
++  /* 0x203b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\x54",
++  /* 0x203c9 */ "\x00\x00", "\x92\x73", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xd8", "\x00\x00",
++  /* 0x203f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x203fc */ "\x9f\xbb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20400 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20405 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2040a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2040f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x42", "\x92\x76",
++  /* 0x20414 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20419 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2041f */ "\xfa\x65", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20423 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20428 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2042d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20432 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20437 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2043c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20441 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20446 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2044b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20450 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20455 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2045a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2045f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20465 */ "\x92\x6c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20469 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2046e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20473 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20478 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2047d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20482 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x6e",
++  /* 0x20487 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2048c */ "\x00\x00", "\x9e\xe0", "\x00\x00", "\x00\x00", "\x92\xc0",
++  /* 0x20492 */ "\x92\xbf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20496 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2049b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204a0 */ "\x00\x00", "\x00\x00", "\x92\xbe", "\x00\x00", "\x00\x00",
++  /* 0x204a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xba",
++  /* 0x204d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x204fa */ "\x00\x00", "\x8a\xb3", "\x00\x00", "\x97\x75", "\x00\x00",
++  /* 0x204ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20504 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20509 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2050e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20513 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20518 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2051d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20522 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20527 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2052c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20531 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20536 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2053b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20540 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20545 */ "\x00\x00", "\xfa\x40", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2054a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2054f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20554 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20559 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2055e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20563 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20568 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2056d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20572 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20577 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2057c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20581 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20586 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2058b */ "\x00\x00", "\x00\x00", "\xfa\x76", "\x00\x00", "\x00\x00",
++  /* 0x20590 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20595 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2059a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2059f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205a5 */ "\xfb\xd0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x7b",
++  /* 0x205b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205c3 */ "\xfe\x6d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205c7 */ "\x00\x00", "\x00\x00", "\x9b\xb3", "\x00\x00", "\x00\x00",
++  /* 0x205cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x89\xcc", "\x00\x00",
++  /* 0x205d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xbe", "\x00\x00",
++  /* 0x205d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205db */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x42", "\x92\xbc",
++  /* 0x205e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205eb */ "\x94\x5c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x205fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20603 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20608 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2060d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xb5", "\x00\x00",
++  /* 0x20612 */ "\x00\x00", "\x00\x00", "\x9a\xbf", "\x00\x00", "\x00\x00",
++  /* 0x20617 */ "\x00\x00", "\x98\xa7", "\x97\xa4", "\x00\x00", "\x00\x00",
++  /* 0x2061c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20621 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20626 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2062b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xfd",
++  /* 0x20630 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20635 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2063a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2063f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20644 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20649 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2064e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20653 */ "\x00\x00", "\x00\x00", "\xfc\x7b", "\x00\x00", "\x00\x00",
++  /* 0x20658 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2065d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20662 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20667 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2066c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20671 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xc0",
+ 
+   /* 0x2070e */ "\x92\xc3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20712 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -11794,7 +11107,7 @@ static const char from_ucs4[][2] =
+   /* 0x20721 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20726 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2072b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20730 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20731 */ "\x8a\xaa", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20735 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2073a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2073f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -11824,29 +11137,89 @@ static const char from_ucs4[][2] =
+   /* 0x20862 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20867 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2086c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20871 */ "\x00\x00", "\x92\xc6",
+-
+-  /* 0x20916 */ "\x95\x46", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2091a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2091f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20924 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20929 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2092e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20933 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20938 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2093d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20942 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20947 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2094c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20951 */ "\x00\x00", "\x00\x00", "\xfa\xc2", "\x00\x00", "\x00\x00",
+-  /* 0x20956 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2095b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20960 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20965 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2096a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2096f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20974 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xc3",
+-
++  /* 0x20871 */ "\x00\x00", "\x92\xc6", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20876 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2087b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20880 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20885 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2088a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2088f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20894 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20899 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2089e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xa6",
++  /* 0x208d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x208fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20902 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20907 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2090c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20911 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x46",
++  /* 0x20916 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2091b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20920 */ "\x00\x00", "\x00\x00", "\xfd\x63", "\x00\x00", "\x00\x00",
++  /* 0x20925 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2092a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2092f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20934 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20939 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2093e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20943 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20948 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2094d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20952 */ "\x00\x00", "\xfa\xc2", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20957 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2095c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20961 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20966 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2096b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20970 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20975 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xc3", "\x00\x00",
++  /* 0x2097a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2097f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20984 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20989 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2098e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20993 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20998 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2099d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x89\xb2", "\x00\x00",
++  /* 0x209e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x209fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20a01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20a06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20a0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a11 */ "\x9c\x66", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -11865,13 +11238,13 @@ static const char from_ucs4[][2] =
+   /* 0x20a5b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20a6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20a6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x62",
+   /* 0x20a6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20a88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20a88 */ "\x00\x00", "\x87\xa8", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20a97 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -11879,34 +11252,52 @@ static const char from_ucs4[][2] =
+   /* 0x20aa1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20aa6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20aab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20ab0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xc1",
++  /* 0x20ab0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xc1", "\x00\x00",
++  /* 0x20ab5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20aba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20abf */ "\x00\x00", "\x00\x00", "\x9a\xc4", "\x00\x00", "\x00\x00",
++  /* 0x20ac4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20ac9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xc5", "\x00\x00",
++  /* 0x20ace */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20ad3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20ad8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20add */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20ae2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20ae7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20aec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20af1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20af6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20afb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20b00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20b05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20b0a */ "\x00\x00", "\x00\x00", "\x8e\xef",
+ 
+   /* 0x20b8f */ "\xfa\xe9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20b93 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20b98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20b9d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20b9d */ "\x00\x00", "\x8d\x40", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ba2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20ba8 */ "\x92\x62", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20ba8 */ "\x92\x62", "\x8a\xf7", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20bac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20bb1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20bb6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20bbb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20bbb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xc6", "\x00\x00",
+   /* 0x20bc0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20bc6 */ "\x92\xe1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20bca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20bcb */ "\x9a\xc9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20bcf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20bd4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20bd9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20bde */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\xc6", "\x00\x00",
+   /* 0x20be3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20be8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20be8 */ "\x00\x00", "\x00\x00", "\x97\xa5", "\x00\x00", "\x00\x00",
+   /* 0x20bed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20bf2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20bf7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20bf7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xcb", "\x00\x00",
+   /* 0x20bfc */ "\x00\x00", "\x00\x00", "\xfa\x72", "\x00\x00", "\x00\x00",
+   /* 0x20c01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20c06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20c0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20c06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x5e",
++  /* 0x20c0b */ "\x00\x00", "\x94\xe0", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c10 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -11914,8 +11305,8 @@ static const char from_ucs4[][2] =
+   /* 0x20c24 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c29 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20c33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20c38 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20c34 */ "\x8a\xe5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20c38 */ "\x00\x00", "\xfe\x5c", "\x9a\xcc", "\x00\x00", "\x00\x00",
+   /* 0x20c3d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xf9", "\x8a\x43",
+   /* 0x20c43 */ "\x8a\xa6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c47 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -11923,48 +11314,48 @@ static const char from_ucs4[][2] =
+   /* 0x20c51 */ "\x00\x00", "\x9a\xcd", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c56 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c5b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20c60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20c60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xce",
+   /* 0x20c65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c74 */ "\x00\x00", "\x00\x00", "\xfa\xee", "\x9b\xcc", "\x00\x00",
+-  /* 0x20c79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20c79 */ "\x00\x00", "\x00\x00", "\x9a\xcf", "\x00\x00", "\x00\x00",
+   /* 0x20c7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20c83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20c88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20c88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xd1",
+   /* 0x20c8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20c92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20c92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xfa", "\x00\x00",
+   /* 0x20c97 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x7c",
+   /* 0x20c9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ca1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ca6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20cab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20cb0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20cb5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20cb0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xd3",
++  /* 0x20cb5 */ "\x00\x00", "\x00\x00", "\x97\xa6", "\x00\x00", "\x00\x00",
+   /* 0x20cba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20cbf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20cc4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20cc9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ccf */ "\x99\x5f", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xf6",
+   /* 0x20cd4 */ "\x9f\xc5", "\x8a\x59", "\x8b\x6b", "\x00\x00", "\x00\x00",
+-  /* 0x20cd8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20cd8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xd4",
+   /* 0x20cdd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ce2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ce7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20cec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20ced */ "\x9a\xd5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20cf1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20cf6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20cfb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20cfb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xa2", "\x00\x00",
+   /* 0x20d00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20d14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20d15 */ "\x8a\x44", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d1e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20d23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20d23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9f\x4a",
+   /* 0x20d28 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20d2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20d2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xa1", "\xfd\xa4",
+   /* 0x20d32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -11977,24 +11368,24 @@ static const char from_ucs4[][2] =
+   /* 0x20d5f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d64 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d69 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20d6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20d73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20d78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20d6f */ "\x9a\xd6", "\x00\x00", "\x9f\x4d", "\x00\x00", "\x00\x00",
++  /* 0x20d74 */ "\xfa\xf6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20d78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x57", "\x00\x00",
+   /* 0x20d7e */ "\x8b\x43", "\x8b\x44", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20d8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20d91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20d91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xb6",
+   /* 0x20d96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20d9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20d9c */ "\x8a\xc0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20da0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20da5 */ "\x00\x00", "\x9e\x54", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20daa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20daf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20daf */ "\x00\x00", "\x00\x00", "\x9a\xd7", "\x00\x00", "\x00\x00",
+   /* 0x20db4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20db9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20dbe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20dc3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20dc3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xd8",
+   /* 0x20dc8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20dcd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20dd2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12006,7 +11397,7 @@ static const char from_ucs4[][2] =
+   /* 0x20df0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20df5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20dfa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20dff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20dff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xdc",
+   /* 0x20e04 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xca",
+   /* 0x20e0a */ "\x9e\xa8", "\x00\x00", "\x00\x00", "\x92\x63", "\x9a\xdd",
+   /* 0x20e0f */ "\x8b\x65", "\x8b\x6f", "\x8b\x7e", "\x00\x00", "\x00\x00",
+@@ -12021,7 +11412,7 @@ static const char from_ucs4[][2] =
+   /* 0x20e3b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20e40 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20e45 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20e4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20e4a */ "\x00\x00", "\x8a\xf4", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20e4f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20e54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20e59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12029,16 +11420,16 @@ static const char from_ucs4[][2] =
+   /* 0x20e63 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20e68 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xbe",
+   /* 0x20e6d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20e72 */ "\x00\x00", "\x00\x00", "\xfc\xde", "\x9d\xfd", "\x8b\x66",
++  /* 0x20e73 */ "\x9a\xe1", "\x00\x00", "\xfc\xde", "\x9d\xfd", "\x8b\x66",
+   /* 0x20e78 */ "\x8b\x70", "\x8b\x75", "\x8a\xe4", "\x8b\xa4", "\x00\x00",
+   /* 0x20e7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20e81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20e86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20e8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20e8c */ "\x8a\xed", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20e90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20e95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20e9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20e9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20e96 */ "\x8a\x5d", "\x00\x00", "\x8b\x48", "\x00\x00", "\x00\x00",
++  /* 0x20e9a */ "\x00\x00", "\x00\x00", "\x9d\xed", "\x00\x00", "\x00\x00",
++  /* 0x20e9f */ "\x00\x00", "\x00\x00", "\x9e\x40", "\x00\x00", "\x00\x00",
+   /* 0x20ea4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20eaa */ "\x8a\xef", "\x8a\xf6", "\x9e\x76", "\x00\x00", "\x00\x00",
+   /* 0x20eae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12049,8 +11440,8 @@ static const char from_ucs4[][2] =
+   /* 0x20ec7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ecc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ed1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20ed6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20edb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20ed7 */ "\x9a\xde", "\x8d\xfe", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20edb */ "\x00\x00", "\xfa\xfc", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ee0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20ee5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20eea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12063,8 +11454,8 @@ static const char from_ucs4[][2] =
+   /* 0x20f0d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20f1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20f21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20f1d */ "\x97\x4b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20f21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\x53",
+   /* 0x20f26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f2b */ "\x00\x00", "\x9a\xe0", "\x8b\x4a", "\x00\x00", "\x8a\xf1",
+   /* 0x20f31 */ "\x8a\xd7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12072,12 +11463,12 @@ static const char from_ucs4[][2] =
+   /* 0x20f3b */ "\xa0\xab", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20f49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20f49 */ "\x00\x00", "\x00\x00", "\x8a\xb5", "\x00\x00", "\x00\x00",
+   /* 0x20f4e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f58 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f5d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20f62 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20f62 */ "\x00\x00", "\x8a\x5f", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f6c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f71 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12086,7 +11477,7 @@ static const char from_ucs4[][2] =
+   /* 0x20f80 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f8a */ "\x00\x00", "\x00\x00", "\x8a\xee", "\x00\x00", "\x00\x00",
+-  /* 0x20f8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20f90 */ "\x9a\xdf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f94 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f99 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20f9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12094,14 +11485,14 @@ static const char from_ucs4[][2] =
+   /* 0x20fa8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xfe",
+   /* 0x20fad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20fb2 */ "\x00\x00", "\x8a\x58", "\x8b\xa3", "\x8b\xa7", "\x00\x00",
+-  /* 0x20fb7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20fb7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xe3",
+   /* 0x20fbc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20fc1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20fc6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20fcb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20fd0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20fd5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x20fda */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x20fda */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x61",
+   /* 0x20fdf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20fe4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x20fea */ "\x9d\xd7", "\x9e\x7d", "\x9e\xa7", "\x9e\xab", "\x00\x00",
+@@ -12112,7 +11503,7 @@ static const char from_ucs4[][2] =
+   /* 0x21002 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21007 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2100c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21011 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21011 */ "\x00\x00", "\x00\x00", "\x90\x42", "\x00\x00", "\x00\x00",
+   /* 0x21016 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2101b */ "\x00\x00", "\x8b\x79", "\x8b\x7a", "\x00\x00", "\x00\x00",
+   /* 0x21020 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12124,9 +11515,9 @@ static const char from_ucs4[][2] =
+   /* 0x2103e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21043 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21048 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2104d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2104d */ "\x00\x00", "\x9a\xe6", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21052 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21057 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21057 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xe5",
+   /* 0x2105c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21061 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21066 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12135,26 +11526,26 @@ static const char from_ucs4[][2] =
+   /* 0x21076 */ "\x9a\xe7", "\x8a\x7c", "\x8b\x71", "\x00\x00", "\x00\x00",
+   /* 0x2107b */ "\x9a\xe9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2107f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21084 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21084 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xea", "\x00\x00",
+   /* 0x21089 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2108e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21093 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21098 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21093 */ "\x00\x00", "\x00\x00", "\x9a\xeb", "\x00\x00", "\x00\x00",
++  /* 0x21098 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xbd",
+   /* 0x2109d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210b1 */ "\x00\x00", "\x00\x00", "\xfb\x4e", "\x00\x00", "\x00\x00",
+   /* 0x210b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x210bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xf9",
++  /* 0x210bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xed", "\x8a\xf9",
+   /* 0x210c1 */ "\x9e\x63", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210c5 */ "\x00\x00", "\x8b\x49", "\x8a\xce", "\x8b\x6e", "\x00\x00",
+-  /* 0x210ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x210cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x210ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xe8",
++  /* 0x210cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xee", "\x00\x00",
+   /* 0x210d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x210e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x210e4 */ "\x92\xce", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x210f2 */ "\x00\x00", "\x8a\x5a", "\x8b\x7b", "\x8b\x7c", "\x00\x00",
+@@ -12169,13 +11560,13 @@ static const char from_ucs4[][2] =
+   /* 0x2111f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21124 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21129 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2112e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2112f */ "\x9a\xef", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21133 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21138 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xfa",
++  /* 0x21138 */ "\x00\x00", "\x00\x00", "\x9a\xf0", "\x00\x00", "\x8a\xfa",
+   /* 0x2113d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21142 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21142 */ "\x00\x00", "\x00\x00", "\x89\x41", "\x00\x00", "\x00\x00",
+   /* 0x21148 */ "\x8b\x72", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2114c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2114c */ "\x00\x00", "\x00\x00", "\x8a\xf3", "\x00\x00", "\x00\x00",
+   /* 0x21151 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21156 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2115b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12222,7 +11613,7 @@ static const char from_ucs4[][2] =
+   /* 0x21228 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2122d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21232 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21237 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21237 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\x73",
+   /* 0x2123c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21241 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21246 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12244,7 +11635,7 @@ static const char from_ucs4[][2] =
+   /* 0x21296 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2129b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x212a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x212a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xf6", "\x00\x00",
++  /* 0x212a5 */ "\x00\x00", "\x00\x00", "\x91\xfe", "\x9e\xf6", "\x00\x00",
+   /* 0x212aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x212b0 */ "\x97\xed", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x212b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12272,7 +11663,7 @@ static const char from_ucs4[][2] =
+   /* 0x21322 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21327 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2132c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21331 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21331 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xf5",
+   /* 0x21336 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x4b", "\x00\x00",
+   /* 0x2133b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21340 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12285,14 +11676,14 @@ static const char from_ucs4[][2] =
+   /* 0x21363 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21368 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2136d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21372 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21372 */ "\x00\x00", "\x00\x00", "\x9a\xf4", "\xfe\xde", "\x00\x00",
+   /* 0x21377 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2137c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21381 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21386 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2138b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2138b */ "\x00\x00", "\x00\x00", "\xfc\xb7", "\x00\x00", "\x00\x00",
+   /* 0x21390 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21395 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21395 */ "\x00\x00", "\x00\x00", "\x97\xf1", "\x00\x00", "\x00\x00",
+   /* 0x2139a */ "\x00\x00", "\x97\xc7", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2139f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x213a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12317,15 +11708,15 @@ static const char from_ucs4[][2] =
+   /* 0x21403 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21408 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2140d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21412 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21413 */ "\x97\x4e", "\x00\x00", "\x00\x00", "\xfb\x68", "\x00\x00",
+   /* 0x21417 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2141c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21421 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21421 */ "\x00\x00", "\x00\x00", "\x97\x6c", "\x00\x00", "\x00\x00",
+   /* 0x21426 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2142b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21430 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21435 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2143a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2143a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xc2",
+   /* 0x2143f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21444 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21449 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12340,7 +11731,7 @@ static const char from_ucs4[][2] =
+   /* 0x21476 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2147b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21480 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21485 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21485 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xe7",
+   /* 0x2148a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2148f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21494 */ "\x00\x00", "\x00\x00", "\xfd\xc8", "\x00\x00", "\x00\x00",
+@@ -12364,259 +11755,363 @@ static const char from_ucs4[][2] =
+   /* 0x214ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x214f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x214f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xf3",
++  /* 0x214fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21502 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21507 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2150c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21511 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21516 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2151b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21520 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21525 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2152a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2152f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21534 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21539 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2153e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21543 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21548 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2154d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21552 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21557 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2155c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21561 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21566 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2156b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21570 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21575 */ "\x00\x00", "\x9a\xf7", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2157a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2157f */ "\x00\x00", "\x00\x00", "\x8f\xa6", "\x00\x00", "\x00\x00",
++  /* 0x21584 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21589 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2158e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21593 */ "\x00\x00", "\x00\x00", "\xfa\xd6", "\x00\x00", "\x00\x00",
++  /* 0x21598 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2159d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x215fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21601 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21606 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xc7", "\x00\x00",
++  /* 0x2160b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21610 */ "\x00\x00", "\x00\x00", "\xfa\xd7", "\x00\x00", "\x00\x00",
++  /* 0x21615 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xf8", "\x00\x00",
++  /* 0x2161a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2161f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21624 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21629 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2162e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21633 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21638 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2163e */ "\xfb\xa1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21642 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21647 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2164c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21651 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21656 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2165b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21661 */ "\x8e\xc5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21665 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2166a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2166f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21674 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21679 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2167e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21683 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21688 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2168d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xa4",
++  /* 0x21692 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21697 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2169c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216b5 */ "\x00\x00", "\x00\x00", "\xfb\xc2", "\x00\x00", "\x9a\xc1",
++  /* 0x216ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216c0 */ "\x91\xfa", "\xfe\xdb", "\x97\xab", "\x00\x00", "\x00\x00",
++  /* 0x216c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x47",
++  /* 0x216d3 */ "\x00\x00", "\xfb\xb1", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216dd */ "\x00\x00", "\x8f\xea", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xd2", "\xfe\x61",
++  /* 0x216e8 */ "\xfa\xce", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x216f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xed", "\x91\xf3",
++  /* 0x216fc */ "\x93\xc6", "\x00\x00", "\x93\x5a", "\x00\x00", "\x00\x00",
++  /* 0x21700 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21705 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2170a */ "\x00\x00", "\x00\x00", "\xfa\xfb", "\x00\x00", "\x00\x00",
++  /* 0x21710 */ "\x92\xef", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21714 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21719 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2171e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21723 */ "\x00\x00", "\x00\x00", "\xfa\xc8", "\x00\x00", "\x00\x00",
++  /* 0x21728 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2172d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21732 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21737 */ "\x00\x00", "\x00\x00", "\x98\x47", "\x93\x66", "\x98\x55",
++  /* 0x2173c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21741 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21746 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2174b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21750 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21755 */ "\x00\x00", "\x96\xe6", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2175a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2175f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21764 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21769 */ "\x00\x00", "\x00\x00", "\x9f\x43", "\x9f\xaa", "\x94\xda",
++  /* 0x2176f */ "\x92\xee", "\xfc\xaf", "\xfb\xfb", "\x00\x00", "\x8e\xf9",
++  /* 0x21774 */ "\x91\xf6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21778 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2177d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21782 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21787 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2178c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21791 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21796 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2179b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217ab */ "\x93\x64", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217b0 */ "\x94\xf5", "\x9c\xb6", "\xfb\xad", "\x98\x4e", "\x8f\x44",
++  /* 0x217b5 */ "\x96\xfd", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xf9",
++  /* 0x217c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9a\xfa", "\x00\x00",
++  /* 0x217c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217d7 */ "\x00\x00", "\x97\x69", "\x95\xd4", "\x98\x4b", "\xfb\xaa",
++  /* 0x217dc */ "\x00\x00", "\x00\x00", "\x98\x7c", "\x00\x00", "\x00\x00",
++  /* 0x217e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xea", "\x00\x00",
++  /* 0x217f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xaf",
++  /* 0x217f6 */ "\x9d\xc5", "\x00\x00", "\x91\xf1", "\x8e\xb1", "\x97\xa9",
++  /* 0x217fb */ "\xfb\xac", "\xfc\xb8", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x217ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21804 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21809 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2180e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21813 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21818 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2181d */ "\x00\x00", "\x00\x00", "\x9c\xb9", "\x00\x00", "\x00\x00",
++  /* 0x21822 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21828 */ "\xfb\xb0", "\xfc\xd2", "\x93\xcb", "\x00\x00", "\x00\x00",
++  /* 0x2182d */ "\x9a\xfd", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21831 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21836 */ "\x00\x00", "\x00\x00", "\x91\xf4", "\x8b\xac", "\xa0\x55",
++  /* 0x2183b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x74",
++  /* 0x21840 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xbe",
++  /* 0x21845 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2184a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2184f */ "\x00\x00", "\x00\x00", "\x97\xad", "\x00\x00", "\x00\x00",
++  /* 0x21854 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21859 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xe9",
++  /* 0x2185e */ "\x00\x00", "\x00\x00", "\x92\xf8", "\x97\xbe", "\x91\x6c",
++  /* 0x21864 */ "\x94\xaa", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21868 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2186d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21872 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x63",
++  /* 0x21877 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xc6", "\x00\x00",
++  /* 0x2187c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21881 */ "\x00\x00", "\x97\xb5", "\x92\xb8", "\x91\xef", "\x00\x00",
++  /* 0x21886 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2188b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21890 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21895 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2189a */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xa6", "\x97\x60",
++  /* 0x218a0 */ "\x93\x58", "\x95\x76", "\x8f\xac", "\x00\x00", "\x00\x00",
++  /* 0x218a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218be */ "\x91\xec", "\x97\xb4", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xf7",
++  /* 0x218d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\x4a",
++  /* 0x218d7 */ "\xfb\x49", "\x95\x78", "\x93\xbc", "\x00\x00", "\x00\x00",
++  /* 0x218db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218fa */ "\x91\xd6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x218fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x55",
++  /* 0x21904 */ "\x93\x56", "\x98\x51", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21908 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2190d */ "\x00\x00", "\x00\x00", "\x8f\xf8", "\xfb\xc0", "\x93\xf2",
++  /* 0x21912 */ "\x00\x00", "\x00\x00", "\x90\xd0", "\x00\x00", "\x00\x00",
++  /* 0x21917 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x44",
++  /* 0x2191c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21922 */ "\x92\x55", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21927 */ "\x93\x63", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2192b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21930 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21935 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2193b */ "\x91\xa5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2193f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\xed",
++  /* 0x21944 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21949 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2194e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21953 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\x6b",
++  /* 0x21958 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2195d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21962 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21967 */ "\x00\x00", "\x00\x00", "\x9a\xfe", "\x00\x00", "\x00\x00",
++  /* 0x2196c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21971 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21976 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2197c */ "\x93\x51", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x57",
++  /* 0x21980 */ "\x00\x00", "\x00\x00", "\xfa\x78", "\x00\x00", "\x00\x00",
++  /* 0x21985 */ "\x00\x00", "\x00\x00", "\xfe\xa8", "\x00\x00", "\x00\x00",
++  /* 0x2198a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2198f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21994 */ "\x00\x00", "\x93\x50", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21999 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2199e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219db */ "\xfa\x4c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xf7",
++  /* 0x219f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x219fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a0c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a11 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a16 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a20 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a2a */ "\x00\x00", "\x00\x00", "\x9b\x40", "\x00\x00", "\x00\x00",
++  /* 0x21a2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xce",
++  /* 0x21a34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a43 */ "\x00\x00", "\x9b\x41", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a48 */ "\x00\x00", "\x00\x00", "\xfe\xad", "\x00\x00", "\x00\x00",
++  /* 0x21a4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a52 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a57 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a5c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21a61 */ "\x00\x00", "\x87\x61",
+ 
+-  /* 0x21596 */ "\xfa\xd6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2159a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2159f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x215fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21603 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21608 */ "\x00\x00", "\x9c\xc7", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2160d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21613 */ "\xfa\xd7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21617 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2161c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21621 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21626 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2162b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21630 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21635 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2163a */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xa1", "\x00\x00",
+-  /* 0x2163f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21644 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21649 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2164e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21653 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21658 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2165d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xc5", "\x00\x00",
+-  /* 0x21662 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21667 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2166c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21671 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21676 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2167b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21680 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21685 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2168a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2168f */ "\x00\x00", "\x00\x00", "\xfb\xa4", "\x00\x00", "\x00\x00",
+-  /* 0x21694 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21699 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2169e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xfa", "\xfe\xdb",
+-  /* 0x216c2 */ "\x97\xab", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216d0 */ "\x00\x00", "\x00\x00", "\x91\x47", "\x00\x00", "\xfb\xb1",
+-  /* 0x216d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216e4 */ "\x00\x00", "\x94\xd2", "\xfe\x61", "\xfa\xce", "\x00\x00",
+-  /* 0x216e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x216f8 */ "\x00\x00", "\x92\xed", "\x91\xf3", "\x93\xc6", "\x00\x00",
+-  /* 0x216fe */ "\x93\x5a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21702 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21707 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2170c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xef", "\x00\x00",
+-  /* 0x21711 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21716 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2171b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21720 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21726 */ "\xfa\xc8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2172a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2172f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21734 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2173a */ "\x98\x47", "\x93\x66", "\x98\x55", "\x00\x00", "\x00\x00",
+-  /* 0x2173e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21743 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21748 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2174d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21752 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xe6",
+-  /* 0x21757 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2175c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21761 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21766 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2176c */ "\x9f\x43", "\x9f\xaa", "\x94\xda", "\x92\xee", "\xfc\xaf",
+-  /* 0x21771 */ "\xfb\xfb", "\x00\x00", "\x8e\xf9", "\x91\xf6", "\x00\x00",
+-  /* 0x21775 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2177a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2177f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21784 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21789 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2178e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21793 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21798 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2179d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xb6",
+-  /* 0x217b2 */ "\xfb\xad", "\x98\x4e", "\x8f\x44", "\x96\xfd", "\x00\x00",
+-  /* 0x217b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\x69",
+-  /* 0x217da */ "\x95\xd4", "\x98\x4b", "\xfb\xaa", "\x00\x00", "\x00\x00",
+-  /* 0x217de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x217f2 */ "\x00\x00", "\x00\x00", "\x9d\xaf", "\x9d\xc5", "\x00\x00",
+-  /* 0x217f8 */ "\x91\xf1", "\x8e\xb1", "\x97\xa9", "\xfb\xac", "\xfc\xb8",
+-  /* 0x217fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21801 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21806 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2180b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21810 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21815 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2181a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2181f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21824 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xb0", "\xfc\xd2",
+-  /* 0x2182a */ "\x93\xcb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2182e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21833 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21838 */ "\x00\x00", "\x8b\xac", "\xa0\x55", "\x00\x00", "\x00\x00",
+-  /* 0x2183d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21842 */ "\x00\x00", "\x00\x00", "\x95\xbe", "\x00\x00", "\x00\x00",
+-  /* 0x21847 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2184c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21851 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21856 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2185b */ "\x00\x00", "\x00\x00", "\x8e\xe9", "\x00\x00", "\x00\x00",
+-  /* 0x21861 */ "\x92\xf8", "\x97\xbe", "\x91\x6c", "\x94\xaa", "\x00\x00",
+-  /* 0x21865 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2186a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2186f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21874 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21879 */ "\x00\x00", "\x9d\xc6", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2187e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xb5",
+-  /* 0x21884 */ "\x92\xb8", "\x91\xef", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21888 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2188d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21892 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21897 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2189c */ "\x00\x00", "\xfe\xa6", "\x97\x60", "\x93\x58", "\x95\x76",
+-  /* 0x218a2 */ "\x8f\xac", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xec", "\x97\xb4",
+-  /* 0x218bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218d3 */ "\x00\x00", "\x00\x00", "\x97\x4a", "\xfb\x49", "\x95\x78",
+-  /* 0x218d9 */ "\x93\xbc", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x218f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xd6", "\x00\x00",
+-  /* 0x218fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21900 */ "\x00\x00", "\x00\x00", "\x93\x55", "\x93\x56", "\x98\x51",
+-  /* 0x21905 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2190a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21910 */ "\x8f\xf8", "\xfb\xc0", "\x93\xf2", "\x00\x00", "\x00\x00",
+-  /* 0x21915 */ "\x90\xd0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21919 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2191e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21923 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x63", "\x00\x00",
+-  /* 0x21928 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2192d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21932 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21937 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xa5", "\x00\x00",
+-  /* 0x2193c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21941 */ "\x00\x00", "\x00\x00", "\xa0\xed", "\x00\x00", "\x00\x00",
+-  /* 0x21946 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2194b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21950 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21955 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2195a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2195f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21964 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21969 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2196e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21973 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21978 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x51", "\x00\x00",
+-  /* 0x2197d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21982 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21988 */ "\xfe\xa8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2198c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21991 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x50",
+-  /* 0x21996 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2199b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x4c", "\x00\x00",
+-  /* 0x219dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219f0 */ "\x00\x00", "\x00\x00", "\x92\xf7", "\x00\x00", "\x00\x00",
+-  /* 0x219f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x219ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a04 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a22 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a27 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a36 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a3b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a40 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a45 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21a4b */ "\xfe\xad",
+-
+-  /* 0x21b44 */ "\xfb\xd5",
+-
+-  /* 0x21ca2 */ "\x9e\x79", "\x00\x00", "\x00\x00", "\xfb\xd9",
++  /* 0x21b44 */ "\xfb\xd5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b48 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b52 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b57 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b5c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b61 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b66 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b6b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b70 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b75 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b7f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b84 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b89 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b8e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b93 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21b9d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ba2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ba7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bb1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bb6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bbb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bc1 */ "\x8b\xc2", "\x9a\x7c", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bc5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bcf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bd4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bd9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bde */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21be3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21be8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bf2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bf7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21bfc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c10 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c24 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c2a */ "\x9b\x42", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c38 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c3d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c42 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c47 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c4c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c51 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c56 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c5b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c70 */ "\x9b\x43", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c97 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21c9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ca2 */ "\x9e\x79", "\x00\x00", "\x00\x00", "\xfb\xd9", "\x00\x00",
++  /* 0x21ca6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21cac */ "\x9b\x44",
+ 
+   /* 0x21d46 */ "\xa0\xa7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21d4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21d4f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21d4f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x7b", "\x00\x00",
+   /* 0x21d54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21d59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21d59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x6e",
+   /* 0x21d5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21d63 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21d68 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12626,7 +12121,7 @@ static const char from_ucs4[][2] =
+   /* 0x21d7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21d81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21d86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21d8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21d8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xf3",
+   /* 0x21d90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21d95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21d9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12634,7 +12129,7 @@ static const char from_ucs4[][2] =
+   /* 0x21da4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21da9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21dae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21db3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21db3 */ "\x00\x00", "\x00\x00", "\x8c\x79", "\x00\x00", "\x00\x00",
+   /* 0x21db8 */ "\x00\x00", "\x93\x5e", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21dbd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21dc2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12645,7 +12140,7 @@ static const char from_ucs4[][2] =
+   /* 0x21ddb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21de0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21de5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21dea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21deb */ "\x93\xd7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21def */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21df4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xe1",
+   /* 0x21df9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12654,14 +12149,14 @@ static const char from_ucs4[][2] =
+   /* 0x21e08 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21e0d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21e12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21e17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21e17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xd0",
+   /* 0x21e1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21e21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21e21 */ "\x00\x00", "\x8c\xf1", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21e26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21e2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21e30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21e35 */ "\x00\x00", "\xfb\xe2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21e3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21e3a */ "\x00\x00", "\x00\x00", "\xfc\xe3", "\x00\x00", "\x00\x00",
+   /* 0x21e3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21e44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21e49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -12689,101 +12184,196 @@ static const char from_ucs4[][2] =
+   /* 0x21eb7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21ebc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21ec1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21ec6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ec6 */ "\x00\x00", "\x9b\x45", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21ecb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x21ed0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x47",
+-
+-  /* 0x21f6a */ "\xfc\x5b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21f9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x21fa1 */ "\x9c\xfd",
+-
+-  /* 0x22049 */ "\xfb\xec", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2204d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22052 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22057 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2205c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22061 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22066 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2206b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22070 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22075 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2207a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2207f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22084 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22089 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2208e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22093 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22098 */ "\x00\x00", "\x9b\xa8", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2209d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220c5 */ "\x00\x00", "\x8a\xd5", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x220f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x73",
+-  /* 0x220fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22101 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22106 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2210b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22110 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22115 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2211a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2211f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22124 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2212a */ "\xfd\x59", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2212e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22133 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22138 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2213d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22142 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22147 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2214c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22151 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22156 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2215b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22160 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22165 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2216a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2216f */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xed", "\x00\x00",
+-  /* 0x22174 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2217a */ "\x9c\xa9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2217e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22183 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22188 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2218d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22192 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22197 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2219c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xa8",
+-  /* 0x221a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x221a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x221ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x221b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x221b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x221ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x221bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xc3",
+-
+-  /* 0x2227c */ "\x9b\x4e",
++  /* 0x21ed5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21eda */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21edf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ee4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ee9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21eee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ef3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ef8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21efd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f0c */ "\x00\x00", "\x00\x00", "\x9f\x50", "\x00\x00", "\x00\x00",
++  /* 0x21f11 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x48", "\x00\x00",
++  /* 0x21f16 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f20 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f2a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f43 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f48 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f52 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f57 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f5c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f61 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f66 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x5b", "\x00\x00",
++  /* 0x21f6b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f70 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f75 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f7f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f84 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f89 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f8e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f93 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21f9e */ "\x98\xa9", "\x00\x00", "\x00\x00", "\x9c\xfd", "\x00\x00",
++  /* 0x21fa2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fa7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fb1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fb6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fbb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fc0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fc5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fcf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fd4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fd9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fde */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fe3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x88\x4c",
++  /* 0x21fe8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21fed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ff2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ff7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x21ffc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22001 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22006 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2200b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22010 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22015 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2201a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2201f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22024 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22029 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2202e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22033 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22038 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2203d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22042 */ "\x00\x00", "\x00\x00", "\x9b\x4b", "\x00\x00", "\x00\x00",
++  /* 0x22047 */ "\x00\x00", "\xfb\xec", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2204c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22051 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22056 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2205b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22060 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22065 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2206a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2206f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22074 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22079 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x69",
++  /* 0x2207e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22083 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22088 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2208d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22092 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22097 */ "\x00\x00", "\x00\x00", "\x9b\xa8", "\x00\x00", "\x00\x00",
++  /* 0x2209c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220c4 */ "\x00\x00", "\x00\x00", "\x8a\xd5", "\x00\x00", "\x00\x00",
++  /* 0x220c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x220fc */ "\xfa\x73", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22100 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22105 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2210a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2210f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22114 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22119 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2211e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22123 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22128 */ "\x00\x00", "\xfd\x59", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2212d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22132 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22137 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2213c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22141 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22146 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2214b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22150 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22155 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2215b */ "\x91\xa2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2215f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22164 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22169 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2216e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xed",
++  /* 0x22173 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22178 */ "\x00\x00", "\x9c\xa9", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2217d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22182 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22187 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2218c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22191 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22196 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2219b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221a1 */ "\x8a\xa8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221be */ "\x00\x00", "\x00\x00", "\x8d\x42", "\x00\x00", "\x9b\xc3",
++  /* 0x221c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x221ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22204 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xe1", "\x00\x00",
++  /* 0x22209 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2220e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22213 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22218 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2221d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22222 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22227 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2222c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22231 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22236 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2223b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22240 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22245 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2224a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2224f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22254 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22259 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2225e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22263 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22268 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2226d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22272 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22277 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x4e",
+ 
+   /* 0x22321 */ "\x95\xd0", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x5f",
+ 
+@@ -12791,257 +12381,336 @@ static const char from_ucs4[][2] =
+   /* 0x223c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x223c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x223cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x4e",
++  /* 0x223d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x223d5 */ "\x00\x00", "\x9b\x4f", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x223da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x223df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x223e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x223e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x223ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x223f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x223f8 */ "\x00\x00", "\x9b\x50", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x223fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22402 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22407 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2240c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22411 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22416 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2241b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22420 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22425 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2242a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2242f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22434 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22439 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2243e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22443 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22448 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2244d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22452 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22457 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2245c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22461 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xc6", "\x00\x00",
++  /* 0x22466 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2246b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22471 */ "\xfc\x50", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22475 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2247a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2247f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22484 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22489 */ "\x00\x00", "\xfd\x73", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2248e */ "\x00\x00", "\x00\x00", "\xfd\xa7", "\x00\x00", "\x00\x00",
++  /* 0x22493 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22498 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2249d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xa2", "\x00\x00",
++  /* 0x224b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224bc */ "\x87\xd1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224c1 */ "\x87\xd3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x87\xd4", "\x00\x00",
++  /* 0x224ca */ "\x00\x00", "\x87\xd5", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x58",
++  /* 0x224ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x224fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22501 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22506 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2250b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22510 */ "\x00\x00", "\x00\x00", "\xfa\x5e", "\x00\x00", "\x00\x00",
++  /* 0x22515 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2251b */ "\xa0\x59", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2251f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22524 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22529 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2252e */ "\x00\x00", "\xfa\x75", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22533 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22538 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2253d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22542 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22547 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2254c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22551 */ "\x00\x00", "\x00\x00", "\xfb\xbe", "\x00\x00", "\x00\x00",
++  /* 0x22556 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2255b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22560 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22565 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2256a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2256f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22574 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22579 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2257e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22583 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22588 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xa2",
++  /* 0x2258d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22592 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22597 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2259c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x70", "\x00\x00",
++  /* 0x225b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x71", "\x00\x00",
++  /* 0x225bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x225fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22600 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22605 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2260a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2260f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22614 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22619 */ "\x00\x00", "\x93\x77", "\xfe\xef", "\x00\x00", "\x00\x00",
++  /* 0x2261e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22623 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22628 */ "\x00\x00", "\x00\x00", "\x93\x6d", "\x00\x00", "\x00\x00",
++  /* 0x2262d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22632 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22637 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2263c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22641 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22646 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2264b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22650 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22655 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2265a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2265f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22664 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x5d", "\x00\x00",
++  /* 0x22669 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2266e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22673 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22678 */ "\x00\x00", "\x90\xb8", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2267d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22682 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22687 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2268c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22691 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xfc",
++  /* 0x22696 */ "\x00\x00", "\xfb\x41", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2269b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x6b", "\x94\xe3",
++  /* 0x226f6 */ "\x8e\xe2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x226ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22704 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22709 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2270e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x7d", "\x00\x00",
++  /* 0x22714 */ "\x8e\xd7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22718 */ "\x00\x00", "\x00\x00", "\x9c\x4d", "\x00\x00", "\x00\x00",
++  /* 0x2271d */ "\x00\x00", "\x96\xa3", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22722 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22727 */ "\x00\x00", "\x00\x00", "\x9b\x51", "\x00\x00", "\x00\x00",
++  /* 0x2272c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22731 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22736 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2273b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22740 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22745 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2274a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2274f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22754 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22759 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2275e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22763 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22768 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2276d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22772 */ "\x00\x00", "\x00\x00", "\x8a\xc3", "\x00\x00", "\x00\x00",
++  /* 0x22777 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2277c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xaa",
++  /* 0x22781 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22786 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2278b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22790 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22796 */ "\x8c\xe2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2279a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2279f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227b4 */ "\xfc\x68", "\x8b\x6d", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227cd */ "\xfd\x67", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x227fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xe9",
++  /* 0x22803 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22808 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2280d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22812 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22817 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2281c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22821 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22826 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2282b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22830 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22835 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2283a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2283f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22844 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22849 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2284e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22853 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22858 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2285d */ "\x00\x00", "\xfc\xa1", "\x93\x6c", "\x00\x00", "\x00\x00",
++  /* 0x22862 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22867 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2286c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x52",
++  /* 0x22871 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22876 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2287b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22880 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22885 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2288a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2288f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22894 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22899 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2289e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x70",
++  /* 0x228ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xa8",
++  /* 0x228c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xe9", "\x00\x00",
++  /* 0x228f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x228fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22902 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22907 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2290c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22911 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22916 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2291b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22920 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22926 */ "\x9c\xb4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2292a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2292f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22934 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xea",
++  /* 0x22939 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2293e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22943 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22948 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2294d */ "\x00\x00", "\x9b\x53", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22952 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22957 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2295c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22961 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22967 */ "\x9b\x55", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xab",
++  /* 0x2296b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22970 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22975 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2297a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22980 */ "\xfc\xa7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22984 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22989 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2298e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x56",
+ 
+-  /* 0x22465 */ "\x9e\xc6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22469 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2246e */ "\x00\x00", "\x00\x00", "\xfc\x50", "\x00\x00", "\x00\x00",
+-  /* 0x22473 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22478 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2247d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22482 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22487 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\x73",
+-
+-  /* 0x22513 */ "\xfa\x5e", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22517 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\x59", "\x00\x00",
+-  /* 0x2251c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22521 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22526 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2252b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x75",
+-  /* 0x22530 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22535 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2253a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2253f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22544 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22549 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2254e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22553 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22558 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2255d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22562 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22567 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2256c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22571 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22576 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2257b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22580 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22585 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2258a */ "\x00\x00", "\x00\x00", "\x9c\xa2", "\x00\x00", "\x00\x00",
+-  /* 0x2258f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22594 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22599 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2259e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225ad */ "\x00\x00", "\x93\x70", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225bc */ "\x00\x00", "\x93\x71", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x225fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22602 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22607 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2260c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22611 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22616 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x77",
+-  /* 0x2261c */ "\xfe\xef", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22620 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22625 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2262b */ "\x93\x6d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2262f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22634 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22639 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2263e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22643 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22648 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2264d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22652 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22657 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2265c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22661 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22666 */ "\x00\x00", "\xfc\x5d", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2266b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22670 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22675 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2267a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2267f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22684 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22689 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2268e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22693 */ "\x00\x00", "\x00\x00", "\x8a\xfc", "\x00\x00", "\xfb\x41",
+-  /* 0x22698 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2269d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226f2 */ "\x00\x00", "\x9e\x6b", "\x94\xe3", "\x8e\xe2", "\x00\x00",
+-  /* 0x226f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x226fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22701 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22706 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2270b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22710 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22715 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2271b */ "\x9c\x4d", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xa3",
+-  /* 0x2271f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22724 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22729 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2272e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22733 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22738 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2273d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22742 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22747 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2274c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22751 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22756 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2275b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22760 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22765 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2276a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2276f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22775 */ "\x8a\xc3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22779 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2277e */ "\x00\x00", "\x00\x00", "\x96\xaa", "\x00\x00", "\x00\x00",
+-  /* 0x22783 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22788 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2278d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22792 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22797 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2279c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x68", "\x8b\x6d",
+-  /* 0x227b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x227fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22800 */ "\x00\x00", "\x00\x00", "\x8a\xe9", "\x00\x00", "\x00\x00",
+-  /* 0x22805 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2280a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2280f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22814 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22819 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2281e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22823 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22828 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2282d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22832 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22837 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2283c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22841 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22846 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2284b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22850 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22855 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2285a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xa1",
+-  /* 0x22860 */ "\x93\x6c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22864 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22869 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2286e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22873 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22878 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2287d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22882 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22887 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2288c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22891 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22896 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2289b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228aa */ "\x00\x00", "\x00\x00", "\xfe\x70", "\x00\x00", "\x00\x00",
+-  /* 0x228af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228be */ "\x00\x00", "\x00\x00", "\xfc\xa8", "\x00\x00", "\x00\x00",
+-  /* 0x228c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228f5 */ "\x00\x00", "\xfc\xe9", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x228ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22904 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22909 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2290e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22913 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22918 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2291d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22922 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22927 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2292c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22931 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22936 */ "\x00\x00", "\x00\x00", "\x8a\xea", "\x00\x00", "\x00\x00",
+-  /* 0x2293b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22940 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22945 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2294a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2294f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22954 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22959 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2295e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22963 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22968 */ "\x00\x00", "\x00\x00", "\x96\xab", "\x00\x00", "\x00\x00",
+-  /* 0x2296d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22972 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22977 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2297c */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xa7",
+-
++  /* 0x22a66 */ "\x8a\xbc", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a97 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22a9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22aa1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22aa6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22aab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ab0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ab5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22aba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22abf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ac4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ac9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22acf */ "\x8a\xcb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22ad3 */ "\x00\x00", "\x9b\x57", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22ad8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22add */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22ae2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22ae7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ae2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x89\xcd", "\x00\x00",
++  /* 0x22ae8 */ "\x9b\x59", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22aec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22af1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22af6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22afb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22b00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22b05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22b0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22b0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x5b", "\x00\x00",
+   /* 0x22b0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22b14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22b19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13051,8 +12720,8 @@ static const char from_ucs4[][2] =
+   /* 0x22b2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22b32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22b37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22b3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22b41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22b3c */ "\x00\x00", "\x00\x00", "\x9b\x5d", "\x00\x00", "\x00\x00",
++  /* 0x22b41 */ "\x00\x00", "\x9e\x4f", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22b46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22b4b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22b50 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13079,7 +12748,7 @@ static const char from_ucs4[][2] =
+   /* 0x22bb9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22bbe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22bc3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22bc8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22bc8 */ "\x00\x00", "\x8a\x7b", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22bce */ "\x8b\x42", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22bd2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22bd7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13101,15 +12770,15 @@ static const char from_ucs4[][2] =
+   /* 0x22c27 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22c36 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22c36 */ "\x00\x00", "\x8a\x50", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c3b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c40 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c45 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22c4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22c4a */ "\x00\x00", "\x9b\x60", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c4f */ "\x00\x00", "\x8b\x45", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c55 */ "\x8b\x46", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22c5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22c5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xfe", "\x00\x00",
+   /* 0x22c63 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c68 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c6d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13117,20 +12786,20 @@ static const char from_ucs4[][2] =
+   /* 0x22c77 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22c86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22c86 */ "\x00\x00", "\x9b\x62", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c9b */ "\x93\x7b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22c9f */ "\x00\x00", "\x93\xb1", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22ca4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ca4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x60",
+   /* 0x22ca9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22cae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22cb3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22cae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xd8", "\x00\x00",
++  /* 0x22cb3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x63", "\x00\x00",
+   /* 0x22cb8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22cbd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22cbd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x69",
+   /* 0x22cc2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x47", "\x00\x00",
+-  /* 0x22cc7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22cc7 */ "\x00\x00", "\x8a\xcc", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22ccc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22cd1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22cd6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13144,7 +12813,7 @@ static const char from_ucs4[][2] =
+   /* 0x22cfe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d03 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x7c", "\x9b\x65",
+   /* 0x22d08 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22d0d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22d0d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x66",
+   /* 0x22d12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13154,9 +12823,9 @@ static const char from_ucs4[][2] =
+   /* 0x22d30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d35 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22d3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22d3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x72",
+   /* 0x22d44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22d49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22d49 */ "\x00\x00", "\x00\x00", "\x8a\x7a", "\x00\x00", "\x00\x00",
+   /* 0x22d4e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d58 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13169,15 +12838,15 @@ static const char from_ucs4[][2] =
+   /* 0x22d7b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d80 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22d8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22d8a */ "\x00\x00", "\x00\x00", "\x8a\xb0", "\x00\x00", "\x00\x00",
+   /* 0x22d8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22d94 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22d95 */ "\x9b\x68", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d99 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22d9e */ "\x00\x00", "\x9e\xa3", "\x00\x00", "\x00\x00", "\xfa\xec",
+   /* 0x22da4 */ "\x8b\x77", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22da8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22dad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22db2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22db2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x67",
+   /* 0x22db7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22dbc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22dc1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13188,7 +12857,7 @@ static const char from_ucs4[][2] =
+   /* 0x22dda */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22ddf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22de4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22de9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22de9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\x59",
+   /* 0x22dee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22df3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22df8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13205,7 +12874,7 @@ static const char from_ucs4[][2] =
+   /* 0x22e2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22e34 */ "\x00\x00", "\xfc\xbb", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22e39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22e3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22e3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x69", "\x00\x00",
+   /* 0x22e43 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22e48 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22e4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13216,186 +12885,236 @@ static const char from_ucs4[][2] =
+   /* 0x22e66 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22e6b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x22e70 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22e75 */ "\x00\x00", "\x00\x00", "\x93\xa8",
++  /* 0x22e75 */ "\x00\x00", "\x00\x00", "\x93\xa8", "\x00\x00", "\x00\x00",
++  /* 0x22e7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22e7f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22e84 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22e89 */ "\x00\x00", "\x8a\xe0", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22e8e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22e93 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22e98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22e9d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ea2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ea7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22eac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22eb1 */ "\x00\x00", "\x9e\x51", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22eb6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ebb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ec0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ec5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22eca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ecf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ed4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ed9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ede */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ee3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ee8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22eed */ "\x00\x00", "\x8f\x5f",
+ 
+-  /* 0x22fe3 */ "\x97\xec", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22fe7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22fec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22ff1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22ff6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x22ffb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23000 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23005 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2300a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2300f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23014 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23019 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2301e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23023 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23028 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2302d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23032 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23037 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2303c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23041 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23046 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xc2",
+-  /* 0x2304b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23050 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23055 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2305a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2305f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23064 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23069 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2306e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23073 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23078 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x67",
+-  /* 0x2307e */ "\xfc\xcc", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23082 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23087 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2308c */ "\x00\x00", "\x93\xb6", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23091 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23096 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2309b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230b4 */ "\x00\x00", "\x00\x00", "\x90\xe4", "\x00\x00", "\x00\x00",
+-  /* 0x230b9 */ "\x00\x00", "\x00\x00", "\x90\xe5", "\x00\x00", "\x00\x00",
+-  /* 0x230be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230d7 */ "\x00\x00", "\x00\x00", "\x9e\xf2", "\x00\x00", "\x00\x00",
+-  /* 0x230dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x230ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xca", "\x00\x00",
+-  /* 0x23104 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23109 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2310e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23113 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23118 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2311d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23122 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23127 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2312c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23131 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23136 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2313b */ "\x00\x00", "\x8b\xbc", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23140 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23145 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2314a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2314f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23154 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23159 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2315e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23163 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23168 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2316d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23172 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23177 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2317c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23182 */ "\x93\xcf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23186 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2318b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23190 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23195 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2319a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2319f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xdb",
+-  /* 0x231a5 */ "\xfc\xdc", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231c8 */ "\xfc\xe6", "\x96\xe7", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231f4 */ "\x00\x00", "\x00\x00", "\xfc\xd8", "\xfc\xd9", "\xfd\xa6",
+-  /* 0x231f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x231fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23203 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23208 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2320d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23212 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23217 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2321c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23221 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xf1", "\x00\x00",
+-  /* 0x23226 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2322b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xe9", "\x00\x00",
+-  /* 0x23231 */ "\xfc\xe4", "\x94\xaf", "\xfa\x77", "\x93\xcc", "\x00\x00",
+-  /* 0x23235 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2323a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2323f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23244 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23249 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2324e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23253 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23258 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2325d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x5a",
+-  /* 0x23262 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23267 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2326c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23271 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23276 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2327b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23280 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23285 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xbf", "\xfb\x51",
+-  /* 0x2328a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2328f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23294 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23299 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2329e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232a8 */ "\x00\x00", "\x00\x00", "\x93\xb9", "\xfe\xd7", "\x93\xb7",
+-  /* 0x232ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232d0 */ "\x00\x00", "\x93\xd9", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232e0 */ "\x93\xbb", "\x93\xda", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x232fd */ "\x00\x00", "\x00\x00", "\x98\xa3", "\x00\x00", "\x00\x00",
+-  /* 0x23302 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23307 */ "\x00\x00", "\x00\x00", "\x90\xd1",
++  /* 0x22f74 */ "\x9b\x6a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22f78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22f7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22f82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22f87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22f8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22f91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22f96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22f9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fa0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fa5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22faa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22faf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fb4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fb9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fbe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fc3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fc8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x6b", "\x00\x00",
++  /* 0x22fcd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fd2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fd7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fdc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fe1 */ "\x00\x00", "\x97\xec", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fe6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22feb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ff0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ff5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22ffa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x22fff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23004 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23009 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2300e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23013 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23018 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2301d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23022 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23027 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2302c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23031 */ "\x00\x00", "\x9b\x6c", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23036 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2303b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23040 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x4e", "\x00\x00",
++  /* 0x23045 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2304b */ "\xfd\xc2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2304f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23054 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23059 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2305e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23063 */ "\x00\x00", "\x00\x00", "\x9b\x6d", "\x00\x00", "\x00\x00",
++  /* 0x23068 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2306d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23072 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23077 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2307d */ "\x91\x67", "\xfc\xcc", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23081 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23086 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2308b */ "\x00\x00", "\x00\x00", "\x93\xb6", "\x00\x00", "\x00\x00",
++  /* 0x23090 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23095 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2309a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2309f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xe4", "\x00\x00",
++  /* 0x230b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xe5", "\x00\x00",
++  /* 0x230bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xf2", "\x00\x00",
++  /* 0x230db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x230fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xca",
++  /* 0x23103 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23108 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2310d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23112 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23117 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2311c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23121 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23126 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2312b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23130 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23135 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2313a */ "\x00\x00", "\x00\x00", "\x8b\xbc", "\x00\x00", "\x00\x00",
++  /* 0x2313f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23144 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23149 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2314e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23153 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23158 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2315d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23162 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23167 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2316c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23171 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23176 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2317b */ "\x00\x00", "\x8f\x46", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23180 */ "\x00\x00", "\x93\xcf", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23185 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2318a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2318f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23194 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23199 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2319e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231a4 */ "\xfc\xdb", "\xfc\xdc", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231b3 */ "\x93\xc0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231c6 */ "\x00\x00", "\xfc\xe6", "\x96\xe7", "\x00\x00", "\x00\x00",
++  /* 0x231cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231ea */ "\x87\xa7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xd8", "\xfc\xd9",
++  /* 0x231f9 */ "\xfd\xa6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x231fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23202 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23207 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2320c */ "\x00\x00", "\x00\x00", "\x93\xce", "\x00\x00", "\x00\x00",
++  /* 0x23211 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23216 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2321b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23220 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xf1",
++  /* 0x23225 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2322a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xe9",
++  /* 0x2322f */ "\x00\x00", "\xfc\xe4", "\x94\xaf", "\xfa\x77", "\x93\xcc",
++  /* 0x23234 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23239 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2323e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23243 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23248 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2324d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23252 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xe1", "\x00\x00",
++  /* 0x23257 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2325c */ "\x00\x00", "\x87\xa9", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23262 */ "\x90\x5a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23266 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2326b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23270 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23275 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2327a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2327f */ "\x00\x00", "\x8c\x54", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23284 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xbf",
++  /* 0x2328a */ "\xfb\x51", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2328e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23293 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23298 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2329d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xb9", "\xfe\xd7",
++  /* 0x232ad */ "\x93\xb7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232cf */ "\x00\x00", "\x00\x00", "\x93\xd9", "\x00\x00", "\x00\x00",
++  /* 0x232d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232de */ "\x00\x00", "\x93\xbb", "\x93\xda", "\x00\x00", "\x00\x00",
++  /* 0x232e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x232fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xa3", "\x00\x00",
++  /* 0x23301 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23306 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xd1", "\x00\x00",
++  /* 0x2330b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23310 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23315 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2331a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\x6e",
+ 
+   /* 0x233b4 */ "\xfa\x70", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x233b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x233bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x233c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x233c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x233c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xeb",
+   /* 0x233cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x233d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x233d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x233db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x233db */ "\x00\x00", "\x00\x00", "\x9b\x6f", "\x00\x00", "\x00\x00",
+   /* 0x233e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x233e6 */ "\xfc\xfc", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x233ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x233ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\x40",
+-  /* 0x233f5 */ "\xa0\x7b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x233f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xe2",
++  /* 0x233f5 */ "\xa0\x7b", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xa1",
++  /* 0x233fa */ "\x97\xf7", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xe2",
+   /* 0x233fe */ "\x00\x00", "\xfc\xd6", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23403 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23408 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13408,7 +13127,7 @@ static const char from_ucs4[][2] =
+   /* 0x2342b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23430 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23435 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2343a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2343a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x59",
+   /* 0x2343f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23444 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23449 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13418,7 +13137,7 @@ static const char from_ucs4[][2] =
+   /* 0x2345d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23462 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23467 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2346c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2346c */ "\x00\x00", "\x00\x00", "\xfd\x40", "\x00\x00", "\x00\x00",
+   /* 0x23472 */ "\x93\x5f", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23476 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2347b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13452,7 +13171,7 @@ static const char from_ucs4[][2] =
+   /* 0x23507 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2350c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23511 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23516 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23516 */ "\x00\x00", "\x00\x00", "\x9c\x76", "\x00\x00", "\x00\x00",
+   /* 0x2351b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23520 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23525 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13463,12 +13182,12 @@ static const char from_ucs4[][2] =
+   /* 0x2353e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23543 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23548 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2354d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2354d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xeb", "\x00\x00",
+   /* 0x23552 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23557 */ "\x00\x00", "\x00\x00", "\x8f\x47", "\x00\x00", "\x00\x00",
+   /* 0x2355c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23561 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23566 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23567 */ "\x9b\x74", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2356b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23570 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23575 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13484,7 +13203,7 @@ static const char from_ucs4[][2] =
+   /* 0x235a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x235ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x235b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x235b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x235b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\xd8",
+   /* 0x235bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x235c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x235c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13496,14 +13215,14 @@ static const char from_ucs4[][2] =
+   /* 0x235e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x235e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x235ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x235f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x235f3 */ "\x9b\x75", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x235f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x235fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x5c", "\x00\x00",
+   /* 0x23601 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23606 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2360b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23610 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23615 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23615 */ "\x00\x00", "\x87\x51", "\x00\x00", "\x00\x00", "\x9b\x79",
+   /* 0x2361a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2361f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23624 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13516,8 +13235,8 @@ static const char from_ucs4[][2] =
+   /* 0x23647 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2364c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23651 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23656 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2365b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23656 */ "\x00\x00", "\x00\x00", "\xfd\x58", "\x00\x00", "\x00\x00",
++  /* 0x2365b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x5f", "\x00\x00",
+   /* 0x23660 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23665 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2366a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13527,10 +13246,10 @@ static const char from_ucs4[][2] =
+   /* 0x2367e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23683 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23688 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2368d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2368e */ "\x87\xc7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23692 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23697 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2369c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2369c */ "\x00\x00", "\x87\x7c", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x236a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x43",
+   /* 0x236a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x236ab */ "\x00\x00", "\x97\xfa", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13550,15 +13269,15 @@ static const char from_ucs4[][2] =
+   /* 0x236f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x236f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x236fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23700 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23700 */ "\x00\x00", "\x00\x00", "\xfd\x5b", "\x00\x00", "\x00\x00",
+   /* 0x23705 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2370a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2370f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23714 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23714 */ "\x00\x00", "\x9b\x7a", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23719 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2371e */ "\x00\x00", "\x9e\xd5", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23723 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23728 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23728 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\xae",
+   /* 0x2372d */ "\x00\x00", "\x9c\xc9", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23732 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x23737 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -13593,667 +13312,837 @@ static const char from_ucs4[][2] =
+   /* 0x237c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x237cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x237d2 */ "\x00\x00", "\x00\x00", "\x93\xec", "\x97\xf6", "\x96\xcf",
++  /* 0x237d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x237dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x237e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x237e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x237eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x237f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x237f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x237fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x237ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23804 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23809 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2380e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23813 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23818 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2381d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23822 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23827 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2382c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23831 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23836 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xde",
+ 
+-  /* 0x23adb */ "\xfd\x69", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23adf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ae4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ae9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x52",
+-  /* 0x23aee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23af3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23af8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23afd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b0c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b11 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b16 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b20 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b2a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b43 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b48 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b52 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23b57 */ "\x00\x00", "\x00\x00", "\xfd\x6e",
+-
+-  /* 0x23c99 */ "\xfa\x7c", "\x93\xfa", "\x90\x7c", "\x00\x00", "\x00\x00",
+-  /* 0x23c9d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ca2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ca7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cb1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cb7 */ "\x9d\xb7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cbb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cc0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cc5 */ "\x00\x00", "\xa0\xe9", "\xfa\x4e", "\xfd\xa1", "\x00\x00",
+-  /* 0x23cca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ccf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cd4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cd9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cde */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ce3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ce8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ced */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cf2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23cf7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x74",
+-  /* 0x23cfd */ "\x9f\xbf", "\x9e\xcb", "\x9b\xb9", "\x00\x00", "\x00\x00",
+-  /* 0x23d01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d10 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d24 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d29 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d38 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d3d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d42 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d47 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d4c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d51 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d56 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xb9",
+-  /* 0x23d5b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d97 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23d9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23da1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23da6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23dab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23db0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23db6 */ "\x9e\xd2", "\x97\x53", "\x96\xa4", "\x8f\xbe", "\x94\xd9",
+-  /* 0x23dbb */ "\x90\x58", "\xfd\x79", "\xfd\x7b", "\x00\x00", "\x00\x00",
+-  /* 0x23dbf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23dc4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23dc9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23dce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23dd3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23dd8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ddd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23de2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23de7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23dec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23df1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23df6 */ "\x00\x00", "\x8e\xfa", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23dfb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e1e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e28 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xd9", "\x97\xd4",
+-  /* 0x23e2e */ "\x90\xbb", "\xfd\xbc", "\xfd\xc6", "\x92\x48", "\x00\x00",
+-  /* 0x23e32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e4b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e50 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e55 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e5a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e5f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e64 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e69 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e88 */ "\x9d\xc1", "\x92\xb9", "\x92\xa6", "\x8f\x4b", "\x00\x00",
+-  /* 0x23e8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23e9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ea0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ea5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23eaa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23eaf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23eb4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23eb9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ebf */ "\x92\xb6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ec3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ec8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ecd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ed2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ed7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23edc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ee1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ee6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23eeb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ef0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ef5 */ "\x00\x00", "\x9e\xd8", "\x94\x5e", "\x98\x5f", "\x94\xce",
+-  /* 0x23efb */ "\x92\x4a", "\xfd\x70", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23eff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f04 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f22 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f27 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x67", "\x00\x00",
+-  /* 0x23f36 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f3b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f41 */ "\x8d\xec", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f45 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f4f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f63 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f68 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f6d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f72 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f77 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f7c */ "\x00\x00", "\x00\x00", "\x94\x48", "\xfa\xc1", "\x9c\xf7",
+-  /* 0x23f82 */ "\xfd\xbe", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23f9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fa4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fa9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fb3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x7e", "\x00\x00",
+-  /* 0x23fb8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fbd */ "\x00\x00", "\x00\x00", "\x93\xf9", "\x00\x00", "\x00\x00",
+-  /* 0x23fc2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fc7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fcc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fd1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fd6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fdb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fe0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23fe5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23feb */ "\xfa\xeb", "\xfa\xc3", "\x97\xd3", "\x95\xf9", "\x9c\x48",
+-  /* 0x23ff0 */ "\x8e\x6a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ff4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ff9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x23ffe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24003 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24008 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2400d */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\xd8", "\x00\x00",
+-  /* 0x24012 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24017 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2401c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24021 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24026 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2402b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24030 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24035 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xd7", "\xfb\x4a",
+-  /* 0x2403b */ "\x9b\xaf", "\x94\x4b", "\xfd\xc9", "\x00\x00", "\x00\x00",
+-  /* 0x2403f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24044 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24049 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2404e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24053 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xac", "\x00\x00",
+-  /* 0x24058 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2405d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24062 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24067 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2406c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24071 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24076 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2407b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24080 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24085 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2408b */ "\x92\x5a", "\xfc\xbd", "\x92\xd9", "\x00\x00", "\x00\x00",
+-  /* 0x2408f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24094 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24099 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2409e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240c6 */ "\x00\x00", "\x00\x00", "\x92\xdd", "\x00\x00", "\x00\x00",
+-  /* 0x240cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x240fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24102 */ "\x00\x00", "\x96\xba", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24107 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2410c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24111 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24116 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2411b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24120 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24125 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2412a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2412f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24134 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24139 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2413f */ "\xfd\xda", "\xfd\xde", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24144 */ "\xfd\xd3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24148 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2414d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24152 */ "\x00\x00", "\x00\x00", "\xfd\xd6", "\xfd\xdc", "\xfd\xdd",
+-  /* 0x24157 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xfe",
+-  /* 0x2415c */ "\x00\x00", "\x00\x00", "\xfe\xa1", "\x00\x00", "\x00\x00",
+-  /* 0x24161 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24166 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2416b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24170 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24175 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xd8",
+-  /* 0x2417a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2417f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24184 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24189 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2418e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24193 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24198 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2419d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241a3 */ "\x9e\x6d", "\xfd\x7c", "\xfb\x61", "\x00\x00", "\x00\x00",
+-  /* 0x241a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241de */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x60", "\x00\x00",
+-  /* 0x241e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x241f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x52",
+-  /* 0x241fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24201 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24206 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2420b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24210 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24215 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2421b */ "\x96\x4f", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2421f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24224 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24229 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2422e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24233 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24238 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2423d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24242 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24247 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x6e", "\x00\x00",
+-  /* 0x2424c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24251 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x6d",
+-  /* 0x24256 */ "\x00\x00", "\x00\x00", "\x98\x64", "\x00\x00", "\x00\x00",
+-  /* 0x2425b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24260 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24265 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2426a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2426f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24274 */ "\x00\x00", "\x94\x53", "\xfd\xec", "\xfb\x78", "\x00\x00",
+-  /* 0x24279 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2427e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24283 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24288 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2428d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24292 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24297 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2429c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x5a", "\x00\x00",
+-  /* 0x242a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xd0",
+-  /* 0x242ca */ "\x98\x62", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x242f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\x4f", "\x00\x00",
+-  /* 0x242fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24300 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24305 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2430a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2430f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24314 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2431a */ "\x94\x52", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2431e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24323 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24328 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2432d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24332 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24337 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2433c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24341 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24346 */ "\x00\x00", "\x91\xd2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2434b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24350 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24355 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2435a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2435f */ "\x00\x00", "\x00\x00", "\x97\xea", "\xfb\x6b", "\x91\xb1",
+-  /* 0x24365 */ "\xfd\xf3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24369 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2436e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24373 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24378 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2437d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24382 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24387 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xcb",
+-  /* 0x2438c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24391 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xb1",
+-  /* 0x24396 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2439c */ "\xfc\xec", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x6b", "\x00\x00",
+-  /* 0x243be */ "\x00\x00", "\x00\x00", "\x97\x51", "\x00\x00", "\x00\x00",
+-  /* 0x243c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243e6 */ "\x00\x00", "\x00\x00", "\x98\x71", "\x00\x00", "\x00\x00",
+-  /* 0x243eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243f0 */ "\x00\x00", "\x9e\xf3", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243f5 */ "\x00\x00", "\x00\x00", "\x91\xe8", "\x00\x00", "\x00\x00",
+-  /* 0x243fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x243ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24404 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24409 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2440e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24413 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24418 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2441d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24422 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24427 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2442c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24431 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\x4c", "\x92\x6a",
+-  /* 0x24436 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2443b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24440 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24445 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2444a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2444f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24454 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2445a */ "\xfd\xf8", "\x98\x61", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2445e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24463 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24468 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2446d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24472 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24477 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2447c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24481 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24487 */ "\x93\xed", "\x97\x44", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2448b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24490 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24495 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2449a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2449f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244b9 */ "\x91\xe1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244cc */ "\x00\x00", "\x98\x69", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244d1 */ "\x00\x00", "\x8a\x62", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x244fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24503 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24508 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2450d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24512 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24517 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2451c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x55",
+-  /* 0x24521 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24526 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2452b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24530 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24535 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2453a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2453f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24544 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24549 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2454e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24553 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24558 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2455d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24562 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24567 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2456c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24571 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24576 */ "\x00\x00", "\x8e\x77",
++  /* 0x239c2 */ "\x8a\xcf",
+ 
+-  /* 0x2462a */ "\x93\xe6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2462e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24633 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24638 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2463d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24642 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24647 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2464c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24651 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24656 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2465b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24660 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xa2",
+-  /* 0x24665 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2466a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2466f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24674 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24679 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2467e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24683 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24688 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2468d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24692 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xb3",
+-  /* 0x24697 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2469c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246d4 */ "\x93\x7d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x246fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24700 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24706 */ "\x9e\x66", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2470a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2470f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24714 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24719 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2471e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24723 */ "\x00\x00", "\x94\x59", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24728 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2472d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24732 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24737 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2473c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24741 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24746 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2474b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24750 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24755 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2475a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2475f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24764 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24769 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2476e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24773 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24778 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2477d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24782 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24787 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2478c */ "\x00\x00", "\x00\x00", "\x94\x58",
++  /* 0x23aa7 */ "\x9b\xa2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23aab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ab0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ab5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23aba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23abf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ac4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ac9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ace */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ad3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ad8 */ "\x00\x00", "\x00\x00", "\xfd\x69", "\x00\x00", "\x00\x00",
++  /* 0x23add */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ae2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ae7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23aec */ "\x00\x00", "\x93\x52", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23af1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23af6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xa2", "\x00\x00",
++  /* 0x23afb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b1a */ "\x8c\xe7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b1e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b28 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b4b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b50 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23b55 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\x6e",
+ 
+-  /* 0x24823 */ "\xfe\x54",
+-
+-  /* 0x248f3 */ "\x94\xa5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x248f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x248fc */ "\x00\x00", "\x00\x00", "\x95\xed", "\xfd\x7e", "\xfb\xeb",
+-  /* 0x24901 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24906 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2490c */ "\xfd\x7d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24910 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24916 */ "\x97\x6f", "\x94\x61", "\x00\x00", "\x9f\xc1", "\x00\x00",
+-  /* 0x2491a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2491f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24924 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24929 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2492f */ "\x95\xd7", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x52",
+-  /* 0x24933 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24938 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2493e */ "\x9f\x68", "\x9b\xe7", "\xfc\xce", "\x96\xe8", "\xfa\x49",
+-  /* 0x24942 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24947 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2494c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24951 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24956 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2495b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24960 */ "\x00\x00", "\x95\x4d", "\x9e\xf8", "\x00\x00", "\x00\x00",
+-  /* 0x24965 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2496a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2496f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x49",
+-  /* 0x24975 */ "\x91\xce", "\x97\x71", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24979 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2497f */ "\xfd\xb1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24983 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xf2",
+-  /* 0x24989 */ "\x93\xb8", "\x90\x43", "\x97\x59", "\x94\xd7", "\xfe\x66",
+-  /* 0x2498e */ "\x94\x7d", "\xfc\x6f", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24992 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24997 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2499c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249a7 */ "\x8e\xf7", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x7c",
+-  /* 0x249ac */ "\x92\xcd", "\x97\xb2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249b5 */ "\x00\x00", "\xfe\x65", "\x96\x7e", "\x97\x58", "\x9b\x77",
+-  /* 0x249bb */ "\x91\xcf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249de */ "\x96\xd5", "\xfc\xb3", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249e3 */ "\x93\xae", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x249f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x46",
+-  /* 0x249f7 */ "\x95\x5b", "\x91\xd1", "\x94\xf4", "\x00\x00", "\x00\x00",
+-  /* 0x249fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a1e */ "\x00\x00", "\x00\x00", "\xfc\xed", "\xfd\xfa", "\xfc\xc8",
+-  /* 0x24a24 */ "\xfe\x62", "\x91\xfc", "\xfe\x6b", "\xfd\xf9", "\xfc\xc7",
+-  /* 0x24a29 */ "\x91\x4e", "\x9c\xb8", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a3c */ "\x00\x00", "\x97\x67", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a4b */ "\x00\x00", "\x00\x00", "\x94\xa2", "\x98\x75", "\x97\xac",
+-  /* 0x24a51 */ "\x91\xd3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a55 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a5a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a5f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a65 */ "\x8e\xeb", "\x97\x6a", "\x96\x5e", "\x00\x00", "\x00\x00",
+-  /* 0x24a69 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9f\xf9", "\x95\xf8",
+-  /* 0x24a79 */ "\xfe\xa2", "\x8f\xe6", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a91 */ "\x00\x00", "\x9d\xa4", "\x97\x68", "\x8e\xec", "\x94\xbd",
+-  /* 0x24a96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24a9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24aa0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x5b", "\x9c\xf6",
+-  /* 0x24aa6 */ "\xfa\xa7", "\x9b\xd9", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24aaa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24aaf */ "\x00\x00", "\xfa\x5d", "\x96\x56", "\x97\x62", "\x00\x00",
+-  /* 0x24ab4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24aba */ "\x94\xba", "\xa0\x4f", "\x92\xd8", "\x00\x00", "\x00\x00",
+-  /* 0x24abe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24ac3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xbb", "\x00\x00",
+-  /* 0x24ac8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24acd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xcf", "\x00\x00",
+-  /* 0x24ad2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24ad7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24adc */ "\x00\x00", "\x00\x00", "\x94\x65", "\x00\x00", "\x00\x00",
+-  /* 0x24ae2 */ "\x9f\x4c",
+-
+-  /* 0x24b6e */ "\x9e\xbe",
++  /* 0x23c63 */ "\x8c\xa4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c6c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c71 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c76 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c7b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c80 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c94 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x7c",
++  /* 0x23c9a */ "\x93\xfa", "\x90\x7c", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23c9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ca3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ca8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cb2 */ "\x00\x00", "\x00\x00", "\x8f\x67", "\x00\x00", "\x9d\xb7",
++  /* 0x23cb7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cbc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cc1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cc7 */ "\xa0\xe9", "\xfa\x4e", "\xfd\xa1", "\x00\x00", "\x00\x00",
++  /* 0x23ccb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cd0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cd5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cda */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cdf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ce4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ce9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cf3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23cf8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x74", "\x9f\xbf",
++  /* 0x23cfe */ "\x9e\xcb", "\x9b\xb9", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d0c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d11 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d16 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d20 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d2a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d3e */ "\x00\x00", "\x9d\xd4", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d43 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d48 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d52 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d57 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xb9", "\x00\x00",
++  /* 0x23d5c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d61 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d66 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d6b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d70 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d75 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xf1", "\x00\x00",
++  /* 0x23d7f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d84 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d89 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d8f */ "\x95\x7b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d93 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23d9d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23da2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23da7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23dac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23db1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xd2",
++  /* 0x23db7 */ "\x97\x53", "\x96\xa4", "\x8f\xbe", "\x94\xd9", "\x90\x58",
++  /* 0x23dbc */ "\xfd\x79", "\xfd\x7b", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23dc0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23dc5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23dca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23dcf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23dd4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23dd9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23dde */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xda",
++  /* 0x23de3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23de8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ded */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23df2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23df8 */ "\x8e\xfa", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23dfc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x62",
++  /* 0x23e06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e11 */ "\x9b\xa5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e24 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e29 */ "\x00\x00", "\x00\x00", "\x9e\xd9", "\x97\xd4", "\x90\xbb",
++  /* 0x23e2f */ "\xfd\xbc", "\xfd\xc6", "\x92\x48", "\x00\x00", "\x00\x00",
++  /* 0x23e33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e39 */ "\x92\xb5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e3d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e42 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e47 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e4c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e51 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e56 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e5b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xc1",
++  /* 0x23e89 */ "\x92\xb9", "\x92\xa6", "\x8f\x4b", "\x00\x00", "\x00\x00",
++  /* 0x23e8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e97 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23e9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ea1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ea6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23eab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23eb0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23eb5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xa6", "\x00\x00",
++  /* 0x23eba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xb6",
++  /* 0x23ebf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ec4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ec9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ece */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ed3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\x40", "\x00\x00",
++  /* 0x23ed8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23edd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ee2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ee7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23eec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ef1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ef7 */ "\x9e\xd8", "\x94\x5e", "\x98\x5f", "\x94\xce", "\x92\x4a",
++  /* 0x23efc */ "\xfd\x70", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f1e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f28 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f32 */ "\x00\x00", "\x00\x00", "\x94\x67", "\x00\x00", "\x00\x00",
++  /* 0x23f37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\xec",
++  /* 0x23f41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xd8", "\x00\x00",
++  /* 0x23f4b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f50 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f55 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f5a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f5f */ "\x00\x00", "\x87\x63", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f64 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f69 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f7d */ "\x00\x00", "\x94\x48", "\xfa\xc1", "\x9c\xf7", "\xfd\xbe",
++  /* 0x23f82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f8c */ "\x00\x00", "\x00\x00", "\x8f\xda", "\x00\x00", "\x00\x00",
++  /* 0x23f91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23f9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fa0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fa5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23faa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23faf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xd9",
++  /* 0x23fb4 */ "\x00\x00", "\x00\x00", "\xfc\x7e", "\x00\x00", "\x00\x00",
++  /* 0x23fb9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fbe */ "\x00\x00", "\x93\xf9", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fc3 */ "\x00\x00", "\xfa\x43", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fc8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fcd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fd2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fd7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fdc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fe1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fe6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\xeb",
++  /* 0x23fec */ "\xfa\xc3", "\x97\xd3", "\x95\xf9", "\x9c\x48", "\xfd\xd8",
++  /* 0x23ff0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ff5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23ffa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x23fff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24004 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24009 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2400e */ "\x00\x00", "\x00\x00", "\xa0\xd8", "\x00\x00", "\x00\x00",
++  /* 0x24013 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24018 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2401d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24022 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24027 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2402c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24031 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24036 */ "\x00\x00", "\x00\x00", "\xfd\xd7", "\xfb\x4a", "\x9b\xaf",
++  /* 0x2403c */ "\x94\x4b", "\xfd\xc9", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24040 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24045 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2404a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2404f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24054 */ "\x00\x00", "\x00\x00", "\x8e\xac", "\x00\x00", "\x00\x00",
++  /* 0x24059 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2405e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24063 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24068 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2406d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24072 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24077 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2407c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24081 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xb2", "\x00\x00",
++  /* 0x24086 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x5a",
++  /* 0x2408c */ "\xfc\xbd", "\x92\xd9", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24091 */ "\xfd\xd5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24095 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2409a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2409f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240c7 */ "\x00\x00", "\x92\xdd", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240e1 */ "\x92\x59", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240ea */ "\x00\x00", "\x8c\xf0", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x240fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24104 */ "\x96\xba", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24108 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2410d */ "\x00\x00", "\x92\x5b", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24112 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24117 */ "\x00\x00", "\x9b\xab", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2411c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24121 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24126 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2412b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24130 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24135 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2413a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xda",
++  /* 0x24140 */ "\xfd\xde", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xd3",
++  /* 0x24144 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24149 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x46",
++  /* 0x2414e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24153 */ "\x00\x00", "\xfd\xd6", "\xfd\xdc", "\xfd\xdd", "\x00\x00",
++  /* 0x24158 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xfe", "\x00\x00",
++  /* 0x2415d */ "\x00\x00", "\xfe\xa1", "\x00\x00", "\x87\xa5", "\x00\x00",
++  /* 0x24162 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24167 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2416c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24171 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24177 */ "\x8b\xad", "\x00\x00", "\x00\x00", "\x9c\xd8", "\x00\x00",
++  /* 0x2417b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24180 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24185 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2418a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2418f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24194 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24199 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2419e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x6d",
++  /* 0x241a4 */ "\xfd\x7c", "\xfb\x61", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xf8", "\x00\x00",
++  /* 0x241ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241b2 */ "\x00\x00", "\x00\x00", "\x96\xf0", "\x00\x00", "\x00\x00",
++  /* 0x241b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241cb */ "\x00\x00", "\xfc\xf4", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241df */ "\x00\x00", "\x00\x00", "\xfe\x60", "\x00\x00", "\x00\x00",
++  /* 0x241e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x241f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x52", "\x00\x00",
++  /* 0x241fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24202 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24207 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2420c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24211 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24216 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\x4f",
++  /* 0x2421b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24220 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24225 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2422a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2422f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24234 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24239 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2423e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24243 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24248 */ "\x00\x00", "\x00\x00", "\x91\x6e", "\x00\x00", "\x00\x00",
++  /* 0x2424d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24252 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x6d", "\x00\x00",
++  /* 0x24257 */ "\x00\x00", "\x98\x64", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2425c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24261 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24266 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2426b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24270 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24276 */ "\x94\x53", "\xfd\xec", "\xfb\x78", "\x00\x00", "\x00\x00",
++  /* 0x2427a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2427f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xba",
++  /* 0x24284 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24289 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2428e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x5d",
++  /* 0x24293 */ "\x00\x00", "\x92\xf9", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24298 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2429d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242a2 */ "\x00\x00", "\x00\x00", "\x98\x5a", "\x00\x00", "\x00\x00",
++  /* 0x242a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x50", "\x00\x00",
++  /* 0x242c1 */ "\xfd\xf6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xd0", "\x98\x62",
++  /* 0x242ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242ee */ "\x9b\xad", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x242f7 */ "\x00\x00", "\x00\x00", "\x97\x4f", "\x00\x00", "\x00\x00",
++  /* 0x242fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24301 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24306 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2430b */ "\x00\x00", "\x9b\xae", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24310 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24315 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x52",
++  /* 0x2431a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2431f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24324 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24329 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2432e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24334 */ "\x9b\xb0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24338 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2433d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24342 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24348 */ "\x91\xd2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2434c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24351 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24356 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2435b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24360 */ "\x00\x00", "\x97\xea", "\xfb\x6b", "\x91\xb1", "\xfd\xf3",
++  /* 0x24365 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2436a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2436f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24374 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24379 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2437e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24383 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24388 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xcb", "\x00\x00",
++  /* 0x2438d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24392 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xb1", "\x00\x00",
++  /* 0x24397 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xec",
++  /* 0x2439c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243ba */ "\x00\x00", "\x00\x00", "\x98\x6b", "\x00\x00", "\x00\x00",
++  /* 0x243bf */ "\x00\x00", "\x97\x51", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243e7 */ "\x00\x00", "\x98\x71", "\x95\xef", "\x00\x00", "\x00\x00",
++  /* 0x243ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243f2 */ "\x9e\xf3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243f6 */ "\x00\x00", "\x91\xe8", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x243fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24400 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xba", "\x00\x00",
++  /* 0x24405 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2440a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2440f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24414 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24419 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2441e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24423 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24428 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2442d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24432 */ "\x00\x00", "\x00\x00", "\xfb\x4c", "\x92\x6a", "\x00\x00",
++  /* 0x24437 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2443c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24441 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24446 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2444b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24450 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24455 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xf8",
++  /* 0x2445b */ "\x98\x61", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2445f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24464 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24469 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2446e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xe7",
++  /* 0x24473 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24478 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2447d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24482 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xed",
++  /* 0x24488 */ "\x97\x44", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2448c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24491 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24496 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2449b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xe1",
++  /* 0x244b9 */ "\x00\x00", "\x00\x00", "\xfb\xf5", "\x00\x00", "\x00\x00",
++  /* 0x244be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244ce */ "\x98\x69", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244d3 */ "\x8a\x62", "\x00\x00", "\x00\x00", "\x9b\xbb", "\x00\x00",
++  /* 0x244d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x244ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24505 */ "\x8c\xa8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24509 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2450e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24513 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24518 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2451d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x55", "\x00\x00",
++  /* 0x24522 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24527 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2452c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24531 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24536 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2453b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24540 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24545 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2454a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2454f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24554 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24559 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2455e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24563 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24568 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2456d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24572 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24578 */ "\x8e\x77", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2457c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24581 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24586 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2458b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24590 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24595 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2459a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2459f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245c8 */ "\x8a\xb2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x245fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24603 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24608 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2460d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24612 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24618 */ "\x9e\xbc", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2461c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24621 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24626 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xe6", "\x00\x00",
++  /* 0x2462b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24630 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24635 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2463a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2463f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24644 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24649 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2464e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24653 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24658 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2465d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24662 */ "\x00\x00", "\x00\x00", "\x93\xa2", "\x00\x00", "\x00\x00",
++  /* 0x24667 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2466c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24671 */ "\x00\x00", "\x00\x00", "\x9b\xbd", "\x00\x00", "\x00\x00",
++  /* 0x24676 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2467b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24680 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24685 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2468a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2468f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24694 */ "\x00\x00", "\x00\x00", "\x94\xb3", "\x00\x00", "\x00\x00",
++  /* 0x24699 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2469e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x7d", "\x00\x00",
++  /* 0x246d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x246fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24702 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x66", "\x00\x00",
++  /* 0x24707 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2470c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24711 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24716 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2471b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24720 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x59",
++  /* 0x24725 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2472a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xbf",
++  /* 0x2472f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24734 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24739 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2473e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24743 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24748 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2474d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24752 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24757 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2475c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24761 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24766 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2476b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24770 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24775 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2477a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2477f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24784 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24789 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2478f */ "\x94\x58", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24793 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24798 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2479d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247de */ "\x00\x00", "\x9e\xa5", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x247fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24801 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24806 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2480b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24810 */ "\x00\x00", "\x9b\xc7", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24815 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2481a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2481f */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x54", "\x00\x00",
++  /* 0x24824 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24829 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2482e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24833 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24838 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2483d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24842 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24847 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2484c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24851 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24856 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2485b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24860 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24865 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2486a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2486f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24874 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24879 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2487e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\x74", "\x00\x00",
++  /* 0x24883 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24888 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2488d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24892 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24897 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2489c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248e7 */ "\x00\x00", "\x8b\xd6", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xb6", "\xfd\x74",
++  /* 0x248f2 */ "\x98\xc0", "\x94\xa5", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x248f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xc8",
++  /* 0x248fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xed", "\xfd\x7e",
++  /* 0x24901 */ "\xfb\xeb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24905 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2490a */ "\x00\x00", "\xfd\x7d", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2490f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24914 */ "\x00\x00", "\x97\x6f", "\x94\x61", "\x00\x00", "\x9f\xc1",
++  /* 0x24919 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2491e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24923 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24928 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2492d */ "\x00\x00", "\x95\xd7", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24933 */ "\xfa\x52", "\x9c\x58", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24937 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2493c */ "\x00\x00", "\x9f\x68", "\x9b\xe7", "\xfc\xce", "\x96\xe8",
++  /* 0x24942 */ "\xfa\x49", "\x97\xa1", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24946 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2494b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24950 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24955 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2495a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2495f */ "\x00\x00", "\x00\x00", "\x95\x4d", "\x9e\xf8", "\x00\x00",
++  /* 0x24964 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24969 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2496e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24974 */ "\xfe\x49", "\x91\xce", "\x97\x71", "\x00\x00", "\x00\x00",
++  /* 0x24978 */ "\x00\x00", "\x00\x00", "\x8c\xcf", "\x00\x00", "\x00\x00",
++  /* 0x2497d */ "\x00\x00", "\xfd\xb1", "\x00\x00", "\x00\x00", "\xfc\x6e",
++  /* 0x24982 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24988 */ "\x9c\xf2", "\x93\xb8", "\x90\x43", "\x97\x59", "\x94\xd7",
++  /* 0x2498d */ "\xfe\x66", "\x94\x7d", "\xfc\x6f", "\x00\x00", "\x00\x00",
++  /* 0x24991 */ "\x00\x00", "\x00\x00", "\x92\x46", "\x00\x00", "\x00\x00",
++  /* 0x24996 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2499b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x6d", "\x00\x00",
++  /* 0x249a5 */ "\x00\x00", "\x8e\xf7", "\x00\x00", "\xfb\xb7", "\x00\x00",
++  /* 0x249ab */ "\x94\x7c", "\x92\xcd", "\x97\xb2", "\x00\x00", "\x00\x00",
++  /* 0x249af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249b4 */ "\x00\x00", "\x00\x00", "\xfe\x65", "\x96\x7e", "\x97\x58",
++  /* 0x249ba */ "\x9b\x77", "\x91\xcf", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249c3 */ "\x00\x00", "\x94\xa4", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249cd */ "\x00\x00", "\x00\x00", "\x9c\xad", "\x00\x00", "\x00\x00",
++  /* 0x249d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249d7 */ "\x00\x00", "\x00\x00", "\x8b\xab", "\x00\x00", "\x00\x00",
++  /* 0x249dc */ "\x00\x00", "\x96\xd5", "\xfc\xb3", "\x00\x00", "\x00\x00",
++  /* 0x249e1 */ "\x00\x00", "\x93\xae", "\x00\x00", "\x97\x6d", "\x00\x00",
++  /* 0x249e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249ec */ "\x94\x46", "\x95\xf7", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249f6 */ "\x9c\x46", "\x95\x5b", "\x91\xd1", "\x94\xf4", "\x00\x00",
++  /* 0x249fb */ "\xfe\x67", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x249ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a04 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x92\xa5",
++  /* 0x24a0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xdf", "\x8c\xab",
++  /* 0x24a13 */ "\x00\x00", "\x9b\xc9", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xed", "\xfd\xfa",
++  /* 0x24a23 */ "\xfc\xc8", "\xfe\x62", "\x91\xfc", "\xfe\x6b", "\xfd\xf9",
++  /* 0x24a28 */ "\xfc\xc7", "\x91\x4e", "\x9c\xb8", "\x00\x00", "\x00\x00",
++  /* 0x24a2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a36 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a3b */ "\x00\x00", "\x00\x00", "\x97\x67", "\x00\x00", "\x00\x00",
++  /* 0x24a40 */ "\x00\x00", "\x95\xee", "\x00\x00", "\x00\x00", "\x9b\xb2",
++  /* 0x24a45 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x60",
++  /* 0x24a4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xa2", "\x98\x75",
++  /* 0x24a50 */ "\x97\xac", "\x91\xd3", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x7b", "\x00\x00",
++  /* 0x24a5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a63 */ "\x00\x00", "\x8e\xeb", "\x97\x6a", "\x96\x5e", "\x00\x00",
++  /* 0x24a68 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a6d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xeb", "\x00\x00",
++  /* 0x24a72 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9f\xf9",
++  /* 0x24a78 */ "\x95\xf8", "\xfe\xa2", "\x8f\xe6", "\x00\x00", "\x00\x00",
++  /* 0x24a7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a8c */ "\xfe\x7e", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a90 */ "\x00\x00", "\x00\x00", "\x9d\xa4", "\x97\x68", "\x8e\xec",
++  /* 0x24a96 */ "\x94\xbd", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24a9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x5b",
++  /* 0x24aa5 */ "\x9c\xf6", "\xfa\xa7", "\x9b\xd9", "\x00\x00", "\x00\x00",
++  /* 0x24aa9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24aae */ "\x00\x00", "\x00\x00", "\xfa\x5d", "\x96\x56", "\x97\x62",
++  /* 0x24ab3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ab8 */ "\x00\x00", "\x94\xba", "\xa0\x4f", "\x92\xd8", "\x00\x00",
++  /* 0x24abd */ "\x00\x00", "\x00\x00", "\x9b\xcb", "\x00\x00", "\x00\x00",
++  /* 0x24ac2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xbb",
++  /* 0x24ac7 */ "\x00\x00", "\x00\x00", "\x9d\x5f", "\x00\x00", "\x00\x00",
++  /* 0x24acc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xcf",
++  /* 0x24ad1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ad6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24adb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x65", "\x00\x00",
++  /* 0x24ae0 */ "\x00\x00", "\x9f\x4c", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ae5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xd8", "\x00\x00",
++  /* 0x24aea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24aef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24af4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24af9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24afe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b03 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b08 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b0d */ "\x00\x00", "\x8d\x5b", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b35 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b4e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b58 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b5d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b62 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24b6c */ "\x00\x00", "\x9e\xbe",
+ 
+   /* 0x24bf5 */ "\xfb\x6d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24bf9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14269,7 +14158,7 @@ static const char from_ucs4[][2] =
+   /* 0x24cb6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24cbb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24cc0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24cc5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24cc5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xfc", "\x00\x00",
+   /* 0x24cca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24ccf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24cd4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x73",
+@@ -14282,6 +14171,9 @@ static const char from_ucs4[][2] =
+   /* 0x24cf7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24cfc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24d01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x74",
++  /* 0x24d06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24d0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24d10 */ "\x00\x00", "\x00\x00", "\xfe\xb7",
+ 
+   /* 0x24db8 */ "\x8a\x4b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24dbc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14309,375 +14201,529 @@ static const char from_ucs4[][2] =
+   /* 0x24e2a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24e2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24e34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24e39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e39 */ "\x00\x00", "\x8a\xdc", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24e3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24e43 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x24e48 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24e4d */ "\x00\x00", "\x00\x00", "\x8b\x76",
+-
+-  /* 0x24f0e */ "\xa0\xf8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f35 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f4e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f58 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xdf", "\x00\x00",
+-  /* 0x24f5d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f62 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f6c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f71 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f76 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f7b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f80 */ "\x00\x00", "\xfe\xb5", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f94 */ "\x00\x00", "\x00\x00", "\x96\xfb", "\x00\x00", "\x00\x00",
+-  /* 0x24f9a */ "\x9b\xfb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24f9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24fa3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24fa9 */ "\x9e\xce", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24fad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24fb2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24fb7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24fbc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x24fc2 */ "\x9e\x7b",
+-
+-  /* 0x2509d */ "\xfe\xce",
+-
+-  /* 0x25148 */ "\x9d\xfc", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2514c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25151 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25156 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2515b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25160 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25165 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2516a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2516f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25174 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25179 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xcf", "\x8b\xa5",
+-  /* 0x2517e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25183 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25188 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2518d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25192 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25197 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2519c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251e3 */ "\x8a\xec", "\x00\x00", "\x00\x00", "\xfc\xe0", "\x94\xad",
+-  /* 0x251e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x251fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25200 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25205 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2520a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2520f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25214 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25219 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2521e */ "\x00\x00", "\xfe\xd5", "\x94\xac",
++  /* 0x24e4d */ "\x00\x00", "\x00\x00", "\x8b\x76", "\x00\x00", "\x00\x00",
++  /* 0x24e52 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e57 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e5c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e61 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e66 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e6b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e70 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e75 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e7f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e84 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e89 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e8e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e93 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24e9d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ea2 */ "\x00\x00", "\x00\x00", "\x9b\xce", "\x00\x00", "\x8a\x68",
++  /* 0x24ea7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24eac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24eb1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24eb6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ebb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ec0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ec5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24eca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ecf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ed4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ed9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ede */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ee3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ee8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24eed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ef2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ef7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24efc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f0b */ "\x00\x00", "\x00\x00", "\xa0\xf8", "\x00\x00", "\x00\x00",
++  /* 0x24f10 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f24 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f29 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f38 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f3d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f42 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f47 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f4c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f51 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f56 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f5c */ "\x98\xdf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xb5", "\x00\x00",
++  /* 0x24f83 */ "\x00\x00", "\x00\x00", "\x9b\xcf", "\x00\x00", "\x00\x00",
++  /* 0x24f88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24f92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xfb",
++  /* 0x24f97 */ "\x00\x00", "\x00\x00", "\x9b\xfb", "\x00\x00", "\x00\x00",
++  /* 0x24f9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fa1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fa6 */ "\x00\x00", "\x00\x00", "\x9e\xce", "\x00\x00", "\x00\x00",
++  /* 0x24fab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fb0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fb5 */ "\x00\x00", "\x00\x00", "\x8e\xe5", "\x00\x00", "\x00\x00",
++  /* 0x24fba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fbf */ "\x00\x00", "\x00\x00", "\x9e\x7b", "\x00\x00", "\x00\x00",
++  /* 0x24fc4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fc9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fd3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fd8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fdd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fe2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fe7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24fec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ff1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ff6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x24ffb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25000 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25005 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2500a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2500f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25014 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25019 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2501e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25023 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25028 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xd2", "\x00\x00",
++  /* 0x2502d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25032 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25037 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2503c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25041 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25046 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2504b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25050 */ "\x00\x00", "\x8a\xa5", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25055 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2505a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2505f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25064 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25069 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2506e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25073 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25078 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2507d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25082 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25087 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2508c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25091 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25096 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2509b */ "\x00\x00", "\xfe\xce",
+ 
+-  /* 0x252c7 */ "\x8a\x6f", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252d5 */ "\x00\x00", "\x00\x00", "\x8b\xa9", "\x00\x00", "\x00\x00",
+-  /* 0x252da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x252fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25302 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25307 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2530c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xcb",
+-  /* 0x25311 */ "\x00\x00", "\xfc\xe7",
++  /* 0x2512b */ "\x8a\x45", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2512f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25134 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25139 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2513e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25143 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xfc",
++  /* 0x25148 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2514d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25152 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25157 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2515c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25161 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25166 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2516b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25170 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25175 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2517a */ "\x00\x00", "\x00\x00", "\xfe\xcf", "\x8b\xa5", "\x00\x00",
++  /* 0x2517f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25184 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25189 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2518e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25193 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25198 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2519d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251ca */ "\x00\x00", "\x00\x00", "\x8c\x4a", "\x00\x00", "\x00\x00",
++  /* 0x251cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xec",
++  /* 0x251e3 */ "\x00\x00", "\x00\x00", "\xfc\xe0", "\x94\xad", "\x00\x00",
++  /* 0x251e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x251fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25201 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25206 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2520b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25210 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25215 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2521a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25220 */ "\xfe\xd5", "\x94\xac", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25224 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25229 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2522e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25233 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25238 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2523d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25242 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25247 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2524c */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x5a", "\x00\x00",
++  /* 0x25251 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25256 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2525b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25260 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25265 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2526a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2526f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25274 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25279 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2527e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25283 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25288 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2528d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25292 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25297 */ "\x00\x00", "\x9b\xd6", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2529c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252c4 */ "\x00\x00", "\x00\x00", "\x8a\x6f", "\x00\x00", "\x00\x00",
++  /* 0x252c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xa9",
++  /* 0x252d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x252fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25300 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25305 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2530a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\x5f", "\x00\x00",
++  /* 0x2530f */ "\x00\x00", "\x9d\xcb", "\x00\x00", "\xfc\xe7",
+ 
+-  /* 0x25425 */ "\x93\xc8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25429 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2542f */ "\x91\xf0", "\x8f\xe0", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25433 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25438 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2543d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25442 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25447 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2544c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25451 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25456 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2545b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25460 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25465 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2546a */ "\x00\x00", "\x90\xed", "\x00\x00", "\x9b\xdc",
++  /* 0x25419 */ "\x9b\xd7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2541d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25422 */ "\x00\x00", "\x00\x00", "\x93\xc8", "\x00\x00", "\x00\x00",
++  /* 0x25427 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2542c */ "\x00\x00", "\x00\x00", "\x91\xf0", "\x8f\xe0", "\x00\x00",
++  /* 0x25431 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25436 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2543b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25440 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25446 */ "\x9b\xdb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2544a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2544f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25454 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25459 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2545e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25463 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25468 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xed", "\x00\x00",
++  /* 0x2546e */ "\x9b\xdc", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25472 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25477 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2547c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25481 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25486 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2548b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25490 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25495 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x53",
+ 
+-  /* 0x2555b */ "\x93\xc7", "\x92\x49", "\x96\xe1", "\x00\x00", "\x00\x00",
+-  /* 0x2555f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25565 */ "\x8f\xe1", "\x9b\xe5", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25569 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2556e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25573 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25578 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2557d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xc0", "\x00\x00",
+-  /* 0x25582 */ "\x00\x00", "\x93\xc3", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25587 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2558c */ "\x00\x00", "\x00\x00", "\x93\xc5", "\x00\x00", "\x00\x00",
+-  /* 0x25591 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25596 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2559b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x79",
+-  /* 0x255b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255d2 */ "\x00\x00", "\x00\x00", "\x97\x7b", "\x00\x00", "\x00\x00",
+-  /* 0x255d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x7e", "\x00\x00",
+-  /* 0x255dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xe6", "\x00\x00",
+-  /* 0x255e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x255ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25604 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25609 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2560e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25613 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25618 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2561d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25622 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25627 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2562c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25631 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xb8", "\x00\x00",
+-  /* 0x25636 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2563b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25640 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25645 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2564a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2564f */ "\x00\x00", "\x92\x70", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25654 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25659 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2565e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25663 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25668 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2566d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25672 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25677 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2567c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25681 */ "\x00\x00", "\x95\xa8", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25686 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2568b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25690 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25695 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2569a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2569f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256f4 */ "\x00\x00", "\x98\xb9", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x256fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25703 */ "\x00\x00", "\x00\x00", "\x91\x40", "\x00\x00", "\x00\x00",
+-  /* 0x25708 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2570d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25712 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25717 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2571d */ "\xfc\xbe", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25721 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x57", "\x00\x00",
+-  /* 0x25726 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2572b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25730 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25735 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2573a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2573f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25744 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25749 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2574e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25753 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25758 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2575d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25762 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25767 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2576c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25772 */ "\xfa\xdf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25776 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2577b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25780 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25785 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2578a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2578f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25794 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25799 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2579e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257c7 */ "\x9b\xe6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257e0 */ "\x8e\x44", "\x9c\x4f", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x257fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25802 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25807 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2580c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25811 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25816 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2581b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25820 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25825 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2582a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2582f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25834 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25839 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2583e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25843 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25848 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2584d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25852 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xf4",
+-  /* 0x25857 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2585c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25861 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25866 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2586b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25870 */ "\x00\x00", "\x93\xdc", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25875 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2587a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2587f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25884 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25889 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2588e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25893 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25898 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2589d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258de */ "\x00\x00", "\x00\x00", "\x8e\x4a", "\x00\x00", "\x00\x00",
+-  /* 0x258e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x258fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25901 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25906 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2590b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25910 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25915 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2591a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2591f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25924 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25929 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2592e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25933 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25938 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2593d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25942 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25947 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2594c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25951 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xb9",
+-  /* 0x25956 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2595b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25960 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25965 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2596a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2596f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25974 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25979 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2597e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25983 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25988 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2598d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25992 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25997 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2599c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x259a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x259a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x259ac */ "\x8e\x4e",
++  /* 0x25531 */ "\xa0\xec", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xfa",
++  /* 0x25535 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2553a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xe0",
++  /* 0x2553f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25544 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25549 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2554e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25553 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25558 */ "\x00\x00", "\x00\x00", "\x93\xc7", "\x92\x49", "\x96\xe1",
++  /* 0x2555e */ "\x9b\xe2", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xe4",
++  /* 0x25562 */ "\x00\x00", "\x00\x00", "\x8f\xe1", "\x9b\xe5", "\x00\x00",
++  /* 0x25567 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2556c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25571 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25576 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2557b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25581 */ "\x94\xc0", "\x00\x00", "\x00\x00", "\x93\xc3", "\x00\x00",
++  /* 0x25585 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2558a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xc5",
++  /* 0x2558f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25594 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25599 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2559e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255b7 */ "\x00\x00", "\x90\x79", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\x7b",
++  /* 0x255d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255db */ "\x90\x7e", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255e0 */ "\xfe\xe6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x255fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25602 */ "\x00\x00", "\x00\x00", "\xfe\x46", "\x00\x00", "\x00\x00",
++  /* 0x25607 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2560c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25611 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25616 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2561b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25620 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25625 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2562a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2562f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25635 */ "\x9d\xb8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25639 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2563e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25643 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25648 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2564d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x70", "\x00\x00",
++  /* 0x25652 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25657 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2565c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25661 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25666 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2566b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25670 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25675 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2567a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2567f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xa8", "\x00\x00",
++  /* 0x25684 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25689 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2568e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25693 */ "\x00\x00", "\x8c\xb0", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25698 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2569d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xc8",
++  /* 0x256e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xb9", "\x00\x00",
++  /* 0x256f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x256fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25701 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x40",
++  /* 0x25706 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2570b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25710 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25715 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2571a */ "\x00\x00", "\x00\x00", "\xfc\xbe", "\x00\x00", "\x00\x00",
++  /* 0x2571f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25725 */ "\x91\x57", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25729 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2572e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25733 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25738 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xb2",
++  /* 0x2573d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25742 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25747 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2574c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25751 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25756 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2575b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25760 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25765 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2576a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2576f */ "\x00\x00", "\x00\x00", "\xfa\xdf", "\x00\x00", "\x00\x00",
++  /* 0x25774 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25779 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2577e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25783 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25788 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2578d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25792 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25797 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2579c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257c4 */ "\x00\x00", "\x00\x00", "\x9b\xe6", "\x00\x00", "\x00\x00",
++  /* 0x257c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257dd */ "\x00\x00", "\x96\x43", "\x8e\x44", "\x9c\x4f", "\x00\x00",
++  /* 0x257e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x257fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25800 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25805 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2580a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2580f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25814 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25819 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2581e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25823 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25828 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2582d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25832 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25837 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2583c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25841 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25846 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2584b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25850 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25855 */ "\x00\x00", "\xfe\xf4", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2585a */ "\x00\x00", "\x00\x00", "\x9b\xe8", "\x00\x00", "\x00\x00",
++  /* 0x2585f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25864 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25869 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2586e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xdc", "\x00\x00",
++  /* 0x25873 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25878 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2587d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25882 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25887 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2588c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25891 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25896 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2589b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\x6f",
++  /* 0x258c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258dc */ "\x00\x00", "\x87\xa1", "\x00\x00", "\x00\x00", "\x8e\x4a",
++  /* 0x258e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x258ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xed", "\x00\x00",
++  /* 0x25904 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25909 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2590e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25913 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25918 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2591d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25922 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25927 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2592c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25931 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25936 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2593b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25940 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25946 */ "\x92\xf6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2594a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2594f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25954 */ "\x00\x00", "\x9d\xb9", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25959 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2595e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25963 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25968 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2596d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25972 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25977 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2597c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25981 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25986 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2598b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25990 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25995 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2599a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2599f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x259a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x259a9 */ "\x00\x00", "\x00\x00", "\x8e\x4e", "\x00\x00", "\x00\x00",
++  /* 0x259ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x259b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x259b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x259bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x259c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x259c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xcf",
+ 
+-  /* 0x25a9c */ "\x94\xe5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25aa0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25aa5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25aaa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xf0", "\x00\x00",
+-  /* 0x25aaf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ab4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ab9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25abe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ac3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ac8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25acd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ad2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ad7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25adc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ae1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ae6 */ "\x00\x00", "\x00\x00", "\x95\x51",
++  /* 0x25a54 */ "\x87\x60", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a58 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a5d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a62 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a6c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a71 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a76 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a7b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a80 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a95 */ "\x9e\xc2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25a99 */ "\x00\x00", "\x00\x00", "\x94\xe5", "\x00\x00", "\x00\x00",
++  /* 0x25a9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25aa3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25aa8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25aae */ "\x9b\xf0", "\x94\xe4", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ab2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ab7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25abc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ac1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ac6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25acb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ad0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ad5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ada */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25adf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ae4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x51",
+ 
+   /* 0x25b74 */ "\x8b\xbb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25b78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25b7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25b82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25b87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25b87 */ "\x00\x00", "\x9b\xf1", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25b8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25b91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25b96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14695,8 +14741,8 @@ static const char from_ucs4[][2] =
+   /* 0x25bd2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25bd7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25bdc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25be1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25be6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25be1 */ "\x00\x00", "\x00\x00", "\x8f\x61", "\x00\x00", "\x00\x00",
++  /* 0x25be6 */ "\x00\x00", "\x9b\x64", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25beb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25bf0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25bf5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14707,7 +14753,7 @@ static const char from_ucs4[][2] =
+   /* 0x25c0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25c13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25c18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25c1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25c1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9f\xbe", "\x00\x00",
+   /* 0x25c22 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25c27 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25c2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14730,10 +14776,10 @@ static const char from_ucs4[][2] =
+   /* 0x25c81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25c86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25c8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25c90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25c91 */ "\x8f\x73", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25c95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25c9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25c9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25c9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xaf",
+   /* 0x25ca4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25ca9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25cae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14758,79 +14804,118 @@ static const char from_ucs4[][2] =
+   /* 0x25d0d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25d12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25d17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25d1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xd8", "\x00\x00",
++  /* 0x25d1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\x6a", "\x00\x00",
+   /* 0x25d21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25d26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25d2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x4c",
+   /* 0x25d30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25d35 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25d3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25d3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x52",
+-
+-  /* 0x25e0e */ "\x95\x54", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e35 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e4e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e58 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e5d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e62 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e6c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e71 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e76 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e7b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e81 */ "\x9d\xbb", "\x95\x43", "\x92\xfe", "\x00\x00", "\x00\x00",
+-  /* 0x25e85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e94 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e99 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25e9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ea3 */ "\x00\x00", "\x00\x00", "\x94\xf2", "\x00\x00", "\x00\x00",
+-  /* 0x25ea8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ead */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25eb2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25eb7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xf1",
+-  /* 0x25ebc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ec1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ec6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ecb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ed0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ed5 */ "\x00\x00", "\xa0\xea", "\x9d\xd2", "\x00\x00", "\x00\x00",
+-  /* 0x25eda */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25edf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ee4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ee9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25eee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ef3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25ef8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25efd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f0c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f11 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f16 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f20 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f2a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f43 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x25f48 */ "\x00\x00", "\x00\x00", "\x91\xf8",
++  /* 0x25d3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x52", "\x00\x00",
++  /* 0x25d44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d4e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d58 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d5d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d62 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d6c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d71 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d76 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d7b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d80 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d94 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\xcf",
++  /* 0x25d99 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25d9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25da3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25da8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25db2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25db7 */ "\x00\x00", "\x87\xc0", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dbc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dc1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dc6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dcb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dd0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dd5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dda */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ddf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25de4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25de9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25df3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25df8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25dfd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e0c */ "\x00\x00", "\x95\x54", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e11 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e16 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e20 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e2a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e43 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e49 */ "\x8a\xd4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e52 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e57 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e5c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e61 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e66 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e6b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e70 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e75 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e7f */ "\x00\x00", "\x9d\xbb", "\x95\x43", "\x92\xfe", "\x00\x00",
++  /* 0x25e84 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e89 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e8e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e93 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25e9d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ea2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xf2", "\x00\x00",
++  /* 0x25ea7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25eac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25eb1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25eb6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ebc */ "\x94\xf1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ec0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ec5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25eca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ecf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ed4 */ "\x00\x00", "\x00\x00", "\xa0\xea", "\x9d\xd2", "\x00\x00",
++  /* 0x25ed9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ede */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ee3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ee8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25eed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ef2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25ef7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25efc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f10 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\xb1",
++  /* 0x25f1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f24 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f29 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f38 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f3d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f42 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x25f47 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xf8",
+ 
+   /* 0x25fe1 */ "\x94\x62", "\x9b\xa4", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x25fe5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14844,7 +14929,7 @@ static const char from_ucs4[][2] =
+   /* 0x2600d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26012 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26017 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2601c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2601c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x7d",
+   /* 0x26021 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26026 */ "\x00\x00", "\x00\x00", "\x8e\xad", "\x00\x00", "\x00\x00",
+   /* 0x2602b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14852,7 +14937,7 @@ static const char from_ucs4[][2] =
+   /* 0x26035 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2603a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2603f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26044 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26044 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xad", "\x00\x00",
+   /* 0x26049 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2604e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26053 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14864,11 +14949,11 @@ static const char from_ucs4[][2] =
+   /* 0x26071 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26076 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2607b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26080 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26080 */ "\x00\x00", "\x00\x00", "\xfe\xee", "\x00\x00", "\x00\x00",
+   /* 0x26085 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2608a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2608f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26094 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26094 */ "\x00\x00", "\x00\x00", "\x8a\xb4", "\x00\x00", "\x00\x00",
+   /* 0x26099 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2609e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x260a4 */ "\x97\x57", "\x8a\x77", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14889,7 +14974,7 @@ static const char from_ucs4[][2] =
+   /* 0x260ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x260f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x260f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x260fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x260fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xf7",
+   /* 0x26102 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26107 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2610c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14925,7 +15010,7 @@ static const char from_ucs4[][2] =
+   /* 0x261a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x261a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x261ad */ "\xa0\xf3", "\x94\xbe", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x261b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x261b2 */ "\x9b\xfa", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x261b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x261bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x261c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14961,8 +15046,8 @@ static const char from_ucs4[][2] =
+   /* 0x26256 */ "\x00\x00", "\x9d\xbc", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2625b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26261 */ "\x94\xfe", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26265 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2626a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26265 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xdb",
++  /* 0x2626b */ "\xa0\xfe", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2626f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26274 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26279 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -14982,8 +15067,32 @@ static const char from_ucs4[][2] =
+   /* 0x262bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x262c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x262c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x262ce */ "\x00\x00", "\x8e\xc0",
+-
++  /* 0x262ce */ "\x00\x00", "\x8e\xc0", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x262d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x262d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x262dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x262e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x262e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x262ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x262f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x262f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x262fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26300 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26305 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2630a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2630f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26314 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26319 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2631e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26323 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26328 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2632d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26332 */ "\x00\x00", "\x00\x00", "\x9f\x47", "\x00\x00", "\x00\x00",
++  /* 0x26337 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2633c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26341 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26346 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xde",
++  /* 0x2634c */ "\xa0\xfb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26351 */ "\x8e\xc3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26355 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2635a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15016,10 +15125,10 @@ static const char from_ucs4[][2] =
+   /* 0x263e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x263e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x263eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x263f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x263f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x263f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xc2",
++  /* 0x263f5 */ "\x00\x00", "\x00\x00", "\x95\x4c", "\x00\x00", "\x00\x00",
+   /* 0x263fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x263ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x263ff */ "\x00\x00", "\x00\x00", "\x9b\xfd", "\x00\x00", "\x00\x00",
+   /* 0x26404 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26409 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2640e */ "\x00\x00", "\x90\xcc", "\x9c\x60", "\x95\x4b", "\x00\x00",
+@@ -15033,21 +15142,21 @@ static const char from_ucs4[][2] =
+   /* 0x26436 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2643b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26440 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26445 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26445 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xfe",
+   /* 0x2644a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2644f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26454 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26459 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2645e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26463 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26468 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26469 */ "\x9c\x70", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2646d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26472 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26477 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2647c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26481 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26486 */ "\x00\x00", "\x00\x00", "\x8e\xcc", "\x00\x00", "\x00\x00",
+-  /* 0x2648b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26481 */ "\x00\x00", "\x00\x00", "\x9c\x43", "\x00\x00", "\x00\x00",
++  /* 0x26486 */ "\x00\x00", "\x9c\x47", "\x8e\xcc", "\x00\x00", "\x00\x00",
++  /* 0x2648b */ "\x00\x00", "\x8e\x54", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26490 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26495 */ "\x00\x00", "\x00\x00", "\x8e\xe4", "\x00\x00", "\x00\x00",
+   /* 0x2649a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15102,13 +15211,13 @@ static const char from_ucs4[][2] =
+   /* 0x2658f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26594 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26599 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2659e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2659e */ "\x00\x00", "\x95\x5e", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x265a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x265a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x5c",
+   /* 0x265ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x265b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x265b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x265bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x265bc */ "\x00\x00", "\x00\x00", "\x9c\x4b", "\x00\x00", "\x00\x00",
+   /* 0x265c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x265c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x265cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15125,33 +15234,33 @@ static const char from_ucs4[][2] =
+   /* 0x26602 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26607 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2660c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26611 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26612 */ "\x8b\xe1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26616 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2661b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26620 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26626 */ "\x8e\xd9",
+ 
+   /* 0x266af */ "\x9d\xb4", "\x00\x00", "\x92\x5f", "\x00\x00", "\x00\x00",
+-  /* 0x266b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x266b3 */ "\x00\x00", "\x9c\x4c", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x266d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x266d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xa1", "\x00\x00",
+   /* 0x266db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266e5 */ "\x00\x00", "\x00\x00", "\x8e\xdb", "\x00\x00", "\x00\x00",
+   /* 0x266ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x266f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x266f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x266f9 */ "\x00\x00", "\x00\x00", "\x9c\x56", "\x00\x00", "\x00\x00",
+   /* 0x266fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26703 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26708 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2670d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26712 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26712 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xa2", "\x00\x00",
+   /* 0x26717 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2671c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26721 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15177,7 +15286,7 @@ static const char from_ucs4[][2] =
+   /* 0x26785 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2678a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2678f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26794 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26794 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x5e",
+   /* 0x26799 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2679e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x267a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15188,87 +15297,144 @@ static const char from_ucs4[][2] =
+   /* 0x267bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x267c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x267c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x267cc */ "\xa0\xc3",
+-
+-  /* 0x2685e */ "\x9c\x61", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26862 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26867 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2686c */ "\x00\x00", "\x9c\x5f", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26871 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26876 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2687b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26880 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26885 */ "\x00\x00", "\x00\x00", "\xfc\x4d", "\x00\x00", "\x00\x00",
+-  /* 0x2688a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2688f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x69", "\x00\x00",
+-  /* 0x26894 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26899 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2689e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x268fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26902 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26907 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2690c */ "\x00\x00", "\xfe\xc7", "\x00\x00", "\x00\x00", "\xfe\xc6",
+-
+-  /* 0x269a8 */ "\x91\x65", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xe7", "\x00\x00",
+-  /* 0x269b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x54",
+-  /* 0x269f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x269f7 */ "\x00\x00", "\x00\x00", "\x9c\x6c", "\x00\x00", "\x00\x00",
+-  /* 0x269fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a10 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a24 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a29 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x5d",
+-  /* 0x26a2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a38 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a3d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x6a",
+-  /* 0x26a42 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a47 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26a4c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x6d",
+-  /* 0x26a52 */ "\x8e\xf0",
++  /* 0x267cc */ "\xa0\xc3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x267fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26802 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26807 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2680c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26811 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26816 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2681c */ "\x8a\xe6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26820 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26825 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2682a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2682f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26834 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26839 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2683e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26843 */ "\x00\x00", "\x00\x00", "\xa0\xf7", "\x00\x00", "\x00\x00",
++  /* 0x26848 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2684d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26852 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26857 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2685c */ "\x00\x00", "\x9c\x61", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26861 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26866 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2686b */ "\x00\x00", "\x00\x00", "\x9c\x5f", "\x00\x00", "\x00\x00",
++  /* 0x26870 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26875 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2687a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2687f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26884 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x4d", "\x00\x00",
++  /* 0x2688a */ "\x9e\x5b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2688e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x69",
++  /* 0x26893 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26898 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2689d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268c5 */ "\x00\x00", "\x9c\x63", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x268fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26901 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26906 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2690b */ "\x00\x00", "\x00\x00", "\xfe\xc7", "\x00\x00", "\x00\x00",
++  /* 0x26911 */ "\xfe\xc6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26915 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2691a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2691f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26924 */ "\x00\x00", "\x9c\x67", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26929 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2692e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26933 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26939 */ "\x9c\x69", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2693d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26942 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26947 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2694c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xe2",
++  /* 0x26951 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26956 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2695b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26960 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26965 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2696a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2696f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26974 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26979 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2697e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26983 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26988 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2698d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26992 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26997 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2699c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269a6 */ "\x00\x00", "\x91\x65", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xe7",
++  /* 0x269b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269f2 */ "\x8a\x54", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x269f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x6c", "\x00\x00",
++  /* 0x269fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a1e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a28 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x6e",
++  /* 0x26a2e */ "\xfe\x5d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a32 */ "\x00\x00", "\x9c\x73", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a42 */ "\x95\x6a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a4b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26a51 */ "\x95\x6d", "\x8e\xf0",
+ 
++  /* 0x26b05 */ "\x8f\x4d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b0a */ "\x8e\xf6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26b0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26b13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26b0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\xbc",
++  /* 0x26b13 */ "\x00\x00", "\x8c\xd5", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26b22 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26b23 */ "\x87\x5e", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b28 */ "\xfb\xda", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15279,27 +15445,27 @@ static const char from_ucs4[][2] =
+   /* 0x26b4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b50 */ "\x8b\x4c", "\xfd\x75", "\x9b\xdd", "\xfa\xf5", "\x00\x00",
+   /* 0x26b54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26b59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26b59 */ "\x00\x00", "\x9c\x74", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b63 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b68 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b6d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26b72 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26b72 */ "\x00\x00", "\x00\x00", "\x95\x45", "\x00\x00", "\x00\x00",
+   /* 0x26b77 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26b81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26b82 */ "\x96\xc6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26b96 */ "\x8f\x6a", "\x8f\x4e", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26b9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26b9a */ "\x00\x00", "\x00\x00", "\x9c\x78", "\x00\x00", "\x00\x00",
+   /* 0x26b9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26ba4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26ba9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26bae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfa\x55",
+   /* 0x26bb3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26bb8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26bbd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26bbd */ "\x00\x00", "\x00\x00", "\x97\xe4", "\x00\x00", "\x00\x00",
+   /* 0x26bc2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26bc7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26bcc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15325,8 +15491,8 @@ static const char from_ucs4[][2] =
+   /* 0x26c30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26c35 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26c3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26c3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26c44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26c40 */ "\x96\xfa", "\x8c\xf6", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26c44 */ "\x00\x00", "\x8d\x4d", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26c49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26c4e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26c53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15345,16 +15511,16 @@ static const char from_ucs4[][2] =
+   /* 0x26c94 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26c99 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26c9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26ca3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26ca4 */ "\x9c\x7a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26ca8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26cad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26cb2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xfb",
+   /* 0x26cb8 */ "\x90\xca", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26cbd */ "\x9c\x5b", "\x00\x00", "\x00\x00", "\x97\x4d", "\x00\x00",
+-  /* 0x26cc1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26cc1 */ "\x00\x00", "\x8e\xd3", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26cc6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26ccb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26cd0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26cd1 */ "\x95\x61", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26cd5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26cda */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26cdf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15379,14 +15545,14 @@ static const char from_ucs4[][2] =
+   /* 0x26d3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26d43 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26d48 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26d4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26d4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\x41", "\x00\x00",
+   /* 0x26d52 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26d57 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26d5c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26d61 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26d66 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26d6b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26d70 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26d70 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xd3", "\x00\x00",
+   /* 0x26d75 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26d7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26d7f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15398,7 +15564,7 @@ static const char from_ucs4[][2] =
+   /* 0x26d9d */ "\x00\x00", "\x00\x00", "\xfc\xfd", "\xfd\xab", "\x91\xbd",
+   /* 0x26da3 */ "\x8f\x4c", "\x96\xc9", "\x8f\x55", "\xfb\xae", "\x95\x6f",
+   /* 0x26da7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26dac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26dac */ "\x00\x00", "\x9c\x7d", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26db1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26db6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26dbb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15414,11 +15580,11 @@ static const char from_ucs4[][2] =
+   /* 0x26ded */ "\x00\x00", "\x00\x00", "\x96\xcb", "\x00\x00", "\x00\x00",
+   /* 0x26df2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26df7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26dfc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26dfc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xce", "\x00\x00",
+   /* 0x26e01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\x56", "\x00\x00",
+-  /* 0x26e06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26e07 */ "\x9c\xe1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26e0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26e10 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26e10 */ "\x00\x00", "\x96\xc4", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26e15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26e1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26e1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15441,11 +15607,11 @@ static const char from_ucs4[][2] =
+   /* 0x26e74 */ "\x00\x00", "\x00\x00", "\x8f\x6b", "\x00\x00", "\x00\x00",
+   /* 0x26e79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26e7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26e84 */ "\x96\xca", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26e88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26e84 */ "\x96\xca", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\xcd",
++  /* 0x26e88 */ "\x00\x00", "\x00\x00", "\x87\x53", "\x00\x00", "\x00\x00",
+   /* 0x26e8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26e92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26e97 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26e97 */ "\x00\x00", "\x8f\x79", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26e9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26ea1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26ea6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15503,7 +15669,7 @@ static const char from_ucs4[][2] =
+   /* 0x26faa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26faf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26fb4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x26fb9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x26fb9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xd6",
+   /* 0x26fbe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26fc3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x26fc8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15532,7 +15698,7 @@ static const char from_ucs4[][2] =
+   /* 0x2703b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27040 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27045 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2704a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2704b */ "\x9c\xa3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2704f */ "\x00\x00", "\x00\x00", "\x92\x4b", "\x98\x4a", "\x00\x00",
+   /* 0x27054 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27059 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15544,7 +15710,7 @@ static const char from_ucs4[][2] =
+   /* 0x27077 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2707c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27081 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27086 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27086 */ "\x00\x00", "\x8f\xa4", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2708b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27090 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27095 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15559,7 +15725,7 @@ static const char from_ucs4[][2] =
+   /* 0x270c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x270c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x270cd */ "\x8f\xa7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x270d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x270d2 */ "\x87\x54", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x270d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x270db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x270e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15570,7 +15736,7 @@ static const char from_ucs4[][2] =
+   /* 0x270f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x270fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27103 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27109 */ "\x98\x45", "\x00\x00", "\x00\x00", "\x90\x46", "\x00\x00",
++  /* 0x27109 */ "\x98\x45", "\x00\x00", "\x00\x00", "\x90\x46", "\x8c\xd1",
+   /* 0x2710d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27112 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27117 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15591,209 +15757,509 @@ static const char from_ucs4[][2] =
+   /* 0x27162 */ "\x00\x00", "\x9f\x48", "\x92\x47", "\x00\x00", "\x00\x00",
+   /* 0x27167 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2716c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27171 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xfb",
+-
+-  /* 0x2721b */ "\x95\x71",
+-
+-  /* 0x272e6 */ "\x9c\xac",
++  /* 0x27171 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xfb", "\x00\x00",
++  /* 0x27176 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2717b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27180 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27185 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2718a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2718f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27194 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27199 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2719e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271cb */ "\x00\x00", "\x9c\xa4", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x271fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27202 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27207 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2720c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27211 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27216 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x71",
++  /* 0x2721b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27220 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27225 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2722a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2722f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27234 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27239 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2723e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27243 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27248 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2724d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27252 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27257 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2725c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27261 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27267 */ "\x87\x45", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2726b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27270 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27275 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2727a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27280 */ "\x9c\xa6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27285 */ "\x9c\xa7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27289 */ "\x00\x00", "\x9c\xaa", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2728e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27293 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27298 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2729d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272b2 */ "\x9e\xd3", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x70",
++  /* 0x272b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272e3 */ "\x00\x00", "\x00\x00", "\x9c\xac", "\x00\x00", "\x00\x00",
++  /* 0x272e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x272fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27301 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27306 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2730b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27310 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27315 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2731a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2731f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27324 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27329 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2732e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27333 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27338 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2733d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27342 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27347 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2734c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27352 */ "\x87\x52", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27356 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2735b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27360 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27365 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2736a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2736f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27374 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27379 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2737e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27383 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27388 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2738d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27392 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27397 */ "\x00\x00", "\x00\x00", "\x8f\xae", "\x00\x00", "\x00\x00",
++  /* 0x2739c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x273fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\x50", "\x00\x00",
++  /* 0x27400 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27405 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2740a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2740f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27414 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27419 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2741e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\x7d", "\x00\x00",
++  /* 0x27423 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27428 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2742d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27432 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27437 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2743c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27441 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27446 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2744b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xb0",
++  /* 0x27450 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27455 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2745a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2745f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27464 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27469 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2746e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27473 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27478 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2747d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27482 */ "\x00\x00", "\x97\xb6", "\x00\x00", "\xa0\xbd",
+ 
+-  /* 0x2739a */ "\x8f\xae",
++  /* 0x27574 */ "\x8a\xdf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27578 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2757d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27582 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27587 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2758c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27591 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27596 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2759b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275a0 */ "\x00\x00", "\x00\x00", "\x9e\xaa", "\x00\x00", "\x00\x00",
++  /* 0x275a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xbd", "\x00\x00",
++  /* 0x275e1 */ "\x00\x00", "\x00\x00", "\x8f\xbf", "\x00\x00", "\x00\x00",
++  /* 0x275e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x275fa */ "\x00\x00", "\x00\x00", "\x93\x69", "\x9b\xa7", "\x00\x00",
++  /* 0x275ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27604 */ "\x00\x00", "\x00\x00", "\xc8\xa4", "\x00\x00", "\x00\x00",
++  /* 0x27609 */ "\x00\x00", "\x00\x00", "\xfe\xea", "\x00\x00", "\x00\x00",
++  /* 0x2760e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27613 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27618 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2761d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27622 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27627 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2762c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27632 */ "\x9b\xe1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27636 */ "\x00\x00", "\x00\x00", "\x8b\x41", "\x00\x00", "\x00\x00",
++  /* 0x2763b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27640 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27645 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2764a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2764f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27655 */ "\x9d\xb6", "\xa0\xeb", "\x9b\xa3", "\x00\x00", "\x00\x00",
++  /* 0x27659 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2765e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27663 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27668 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2766d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27672 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27677 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2767c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27681 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27686 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2768b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27690 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xa1", "\x00\x00",
++  /* 0x27695 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2769a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2769f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x276fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27703 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27708 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2770d */ "\x00\x00", "\x8f\xc8", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27712 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27717 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2771c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27721 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27726 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2772b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27730 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x89\x4c",
++  /* 0x27736 */ "\x98\x60", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2773a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2773f */ "\x00\x00", "\x94\xc7", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27744 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27749 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2774e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27753 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27758 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2775e */ "\x8b\x58", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27762 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27767 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2776c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27771 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27776 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2777b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27780 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xab", "\x95\xaa",
++  /* 0x27785 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2778a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2778f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27794 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27799 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2779e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x277a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x277a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x277ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x277b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x277b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x277bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x277c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x277c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x277cc */ "\x9c\xc3",
+ 
+-  /* 0x27422 */ "\x95\x7d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27426 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2742b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27430 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27435 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2743a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2743f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27444 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27449 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2744e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27453 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27458 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2745d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27462 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27467 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2746c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27471 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27476 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2747b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27480 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xb6", "\x00\x00",
+-  /* 0x27486 */ "\xa0\xbd",
+-
+-  /* 0x275e0 */ "\x8f\xbd", "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xbf",
+-  /* 0x275e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x275e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x275ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x275f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x275f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\x69",
+-  /* 0x275fe */ "\x9b\xa7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27602 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27607 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xea",
+-  /* 0x2760c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27611 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27616 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2761b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27620 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27625 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2762a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2762f */ "\x00\x00", "\x00\x00", "\x9b\xe1", "\x00\x00", "\x00\x00",
+-  /* 0x27634 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\x41",
+-  /* 0x27639 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2763e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27643 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27648 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2764d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27652 */ "\x00\x00", "\x00\x00", "\x9d\xb6", "\xa0\xeb", "\x9b\xa3",
+-  /* 0x27657 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2765c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27661 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27666 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2766b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27670 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27675 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2767a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2767f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27684 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27689 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2768e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27694 */ "\x8b\xa1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27698 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2769d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x276fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27701 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27706 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2770b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xc8", "\x00\x00",
+-  /* 0x27710 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27715 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2771a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2771f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27724 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27729 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2772e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27733 */ "\x00\x00", "\x89\x4c", "\x98\x60", "\x00\x00", "\x00\x00",
+-  /* 0x27738 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2773d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x94\xc7", "\x00\x00",
+-  /* 0x27742 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27747 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2774c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27751 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27756 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2775b */ "\x00\x00", "\x00\x00", "\x8b\x58", "\x00\x00", "\x00\x00",
+-  /* 0x27760 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27765 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2776a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2776f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27774 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27779 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2777e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27784 */ "\x95\xab", "\x95\xaa",
+-
+-  /* 0x27870 */ "\x93\xd6",
+-
+-  /* 0x27924 */ "\x8f\xd1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27928 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2792d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27932 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27937 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2793c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27941 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27946 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2794b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27950 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27955 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2795a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2795f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27964 */ "\x00\x00", "\x00\x00", "\x99\xd5",
+-
+-  /* 0x27a0e */ "\xfb\xc8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a35 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a4e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a59 */ "\x8f\xd7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a5d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a62 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a6c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a71 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a76 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a7b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a80 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a94 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a99 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27a9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27aa3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27aa8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27aad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27ab2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27ab7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27abd */ "\x8f\xd2", "\x90\x64", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27ac1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27ac6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27acb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27ad0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27ad5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27ada */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27adf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27ae4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27ae9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27aee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27af4 */ "\x98\xb6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27af8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27afd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b0c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b11 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b16 */ "\x00\x00", "\x98\xbd", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b20 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b2a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27b34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xdc", "\xfe\xf6",
+-  /* 0x27b3a */ "\x8f\xd9",
++  /* 0x27858 */ "\x9c\xc4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2785c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27861 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27866 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2786b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xd6",
++  /* 0x27870 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27875 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2787a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2787f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27884 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27889 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2788e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27893 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27898 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xac",
++  /* 0x2789d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278b2 */ "\x8b\xe6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278c5 */ "\x00\x00", "\x00\x00", "\x8a\x71", "\x00\x00", "\x00\x00",
++  /* 0x278ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x278fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27901 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27906 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2790b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27910 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27915 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2791a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2791f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xd1",
++  /* 0x27924 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27929 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2792e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27933 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27938 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2793d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27942 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27947 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2794c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27951 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27956 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2795b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27960 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27965 */ "\x00\x00", "\x99\xd5", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2796a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2796f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27974 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2797a */ "\x90\xf4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2797e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27983 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27988 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2798d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27992 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27997 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2799c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xa3", "\x00\x00",
++  /* 0x279a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xce",
++  /* 0x279dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x279fb */ "\x00\x00", "\x9c\xd4", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xd5",
++  /* 0x27a0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\xc8", "\x00\x00",
++  /* 0x27a0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a1e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a28 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a3c */ "\x00\x00", "\x9d\xb3", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a4b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a50 */ "\x00\x00", "\x00\x00", "\xfc\x70", "\x00\x00", "\x00\x00",
++  /* 0x27a55 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xd7", "\x00\x00",
++  /* 0x27a5a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a5f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a64 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a69 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a79 */ "\x9b\x73", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a82 */ "\x00\x00", "\xfa\x5b", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27a9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27aa0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27aa5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27aaa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27aaf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ab4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ab9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xd2", "\x90\x64",
++  /* 0x27abe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ac3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ac8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27acd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ad2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ad7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27adc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ae1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ae6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27aeb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27af0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xb6", "\x00\x00",
++  /* 0x27af5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27afa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27aff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b04 */ "\x00\x00", "\x96\x68", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b09 */ "\x00\x00", "\x9c\xd6", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xbd",
++  /* 0x27b18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b22 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b27 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b36 */ "\x00\x00", "\x8f\xdc", "\xfe\xf6", "\x8f\xd9", "\x00\x00",
++  /* 0x27b3b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b40 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b45 */ "\x00\x00", "\x00\x00", "\x95\x41", "\x00\x00", "\x00\x00",
++  /* 0x27b4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b4f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27b63 */ "\x00\x00", "\x87\xca",
+ 
++  /* 0x27bef */ "\x87\x6c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27bf4 */ "\x97\xf3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27bf8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27bfd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27c02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27c07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27c0c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27c12 */ "\x9b\xf8",
+-
++  /* 0x27c12 */ "\x9b\xf8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c16 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c1b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c20 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c2a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c2f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c39 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c3e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c43 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c48 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c4d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c52 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c57 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c5c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c61 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c66 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c6c */ "\x87\x5a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c70 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c75 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c7a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c7f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c84 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c89 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c8e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c93 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c98 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27c9d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ca2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ca7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x48",
++  /* 0x27cb1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cb6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cbb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cc0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x4a",
++  /* 0x27cc5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ccf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cd4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cd9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cde */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ce3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ce8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ced */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cf2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cf7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27cfc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d10 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d15 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d24 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d29 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d2f */ "\x9e\x6c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d33 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d38 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15805,13 +16271,13 @@ static const char from_ucs4[][2] =
+   /* 0x27d56 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d5b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27d65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d66 */ "\x9c\xd7", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\x6e", "\x00\x00",
+   /* 0x27d74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x27d83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27d84 */ "\x8a\x40", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d8d */ "\x00\x00", "\x8f\xef", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27d92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15853,121 +16319,191 @@ static const char from_ucs4[][2] =
+   /* 0x27e46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x27e4b */ "\x00\x00", "\x98\x6a", "\x00\x00", "\x97\xcf",
+ 
+-  /* 0x28002 */ "\x90\x41", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28006 */ "\x00\x00", "\x00\x00", "\x9c\xdb",
++  /* 0x27f2e */ "\x9e\xe5",
+ 
+-  /* 0x280bd */ "\x8b\x62", "\x8a\x4e", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x66",
+-  /* 0x280e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280f4 */ "\x9c\xfb", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x280fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28102 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28107 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2810c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28111 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28116 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2811b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28120 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28125 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2812a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xfc", "\x00\x00",
+-  /* 0x2812f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28134 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28139 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2813e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28143 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28148 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2814d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28152 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28157 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2815c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28161 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28166 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2816b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xe5",
+-
+-  /* 0x28207 */ "\x8b\x73", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2820b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28210 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28215 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2821a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2821f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28224 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28229 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2822e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28233 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28238 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2823d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28242 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28247 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2824c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28251 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x61",
+-  /* 0x28256 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2825b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28260 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28265 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2826a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2826f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28274 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28279 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2827e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28283 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28288 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2828d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28292 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28297 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2829c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xa2", "\x00\x00",
+-  /* 0x282ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xf2",
+-  /* 0x282e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x282fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28300 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28305 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2830a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2830f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28314 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28319 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2831e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28323 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28328 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2832d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28332 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28337 */ "\x00\x00", "\x00\x00", "\x8e\xca", "\x00\x00", "\x00\x00",
+-  /* 0x2833c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28341 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28346 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2834b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28350 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28355 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2835a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2835f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28365 */ "\x90\x4e", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28369 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2836e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28373 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28378 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9f\xf5",
++  /* 0x27ff9 */ "\x9e\x7c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x27ffd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x41",
++  /* 0x28002 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28007 */ "\x00\x00", "\x9c\xdb", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2800c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28011 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28016 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2801b */ "\x00\x00", "\x00\x00", "\x94\x41", "\x00\x00", "\x00\x00",
++  /* 0x28020 */ "\x00\x00", "\x00\x00", "\x9c\xe6", "\x9d\xb0", "\x00\x00",
++  /* 0x28025 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2802a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2802f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28034 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28039 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2803e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28043 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xea",
++  /* 0x28048 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2804d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28052 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28057 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2805c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28061 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28066 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2806b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28070 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28075 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2807a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2807f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xed", "\x00\x00",
++  /* 0x28084 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28089 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2808e */ "\x00\x00", "\x9c\xfa", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28093 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28098 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2809d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280bb */ "\x00\x00", "\x8b\x62", "\x8a\x4e", "\x00\x00", "\x00\x00",
++  /* 0x280c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xca",
++  /* 0x280e9 */ "\x8a\x66", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280f2 */ "\x00\x00", "\x9c\xfb", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x280fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28101 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28106 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2810b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28110 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28115 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2811a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2811f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28124 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28129 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xfc",
++  /* 0x2812e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28133 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28138 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2813d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28142 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28147 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2814c */ "\x00\x00", "\x00\x00", "\x9c\xfe", "\x00\x00", "\x00\x00",
++  /* 0x28151 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28156 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2815b */ "\x00\x00", "\x8a\x53", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28160 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28165 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2816a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xe5",
++  /* 0x2816f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28174 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28179 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2817e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28183 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28189 */ "\x9d\x40", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2818d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28192 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28197 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2819c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x41", "\x00\x00",
++  /* 0x281b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281ba */ "\x00\x00", "\x90\x45", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x281fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28200 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28205 */ "\x00\x00", "\x8b\x73", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2820a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2820f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28214 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xca", "\x00\x00",
++  /* 0x2821a */ "\x9d\x42", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2821e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28223 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28228 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2822d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28232 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28237 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2823c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28241 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28246 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2824b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28250 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28256 */ "\x8a\x61", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2825a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2825f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28264 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28269 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2826e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28273 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28278 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xae", "\x00\x00",
++  /* 0x2827d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28282 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28287 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2828c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28291 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28296 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xd2",
++  /* 0x2829b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xa2",
++  /* 0x282cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282e2 */ "\x9d\xf2", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x282ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28304 */ "\x00\x00", "\x9d\x43", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28309 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2830e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28313 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xdf",
++  /* 0x28318 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2831d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28322 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28327 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2832c */ "\x00\x00", "\x00\x00", "\x9d\x44", "\x00\x00", "\x00\x00",
++  /* 0x28331 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28336 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xca", "\x00\x00",
++  /* 0x2833b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28340 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28345 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2834a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2834f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28354 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28359 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2835e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28363 */ "\x00\x00", "\x90\x4e", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28368 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xb3",
++  /* 0x2836d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28372 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28377 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2837d */ "\x9f\xf5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28381 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28386 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x45",
+ 
+   /* 0x28412 */ "\x90\x4f", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x28416 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -15986,73 +16522,143 @@ static const char from_ucs4[][2] =
+   /* 0x28457 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2845c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x28461 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28466 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2846b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28470 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28466 */ "\x00\x00", "\x9d\x47", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2846c */ "\x89\xca", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28470 */ "\x00\x00", "\x00\x00", "\x9c\xb5", "\x00\x00", "\x00\x00",
+   /* 0x28475 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2847a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2847f */ "\x00\x00", "\x00\x00", "\xfb\xfe",
+-
+-  /* 0x2853c */ "\x90\x63", "\x90\x57", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28540 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28545 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2854a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2854f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28554 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28559 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2855e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28563 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28568 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x66",
+-
+-  /* 0x285f4 */ "\xfc\xe5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x285f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x285fd */ "\x00\x00", "\x00\x00", "\x91\x62", "\x00\x00", "\x00\x00",
+-  /* 0x28602 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28607 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x67", "\x00\x00",
+-  /* 0x2860c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28611 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28616 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2861b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28620 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xa1",
+-  /* 0x28625 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2862a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2862f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28634 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28639 */ "\x00\x00", "\x8f\xa2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2863e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28643 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28648 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2864d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28652 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28657 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2865c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28661 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28666 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2866b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28670 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28675 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2867a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2867f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28684 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28689 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2868e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28693 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28698 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2869d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286a7 */ "\x00\x00", "\x00\x00", "\x9d\x48", "\xfa\xd3", "\x00\x00",
+-  /* 0x286ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xb9", "\x00\x00",
+-  /* 0x286d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x286e3 */ "\x00\x00", "\x00\x00", "\x90\x6b",
++  /* 0x2847f */ "\x00\x00", "\x00\x00", "\xfb\xfe", "\x00\x00", "\x00\x00",
++  /* 0x28484 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28489 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2848e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28493 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28498 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2849d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x284fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x5e",
++  /* 0x28501 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28506 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2850b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28510 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28515 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2851a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2851f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28524 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28529 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2852e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28533 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28538 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x63", "\x90\x57",
++  /* 0x2853d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28542 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28547 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2854c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28551 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28556 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2855b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28560 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28565 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2856a */ "\x00\x00", "\x90\x66", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2856f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28574 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28579 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2857e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28583 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28588 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2858d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28592 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28597 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2859c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285e8 */ "\x9b\xc0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285f1 */ "\x00\x00", "\x00\x00", "\xfc\xe5", "\x00\x00", "\x00\x00",
++  /* 0x285f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x285fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x62",
++  /* 0x28600 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28605 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2860b */ "\x90\x67", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2860f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28614 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28619 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2861e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28623 */ "\x00\x00", "\x8f\xa1", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28628 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2862d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28632 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28637 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xa2", "\x00\x00",
++  /* 0x2863c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28641 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28646 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2864b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28650 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28655 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2865a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2865f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28664 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28669 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2866e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28673 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28678 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2867d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28682 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28687 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2868c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28691 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28696 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2869b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x48",
++  /* 0x286ab */ "\xfa\xd3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286af */ "\x00\x00", "\x00\x00", "\x8d\x4f", "\x00\x00", "\x00\x00",
++  /* 0x286b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286b9 */ "\x00\x00", "\x00\x00", "\x90\x5d", "\x00\x00", "\x00\x00",
++  /* 0x286be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286d8 */ "\x90\xb9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x6b",
++  /* 0x286e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x286ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28704 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28709 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2870f */ "\x8c\x5c", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x69",
+ 
+   /* 0x28804 */ "\xfe\x57", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x28808 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -16063,574 +16669,941 @@ static const char from_ucs4[][2] =
+   /* 0x28821 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x28826 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x55",
+ 
+-  /* 0x28933 */ "\x90\x73", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28937 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2893c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28941 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28946 */ "\x00\x00", "\x9b\xef", "\x9c\xf0", "\x00\x00", "\x00\x00",
+-  /* 0x2894b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28950 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28955 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2895a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2895f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28964 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28969 */ "\x00\x00", "\x00\x00", "\x91\xe0", "\x00\x00", "\x00\x00",
+-  /* 0x2896e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28973 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28978 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2897e */ "\x91\xd8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28982 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28987 */ "\x00\x00", "\x96\x46", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2898c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28991 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28996 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2899b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289a5 */ "\x00\x00", "\x00\x00", "\x93\x60", "\x00\x00", "\xfa\x53",
+-  /* 0x289ab */ "\x9c\xd3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289b9 */ "\x00\x00", "\x00\x00", "\xfb\x40", "\x00\x00", "\x00\x00",
+-  /* 0x289be */ "\x00\x00", "\x8d\xe2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x94\x42",
+-  /* 0x289dc */ "\x00\x00", "\x90\x56", "\x00\x00", "\x00\x00", "\x98\x65",
+-  /* 0x289e1 */ "\x00\x00", "\x00\x00", "\xfa\x4a", "\x00\x00", "\x00\x00",
+-  /* 0x289e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xaf", "\x97\x5a",
+-  /* 0x289fb */ "\x93\x49", "\x97\x47", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x289ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a04 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a0f */ "\xa0\xf4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a13 */ "\x00\x00", "\x00\x00", "\x97\x78", "\x00\x00", "\x00\x00",
+-  /* 0x28a18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a22 */ "\x00\x00", "\x00\x00", "\x8f\xcf", "\x00\x00", "\x00\x00",
+-  /* 0x28a27 */ "\x00\x00", "\xfc\x60", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a36 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a3b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a40 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xdc", "\x96\x61",
+-  /* 0x28a46 */ "\x92\xec", "\x93\x5d", "\x8e\xde", "\x96\xfe", "\xfd\x4f",
+-  /* 0x28a4b */ "\x95\xde", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a4f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x98\xb0",
+-  /* 0x28a5a */ "\xa0\x40", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a63 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a68 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a6d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a72 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a77 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xbd",
+-  /* 0x28a82 */ "\x97\x7d", "\x97\xf5", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xac",
+-  /* 0x28a9b */ "\xfa\xda", "\x92\xc2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28a9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28aa4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28aa9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28aae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ab3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ab8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28abd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ac2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x7b", "\x00\x00",
+-  /* 0x28ac7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xfe", "\x94\x7b",
+-  /* 0x28acc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ad1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ad6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28adb */ "\x00\x00", "\x00\x00", "\xfa\xbe", "\xfd\x43", "\x90\xc6",
+-  /* 0x28ae1 */ "\x90\xa4", "\x90\xa8", "\x94\xa9", "\x00\x00", "\x90\xa9",
+-  /* 0x28ae5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28aea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28aef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28af4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28af9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28afe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b03 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b08 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x7d", "\x00\x00",
+-  /* 0x28b0d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfd\xba",
+-  /* 0x28b22 */ "\x93\xc4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xed",
+-  /* 0x28b2c */ "\x9d\xab", "\xa0\xe3", "\x00\x00", "\x96\x48", "\x00\x00",
+-  /* 0x28b30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b35 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b49 */ "\x00\x00", "\x00\x00", "\x8a\xa9", "\x00\x00", "\x9b\xc5",
+-  /* 0x28b4e */ "\x00\x00", "\x96\x5d", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b58 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b5d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b63 */ "\x97\x5f", "\x96\x5f", "\x96\x6e", "\xfb\x5d", "\x00\x00",
+-  /* 0x28b67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xb1",
+-  /* 0x28b6c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b71 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b76 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b7b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b80 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xa3",
+-  /* 0x28b8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28b94 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\xb2",
+-  /* 0x28b99 */ "\x00\x00", "\x00\x00", "\x95\xae", "\xfc\xa3", "\x00\x00",
+-  /* 0x28b9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ba3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ba8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bb2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bb7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bbc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bc2 */ "\xa0\xa2", "\x00\x00", "\x00\x00", "\x96\x55", "\x00\x00",
+-  /* 0x28bc6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bcb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bd0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bd5 */ "\x00\x00", "\x93\x41", "\x00\x00", "\x95\xad", "\x91\xd5",
+-  /* 0x28bda */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bdf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28be4 */ "\x00\x00", "\x00\x00", "\x97\x7a", "\xfd\xfc", "\x8e\x47",
+-  /* 0x28bea */ "\x93\xfd", "\x90\xa5", "\x90\xac", "\x00\x00", "\x00\x00",
+-  /* 0x28bee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bf3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bf8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28bfd */ "\x00\x00", "\x90\xae", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c02 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c07 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c0c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c11 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c16 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c1b */ "\x00\x00", "\x95\xe2", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c20 */ "\x00\x00", "\x00\x00", "\x94\x66", "\x00\x00", "\x00\x00",
+-  /* 0x28c25 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c2b */ "\x91\xb8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c30 */ "\x9c\xec", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28c34 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xad",
++  /* 0x2890d */ "\x87\xa6", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28911 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28916 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2891b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28920 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28925 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2892a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2892f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x73", "\x00\x00",
++  /* 0x28934 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28939 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2893e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28943 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9b\xef",
++  /* 0x28949 */ "\x9c\xf0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2894d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28952 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x4b", "\x00\x00",
++  /* 0x28957 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2895c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28961 */ "\x00\x00", "\x00\x00", "\xfe\xd9", "\x00\x00", "\x00\x00",
++  /* 0x28966 */ "\x00\x00", "\xfe\xda", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2896c */ "\x91\xe0", "\x8d\x43", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28970 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28975 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2897a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xd8", "\x00\x00",
++  /* 0x2897f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28984 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\x46",
++  /* 0x28989 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2898e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28993 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28998 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2899d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289a8 */ "\x93\x60", "\x00\x00", "\xfa\x53", "\x9c\xd3", "\x00\x00",
++  /* 0x289ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289b6 */ "\x00\x00", "\x9d\x4e", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289bc */ "\xfb\x40", "\x00\x00", "\x00\x00", "\x00\x00", "\x8d\xe2",
++  /* 0x289c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289d9 */ "\x00\x00", "\x00\x00", "\x94\x42", "\x00\x00", "\x90\x56",
++  /* 0x289de */ "\x00\x00", "\x00\x00", "\x98\x65", "\x00\x00", "\x8c\x6c",
++  /* 0x289e4 */ "\xfa\x4a", "\x00\x00", "\x00\x00", "\x9d\x50", "\x9d\x52",
++  /* 0x289e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x289f7 */ "\x00\x00", "\x95\xaf", "\x97\x5a", "\x93\x49", "\x97\x47",
++  /* 0x289fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a01 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a06 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a0b */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\xf4", "\x00\x00",
++  /* 0x28a10 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a16 */ "\x97\x78", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a1a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a1f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a25 */ "\x8f\xcf", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x60",
++  /* 0x28a29 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a2e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\x4e", "\x00\x00",
++  /* 0x28a33 */ "\x00\x00", "\x00\x00", "\xfc\x56", "\x00\x00", "\x00\x00",
++  /* 0x28a38 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a3d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a42 */ "\x00\x00", "\x91\xdc", "\x96\x61", "\x92\xec", "\x93\x5d",
++  /* 0x28a48 */ "\x8e\xde", "\x96\xfe", "\xfd\x4f", "\x95\xde", "\x00\x00",
++  /* 0x28a4c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a51 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a56 */ "\x00\x00", "\x00\x00", "\x98\xb0", "\xa0\x40", "\x00\x00",
++  /* 0x28a5b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a79 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a7e */ "\x00\x00", "\x00\x00", "\x97\xbd", "\x97\x7d", "\x97\xf5",
++  /* 0x28a83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28a97 */ "\x00\x00", "\x00\x00", "\x9b\xac", "\xfa\xda", "\x92\xc2",
++  /* 0x28a9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28aa1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28aa6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28aab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ab0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ab5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28aba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ac0 */ "\x97\xb1", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ac4 */ "\x00\x00", "\x90\x7b", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ac9 */ "\x00\x00", "\x93\xfe", "\x94\x7b", "\x00\x00", "\x97\x77",
++  /* 0x28ace */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ad3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ad8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ade */ "\xfa\xbe", "\xfd\x43", "\x90\xc6", "\x90\xa4", "\x90\xa8",
++  /* 0x28ae3 */ "\x94\xa9", "\x00\x00", "\x90\xa9", "\x00\x00", "\x00\x00",
++  /* 0x28ae7 */ "\x00\x00", "\x00\x00", "\x8c\x65", "\x00\x00", "\x00\x00",
++  /* 0x28aec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28af1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28af6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28afc */ "\x95\xe0", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b0a */ "\x00\x00", "\x90\x7d", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x92\x65", "\x00\x00",
++  /* 0x28b14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b1e */ "\x00\x00", "\x00\x00", "\xfd\xba", "\x93\xc4", "\x00\x00",
++  /* 0x28b23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b28 */ "\x00\x00", "\x00\x00", "\xfe\xed", "\x9d\xab", "\xa0\xe3",
++  /* 0x28b2d */ "\x00\x00", "\x96\x48", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x53",
++  /* 0x28b46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b4c */ "\x8a\xa9", "\x00\x00", "\x9b\xc5", "\x00\x00", "\x96\x5d",
++  /* 0x28b50 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b55 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b5a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b5f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\x5f", "\x96\x5f",
++  /* 0x28b65 */ "\x96\x6e", "\xfb\x5d", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b69 */ "\x00\x00", "\x00\x00", "\x9d\xb1", "\x00\x00", "\x00\x00",
++  /* 0x28b6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b8c */ "\x00\x00", "\x00\x00", "\xfe\xa3", "\x00\x00", "\x00\x00",
++  /* 0x28b91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28b96 */ "\x00\x00", "\x00\x00", "\x9d\xb2", "\x00\x00", "\x00\x00",
++  /* 0x28b9c */ "\x95\xae", "\xfc\xa3", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ba0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ba5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28baa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28baf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28bb4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x69",
++  /* 0x28bb9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28bbe */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\xa2", "\x00\x00",
++  /* 0x28bc3 */ "\x00\x00", "\x96\x55", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28bc8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28bcd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28bd2 */ "\x00\x00", "\x9d\x54", "\x00\x00", "\x00\x00", "\x93\x41",
++  /* 0x28bd7 */ "\x00\x00", "\x95\xad", "\x91\xd5", "\x00\x00", "\x00\x00",
++  /* 0x28bdc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28be1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28be7 */ "\x97\x7a", "\xfd\xfc", "\x8e\x47", "\x93\xfd", "\x90\xa5",
++  /* 0x28bec */ "\x90\xac", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28bf0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xac",
++  /* 0x28bf5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28bfa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xae",
++  /* 0x28bff */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xa5", "\x00\x00",
++  /* 0x28c04 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x56",
++  /* 0x28c09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28c0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28c13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28c18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xe3", "\x95\xe2",
++  /* 0x28c1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28c23 */ "\x94\x66", "\x00\x00", "\x00\x00", "\x96\x47", "\x00\x00",
++  /* 0x28c27 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xb8", "\x00\x00",
++  /* 0x28c2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xec", "\x00\x00",
++  /* 0x28c31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28c36 */ "\x00\x00", "\x00\x00", "\x90\xad", "\x00\x00", "\x95\xe3",
+ 
+-  /* 0x28ccd */ "\x8a\xe3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28cd1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28cd6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28cdb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ce0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ce5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28cea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28cef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28cf4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28cf9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28cfe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d03 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d08 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d0d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28d30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xea",
++  /* 0x28cca */ "\x8b\x4f", "\x00\x00", "\x00\x00", "\x8a\xe3", "\x00\x00",
++  /* 0x28cce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\x4d", "\x00\x00",
++  /* 0x28cd3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28cd8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28cdd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ce2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ce7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28cec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28cf1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28cf6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28cfb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d05 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d1e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d28 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d32 */ "\x00\x00", "\x95\xea", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d4b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d50 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d55 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d5a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d5f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d64 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d69 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28d96 */ "\x00\x00", "\x00\x00", "\x8b\x4e", "\x00\x00", "\x00\x00",
++  /* 0x28d9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28da0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28da5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28daa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28daf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28db4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xc1",
++  /* 0x28db9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28dbe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28dc3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28dc8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28dcd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28dd2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28dd7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ddc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28de1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28de6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28deb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28df0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28df5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28dfa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28dff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e04 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e0f */ "\x8b\xed", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e22 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e27 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xd9",
++  /* 0x28e36 */ "\x00\x00", "\x00\x00", "\xa0\xa4", "\x00\x00", "\x00\x00",
++  /* 0x28e3b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e40 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e45 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e4f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e63 */ "\x00\x00", "\x95\xf5", "\x95\xf4", "\x00\x00", "\x00\x00",
++  /* 0x28e68 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e6d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e72 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e77 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e95 */ "\x00\x00", "\x9f\xb3", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28e9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ea4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ea9 */ "\x00\x00", "\x00\x00", "\xfe\xaf", "\x00\x00", "\x00\x00",
++  /* 0x28eae */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x72", "\x92\x7a",
++  /* 0x28eb3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28eb8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ebd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ec2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ec7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ecc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ed1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ed6 */ "\x00\x00", "\x00\x00", "\xfe\xac", "\x00\x00", "\x00\x00",
++  /* 0x28edb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ee0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x28ee5 */ "\x00\x00", "\x95\xf3",
+ 
+-  /* 0x28e36 */ "\x91\xd9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e4e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e53 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e58 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e5d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e62 */ "\x00\x00", "\x00\x00", "\x95\xf5", "\x95\xf4", "\x00\x00",
+-  /* 0x28e67 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e6c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e71 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e76 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e7b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e80 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e85 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e8a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e8f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e94 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e99 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28e9e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ea3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ea8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ead */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\x72",
+-  /* 0x28eb3 */ "\x92\x7a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28eb7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ebc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ec1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ec6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ecb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ed0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x28ed5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xac",
++  /* 0x28fc5 */ "\x9d\x58",
+ 
+-  /* 0x2908b */ "\x91\xc5", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2908f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29094 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29099 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2909e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290ad */ "\x00\x00", "\x90\xcd", "\x95\xfe", "\x91\x59", "\x00\x00",
+-  /* 0x290b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x97\xcc",
+-  /* 0x290e5 */ "\x90\xce", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x290fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29102 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29107 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2910d */ "\xfe\xfd", "\x00\x00", "\x00\x00", "\x9d\x5b",
++  /* 0x29079 */ "\x8d\x46", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2907d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29082 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29088 */ "\x93\x72", "\x00\x00", "\x00\x00", "\x91\xc5", "\x00\x00",
++  /* 0x2908c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29091 */ "\x00\x00", "\x96\x42", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29096 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2909b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xcd",
++  /* 0x290b0 */ "\x95\xfe", "\x91\x59", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290be */ "\x00\x00", "\x9c\x65", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290e1 */ "\x00\x00", "\x00\x00", "\x97\xcc", "\x90\xce", "\x00\x00",
++  /* 0x290e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290ec */ "\x9d\x59", "\xfc\xf5", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x290ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29104 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29109 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfe\xfd", "\x00\x00",
++  /* 0x2910e */ "\x00\x00", "\x9d\x5b", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29113 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29118 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2911d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29122 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29127 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2912c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29131 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29136 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2913c */ "\x9d\x5c", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29140 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29145 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2914a */ "\x00\x00", "\x00\x00", "\x93\x7e", "\x00\x00", "\x00\x00",
++  /* 0x2914f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29154 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29159 */ "\x00\x00", "\x98\xac", "\x00\x00", "\x00\x00", "\x9d\x5e",
++  /* 0x2915e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29163 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29168 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2916d */ "\x00\x00", "\x00\x00", "\xfd\xd0", "\x00\x00", "\x00\x00",
++  /* 0x29172 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29177 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2917c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29181 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29186 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2918b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29190 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29195 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2919a */ "\x00\x00", "\xfd\x60", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2919f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xcf", "\x00\x00",
++  /* 0x291a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xdd", "\x00\x00",
++  /* 0x291d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x291eb */ "\x90\xe0",
+ 
+-  /* 0x2919c */ "\xfd\x60", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291a5 */ "\x00\x00", "\x00\x00", "\x9c\xcf", "\x00\x00", "\x00\x00",
+-  /* 0x291aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x291e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\xe0",
+-
+-  /* 0x2941d */ "\x90\xf3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2941d */ "\x90\xf3", "\x00\x00", "\x00\x00", "\x98\xb1", "\x00\x00",
+   /* 0x29421 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29426 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2942b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29430 */ "\x00\x00", "\x00\x00", "\x90\xf0", "\x00\x00", "\x00\x00",
+   /* 0x29435 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2943a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2943a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xbd",
+   /* 0x2943f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29444 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x95\xb7",
+ 
+-  /* 0x294d9 */ "\x8e\x4b", "\x96\x58",
++  /* 0x294d0 */ "\x9f\x46", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x294d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\x4b",
++  /* 0x294da */ "\x96\x58", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x294de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x294e3 */ "\x00\x00", "\x8a\x4c", "\x00\x00", "\x9d\x63",
+ 
+   /* 0x2959e */ "\x9e\xcf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x295a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x295a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x295ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x295ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x65", "\x00\x00",
+   /* 0x295b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x295b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x295b6 */ "\x00\x00", "\x9d\x66", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x295bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x295c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x295c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x295ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x295cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x295d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x295d4 */ "\x00\x00", "\x00\x00", "\x96\x5a", "\x00\x00", "\x00\x00",
+   /* 0x295d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x295de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x295e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x295e9 */ "\x9d\x64",
++  /* 0x295e9 */ "\x9d\x64", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x295ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x295f2 */ "\x00\x00", "\x8a\x6c",
++
++  /* 0x29720 */ "\x8a\xd9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29724 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29729 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2972e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x67",
+ 
+-  /* 0x29857 */ "\x91\x50", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2985b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29860 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29865 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2986a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2986f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29874 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29879 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2987e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29883 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29888 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2988d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29892 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29897 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2989c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298a1 */ "\x00\x00", "\x00\x00", "\x9c\xc1", "\x00\x00", "\x00\x00",
+-  /* 0x298a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298e7 */ "\x00\x00", "\x00\x00", "\x93\xa7", "\x00\x00", "\x00\x00",
+-  /* 0x298ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x298fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29900 */ "\x00\x00", "\x00\x00", "\xa0\xef", "\x00\x00", "\x91\x51",
+-  /* 0x29905 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2990a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2990f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29914 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29919 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2991e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29923 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29928 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2992d */ "\x00\x00", "\x96\xc1", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29932 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29937 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2993c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29941 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29946 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2994b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29950 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29955 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2995a */ "\x00\x00", "\x00\x00", "\xfc\xa4", "\x00\x00", "\x00\x00",
+-  /* 0x2995f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29964 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2996a */ "\x9d\x6a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2996e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29973 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29978 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2997d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29982 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29987 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2998c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29991 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29996 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2999b */ "\x00\x00", "\x92\x4e",
++  /* 0x297d4 */ "\x8a\x70", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x297d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x297dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x297e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x297e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x297ec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x297f1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x297f6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x297fb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29800 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29805 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2980a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29810 */ "\x8b\xf3", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29814 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29819 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2981e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29823 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29828 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2982d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29832 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29837 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2983c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29841 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29846 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2984b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29850 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29855 */ "\x00\x00", "\x91\x50", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2985a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2985f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29864 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29869 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2986e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29873 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29878 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2987d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29882 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29887 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2988c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29891 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29896 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2989b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xc1", "\x00\x00",
++  /* 0x298a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298aa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298b4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x68", "\x00\x00",
++  /* 0x298d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298dc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xa7", "\x00\x00",
++  /* 0x298eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298f1 */ "\x96\x74", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8c\xfd",
++  /* 0x298fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x298ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\xef", "\x00\x00",
++  /* 0x29905 */ "\x91\x51", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29909 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2990e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29913 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29918 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2991d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29922 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29927 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2992c */ "\x00\x00", "\x00\x00", "\x96\xc1", "\x00\x00", "\x00\x00",
++  /* 0x29931 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29936 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2993b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29940 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x87\x77",
++  /* 0x29945 */ "\x00\x00", "\x8c\x64", "\x96\x76", "\x9d\x69", "\x00\x00",
++  /* 0x2994a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2994f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29954 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29959 */ "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\xa4", "\x00\x00",
++  /* 0x2995e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29963 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29968 */ "\x00\x00", "\x9d\x6a", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2996d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29972 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29977 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2997c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29981 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29986 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2998b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29990 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29995 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2999a */ "\x00\x00", "\x00\x00", "\x92\x4e", "\x00\x00", "\x00\x00",
++  /* 0x2999f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299b3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299b8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299c3 */ "\x9d\x6b", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299c7 */ "\x00\x00", "\x9b\xc1", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x299fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a03 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a08 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a0d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a21 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a26 */ "\x00\x00", "\x9d\x6c", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a30 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a35 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a3a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a3f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a44 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29a49 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\x65",
+ 
+   /* 0x29b05 */ "\x91\x5d", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29b09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x6d",
+ 
+   /* 0x29bd5 */ "\x91\x5a",
+ 
+-  /* 0x29cad */ "\x9c\xc0",
++  /* 0x29c73 */ "\x8c\x42", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29c77 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29c7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29c81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29c86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29c8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29c90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29c95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29c9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29c9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ca4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ca9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xc0",
+ 
+   /* 0x29d3e */ "\x91\x6a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29d42 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29d47 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29d4c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29d51 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29d56 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29d56 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9d\x6e", "\x00\x00",
+   /* 0x29d5b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29d60 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29d65 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29d6a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29d6f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x29d74 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29d79 */ "\x00\x00", "\x00\x00", "\x9e\xa6",
+-
+-  /* 0x29e2d */ "\x96\xb4", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e31 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e36 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e3b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e40 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e45 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e4a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e4f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e54 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e59 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e5e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e63 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x72",
+-  /* 0x29e68 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e6d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e72 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e77 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e7c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e81 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e86 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e8b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e90 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e95 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e9a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29e9f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ea4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ea9 */ "\x00\x00", "\x00\x00", "\x9e\xc8", "\x00\x00", "\x00\x00",
+-  /* 0x29eae */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29eb3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29eb8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ebd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ec3 */ "\x8b\x55", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ec7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ecc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ed1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ed6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29edb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ee0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ee5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29eea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29eef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ef4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29ef9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29efe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29f03 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29f08 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29f0d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29f12 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29f17 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29f1c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29f21 */ "\x00\x00", "\x9d\x72", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29f26 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x29f2b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xcc",
+-
+-  /* 0x29fb7 */ "\x91\x74",
+-
+-  /* 0x2a0e1 */ "\x91\x77", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a0e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a0ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a0ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xc0", "\x00\x00",
+-  /* 0x2a0f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8f\xb1", "\x00\x00",
+-  /* 0x2a0f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xb7",
+-  /* 0x2a0fe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a103 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a108 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a10d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a112 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a117 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a11c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a121 */ "\x00\x00", "\x91\x78", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a126 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a12b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a130 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a135 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a13a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a13f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a144 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a149 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a14e */ "\x00\x00", "\xfb\x77", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a153 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a158 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a15d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a162 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a167 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a16c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a171 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a176 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a17b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a180 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a185 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a18a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a18f */ "\x00\x00", "\x00\x00", "\x91\x75", "\x91\xa3", "\x00\x00",
+-  /* 0x2a194 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a199 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a19e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1cb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1d0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1d5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1da */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x79",
+-  /* 0x2a1df */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1e4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1e9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1ee */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1f3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1f8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a1fd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a202 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a207 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a20c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a211 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a216 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a21b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xa4",
+-  /* 0x2a220 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a225 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a22a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a22f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xa6", "\x00\x00",
+-  /* 0x2a234 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a239 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a23e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a243 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a248 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a24d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a252 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a257 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a25c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a261 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a266 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a26b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a270 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a275 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a27a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a27f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a284 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a289 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a28e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a293 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a298 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a29d */ "\x00\x00", "\x90\x52", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2b2 */ "\xa0\x45", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2a2df */ "\x9c\xdd",
++  /* 0x29d79 */ "\x00\x00", "\x00\x00", "\x9e\xa6", "\x00\x00", "\x00\x00",
++  /* 0x29d7e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29d83 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29d88 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29d8d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29d92 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29d98 */ "\x9d\xcd", "\x00\x00", "\x00\x00", "\x9d\x6f", "\x00\x00",
++  /* 0x29d9c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29da1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29da6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29db0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29db5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dbf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dc4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dc9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dd3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dd8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ddd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29de2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29de7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dec */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29df1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x89\xbb",
++  /* 0x29df6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29dfb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e00 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e06 */ "\x9e\xf9", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e0a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e0f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e14 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e19 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e1e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e23 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e28 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xb4",
++  /* 0x29e2d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e32 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e37 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e3c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e41 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e46 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e4b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e50 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e55 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e5a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e5f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e64 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x72", "\x00\x00",
++  /* 0x29e69 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e6e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e73 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e78 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e7d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e82 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e87 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e8c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e91 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e96 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29e9b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ea0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ea5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29eaa */ "\x00\x00", "\x9e\xc8", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29eb0 */ "\x87\x71", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29eb4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29eb9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ebe */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\x55",
++  /* 0x29ec3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ec8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ecd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ed2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ed7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29edc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ee1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ee6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29eeb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ef0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ef5 */ "\x00\x00", "\x00\x00", "\x9d\x71", "\x00\x00", "\x00\x00",
++  /* 0x29efa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29eff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29f04 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29f09 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29f0e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29f13 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29f18 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29f1d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29f23 */ "\x9d\x72", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29f27 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29f2c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xcc",
+ 
++  /* 0x29fb7 */ "\x91\x74", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fbb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fc0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fc5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fcf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fd4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fd9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x9e\xd0",
++  /* 0x29fde */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fe3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fe8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29fed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ff2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ff7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x29ffc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a001 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a006 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a00b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a010 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x5c", "\x00\x00",
++  /* 0x2a015 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a01a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a01f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a024 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a029 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a02e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a033 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a038 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a03d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a042 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a047 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a04c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a051 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a056 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a05b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a060 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a065 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a06a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a06f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a074 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a079 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a07e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a083 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8e\xd2", "\x00\x00",
++  /* 0x2a088 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a08d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a092 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a097 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a09c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\xa8", "\x00\x00",
++  /* 0x2a0ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0ce */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0d3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0d8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0dd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x77", "\x00\x00",
++  /* 0x2a0e2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0e7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0ed */ "\x96\xbf", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0f1 */ "\x00\x00", "\x96\xc0", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0f6 */ "\x00\x00", "\x8f\xb1", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a0fb */ "\x00\x00", "\x00\x00", "\x96\xb7", "\x00\x00", "\x00\x00",
++  /* 0x2a100 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a105 */ "\x00\x00", "\x8c\x55", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a10a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a10f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a114 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a119 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a11e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x91\x78",
++  /* 0x2a123 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a128 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a12d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a133 */ "\x89\xbe", "\x91\x7c", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a137 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a13c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a141 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a146 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a14b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfb\x77",
++  /* 0x2a150 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a155 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a15a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a15f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a164 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a169 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a16e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a173 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a178 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a17d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a182 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a187 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a18c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a192 */ "\x91\x75", "\x91\xa3", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a196 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a19b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1a0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1a5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1ab */ "\x91\x76", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1af */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xbe",
++  /* 0x2a1b5 */ "\x8d\x49", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1b9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1be */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1c3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1c8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1cd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1d2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1d7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1dc */ "\x00\x00", "\x00\x00", "\x91\x79", "\x00\x00", "\x00\x00",
++  /* 0x2a1e1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1e6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1eb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1f0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x96\xb6",
++  /* 0x2a1f5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1fa */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a1ff */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a204 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a209 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a20e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a213 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a218 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a21d */ "\x00\x00", "\x00\x00", "\x91\xa4", "\x00\x00", "\x00\x00",
++  /* 0x2a222 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a227 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a22c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a231 */ "\x00\x00", "\x91\xa6", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a236 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a23b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a240 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a245 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a24a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a24f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a254 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a259 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a25e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a263 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a268 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a26d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a272 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a277 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a27c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a281 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a286 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a28b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a290 */ "\x00\x00", "\x00\x00", "\x9d\x75", "\x00\x00", "\x00\x00",
++  /* 0x2a295 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a29a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x90\x52",
++  /* 0x2a29f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2a4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2a9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2ae */ "\x00\x00", "\x00\x00", "\x00\x00", "\xa0\x45", "\x00\x00",
++  /* 0x2a2b4 */ "\x91\xa9", "\x00\x00", "\x98\xaa", "\x00\x00", "\x00\x00",
++  /* 0x2a2b8 */ "\x00\x00", "\x8c\x5f", "\x00\x00", "\x00\x00", "\x8b\xaa",
++  /* 0x2a2bd */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2c2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2c7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2cc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2d1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2d6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2db */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\xdd", "\x00\x00",
++  /* 0x2a2e0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2e5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2ea */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2ef */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2f4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2f9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a2ff */ "\x9d\x77", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a303 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a308 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a30d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a312 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a317 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a31c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a321 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a326 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a32b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a330 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a335 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a33a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a33f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a344 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a349 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a34e */ "\x00\x00", "\x00\x00", "\x87\x56", "\x00\x00", "\x00\x00",
++  /* 0x2a353 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a358 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a35d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a362 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a367 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a36c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a371 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a376 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a37b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a380 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a385 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a38a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a38f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a394 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a399 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a39e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a3a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2a3a9 */ "\x89\x40",
+ 
+-  /* 0x2a5c6 */ "\x94\x78",
++  /* 0x2a434 */ "\x9e\xec", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a438 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a43d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a442 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a447 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a44c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a451 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a456 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x93\xaa",
+ 
+-  /* 0x2a6a9 */ "\x9e\x75",
++  /* 0x2a5c6 */ "\x94\x78", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5cb */ "\x9d\x7a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5cf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5d4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5d9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5de */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5e3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5e8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5ed */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5f2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5f7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a5fc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xc9",
++  /* 0x2a601 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a606 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a60b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a610 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a615 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a61a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a61f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a624 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a629 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a62e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\x4b", "\x00\x00",
++  /* 0x2a633 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a638 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a63d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a642 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a647 */ "\x00\x00", "\x00\x00", "\x9f\xec", "\x00\x00", "\x00\x00",
++  /* 0x2a64c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a651 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a656 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x8a\xe2",
++  /* 0x2a65b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a660 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a665 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a66a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a66f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a674 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a679 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a67e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a683 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a688 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a68d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a692 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a697 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a69c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a6a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2a6a6 */ "\x00\x00", "\x00\x00", "\x9e\x75",
+ 
+-  /* 0x2f840 */ "\xa0\x47", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f844 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f849 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f84e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f853 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f858 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f85d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f862 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f867 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f86c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f871 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f876 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f87b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f880 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f885 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f88a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f88f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x48",
+-  /* 0x2f894 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f899 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f89e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f8a3 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f8a8 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f8ad */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f8b2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f8b7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f8bc */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f8c1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f8c6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f8cb */ "\x00\x00", "\x9c\x52",
++  /* 0x2adff */ "\x87\xdc",
++
++  /* 0x2f825 */ "\x98\x74", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f829 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f82e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f833 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f838 */ "\x00\x00", "\x00\x00", "\x9a\xc8", "\x00\x00", "\x00\x00",
++  /* 0x2f83d */ "\x00\x00", "\x00\x00", "\xa0\x47", "\x00\x00", "\x00\x00",
++  /* 0x2f842 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f847 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f84c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f851 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f856 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f85b */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f860 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f865 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f86a */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f86f */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f874 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x8b\xc3", "\x00\x00",
++  /* 0x2f879 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f87e */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f883 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f888 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f88d */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f892 */ "\x00\x00", "\xfc\x48", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f897 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f89c */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f8a1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xfc\x77",
++  /* 0x2f8a6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f8ab */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f8b0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f8b5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f8ba */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f8bf */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f8c4 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f8c9 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x9c\x52",
+ 
+   /* 0x2f994 */ "\x8e\xfd", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2f998 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -16638,9 +17611,9 @@ static const char from_ucs4[][2] =
+   /* 0x2f9a2 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2f9a7 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2f9ac */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f9b1 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f9b2 */ "\x8f\xa8", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2f9b6 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+-  /* 0x2f9bb */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
++  /* 0x2f9bc */ "\x95\x7a", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2f9c0 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2f9c5 */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+   /* 0x2f9ca */ "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00",
+@@ -16693,105 +17666,70 @@ static struct
+   { 0x1ebe, 0x1ec1,   761 },
+   { 0x2013, 0x203e,   765 },
+   { 0x2103, 0x22bf,   809 },
+-  { 0x2460, 0x247d,  1254 },
+-  { 0x2500, 0x2642,  1284 },
+-  { 0x273d, 0x273d,  1607 },
+-  { 0x2e80, 0x2f33,  1608 },
+-  { 0x3000, 0x3129,  1788 },
+-  { 0x3231, 0x32a3,  2086 },
+-  { 0x338e, 0x9fa5,  2201 },
+-  { 0xe003, 0xe9cb, 29873 },
+-  { 0xeaa9, 0xeeb7, 32378 },
+-  { 0xf303, 0xf572, 33417 },
+-  { 0xf6b0, 0xf6b0, 34041 },
+-  { 0xf7e5, 0xf7ee, 34042 },
+-  { 0xfa0c, 0xfa0d, 34052 },
+-  { 0xfe30, 0xfe6b, 34054 },
+-  { 0xff01, 0xffed, 34114 },
+-  { 0x2003e, 0x20068, 34351 },
+-  { 0x200ee, 0x20118, 34394 },
+-  { 0x201ab, 0x20630, 34437 },
+-  { 0x2070e, 0x20779, 35595 },
+-  { 0x2082c, 0x20873, 35703 },
+-  { 0x20916, 0x20979, 35775 },
+-  { 0x20a11, 0x20ab4, 35875 },
+-  { 0x20b8f, 0x214fd, 36039 },
+-  { 0x21596, 0x21a4b, 38454 },
+-  { 0x21b44, 0x21b44, 39660 },
+-  { 0x21ca2, 0x21ca5, 39661 },
+-  { 0x21d46, 0x21ed5, 39665 },
+-  { 0x21f6a, 0x21fa1, 40065 },
+-  { 0x22049, 0x221c3, 40121 },
+-  { 0x2227c, 0x2227c, 40500 },
+-  { 0x22321, 0x22325, 40501 },
+-  { 0x223bd, 0x223d0, 40506 },
+-  { 0x22465, 0x2248b, 40526 },
+-  { 0x22513, 0x22980, 40565 },
+-  { 0x22acf, 0x22e78, 41699 },
+-  { 0x22fe3, 0x2330a, 42637 },
+-  { 0x233b4, 0x237d7, 43445 },
+-  { 0x23adb, 0x23b5a, 44505 },
+-  { 0x23c99, 0x24578, 44633 },
+-  { 0x2462a, 0x2478f, 46905 },
+-  { 0x24823, 0x24823, 47263 },
+-  { 0x248f3, 0x24ae2, 47264 },
+-  { 0x24b6e, 0x24b6e, 47760 },
+-  { 0x24bf5, 0x24c09, 47761 },
+-  { 0x24c9e, 0x24d06, 47782 },
+-  { 0x24db8, 0x24e50, 47887 },
+-  { 0x24f0e, 0x24fc2, 48040 },
+-  { 0x2509d, 0x2509d, 48221 },
+-  { 0x25148, 0x25221, 48222 },
+-  { 0x252c7, 0x25313, 48440 },
+-  { 0x25425, 0x2546e, 48517 },
+-  { 0x2555b, 0x259ac, 48591 },
+-  { 0x25a9c, 0x25ae9, 49697 },
+-  { 0x25b74, 0x25d43, 49775 },
+-  { 0x25e0e, 0x25f4b, 50239 },
+-  { 0x25fe1, 0x262d0, 50557 },
+-  { 0x26351, 0x26626, 51309 },
+-  { 0x266af, 0x267cc, 52035 },
+-  { 0x2685e, 0x26911, 52321 },
+-  { 0x269a8, 0x26a52, 52501 },
+-  { 0x26b0a, 0x27175, 52672 },
+-  { 0x2721b, 0x2721b, 54316 },
+-  { 0x272e6, 0x272e6, 54317 },
+-  { 0x2739a, 0x2739a, 54318 },
+-  { 0x27422, 0x27486, 54319 },
+-  { 0x275e0, 0x27785, 54420 },
+-  { 0x27870, 0x27870, 54842 },
+-  { 0x27924, 0x27967, 54843 },
+-  { 0x27a0e, 0x27b3a, 54911 },
+-  { 0x27bf4, 0x27c12, 55212 },
+-  { 0x27d2f, 0x27e4f, 55243 },
+-  { 0x28002, 0x28009, 55532 },
+-  { 0x280bd, 0x2816f, 55540 },
+-  { 0x28207, 0x2837d, 55719 },
+-  { 0x28412, 0x28482, 56094 },
+-  { 0x2853c, 0x2856c, 56207 },
+-  { 0x285f4, 0x286e6, 56256 },
+-  { 0x28804, 0x2882b, 56499 },
+-  { 0x28933, 0x28c39, 56539 },
+-  { 0x28ccd, 0x28d34, 57314 },
+-  { 0x28e36, 0x28ed9, 57418 },
+-  { 0x2908b, 0x29110, 57582 },
+-  { 0x2919c, 0x291eb, 57716 },
+-  { 0x2941d, 0x29448, 57796 },
+-  { 0x294d9, 0x294da, 57840 },
+-  { 0x2959e, 0x295e9, 57842 },
+-  { 0x29857, 0x2999d, 57918 },
+-  { 0x29b05, 0x29b0e, 58245 },
+-  { 0x29bd5, 0x29bd5, 58255 },
+-  { 0x29cad, 0x29cad, 58256 },
+-  { 0x29d3e, 0x29d7c, 58257 },
+-  { 0x29e2d, 0x29f30, 58320 },
+-  { 0x29fb7, 0x29fb7, 58580 },
+-  { 0x2a0e1, 0x2a2df, 58581 },
+-  { 0x2a3a9, 0x2a3a9, 59092 },
+-  { 0x2a5c6, 0x2a5c6, 59093 },
+-  { 0x2a6a9, 0x2a6a9, 59094 },
+-  { 0x2f840, 0x2f8cd, 59095 },
+-  { 0x2f994, 0x2f9d4, 59237 }
++  { 0x23da, 0x23db,  1254 },
++  { 0x2460, 0x247d,  1256 },
++  { 0x2500, 0x2642,  1286 },
++  { 0x273d, 0x273d,  1609 },
++  { 0x2e80, 0x2f33,  1610 },
++  { 0x3000, 0x3129,  1790 },
++  { 0x31c0, 0x32a3,  2088 },
++  { 0x338e, 0x9fcb,  2316 },
++  { 0xf907, 0xf907, 30026 },
++  { 0xfa0c, 0xfa0d, 30027 },
++  { 0xfe30, 0xfe6b, 30029 },
++  { 0xff01, 0xffed, 30089 },
++  { 0x20021, 0x20118, 30326 },
++  { 0x201a4, 0x20676, 30574 },
++  { 0x2070e, 0x20779, 31809 },
++  { 0x2082c, 0x20b0d, 31917 },
++  { 0x20b8f, 0x21a63, 32655 },
++  { 0x21b44, 0x21cac, 36452 },
++  { 0x21d46, 0x2227c, 36813 },
++  { 0x22321, 0x22325, 38148 },
++  { 0x223bd, 0x22993, 38153 },
++  { 0x22a66, 0x22eef, 39648 },
++  { 0x22f74, 0x2331f, 40810 },
++  { 0x233b4, 0x2383a, 41750 },
++  { 0x239c2, 0x239c2, 42909 },
++  { 0x23aa7, 0x23b5a, 42910 },
++  { 0x23c63, 0x24b6e, 43090 },
++  { 0x24bf5, 0x24c09, 46942 },
++  { 0x24c9e, 0x24d13, 46963 },
++  { 0x24db8, 0x2509d, 47081 },
++  { 0x2512b, 0x25313, 47823 },
++  { 0x25419, 0x2549a, 48312 },
++  { 0x25531, 0x259cc, 48442 },
++  { 0x25a54, 0x25ae9, 49622 },
++  { 0x25b74, 0x25f4b, 49772 },
++  { 0x25fe1, 0x26626, 50756 },
++  { 0x266af, 0x26a52, 52362 },
++  { 0x26b05, 0x27486, 53294 },
++  { 0x27574, 0x277cc, 55728 },
++  { 0x27858, 0x27b65, 56329 },
++  { 0x27bef, 0x27e4f, 57111 },
++  { 0x27f2e, 0x27f2e, 57720 },
++  { 0x27ff9, 0x2838a, 57721 },
++  { 0x28412, 0x28713, 58635 },
++  { 0x28804, 0x2882b, 59405 },
++  { 0x2890d, 0x28c3b, 59445 },
++  { 0x28cca, 0x28ee7, 60260 },
++  { 0x28fc5, 0x28fc5, 60802 },
++  { 0x29079, 0x291eb, 60803 },
++  { 0x2941d, 0x29448, 61174 },
++  { 0x294d0, 0x294e7, 61218 },
++  { 0x2959e, 0x295f4, 61242 },
++  { 0x29720, 0x29732, 61329 },
++  { 0x297d4, 0x29a4d, 61348 },
++  { 0x29b05, 0x29b0e, 61982 },
++  { 0x29bd5, 0x29bd5, 61992 },
++  { 0x29c73, 0x29cad, 61993 },
++  { 0x29d3e, 0x29f30, 62052 },
++  { 0x29fb7, 0x2a3a9, 62551 },
++  { 0x2a434, 0x2a45b, 63562 },
++  { 0x2a5c6, 0x2a6a9, 63602 },
++  { 0x2adff, 0x2adff, 63830 },
++  { 0x2f825, 0x2f8cd, 63831 },
++  { 0x2f994, 0x2f9d4, 64000 }
+ };
+ 
+ /* Definitions used in the body of the `gconv' function.  */
+@@ -16800,57 +17738,168 @@ static struct
+ #define TO_LOOP			to_big5hkscs
+ #define DEFINE_INIT		1
+ #define DEFINE_FINI		1
+-#define MIN_NEEDED_FROM		1
+-#define MAX_NEEDED_FROM		2
+-#define MIN_NEEDED_TO		4
++#define FROM_LOOP_MIN_NEEDED_FROM	1
++#define FROM_LOOP_MAX_NEEDED_FROM	2
++#define FROM_LOOP_MIN_NEEDED_TO		4
++#define FROM_LOOP_MAX_NEEDED_TO		8
++#define TO_LOOP_MIN_NEEDED_FROM		4
++#define TO_LOOP_MAX_NEEDED_FROM		4
++#define TO_LOOP_MIN_NEEDED_TO		1
++#define TO_LOOP_MAX_NEEDED_TO		2
++#define PREPARE_LOOP \
++  int saved_state;							      \
++  int *statep = &data->__statep->__count;
++#define EXTRA_LOOP_ARGS		, statep
++
++
++/* Since we might have to reset input pointer we must be able to save
++   and restore the state.  */
++#define SAVE_RESET_STATE(Save) \
++  if (Save)								      \
++    saved_state = *statep;						      \
++  else									      \
++    *statep = saved_state
++
++
++/* During BIG5-HKSCS to UCS-4 conversion, the COUNT element of the state
++   contains the last UCS-4 character, shifted by 3 bits.
++   During UCS-4 to BIG5-HKSCS conversion, the COUNT element of the state
++   contains the last two bytes to be output, shifted by 3 bits.  */
++
++/* Since this is a stateful encoding we have to provide code which resets
++   the output state to the initial state.  This has to be done during the
++   flushing.  */
++#define EMIT_SHIFT_TO_INIT \
++  if (data->__statep->__count != 0)					      \
++    {									      \
++      if (FROM_DIRECTION)						      \
++	{								      \
++	  if (__builtin_expect (outbuf + 4 <= outend, 1))		      \
++	    {								      \
++	      /* Write out the last character.  */			      \
++	      *((uint32_t *) outbuf) = data->__statep->__count >> 3;	      \
++	      outbuf += sizeof (uint32_t);				      \
++	      data->__statep->__count = 0;				      \
++	    }								      \
++	  else								      \
++	    /* We don't have enough room in the output buffer.  */	      \
++	    status = __GCONV_FULL_OUTPUT;				      \
++	}								      \
++      else								      \
++	{								      \
++	  if (__builtin_expect (outbuf + 2 <= outend, 1))		      \
++	    {								      \
++	      /* Write out the last character.  */			      \
++	      uint32_t lasttwo = data->__statep->__count >> 3;		      \
++	      *outbuf++ = (lasttwo >> 8) & 0xff;			      \
++	      *outbuf++ = lasttwo & 0xff;				      \
++	      data->__statep->__count = 0;				      \
++	    }								      \
++	  else								      \
++	    /* We don't have enough room in the output buffer.  */	      \
++	    status = __GCONV_FULL_OUTPUT;				      \
++	}								      \
++    }
+ 
+ 
+ /* First define the conversion function from Big5 to UCS4.  */
+-#define MIN_NEEDED_INPUT	MIN_NEEDED_FROM
+-#define MAX_NEEDED_INPUT	MAX_NEEDED_FROM
+-#define MIN_NEEDED_OUTPUT	MIN_NEEDED_TO
++#define MIN_NEEDED_INPUT	FROM_LOOP_MIN_NEEDED_FROM
++#define MAX_NEEDED_INPUT	FROM_LOOP_MAX_NEEDED_FROM
++#define MIN_NEEDED_OUTPUT	FROM_LOOP_MIN_NEEDED_TO
++#define MAX_NEEDED_OUTPUT	FROM_LOOP_MAX_NEEDED_TO
+ #define LOOPFCT			FROM_LOOP
+ #define BODY \
+   {									      \
+-    uint32_t ch = *inptr;						      \
++    uint32_t ch;							      \
+ 									      \
+-    if (ch >= 0x81 && ch <= 0xfe)					      \
++    /* Determine whether there is a buffered character pending.  */	      \
++    ch = *statep >> 3;							      \
++    if (__builtin_expect (ch == 0, 1))					      \
+       {									      \
+-	/* Two-byte character.  First test whether the next byte	      \
+-	   is also available.  */					      \
+-	uint32_t ch2;							      \
+-	int idx;							      \
++	/* No - so look at the next input byte.  */			      \
++	ch = *inptr;							      \
+ 									      \
+-	if (__builtin_expect (inptr + 1 >= inend, 0))			      \
++	if (ch >= 0x81 && ch <= 0xfe)					      \
+ 	  {								      \
+-	    /* The second character is not available.  */		      \
+-	    result = __GCONV_INCOMPLETE_INPUT;				      \
+-	    break;							      \
+-	  }								      \
++	    /* Two-byte character.  First test whether the next byte	      \
++	       is also available.  */					      \
++	    uint32_t ch2;						      \
++	    int idx;							      \
+ 									      \
+-	ch2 = inptr[1];							      \
+-	/* See whether the second byte is in the correct range.  */	      \
+-	if (ch < 0x88 || ch2 < 0x40 || ch2 > 0xfe			      \
+-	    || (idx = (ch - 0x88) * 195 + ch2 - 0x40,			      \
+-		(ch = big5hkscs_to_ucs[idx]) == 0))			      \
++	    if (__builtin_expect (inptr + 1 >= inend, 0))		      \
++	      {								      \
++		/* The second character is not available.  */		      \
++		result = __GCONV_INCOMPLETE_INPUT;			      \
++		break;							      \
++	      }								      \
++									      \
++	    ch2 = inptr[1];						      \
++	    idx = (ch - 0x87) * 195 + ch2 - 0x40;			      \
++	    /* See whether the second byte is in the correct range.  */	      \
++	    if (ch < 0x87 || ch2 < 0x40 || ch2 > 0xfe			      \
++		|| (ch = big5hkscs_to_ucs[idx]) == 0)			      \
++	      {								      \
++		/* Check for special cases: combining characters.  */	      \
++		if (idx == 195 + 0x22 /* 8862 */)			      \
++		  {							      \
++		    ch = 0xca;						      \
++		    ch2 = 0x304;					      \
++		  }							      \
++		else if (idx == 195 + 0x24 /* 8864 */)			      \
++		  {							      \
++		    ch = 0xca;						      \
++		    ch2 = 0x30c;					      \
++		  }							      \
++		else if (idx == 195 + 0x63 /* 88a3 */)			      \
++		  {							      \
++		    ch = 0xea;						      \
++		    ch2 = 0x304;					      \
++		  }							      \
++		else if (idx == 195 + 0x65 /* 88a5 */)			      \
++		  {							      \
++		    ch = 0xea;						      \
++		    ch2 = 0x30c;					      \
++		  }							      \
++		else							      \
++		  /* This is illegal.  */				      \
++		  STANDARD_FROM_LOOP_ERR_HANDLER (1);			      \
++									      \
++		inptr += 2;						      \
++									      \
++		put32 (outptr, ch);					      \
++		outptr += 4;						      \
++									      \
++		/* See whether we have room for two characters.  */	      \
++		if (outptr + 4 <= outend)				      \
++		  {							      \
++		    put32 (outptr, ch2);				      \
++		    outptr += 4;					      \
++		    continue;						      \
++		  }							      \
++									      \
++		/* Otherwise store only the first character now, and	      \
++		   put the second one into the queue.  */		      \
++		*statep = ch2 << 3;					      \
++		/* Tell the caller why we terminate the loop.  */	      \
++		result = __GCONV_FULL_OUTPUT;				      \
++		break;							      \
++	      }								      \
++									      \
++	    inptr += 2;							      \
++	  }								      \
++	else if (__builtin_expect (ch == 0xff, 0))			      \
+ 	  {								      \
+-	    /* This is illegal.  */					      \
+ 	    STANDARD_FROM_LOOP_ERR_HANDLER (1);				      \
+ 	  }								      \
+-									      \
+-	inptr += 2;							      \
+-      }									      \
+-    else if (__builtin_expect (ch == 0xff, 0))				      \
+-      {									      \
+-	STANDARD_FROM_LOOP_ERR_HANDLER (1);				      \
++	else								      \
++	  ++inptr;							      \
+       }									      \
+-    else								      \
+-      ++inptr;								      \
+ 									      \
+     put32 (outptr, ch);							      \
+     outptr += 4;							      \
+   }
+ #define LOOP_NEED_FLAGS
++#define EXTRA_LOOP_DECLS	, int *statep
+ #define ONEBYTE_BODY \
+   {									      \
+     if (c <= 0x80)							      \
+@@ -16862,19 +17911,61 @@ static struct
+ 
+ 
+ /* Next, define the other direction.  */
+-#define MIN_NEEDED_INPUT	MIN_NEEDED_TO
+-#define MIN_NEEDED_OUTPUT	MIN_NEEDED_FROM
+-#define MAX_NEEDED_OUTPUT	MAX_NEEDED_FROM
++#define MIN_NEEDED_INPUT	TO_LOOP_MIN_NEEDED_FROM
++#define MAX_NEEDED_INPUT	TO_LOOP_MAX_NEEDED_FROM
++#define MIN_NEEDED_OUTPUT	TO_LOOP_MIN_NEEDED_TO
++#define MAX_NEEDED_OUTPUT	TO_LOOP_MAX_NEEDED_TO
+ #define LOOPFCT			TO_LOOP
+ #define BODY \
+   {									      \
+     uint32_t ch = get32 (inptr);					      \
+ 									      \
++    if ((*statep >> 3) != 0)						      \
++      {									      \
++	/* Attempt to combine the last character with this one.  */	      \
++	uint16_t lasttwo = *statep >> 3;				      \
++									      \
++	if (ch == 0x304 && lasttwo == 0x8866)				      \
++	  ch = 0x8862;							      \
++	else if (ch == 0x30c && lasttwo == 0x8866)			      \
++	  ch = 0x8864;							      \
++	else if (ch == 0x304 && lasttwo == 0x88a7)			      \
++	  ch = 0x88a3;							      \
++	else if (ch == 0x30c && lasttwo == 0x88a7)			      \
++	  ch = 0x88a5;							      \
++	else								      \
++	  goto not_combining;						      \
++									      \
++	/* Output the combined character.  */				      \
++	if (__builtin_expect (outptr + 1 >= outend, 0))			      \
++	  {								      \
++	    result = __GCONV_FULL_OUTPUT;				      \
++	    break;							      \
++	  }								      \
++	*outptr++ = (ch >> 8) & 0xff;					      \
++	*outptr++ = ch & 0xff;						      \
++	*statep = 0;							      \
++	inptr += 4;							      \
++	continue;							      \
++									      \
++      not_combining:							      \
++	/* Output the buffered character.  */				      \
++	if (__builtin_expect (outptr + 1 >= outend, 0))			      \
++	  {								      \
++	    result = __GCONV_FULL_OUTPUT;				      \
++	    break;							      \
++	  }								      \
++	*outptr++ = (lasttwo >> 8) & 0xff;				      \
++	*outptr++ = lasttwo & 0xff;					      \
++	*statep = 0;							      \
++	continue;							      \
++      }									      \
++									      \
+     if (ch <= 0x0080)							      \
+       *outptr++ = ch;							      \
+     else								      \
+       {									      \
+-	const char *cp = "";						      \
++	const unsigned char *cp = (const unsigned char *) "";		      \
+ 	size_t i;							      \
+     									      \
+ 	for (i = 0;							      \
+@@ -16900,6 +17991,14 @@ static struct
+ 	  }								      \
+ 	else								      \
+ 	  {								      \
++	   /* Check for possible combining character.  */		      \
++	    if (__builtin_expect (ch == 0xca || ch == 0xea, 0))		      \
++	      {								      \
++		*statep = ((cp[0] << 8) | cp[1]) << 3;			      \
++		inptr += 4;						      \
++		continue;						      \
++	      }								      \
++									      \
+ 	    /* See whether there is enough room to write the second byte.  */ \
+ 	    if (__builtin_expect (cp[1] != '\0', 1)			      \
+ 		&& __builtin_expect (outptr + 1 >= outend, 0))		      \
+@@ -16918,6 +18017,7 @@ static struct
+     inptr += 4;								      \
+   }
+ #define LOOP_NEED_FLAGS
++#define EXTRA_LOOP_DECLS	, int *statep
+ #include <iconv/loop.c>
+ 
+ 
+diff --git a/iconvdata/testdata/BIG5HKSCS b/iconvdata/testdata/BIG5HKSCS
+index 827e20b..ac76f6e 100644
+--- a/iconvdata/testdata/BIG5HKSCS
++++ b/iconvdata/testdata/BIG5HKSCS
+@@ -1,1135 +1,1154 @@
+- �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
+- �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
+- �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
+- �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ��
+- �� �� �� �� �� �� �� �� �� �@ �A �C �F �G �H �I
+- �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
+- �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
+- �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
+- �| �} �~ �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �@ �A �C �D �E �F �G �H
+- �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
+- �Y �Z �[ �\ �] �^ �_ �` �a �b �d �e �f �g �h �i
+- �j �k �l �m �n �o �p �q �r �s �t �v �w �x �y �z
+- �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
+- �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �U �V
+- �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
+- �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
+- �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �` �a �b �c �d �e �f �g �h �i �j �k �l
+- �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
+- �} �~ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
+- �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
+- �` �a �b �c �d �e �f �g �h �j �k �l �m �n �p �q
+- �r �s �t �u �v �w �x �y �z �{ �| �} �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
+- �J �K �L �M �N �O �P �Q �R �S �T �U �V �X �Y �Z
+- �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �j �k
+- �l �m �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
+- �} �~ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
+- �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
+- �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
+- �c �d �e �f �g �h �i �j �k �l �n �o �p �q �r �s
+- �t �u �v �w �x �y �{ �| �} �~ �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
+- �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
+- �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
+- �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
+- �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �@ �A �B �C �E �F �G �H �I �J �K �L �M �N
+- �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
+- �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
+- �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
+- �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
+- �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
+- �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �@ �A �B �C �D �E �F �H �I �J �K
+- �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
+- �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
+- �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
+- �| �} �~ �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
+- �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
+- �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
+- �p �q �r �s �t �u �v �w �x �y �{ �| �} �~ ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
+- �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
+- �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
+- �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
+- �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
+- �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
+- �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
+- �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
+- �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
+- �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
+- �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
+- �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
+- �} �~ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
+- �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
+- �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
+- �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
+- �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
+- �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
+- �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
+- �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
+- �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
+- �V �W �X �Y �Z �[ �\ �] �^ �_ �` �b �c �d �e �f
+- �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �w
+- �y �z �| �} �~ �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
+- �A �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
+- �R �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �c
+- �d �e �f �g �i �j �l �m �n �o �p �q �r �s �t �u
+- �v �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
+- �M �N �O �P �Q �R �S �T �U �V �X �Y �[ �\ �] �^
+- �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
+- �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
+- �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
+- �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
+- �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
+- �L �M �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
+- �] �^ �_ �a �b �c �d �e �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
+- �L �M �N �O �P �Q �R �S �U �V �X �Y �[ �\ �] �^
+- �_ �` �a �d �e �f �g �h �i �j �k �l �m �n �o �p
+- �q �s �t �u �v �x �y �z �{ �| �} �~ �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
+- �N �O �P �Q �R �S �T �U �V �W �X �Y �[ �\ �] �^
+- �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �A �B �C �D �E
+- �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
+- �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
+- �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
+- �v �w �x �y �z �{ �| �} �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
+- �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
+- �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
+- �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
+- �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
+- �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
+- �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
+- �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
+- �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
+- �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
+- �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
+- �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
+- �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
+- �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
+- �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
+- �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
+- �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
+- �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
+- �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
+- �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
+- �~ �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
+- �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
+- �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
+- �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
+- �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
+- �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
+- �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
+- �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
+- �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
+- �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
+- �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
+- �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
+- �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
+- �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
+- �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
+- �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
+- �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
+- �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
+- �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
+- �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
+- �} �~ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
+- �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
+- �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
+- �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
+- �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
+- �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
+- �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
+- �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
+- �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
+- �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
+- �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
+- �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
+- �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
+- �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
+- �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
+- �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
+- �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
+- �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
+- �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
+- �| �} �~ �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
+- �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
+- �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
+- �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
+- �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
+- �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
+- �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
+- �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
+- �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
+- �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
+- �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
+- �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
+- �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
+- �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
+- �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
+- �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
+- �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
+- �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
+- �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
+- �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
+- �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
+- �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
+- �~ �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
+- �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
+- �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
+- �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
+- �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
+- �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
+- �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
+- �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
+- �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
+- �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
+- �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
+- �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
+- �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
+- �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
+- �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
+- �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
+- �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
+- �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
+- �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
+- �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
+- �} �~ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
+- �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
+- �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
+- �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
+- �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
+- �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
+- �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
+- �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
+- �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
+- �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
+- �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
+- �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
+- �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
+- �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
+- �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
+- �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
+- �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
+- �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
+- �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
+- �| �} �~ �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
+- �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
+- �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ °
+- ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
+- �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
+- �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
+- �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
+- �r �s �t �u �v �w �x �y �z �{ �| �} �~ á â ã
+- ä å æ ç è é ê ë ì í î ï ð ñ ò ó
+- ô õ ö ÷ ø ù ú û ü ý þ ÿ �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
+- �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
+- �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
+- �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
+- �u �v �w �x �y �z �{ �| �} �~ ġ Ģ ģ Ĥ ĥ Ħ
+- ħ Ĩ ĩ Ī ī Ĭ ĭ Į į İ ı IJ ij Ĵ ĵ Ķ
+- ķ ĸ Ĺ ĺ Ļ ļ Ľ ľ Ŀ �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
+- �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
+- �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
+- �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
+- �x �y �z �{ �| �} �~ š Ţ ţ Ť ť Ŧ ŧ Ũ ũ
+- Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ Ÿ Ź
+- ź Ż ż Ž ž ſ �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
+- �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
+- �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
+- �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
+- �{ �| �} �~ ơ Ƣ ƣ Ƥ ƥ Ʀ Ƨ ƨ Ʃ ƪ ƫ Ƭ
+- ƭ Ʈ Ư ư Ʊ Ʋ Ƴ ƴ Ƶ ƶ Ʒ Ƹ ƹ ƺ ƻ Ƽ
+- ƽ ƾ ƿ �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
+- �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
+- �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
+- �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
+- �t �u �v �w �x �y �z �{ �| �} �~ ǡ Ǣ ǣ Ǥ ǥ
+- Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ ǰ DZ Dz dz Ǵ ǵ
+- Ƕ Ƿ Ǹ ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
+- �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
+- �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
+- �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
+- �w �x �y �z �{ �| �} �~ ȡ Ȣ ȣ Ȥ �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
+- �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
+- �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
+- �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
+- �u �v �w �x �y �z �{ �| �} �~ ɡ ɢ ɣ ɤ ɥ ɦ
+- ɧ ɨ ɩ ɪ ɫ ɬ ɭ ɮ ɯ ɰ ɱ ɲ ɳ ɴ ɵ ɶ
+- ɷ ɸ ɹ ɺ ɻ ɼ ɽ ɾ ɿ �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
+- �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
+- �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
+- �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
+- �x �y �z �{ �| �} �~ ʡ ʢ ʣ ʤ ʥ ʦ ʧ ʨ ʩ
+- ʪ ʫ ʬ ʭ ʮ ʯ ʰ ʱ ʲ ʳ ʴ ʵ ʶ ʷ ʸ ʹ
+- ʺ ʻ ʼ ʽ ʾ ʿ �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
+- �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
+- �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
+- �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
+- �{ �| �} �~ ˡ ˢ ˣ ˤ ˥ ˦ ˧ ˨ ˩ ˪ ˫ ˬ
+- ˭ ˮ ˯ ˰ ˱ ˲ ˳ ˴ ˵ ˶ ˷ ˸ ˹ ˺ ˻ ˼
+- ˽ ˾ ˿ �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
+- �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
+- �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
+- �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
+- �~ ̡ ̢ ̣ ̤ ̥ ̦ ̧ ̨ ̩ ̪ ̫ ̬ ̭ ̮ ̯
+- ̰ ̱ ̲ ̳ ̴ ̵ ̶ ̷ ̸ ̹ ̺ ̻ ̼ ̽ ̾ ̿
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
+- �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
+- �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
+- �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
+- �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ͡ ͢
+- ͣ ͤ ͥ ͦ ͧ ͨ ͩ ͪ ͫ ͬ ͭ ͮ ͯ Ͱ ͱ Ͳ
+- ͳ ʹ ͵ Ͷ ͷ ͸ ͹ ͺ ͻ ͼ ͽ ; Ϳ �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
+- �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
+- �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
+- �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
+- �t �u �v �w �x �y �z �{ �| �} �~ Ρ ΢ Σ Τ Υ
+- Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε
+- ζ η θ ι κ λ μ ν ξ ο �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
+- �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
+- �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
+- �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
+- �w �x �y �z �{ �| �} �~ ϡ Ϣ ϣ Ϥ ϥ Ϧ ϧ Ϩ
+- ϩ Ϫ ϫ Ϭ ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ ϵ ϶ Ϸ ϸ
+- Ϲ Ϻ ϻ ϼ Ͻ Ͼ Ͽ �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
+- �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
+- �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
+- �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
+- �z �{ �| �} �~ С Т У Ф Х Ц Ч Ш Щ Ъ Ы
+- Ь Э Ю Я а б в г д е ж з и й к л
+- м н о п �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
+- �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
+- �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
+- �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
+- �} �~ ѡ Ѣ ѣ Ѥ ѥ Ѧ ѧ Ѩ ѩ Ѫ ѫ Ѭ ѭ Ѯ
+- ѯ Ѱ ѱ Ѳ ѳ Ѵ ѵ Ѷ ѷ Ѹ ѹ Ѻ ѻ Ѽ ѽ Ѿ
+- ѿ �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
+- �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
+- �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
+- �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ҡ
+- Ң ң Ҥ ҥ Ҧ ҧ Ҩ ҩ Ҫ ҫ Ҭ ҭ Ү ү Ұ ұ
+- Ҳ ҳ Ҵ ҵ Ҷ ҷ Ҹ ҹ Һ һ Ҽ ҽ Ҿ ҿ �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
+- �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
+- �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
+- �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
+- �s �t �u �v �w �x �y �z �{ �| �} �~ ӡ Ӣ ӣ Ӥ
+- ӥ Ӧ ӧ Ө ө Ӫ ӫ Ӭ ӭ Ӯ ӯ Ӱ ӱ Ӳ ӳ Ӵ
+- ӵ Ӷ ӷ Ӹ ӹ Ӻ ӻ Ӽ ӽ Ӿ ӿ �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
+- �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
+- �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
+- �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
+- �v �w �x �y �z �{ �| �} �~ ԡ Ԣ ԣ Ԥ ԥ Ԧ ԧ
+- Ԩ ԩ Ԫ ԫ Ԭ ԭ Ԯ ԯ ԰ Ա Բ Գ Դ Ե Զ Է
+- Ը Թ Ժ Ի Լ Խ Ծ Կ �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
+- �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
+- �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
+- �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
+- �y �z �{ �| �} �~ ա բ գ դ ե զ է ը թ ժ
+- ի լ խ ծ կ հ ձ ղ ճ մ յ ն շ ո չ պ
+- ջ ռ ս վ տ �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
+- �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
+- �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
+- �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
+- �| �} �~ ֡ ֢ ֣ ֤ ֥ ֦ ֧ ֨ ֩ ֪ ֫ ֬ ֭
+- ֮ ֯ ְ ֱ ֲ ֳ ִ ֵ ֶ ַ ָ ֹ ֺ ֻ ּ ֽ
+- ־ ֿ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
+- �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
+- �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- ס ע ף פ ץ צ ק ר ש ת ׫ ׬ ׭ ׮ ׯ װ
+- ױ ײ ׳ ״ ׵ ׶ ׷ ׸ ׹ ׺ ׻ ׼ ׽ ׾ ׿ ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
+- �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
+- �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
+- �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
+- �r �s �t �u �v �w �x �y �z �{ �| �} �~ ء آ أ
+- ؤ إ ئ ا ب ة ت ث ج ح خ د ذ ر ز س
+- ش ص ض ط ظ ع غ ػ ؼ ؽ ؾ ؿ �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
+- �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
+- �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
+- �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
+- �u �v �w �x �y �z �{ �| �} �~ ١ ٢ ٣ ٤ ٥ ٦
+- ٧ ٨ ٩ ٪ ٫ ٬ ٭ ٮ ٯ ٰ ٱ ٲ ٳ ٴ ٵ ٶ
+- ٷ ٸ ٹ ٺ ٻ ټ ٽ پ ٿ �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
+- �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
+- �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
+- �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
+- �x �y �z �{ �| �} �~ ڡ ڢ ڣ ڤ ڥ ڦ ڧ ڨ ک
+- ڪ ګ ڬ ڭ ڮ گ ڰ ڱ ڲ ڳ ڴ ڵ ڶ ڷ ڸ ڹ
+- ں ڻ ڼ ڽ ھ ڿ �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
+- �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
+- �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
+- �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
+- �{ �| �} �~ ۡ ۢ ۣ ۤ ۥ ۦ ۧ ۨ ۩ ۪ ۫ ۬
+- ۭ ۮ ۯ ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۺ ۻ ۼ
+- ۽ ۾ ۿ �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
+- �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
+- �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
+- �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
+- �~ ܡ ܢ ܣ ܤ ܥ ܦ ܧ ܨ ܩ ܪ ܫ ܬ ܭ ܮ ܯ
+- ܰ ܱ ܲ ܳ ܴ ܵ ܶ ܷ ܸ ܹ ܺ ܻ ܼ ܽ ܾ ܿ
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
+- �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
+- �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
+- �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
+- �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ݡ ݢ
+- ݣ ݤ ݥ ݦ ݧ ݨ ݩ ݪ ݫ ݬ ݭ ݮ ݯ ݰ ݱ ݲ
+- ݳ ݴ ݵ ݶ ݷ ݸ ݹ ݺ ݻ ݼ ݽ ݾ ݿ �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
+- �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
+- �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
+- �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
+- �t �u �v �w �x �y �z �{ �| �} �~ ޡ ޢ ޣ ޤ ޥ
+- ަ ާ ި ީ ު ޫ ެ ޭ ޮ ޯ ް ޱ ޲ ޳ ޴ ޵
+- ޶ ޷ ޸ ޹ ޺ ޻ ޼ ޽ ޾ ޿ �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
+- �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
+- �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
+- �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
+- �w �x �y �z �{ �| �} �~ ߡ ߢ ߣ ߤ ߥ ߦ ߧ ߨ
+- ߩ ߪ ߫ ߬ ߭ ߮ ߯ ߰ ߱ ߲ ߳ ߴ ߵ ߶ ߷ ߸
+- ߹ ߺ ߻ ߼ ߽ ߾ ߿ �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
+- �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
+- �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
+- �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
+- �z �{ �| �} �~ � � � � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
+- �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
+- �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
+- �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
+- �} �~ � � � � � � � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
+- �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
+- �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
+- �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �
+- � � � � � � � � � � � � � � � �
+- � � � � � � � � � � � � � � �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
+- �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
+- �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
+- �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
+- �s �t �u �v �w �x �y �z �{ �| �} �~ � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � � � � � � � � �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
+- �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
+- �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
+- �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
+- �v �w �x �y �z �{ �| �} �~ � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � � � � � �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
+- �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
+- �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
+- �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
+- �y �z �{ �| �} �~ � � � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � � �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
+- �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
+- �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
+- �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
+- �| �} �~ � � � � � � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � � �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
+- �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
+- �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- � � � � � � � � � � � � � � � �
+- � � � � � � � � � � � � � � � ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
+- �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
+- �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
+- �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
+- �r �s �t �u �v �w �x �y �z �{ �| �} �~ � � �
+- � � � � � � � � � � � � � � � �
+- � � � � � � � � � � � � �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
+- �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
+- �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
+- �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
+- �u �v �w �x �y �z �{ �| �} �~ � � � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � � � � � � �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
+- �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
+- �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
+- �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
+- �x �y �z �{ �| �} �~ � � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � � � �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
+- �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
+- �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
+- �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
+- �{ �| �} �~ � � � � � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � � � �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
+- �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
+- �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
+- �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
+- �~ � � � � � � � � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
+- �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
+- �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
+- �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
+- �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
+- �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
+- �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
+- �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
+- �t �u �v �w �x �y �z �{ �| �} �~ � � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � � � � � � � �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
+- �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
+- �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
+- �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
+- �w �x �y �z �{ �| �} �~ � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � � � � �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
+- �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
+- �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
+- �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
+- �z �{ �| �} �~ � � � � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
+- �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
+- �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
+- �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
+- �} �~ � � � � � � � � � � � � � �
+- � � � � � � � � � � � � � � � �
+- � �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
+- �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
+- �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
+- �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �
+- � � � � � � � � � � � � � � � �
+- � � � � � � � � � � � � � � �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
+- �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
+- �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
+- �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
+- �s �t �u �v �w �x �y �z �{ �| �} �~ � � � �
+- � � � � � � � � � � � � � � � �
+- � � � � � � � � � � � �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
+- �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
+- �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
+- �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
+- �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
+- �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
+- �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
+- �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
+- �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
+- �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
+- �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
+- �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
+- �| �} �~ �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
+- �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
+- �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
+- �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
+- �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
+- �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
+- �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
+- �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
+- �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
+- �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
+- �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
+- �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
+- �X �Y �Z �[ �\ �] �^ �` �a �b �c �d �e �g �h �i
+- �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
+- �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �@ �A �B �C �D �E �F �G �I �J �K �L �M �N �O �P
+- �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
+- �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
+- �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
+- �G �H �I �J �K �L �M �N �P �Q �R �S �T �U �V �W
+- �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
+- �h �i �j �k �m �n �o �p �q �r �s �t �u �v �w �x
+- �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
+- �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
+- �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
+- �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
+- �F �G �H �I �J �K �L �M �N �O �P �Q �S �T �U �V
+- �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
+- �g �h �i �j �k �l �m �n �p �q �r �s �t �u �v �w
+- �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
+- �� �� ��
++ �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
++ �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
++ �` �a �b �c �d �e �g �h �i �j �k �l �m �n �o �p
++ �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
++ �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
++ �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
++ �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
++ �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� ��
++ �� �� �� �� �� �� �@ �A �C �F �G �H �I �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �@ �A �C �D �E �F �G �H �I �J �K
++ �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
++ �\ �] �^ �_ �` �a �b �d �e �f �g �h �i �j �k �l
++ �m �n �o �p �q �r �s �t �v �w �x �y �z �{ �| �}
++ �~ �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
++ �I �J �K �L �M �N �O �P �Q �R �S �U �V �W �X �Y
++ �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
++ �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
++ �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �@ �B �C �D �E �F �G �H
++ �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
++ �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
++ �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
++ �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
++ �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
++ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �j �k �l
++ �m �n �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
++ �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
++ �V �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
++ �g �h �j �k �l �m �o �p �q �r �s �t �u �v �w �x
++ �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �n �o
++ �p �q �r �s �t �u �v �w �x �y �{ �| �} �~ �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
++ �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
++ �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
++ �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
++ �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �@ �A �B �C �E �F �G �H �I �J
++ �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
++ �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
++ �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
++ �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
++ �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
++ �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
++ �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
++ �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
++ �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
++ �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
++ �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
++ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
++ �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
++ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �@ �A �B �C �E �F �G �H �I �J �K �L �M �N �O �P
++ �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
++ �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
++ �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
++ �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
++ �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
++ �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
++ �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
++ �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
++ �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
++ �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
++ �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
++ �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
++ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
++ �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
++ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
++ �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
++ �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �b
++ �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
++ �s �t �u �w �y �z �| �} �~ �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �@ �A �C �D �E �F �G �H �I �J �K �L �M
++ �N �O �P �Q �R �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �c �d �e �f �g �i �j �l �m �n �o �p �q
++ �r �s �t �u �v �x �y �z �{ �| �} �~ �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
++ �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �X �Y
++ �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
++ �H �I �J �K �L �M �O �P �Q �R �S �T �U �V �W �X
++ �Y �Z �[ �\ �] �^ �_ �a �b �c �d �e �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
++ �H �I �J �K �L �M �N �O �P �Q �R �S �U �V �X �Y
++ �[ �\ �] �^ �_ �` �a �d �e �f �g �h �i �j �k �l
++ �m �n �o �p �q �s �t �u �v �x �y �z �{ �| �} �~
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
++ �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
++ �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �A
++ �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
++ �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
++ �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
++ �r �s �t �u �v �w �x �y �z �{ �| �} �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
++ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
++ �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
++ �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
++ �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
++ �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
++ �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
++ �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
++ �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
++ �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
++ �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
++ �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
++ �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
++ �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
++ �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
++ �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
++ �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
++ �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
++ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
++ �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
++ �} �~ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
++ �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
++ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
++ �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
++ �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
++ �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
++ �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
++ �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
++ �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
++ �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
++ �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
++ �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
++ �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
++ �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
++ �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
++ �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
++ �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
++ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
++ �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
++ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
++ �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
++ �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
++ �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
++ �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
++ �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
++ �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
++ �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
++ �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
++ �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
++ �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
++ �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
++ �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
++ �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
++ �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
++ �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
++ �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
++ �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
++ �~ �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
++ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
++ �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
++ �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
++ �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
++ �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
++ �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
++ �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
++ �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
++ �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
++ �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
++ �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
++ �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
++ �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
++ �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
++ �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
++ �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
++ �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
++ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
++ �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
++ �} �~ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
++ �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
++ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
++ �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
++ �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
++ �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
++ �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
++ �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
++ �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
++ �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
++ �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
++ �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
++ �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
++ �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
++ �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
++ �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
++ �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
++ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
++ �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
++ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
++ �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
++ �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
++ �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
++ �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
++ �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
++ �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
++ �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
++ �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
++ �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
++ �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
++ �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
++ �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
++ �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
++ �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬
++ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼
++ ½ ¾ ¿ �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
++ �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
++ �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
++ �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
++ �~ á â ã ä å æ ç è é ê ë ì í î ï
++ ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
++ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
++ �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
++ �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
++ �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ġ Ģ
++ ģ Ĥ ĥ Ħ ħ Ĩ ĩ Ī ī Ĭ ĭ Į į İ ı IJ
++ ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ Ľ ľ Ŀ �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
++ �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
++ �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
++ �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
++ �t �u �v �w �x �y �z �{ �| �} �~ š Ţ ţ Ť ť
++ Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ
++ Ŷ ŷ Ÿ Ź ź Ż ż Ž ž ſ �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
++ �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
++ �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
++ �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
++ �w �x �y �z �{ �| �} �~ ơ Ƣ ƣ Ƥ ƥ Ʀ Ƨ ƨ
++ Ʃ ƪ ƫ Ƭ ƭ Ʈ Ư ư Ʊ Ʋ Ƴ ƴ Ƶ ƶ Ʒ Ƹ
++ ƹ ƺ ƻ Ƽ ƽ ƾ ƿ �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
++ �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
++ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
++ �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ǡ
++ Ǣ ǣ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ ǰ DZ
++ Dz dz Ǵ ǵ Ƕ Ƿ Ǹ ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
++ �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
++ �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
++ �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
++ �s �t �u �v �w �x �y �z �{ �| �} �~ ȡ Ȣ ȣ Ȥ
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
++ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
++ �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
++ �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
++ �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ɡ ɢ
++ ɣ ɤ ɥ ɦ ɧ ɨ ɩ ɪ ɫ ɬ ɭ ɮ ɯ ɰ ɱ ɲ
++ ɳ ɴ ɵ ɶ ɷ ɸ ɹ ɺ ɻ ɼ ɽ ɾ ɿ �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
++ �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
++ �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
++ �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
++ �t �u �v �w �x �y �z �{ �| �} �~ ʡ ʢ ʣ ʤ ʥ
++ ʦ ʧ ʨ ʩ ʪ ʫ ʬ ʭ ʮ ʯ ʰ ʱ ʲ ʳ ʴ ʵ
++ ʶ ʷ ʸ ʹ ʺ ʻ ʼ ʽ ʾ ʿ �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
++ �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
++ �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
++ �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
++ �w �x �y �z �{ �| �} �~ ˡ ˢ ˣ ˤ ˥ ˦ ˧ ˨
++ ˩ ˪ ˫ ˬ ˭ ˮ ˯ ˰ ˱ ˲ ˳ ˴ ˵ ˶ ˷ ˸
++ ˹ ˺ ˻ ˼ ˽ ˾ ˿ �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
++ �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
++ �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
++ �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
++ �z �{ �| �} �~ ̡ ̢ ̣ ̤ ̥ ̦ ̧ ̨ ̩ ̪ ̫
++ ̬ ̭ ̮ ̯ ̰ ̱ ̲ ̳ ̴ ̵ ̶ ̷ ̸ ̹ ̺ ̻
++ ̼ ̽ ̾ ̿ �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
++ �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
++ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
++ �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
++ �} �~ ͡ ͢ ͣ ͤ ͥ ͦ ͧ ͨ ͩ ͪ ͫ ͬ ͭ ͮ
++ ͯ Ͱ ͱ Ͳ ͳ ʹ ͵ Ͷ ͷ ͸ ͹ ͺ ͻ ͼ ͽ ;
++ Ϳ �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
++ �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
++ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
++ �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ Ρ
++ ΢ Σ Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α
++ β γ δ ε ζ η θ ι κ λ μ ν ξ ο �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
++ �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
++ �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
++ �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
++ �s �t �u �v �w �x �y �z �{ �| �} �~ ϡ Ϣ ϣ Ϥ
++ ϥ Ϧ ϧ Ϩ ϩ Ϫ ϫ Ϭ ϭ Ϯ ϯ ϰ ϱ ϲ ϳ ϴ
++ ϵ ϶ Ϸ ϸ Ϲ Ϻ ϻ ϼ Ͻ Ͼ Ͽ �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
++ �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
++ �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
++ �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
++ �v �w �x �y �z �{ �| �} �~ С Т У Ф Х Ц Ч
++ Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ж з
++ и й к л м н о п �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
++ �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
++ �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
++ �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
++ �y �z �{ �| �} �~ ѡ Ѣ ѣ Ѥ ѥ Ѧ ѧ Ѩ ѩ Ѫ
++ ѫ Ѭ ѭ Ѯ ѯ Ѱ ѱ Ѳ ѳ Ѵ ѵ Ѷ ѷ Ѹ ѹ Ѻ
++ ѻ Ѽ ѽ Ѿ ѿ �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
++ �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
++ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
++ �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
++ �| �} �~ ҡ Ң ң Ҥ ҥ Ҧ ҧ Ҩ ҩ Ҫ ҫ Ҭ ҭ
++ Ү ү Ұ ұ Ҳ ҳ Ҵ ҵ Ҷ ҷ Ҹ ҹ Һ һ Ҽ ҽ
++ Ҿ ҿ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ ӡ Ӣ ӣ Ӥ ӥ Ӧ ӧ Ө ө Ӫ ӫ Ӭ ӭ Ӯ ӯ Ӱ
++ ӱ Ӳ ӳ Ӵ ӵ Ӷ ӷ Ӹ ӹ Ӻ ӻ Ӽ ӽ Ӿ ӿ ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
++ �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
++ �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
++ �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
++ �r �s �t �u �v �w �x �y �z �{ �| �} �~ ԡ Ԣ ԣ
++ Ԥ ԥ Ԧ ԧ Ԩ ԩ Ԫ ԫ Ԭ ԭ Ԯ ԯ ԰ Ա Բ Գ
++ Դ Ե Զ Է Ը Թ Ժ Ի Լ Խ Ծ Կ �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
++ �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
++ �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
++ �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
++ �u �v �w �x �y �z �{ �| �} �~ ա բ գ դ ե զ
++ է ը թ ժ ի լ խ ծ կ հ ձ ղ ճ մ յ ն
++ շ ո չ պ ջ ռ ս վ տ �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
++ �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
++ �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
++ �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
++ �x �y �z �{ �| �} �~ ֡ ֢ ֣ ֤ ֥ ֦ ֧ ֨ ֩
++ ֪ ֫ ֬ ֭ ֮ ֯ ְ ֱ ֲ ֳ ִ ֵ ֶ ַ ָ ֹ
++ ֺ ֻ ּ ֽ ־ ֿ �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
++ �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
++ �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ ס ע ף פ ץ צ ק ר ש ת ׫ ׬
++ ׭ ׮ ׯ װ ױ ײ ׳ ״ ׵ ׶ ׷ ׸ ׹ ׺ ׻ ׼
++ ׽ ׾ ׿ �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
++ �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
++ �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
++ �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
++ �~ ء آ أ ؤ إ ئ ا ب ة ت ث ج ح خ د
++ ذ ر ز س ش ص ض ط ظ ع غ ػ ؼ ؽ ؾ ؿ
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
++ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
++ �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
++ �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
++ �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ١ ٢
++ ٣ ٤ ٥ ٦ ٧ ٨ ٩ ٪ ٫ ٬ ٭ ٮ ٯ ٰ ٱ ٲ
++ ٳ ٴ ٵ ٶ ٷ ٸ ٹ ٺ ٻ ټ ٽ پ ٿ �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
++ �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
++ �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
++ �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
++ �t �u �v �w �x �y �z �{ �| �} �~ ڡ ڢ ڣ ڤ ڥ
++ ڦ ڧ ڨ ک ڪ ګ ڬ ڭ ڮ گ ڰ ڱ ڲ ڳ ڴ ڵ
++ ڶ ڷ ڸ ڹ ں ڻ ڼ ڽ ھ ڿ �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
++ �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
++ �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
++ �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
++ �w �x �y �z �{ �| �} �~ ۡ ۢ ۣ ۤ ۥ ۦ ۧ ۨ
++ ۩ ۪ ۫ ۬ ۭ ۮ ۯ ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸
++ ۹ ۺ ۻ ۼ ۽ ۾ ۿ �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
++ �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
++ �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
++ �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
++ �z �{ �| �} �~ ܡ ܢ ܣ ܤ ܥ ܦ ܧ ܨ ܩ ܪ ܫ
++ ܬ ܭ ܮ ܯ ܰ ܱ ܲ ܳ ܴ ܵ ܶ ܷ ܸ ܹ ܺ ܻ
++ ܼ ܽ ܾ ܿ �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
++ �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
++ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
++ �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
++ �} �~ ݡ ݢ ݣ ݤ ݥ ݦ ݧ ݨ ݩ ݪ ݫ ݬ ݭ ݮ
++ ݯ ݰ ݱ ݲ ݳ ݴ ݵ ݶ ݷ ݸ ݹ ݺ ݻ ݼ ݽ ݾ
++ ݿ �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
++ �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
++ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
++ �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ ޡ
++ ޢ ޣ ޤ ޥ ަ ާ ި ީ ު ޫ ެ ޭ ޮ ޯ ް ޱ
++ ޲ ޳ ޴ ޵ ޶ ޷ ޸ ޹ ޺ ޻ ޼ ޽ ޾ ޿ �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
++ �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
++ �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
++ �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
++ �s �t �u �v �w �x �y �z �{ �| �} �~ ߡ ߢ ߣ ߤ
++ ߥ ߦ ߧ ߨ ߩ ߪ ߫ ߬ ߭ ߮ ߯ ߰ ߱ ߲ ߳ ߴ
++ ߵ ߶ ߷ ߸ ߹ ߺ ߻ ߼ ߽ ߾ ߿ �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
++ �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
++ �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
++ �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
++ �v �w �x �y �z �{ �| �} �~ � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
++ �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
++ �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
++ �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
++ �y �z �{ �| �} �~ � � � � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
++ �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
++ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
++ �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
++ �| �} �~ � � � � � � � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � � � � � � � � ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
++ �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
++ �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
++ �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
++ �r �s �t �u �v �w �x �y �z �{ �| �} �~ � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � � � � � �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
++ �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
++ �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
++ �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
++ �u �v �w �x �y �z �{ �| �} �~ � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � � �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
++ �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
++ �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
++ �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
++ �x �y �z �{ �| �} �~ � � � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � � �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
++ �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
++ �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ � � � � � � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
++ �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
++ �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
++ �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
++ �~ � � � � � � � � � � � � � � �
++ � � � � � � � � � � � � � � � �
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
++ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
++ �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
++ �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
++ �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ � �
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � � � � � � �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
++ �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
++ �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
++ �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s
++ �t �u �v �w �x �y �z �{ �| �} �~ � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � � � �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F
++ �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V
++ �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f
++ �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v
++ �w �x �y �z �{ �| �} �~ � � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � � � �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I
++ �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y
++ �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i
++ �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y
++ �z �{ �| �} �~ � � � � � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L
++ �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
++ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
++ �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
++ �} �~ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O
++ �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_
++ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o
++ �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � � � � � � � �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
++ �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R
++ �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
++ �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q �r
++ �s �t �u �v �w �x �y �z �{ �| �} �~ � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � � � � �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D �E
++ �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T �U
++ �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e
++ �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
++ �v �w �x �y �z �{ �| �} �~ � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G �H
++ �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W �X
++ �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h
++ �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w �x
++ �y �z �{ �| �} �~ � � � � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � � � � �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J �K
++ �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[
++ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k
++ �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{
++ �| �} �~ � � � � � � � � � � � � �
++ � � � � � � � � � � � � � � � �
++ � � �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M �N
++ �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^
++ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m �n
++ �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �} �~
++ � � � � � � � � � � � � � � � �
++ � � � � � � � � � � � � � � � ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
++ �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
++ �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a
++ �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p �q
++ �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C �D
++ �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S �T
++ �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d
++ �e �f �g �h �i �j �k �l �m �n �o �p �q �r �s �t
++ �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �@ �A �B �C �D �E �F �G
++ �H �I �J �K �L �M �N �O �P �Q �R �S �T �U �V �W
++ �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g
++ �h �i �j �k �l �m �n �o �p �q �r �s �t �u �v �w
++ �x �y �z �{ �| �} �~ �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
++ �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
++ �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �@ �A �B �C �D �E �F �G �H �I �J �K �L �M
++ �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �]
++ �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l �m
++ �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �| �}
++ �~ �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@
++ �A �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P
++ �Q �R �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �`
++ �a �b �c �d �e �f �g �h �i �j �k �l �m �n �o �p
++ �q �r �s �t �u �v �w �x �y �z �{ �| �} �~ �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B �C
++ �D �E �F �G �H �I �J �K �L �M �N �O �P �Q �R �S
++ �T �U �V �W �X �Y �Z �[ �\ �] �^ �` �a �b �c �d
++ �e �g �h �i �j �k �l �m �n �o �p �q �r �s �t �u
++ �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �@ �A �B �C �D �E �F �G �I �J �K �L
++ �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z �[ �\
++ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j �k �l
++ �m �n �o �p �q �r �s �t �u �v �w �x �y �z �{ �|
++ �} �~ �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A �B
++ �C �D �E �F �G �H �I �J �K �L �M �N �P �Q �R �S
++ �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b �c
++ �d �e �f �g �h �i �j �k �m �n �o �p �q �r �s �t
++ �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �@ �A �B �C �D �E �F �G �H �I �J
++ �K �L �M �N �O �P �Q �R �S �T �U �V �W �X �Y �Z
++ �[ �\ �] �^ �_ �` �a �b �c �d �e �f �g �h �i �j
++ �k �l �m �n �o �p �q �r �s �t �u �v �w �x �y �z
++ �{ �| �} �~ �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �@ �A
++ �B �C �D �E �F �G �H �I �J �K �L �M �N �O �P �Q
++ �S �T �U �V �W �X �Y �Z �[ �\ �] �^ �_ �` �a �b
++ �c �d �e �f �g �h �i �j �k �l �m �n �p �q �r �s
++ �t �u �v �w �x �y �z �{ �| �} �~ �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� ��
++ �� �� �� �� �� �� ��
+diff --git a/iconvdata/testdata/BIG5HKSCS..UTF8 b/iconvdata/testdata/BIG5HKSCS..UTF8
+index a3b5254..5fbde06 100644
+--- a/iconvdata/testdata/BIG5HKSCS..UTF8
++++ b/iconvdata/testdata/BIG5HKSCS..UTF8
+@@ -1,1135 +1,1154 @@
+-                
+-       Ā Á Ǎ À Ē É Ě È Ō Ó
+- Ǒ Ò  Ế  Ề Ê ā á ǎ à ɑ ē é ě è
+- ī í ǐ ì ō ó ǒ ò ū ú ǔ ù ǖ ǘ ǚ ǜ
+- ü  ế  ề ê ɡ   𪎩  攊 丽 滝 鵎 釟
+- 𧜵 撑 会 伨 侨 兖 兴 农 凤 务 动 医 华 发 变 团
+- 声 处 备 夲 头 学 实 実 岚 庆 总 斉 柾 栄 桥 济
+- 炼 电 纤 纬 纺 织 经 统 缆 缷 艺 苏 药 视 设 询
+- 车 轧 轮 琑 糼 緍 楆 竉 刧 醌 碸 酞 肼 贋 胶 
+- 肟 黇 䳍 鷉 鸌 䰾  𧀎 鸊  㗁 溚 舾 甙 䤑 马
+- 骏 龙 禇  𡷊 𠗐  两 亁 亀 亇 亿 仫 伷 㑌 侽
+- 㹈 倃 傈 㑽 㒓 㒥 円 夅 凛 凼 刅 争 剹 劐 匧 㗇
+- 厩 㕑 厰 㕓 参 吣 㕭 㕲 㚁 咓 咣 咴 咹 哐 哯 唘
+- 唣 唨 㖘 唿 㖥 㖿 嗗 㗅  唥 𠱂   喐 𢳆 㧬
+- 𠍁 蹆 𤶸  䁓 𨂾 睺  㨴 䟕  𦧲 𤷪 擝  𠾴
+- 𠳕 𡃴 撍 蹾     𨉖 𤓓 𠵆  𨃩 䟴  
+- 骲 㩧  㿭 㔆 𥋇    鵮 頕 䏙 𦂥 撴 哣 
+-  𡁷 㧻 𡁯    擪  𠱃 蹨 𢆡 𨭌  䠋 
+- 㿺 塳   𠓼    啹 䂻 䎺 䪴   膪 飵
+-  捹 㧾 𢝵 跀 嚡 摼 㹃  𠸉 𢫏  𡃈  㦒 㨆
+-  㕸  𢃇 噒 𠼱   㒼 氽      𨳍
+- 𠹺   羓  𢠃 𢤹 㗻 𥇣  𠾍 𠺪 㾓 𠼰 𠵇 
+-  𠺫  𠵈 𡃀 𡄽 㿹 𢚖 搲 𠾭 𣏴 𧘹 𢯎 𠵾 𠵿 𢱑
+- 𢱕 㨘  𡃇 𠼮  𦭐    閪 哌 苄 喹 𩻃 鰦
+- 骶 𧝞  煀 腭 胬 尜 𦕲 脴 㞗 卟 𨂽 醶 𠻺 𠸏 𠹷
+- 𠻻 㗝 𤷫 㘉 𠳖 嚯 𢞵 𡃉 𠸐 𠹸 𡁸 𡅈 𨈇 𡑕 𠹹 𤹐
+- 𢶤 婔 𡀝 𡀞 𡃵 𡃶 垜 𠸑 𧚔 𨋍 𠾵 𠹻 𥅾 㜃 𠾶 𡆀
+- 𥋘   𡠺   墙 剨 㘚  箲 孨 䠀 䬬 鼧 䧧
+- 鰟 鮍 𥭴 𣄽 嗻 㗲 嚉 丨 夂   靑  乛 亻 㔾
+- 尣 彑 忄 㣺 扌 攵 歺 氵 氺 灬 爫 丬 犭  罒 礻
+- 糹 罓  㓁  耂 肀   卝 衤 见  讠 贝 钅
+- 镸 长 门  韦 页 风 飞 饣  鱼 鸟 黄 歯 丷 
+- 阝 户 钢 崾 嵈 嵖 㷼 㠏 嶤 嶹 㠠 㠸 幂 庽 弥 徃
+- 㤈 㤔 㤿 㥍 惗 愽 峥 㦉 憷 憹 懏 㦸 戬 抐 拥 挘
+- 㧸 嚱 㨃 揢 揻 搇 摚 㩋 擀 崕 嘡 龟 㪗 斆 㪽 旿
+- 晓 㫲 暒 㬢 朖 㭂 枤 栀 㭘 桊 梄 㭲 㭱 㭻 椉 楃
+- 牜 楤 榟 榅 㮼 槖 㯝 橥 橴 橱 檂 㯬 檙 㯲 檫 檵
+- 櫔 櫶 殁 毁 毪 汵 沪 㳋 洂 洆 洦 涁 㳯 涤 涱 渕
+- 渘 温 溆 𨧀 溻 滢 滚 齿 滨 滩 漤 漴 㵆 𣽁 澁 澾
+- 㵪 㵵 熷 岙 㶊 瀬 㶑 灐 灔 灯 灿 炉 𠌥 䏁 㗱 
+-  垾 𦻓 焾 𥟠 㙎 榢 𨯩 孴 穉 𥣡 𩓙 穥 穽 𥦬 窻
+- 窰 竂 竃 燑  䇊 竚 竝 竪 䇯 咲 𥰁 笋 筕 笩 
+- 𥳾 箢 筯 莜 𥮴 𦱿 篐 萡 箒 𣿰 㶭 𥱥 蒒 篺 簵 𥳁
+- 籄 粃  粦 晽 𤕸 糉 糇 糦 籴 糳 糵 繧 䔝 𦹄 絝
+- 𦻖 璍 綉 綫 焵 綳 𤁗 𦀩 緤 㴓 緵 𡟹 緥  𦄡 𦅚
+- 繮 纒 䌫 鑬 縧 罀 罁 罇 礶 𦋐 駡 羗 𦍑 羣 𡙡 𠁨
+- 䕜 𣝦 䔃 𨌺 翺 𦒉 耈 耝 耯   耻 耼 聡  䦉
+- 𦘦  𦛨 朥 肧 𨩈 脇 脚 墰 𢛶 汿 𦒘  擧  舘
+- 𡡞 橓 𤩥 𤪕 䑺 舩  𦩒  俹 𡓽 蓢 荢 𦬊 𤦧 𣔰
+- 𡝳 𣷸 芪 椛 芳 䇛 蕋 苐 茚 𠸖 𡞴 㛁  𣕚 艻 苢
+- 茘 𣺋 𦶣  𦮗 𣗎 㶿 茝 嗬 莅 䔋 𦶥 莬 菓 㑾 𦻔
+- 橗 蕚 㒖 𦹂  葘  葱 㷓 䓤 檧 葊  祘 𦮖 𦹷
+- 𦹃 蓞 莑 䒠 蒓 蓤  䉀 𥳀 䕃 蔴 嫲  䔧 蕳 䔖
+- 枿 蘖 𨘥 𨘻 藁  蘂  𧃍  䕪 蘨 㙈 𡢢 号 𧎚
+- 虾 蝱 𪃸 蟮 𢰧 螱 蟚 蠏 噡 虬 桖 䘏 衅 衆 𧗠 𣶹
+- 𧗤 衞 袜 䙛 袴 袵 揁 装 睷 𧜏 覇 覊 覧 覼 𨨥 觧
+- 𧤤 𧪽 誜 瞓 釾 誐 𧩙 竩 𧬺  䜓 𧬸 煼 謌 謟 𥐰
+- 𥕥 謿 譌 譍 誩 𤩺 讐 讛 誯  䘕 衏 貛 𧵔 𧶏 貫
+- 㜥 𧵓 賖 𧶘 𧶽 贒 贃 𡤐 賛 灜 贑  㻐 趩 𨀂 
+- 𤦊 㭼  𧄌 竧 躭 躶 軃 鋔 輙 輭 𨍥 𨐒 辥 錃 𪊟
+- 𠩐 辳 䤪 𨧞 𨔽 𣶻 廸 𣉢 迹    𢌥 㦀 𦻗 逷
+- 𨔼 𧪾 遡 𨕬 𨘋 邨  郄 𨛦 邮 酧 㫰 醩 釄 粬 𨤳
+- 𡺉 鈎 沟 鉁 鉢 𥖹 𨫆 𣲛 𨬌 𥗛  錬 鍫 𨫡 𨯫 炏
+- 嫃 𨫢 𨫥 䥥 鉄 𨯬 𨰹 𨯿 鍳 鑛 躼 閅 閦 鐦 閠 濶
+- 䊹  𨛘 𡉼 𣸮 䧟 氜 陻 隖 䅬 隣 𦻕 懚 隶 磵 𨫠
+- 隽 双 䦡 𦲸 𠉴 𦐐 𩂯 𩃥 𤫑 𡤕 𣌊 霱 虂 霶 䨏 䔽
+- 䖅  灵 孁 霛  靗 孊 𩇫 靟 鐥 僐 𣂷 𣂼 鞉 鞟
+- 鞱 鞾 韀 韒 韠 𥑬 韮 琜 𩐳 韵 𩐝  䫑 頴 頳 顋
+- 顦 㬎 𧅵 㵑 𠘰 𤅜 𥜆 飊 颷 飈 飇 䫿 𦴧 𡛓 喰 飡
+- 飦 飬 鍸 餹 𤨩 䭲 𩡗 𩤅 駵 騌 騻 騐 驘 𥜥 㛄 𩂱
+- 𩯕 髠 髢 𩬅 髴 䰎 鬔 鬭 𨘀 倴 鬴 𦦨 㣃 𣁽 魐 魀
+- 𩴾 婅 𡡣 鮎 𤉋 鰂 鯿 鰌 𩹨 鷔 𩾷 𪆒  𪃡 𪄣 𪇟
+- 鵾 鶃  鸎 梈 鷄  𪆓 𪈠 𡤻 𪈳 鴹   麐 麕
+- 麞 麢 䴴 麪 麯 𤍤 黁 㭠 㧥 㴝 伲 㞾 𨰫 鼂 鼈 䮖
+- 鐤 𦶢 鼗 鼹 嚟 嚊 齅 馸 𩂋 韲 葿 齢 齩 竜 龎 爖
+- 䮾 𤥵 𤦻 煷 𤧸 𤍈 𤩑 玞 𨯚 𡣺 禟 𨥾 𨸶 鍩 鏳 𨩄
+- 鋬 鎁 鏋 𨥬 𤒹 爗 㻫 睲 穃 烐  𤏸 煾  炣 𡢾
+- 𣖙 㻇 𡢅 𥐯 𡟸 㜢 𡛻  㛡 𡝴  𥽋 㜣 𡛀 坛 𤨥
+- 𡏾  𡏆 𡒶 蔃 𣚦 葕  𧅥 𣸱 𥕜 𣻻 𧁒 䓴 𣛮 𩦝
+- 𦼦 柹 㜳 㰕 㷧 塬  栐 䁗 𣜿  𤂋  𦰡 哋 嚞
+- 𦚱 嚒  𠮨 𠸍 鏆  鎜 仸 儫 㠙 𤐶 亼 𠑥 𠍿 佋
+- 侊 𥙑 婨 𠆫 𠏋 㦙 𠌊 𠐔 㐵 伩 𠋀 𨺳 𠉵 諚  亘
+- 働 儍 侢 伃  𣺊 佂 倮 偬 傁 俌 俥 偘 僼 湶 𣖕
+-  𣺿 浲 𡢄 𣺉 冨 凃 𠗠 䓝 𠒣 𠒒 𠒑 赺 𨪜 𠜎 剙
+- 劤 𠡳 勡 䙺 熌 𤎌 𠰠 𤦬  槑 𠸝 㻞 璙 琔 瑖 玘
+- 䮎 𤪼 𤂍 叐 㖄 爏 𤃉 喴 𠍅 响 𠯆 圝 鉝 雴 鍦 埝
+- 垍 坿 㘾 壋 媙 𨩆 𡛺 𡝯 𡜐 娬 妸 銏 婾 嫏 娒 
+- 𡧳 𡡡  㛵 洅 瑃 娡 𥺃 媁 𨯗 𠐓 鏠 璌 𡌃 焅 䥲
+- 鐈 𨧻 鎽 㞠 尞 岞 幞 幈 𡦖 𡥼 𣫮 廍 孏 𡤃 𡤄 㜁
+- 𡢠 㛝 𡛾 㛓 脪 𨩇 𡶺 𣑲 𨦨 弌 弎 𡤧  婫 𡜻 孄
+- 蘔 𧗽 衠 恾 𢡠 𢘫 忛 㺸 𢖯 𢖾  𦽳 懀 𠀾 𠁆 𢘛
+- 憙 憘 恵 𢲛 𢴇 𤛔  摱 𤙥 𢭪 㨩 𢬢 𣑐 𩣪 𢹸 挷
+-  撶 挱 揑 𤧣 𢵧 护 𢲡 搻 敫 楲 㯴 𣂎 𣊭 𤦉 𣊫
+- 唍 𣋠 𡣙  曎 𣊉  㫠 䆐 𥖄 𨬢 𥖏 𡛼 𥕛 𥐥 磮
+- 𣄃 𡠪 𣈴 㑤  𣆂 𤋉 暎 𦴤 晫 䮓 昰 𧡰  晣 𣋒
+- 𣋡 昞 𥡲 㣑  𣞼 㮙 𣞢 𣏾 瓐 㮖 枏 𤘪 梶 栞 㯄
+- 檾 㡣 𣟕 𤒇 樳 橒 櫉 欅 𡤒 攑 梘 橌 㯗 橺 歗 𣿀
+- 𣲚 鎠 鋲 𨯪 𨫋 銉  𨧜 鑧 涥 漋  𣽿 㶏 渄 𤀼
+- 娽 渊 塇 洤 硂 焻 𤌚 𤉶 烱 牐 犇 犔 𤞏 𤜥 兹 𤪤
+- 𠗫 瑺 𣻸   𤤗 𥿡 㼆 㺱 𤫟 𨰣 𣼵 悧 㻳 瓌 琼
+- 鎇 琷 䒟 𦷪 䕑 疃 㽣 𤳙 𤴆 㽘 畕 癳 𪗆 㬙 瑨 𨫌
+- 𤦫 𤦎 㫻 㷍 𤩎 㻿  𤣳 釺 圲 鍂 𨫣 𡡤 僟 𥈡 𥇧
+- 睸 𣈲 眎 眏 睻 𤚗 𣞁 㩞  琸 璛 㺿 𤪺 𤫇 䃈 𤪖
+- 𦆮 錇 𥖁 砞 碍 碈 磒 珐 祙 𧝁  䄎 蒖 禥 樭 𣻺
+- 稺 秴 䅮 𡛦 䄲 鈵 秱 𠵌 𤦌 𠊙 𣶺 𡝮 㖗 啫 㕰 㚪
+- 𠇔  竢 婙 𢛵  𥪜 娍 𠉛 磰 娪 𥯆 竾 䇹 籝 籭
+- 䈑 𥮳 𥺼 𥺦 糍 𤧹  粎 籼 粮 檲 緜 縇 緓 罎 𦉡
+- 𦅜  綗 𥺂 䉪  𠤖 柖 𠁎 𣗏 埄 𦐒  𤥢 翝 笧
+- 𠠬 𥫩 𥵃 笌 𥸎 駦 虅 驣 樜  㧢 𤧷 𦖭 騟  蒀
+- 𧄧  䓪 脷 䐂 胆 脉 腂 𦞴 飃 𦩂 艢 艥 𦩑 葓 𦶧
+- 蘐 𧈛 媆 䅿  嬫 𡢡 嫤 𡣘 蚠  蠭 𧐢 娂 衮
+- 佅 袇 袿 裦 襥 襍 𥚃 襔 𧞅 𧞄  𨯙 𨮜 𨧹 㺭 蒣
+- 䛵 䛏 㟲 訽 訜 𩑈 彍 鈫  旔 焩 烄 𡡅 鵭 貟 賩
+- 𧷜 妚 矃 姰 䍮 㛔 踪 躧 𤰉 輰 轊 䋴 汘 澻 𢌡 䢛
+- 潹 溋 𡟚 鯩 㚵 𤤯 邻 啱 䤆 醻 鐄 𨩋 䁢  鐧 𨰝
+-  蓥 訫 閙 閧 閗 閖 𨴴 瑅 㻂 𤣿   㻧 𣈥 随
+-  𨹦 𨹥 㻌  𤩸 𣿮 琒 瑫 㻼 靁 𩂰 桇 䨝  
+- 鍨 𨦉  𨬯 𦎾 銺 嬑 譩 䤼 珹 𤈛 鞛 靱 餸  巁
+- 𨯅 𤪲 頟 𩓚 鋶  釥 䓀 𨭐 𤩧 𨭤 飜 𨩅 㼀 鈪 䤥
+- 萔 餻 饍  㷽 馛 䭯 馪 驜 𨭥  檏 騡 嫾 騯 
+- 䮐  馼 䮽 䮗 鍽 塲 𡌂 堢 𤦸 𡓨 硄 𢜟 𣶸 棅 㵽
+- 鑘 㤧 慐 𢞁 𢥫 愇 鱏 鱓 鱻 鰵 鰐 魿 鯏 𩸭 鮟 
+- 𪃾 鴡 䲮 𤄄 鸘 䲰 鴌   𪃳 𩤯 鶥 蒽  𦿟 
+- 藼 䔳 𦶤 𦺄 𦷰 萠 藮  𣟗 𦁤 秢 𣖜 𣙀 䤭 𤧞 㵢
+- 鏛 銾 鍈 𠊿 碹 鉷 鑍 俤 㑀 遤 𥕝 砽 硔 碶 硋 𡝗
+- 𣇉 𤥁 㚚 佲 濚 濙 瀞 吔  垻 壳 垊 鴖 埗 焴 㒯
+-  燫  𤾗 𡞵 𨩉 愌 嫎 娋 䊼 𤒈 㜬 䭻 𨧼 鎻 鎸
+- 𡣖  葲 𦳀  𤋺 𢰦 𤏁 妔 𣶷 𦝁 綨 𦅛 𦂤 𤦹 𤦋
+- 𨧺 鋥 珢 㻩 璴 𨭣 𡢟 㻡 𤪳 櫘 珳 珻 㻖 𤨾 𤪔 𡟙
+- 𤩦 𠎧   瑈 𤤖 炥 𤥶 銄 珦 鍟 𠓾 錱  𨨖 鎆
+- 𨯧 𥗕 䤵 𨪂 煫   嚤 𠘚   唂 秄 𡟺 緾 𡛂
+- 𤩐  䔮 鐁 㜊  𤦭 妰 𡢿 𡢃 𧒄 媡 㛢 𣵛 㚰 鉟
+- 婹 𨪁 𡡢 鍴 㳍 𠪴 䪖 㦊 僴 㵩 㵌 𡎜 煵 䋻  渏
+- 𩃤 䓫 浗 𧹏 灧 沯 㳖 𣿭 𣸭 渂 漌 㵯 𠏵 畑 㚼 㓈
+- 䚀 㻚 䡱 姄 鉮 䤾 轁   堒 埈 㛖 𡑒 烾 𤍢 
+- 𢿣 𡊰 𢎽 梹 楧  𣓥 𧯴 𣛟 𨪃 𣟖  𤲟 樚 𣚭 𦲷
+- 萾 䓟 䓎 𦴦  𦲂 𦿞 漗 𧄉 茽 𡜺 菭 𦲀 𧁓 𡟛 妉
+- 媂 𡞳 婡 婱 𡤅 𤇼 㜭 姯 𡜼 㛇 熎 鎐 暚 𤊥 婮 娫
+-  樫 𣻹 𧜶 𤑛 𤋊 焝 𤉙 𨧡 侰 𦴨 峂 𤓎 𧹍 𤎽 樌
+- 𤉖 𡌄 炦 焳 𤏩 㶥 泟  𤩏 繥 姫 崯 㷳 彜  
+- 綤 萦 咅  𣌀 𠈔 坾  𠘙 㿥   瀃  嵰 玏
+- 糓 𨩙  俈 翧 狍 猐 𧫴 猸 猹 𥛶 獁 獈 㺩 𧬘 遬
+- 燵  珡 臶 㻊 県 㻑 沢 国 琙 琞 琟 㻢 㻰 㻴 㻺
+- 瓓 㼎 㽓 畂 畭 畲 疍 㽼 痈 痜 㿀 癍 㿗 癴 㿜 発
+- 𤽜 熈 嘣 覀 塩 䀝 睃 䀹 条 䁅 㗛 瞘 䁪 䁯 属 瞾
+- 矋 売 砘 点 砜 䂨 砹 硇 硑 硦 葈  礳 栃 礲 䄃
+- 䄉 禑 禙 辻 稆 込 䅧 窑 䆲 窼 艹 䇄 竏 竛 䇏 両
+- 筢 筬 筻 簒 簛 䉠 䉺 类 粜 䊌 粸 䊔 糭 输 烀 𠳏
+- 総 緔 緐 緽 羮 羴 犟 䎗 耠 耥 笹 耮 耱 联 㷌 垴
+- 炠 肷 胩 䏭 脌 猪 脎 脒 畠 脔 䐁 㬹 腖 腙 腚 䐓
+- 堺 腼 膄 䐥 膓 䐭 膥 埯 臁 臤 艔 䒏 芦 艶 苊 苘
+- 苿 䒰 荗 险 榊 萅 烵 葤 惣 蒈 䔄 蒾 蓡 蓸 蔐 蔸
+- 蕒 䔻 蕯 蕰 藠 䕷 虲 蚒 蚲 蛯 际 螋 䘆 䘗 袮 裿
+- 褤 襇 覑 𧥧 訩 訸 誔 誴 豑 賔 賲 贜 䞘 塟 跃 䟭
+- 仮 踺 嗘 坔 蹱 嗵 躰 䠷 軎 転 軤 軭 軲 辷 迁 迊
+- 迌 逳 駄 䢭 飠 鈓 䤞 鈨 鉘 鉫 銱 銮 銿 鋣 鋫 鋳
+- 鋴 鋽 鍃 鎄 鎭 䥅 䥑 麿 鐗 匁 鐝 鐭 鐾 䥪 鑔 鑹
+- 锭 関 䦧 间 阳 䧥 枠 䨤 靀 䨵 鞲 韂 噔 䫤 惨 颹
+- 䬙 飱 塄 餎 餙 冴 餜 餷 饂 饝 饢 䭰 駅 䮝 騼 鬏
+- 窃 魩 鮁 鯝 鯱 鯴 䱭 鰠 㝯  鵉 鰺 黾 噐 鶓 鶽
+- 鷀 鷼 银 辶 鹻 麬 麱 麽 黆 铜 黢 黱 黸 竈 齄 
+-   椚 铃 妬  塀 铁 㞹     块 煳 
+-   呪   咞   𠱓   惧  噺  
+-     楕 鰯 螥  𠸎   𠼭  尠  帋
+-   𡁶 朞 𡁻   㙇     卤 蒭 𡋣 
+-  讁     乸 炻        
+- 拃 𡻕  熘 桕  槩 㛈 𢉼      苽 
+-  𢫕 覥  辠  鞸  顇 骽     𢴈 
+-          徱 晈 暿    𤦺
+-   𠍆 墵 朎 椘  𧙗 𥿢   𧗾 𢂚 䣐 䪸 
+- 𨪚   𤀻  𤎖   凒 𠘑 妟 𡺨 㮾 𣳿  
+- 垈  㦛    㝢 𢇃 譞 𨭎    爉  𠱸
+- 奥   𠝹 軚  劏 圿 煱    𤪧 喼  𥑮
+- 𦭒 㑳  𧘲  䜘  𥕦 𥟇 𤤿  偦 㓻   䝼
+- 𨥈 𥪮  𥰆  垡 煑  𧰒 遖  𤾚 譢   嵛
+- 𦯷   諪 𤧶  𣿯 𦔒 䯀   𢜛 鑥 𥟡 憕 娧
+- 晉 嚹 𤔡  乪  陖 涏 𦲽 㘘 襷  𦡮 𦐑 𦡞 
+- 筂  𠨑   穅 𦧺 騦  㙟   禃   崬
+-   䛐  画 补  墶 㜜 𢖍   㱔   銁
+- 𢅺  錰 𧋦  氹 钟  𠻸 蠧 裵   𡞱 溸 𤨪
+-  㦤 㚹 䔿 暶 𩲭 𩢤 襃   囖 䃟 𡘊 㦡 𣜯 
+- 𡏅 熭 荦  𩆨 䲷 𧂯 𨦫     𤅺 筃 祾 𨀉
+- 澵 𪋟 樃  厢  鎿 栶 靝 𨅯  𦦵 𡏭 𣈯  嶅
+- 𨰰  圕 頣 𨥉 嶫 𤦈 斾 槕 叒 𤪥 𣾁 㰑 朶  𨃴
+- 𨄮 𡾡        㗊  𨚪 䣺 揦  砈
+- 鉕  䏲  䏟    姸    𩄐  㷷 
+-  运 犏 嚋  𩗩      𩥪   𩬎 
+-  纟  𩼣 䲤 镇  熢  䶑 递  䶜 𠲜 达 嗁
+- 辺  边 𤪓 䔉 繿 潖 檱 仪 㓤 𨬬  㜺 躀 𡟵 
+- 𨭬 𨮙  𦚯 㷫 𧙕 𣲷 𥘵 𥥖 亚 𥺁 𦉘 嚿 𠹭 踎 孭
+- 𣺈 𤲞 揞 𡟶 𡡻 攰 嘭 𥱊 吚 𥌑 㷆  䱽 嘢 嘞 罉
+- 𥻘 奵  蝰 东 𠿪 𠵉 𣚺 脗 鵞 贘 瘻 鱅 癎 瞹 鍅
+- 吲 腈 苷 嘥 脲 萘 肽 嗪 祢 噃 吖  㗎 嘅 嗱 曱
+- 𨋢 㘭 甴 嗰 喺 咗 啲 𠱁  廐 𥅈 𠹶   麫 絚
+- 嗞 𡁵 抝 靭 咔 賍 燶 酶 揼 掹 揾 啩  鱲  冚
+- 㓟 𠶧 冧 呍 唞 唓 癦 踭  疱 肶 蠄 螆 裇 膶 萜
+- 𡃁 䓬 猄 𤜆 宐 茋 𦢓 噻 𢛴 𧴯 𤆣 𧵳 𦻐  酰 𡇙
+- 鈈 𣳼 𪚩 𠺬 𠻹 牦 𡲢 䝎 𤿂  𠿫 䃺 鱝 攟 𢶠 䣳
+-  𩵼 𠿬 𠸊  𠿭  𡆇 熣 纎 鵐 业 丄 㕷 嬍 沲
+- 卧 㚬 㧜 卽 㚥  墚 𤭮 舭 呋 垪  𠥹 㩒 𢑥 獴
+- 𩺬 䴉 鯭 𣳾 𩼰 䱛 𤾩 𩖞  葜 𣶶  𦞳 𣜠 挮 紥
+- 𣻷 𣸬 㨪 逈 勌 㹴 㙺 䗩  癀 嫰 𠺶 硺 䞶 墧 䂿
+- 噼 鮋 嵴 癔  麅 䳡 㟻 愙 𣃚 𤏲 噝 𡊩 垧 𤥣 
+- 刴 𧂮 㖭 鵼 籖 鬹 埞 𡝬 屓 擓   𧅤 蚭  𦴢
+- 𤫢  凾  嶎 霃 𡷑 麁 遌 笟 鬂 峑 箣 扨 挵 髿
+- 篏 鬪 籾 籂 粆 鰕 篼 鬉 鰛 𤤾 齚 啳 寃 俽 麘 俲
+- 剠 㸆 勑 坧 偖 妷 帒 韈 鶫 轜 呩 鞴 饀 鞺 匬 愰
+- 椬 叚 鰊 鴂 䰻 陁 榀 傦 畆 𡝭 駚 剳 酙 隁 酜 酑
+-  捿 𦴣 櫊 嘑 醎 畺 抅 𠏼 獏 籰  𣳽 𤤙 盖 鮝
+- 个 𠳔 莾 衂 届 槀 坺 刟 巵 从 氱  伹 咜 哚 劚
+- 趂 㗾 㗳 歒 酼 龥 鮗 頮 颴 骺 麨 麄 煺 笔 毺 蠘
+- 罸 嘠  蹷 齓 跔 蹏 鸜 踁 抂 𨍽 踨 蹵 竓 𤩷 稾
+- 磘 泪 詧 瘇 𨩚 鼦 泎 蟖 痃 𪊲 硓 咢 贌 狢 獱 謭
+- 猂 瓱 賫 𤪻 蘯 徺 袠 䒷 𡠻 𦸅 詾 𢔛 惽 癧 髗 鵄
+- 鍮 鮏 蟵 賷 猬 霡 鮰 㗖 犲 䰇 籑 饊 𦅙 慙 䰄 麖
+- 慽 坟 慯 抦 戹 㩜 懢 厪 𣏵 捤 栂 㗒 嵗 𨯂 迚 
+- 僙 𡵆 礆 匲 阸 𠼻 䁥 矾 糂  糚 稭 聦 聣 絍 甅
+- 瓲 覔 舚 朌 聢 𧒆 聛 瓰 脃 眤 覉 𦟌 畓 𦻑 螩 蟎
+- 臈 螌 詉 貭 譃 眫 瓸 蓚 㘵 榲 趦 覩 涹 蟁 𤀑 瓧
+- 㷛 煶 悤 憜 㳑 恷 罱 𨬭 惩 䭾 删 㰘 𣳇 𥻗 𧙖 
+- 𡥄 𡋾 𩤃 𦷜 𧂭 峁 𦆭 𨨏 𣙷 𠃮  𤼎 䕢 嬟  齐
+- 麦    , 、 。 . • ; : ? ! ︰ … ‥ ﹐
+- 、 ﹒ · ﹔ ﹕ ﹖ ﹗ | – ︱ — ︳ ︴ ﹏ ( )
+- ︵ ︶ { } ︷ ︸ 〔 〕 ︹ ︺ 【 】 ︻ ︼ 《 》
+- ︽ ︾ 〈 〉 ︿ ﹀ 「 」 ﹁ ﹂ 『 』 ﹃ ﹄ ﹙ ﹚
+- ﹛ ﹜ ﹝ ﹞ ‘ ’ “ ” 〝 〞 ‵ ′ # & * ※
+- § 〃 ○ ● △ ▲ ◎ ☆ ★ ◇ ◆ □ ■ ▽ ▼ ㊣
+- ℅ ‾ _ ﹉ ﹊ ﹍ ﹎ ﹋ ﹌ ﹟ ﹠ ﹡ + - × ÷
+- ± √ < > = ≦ ≧ ≠ ∞ ≒ ≡ ﹢ ﹣ ﹤ ﹥ ﹦
+- ∼ ∩ ∪ ⊥ ∠ ∟ ⊿ ㏒ ㏑ ∫ ∮ ∵ ∴ ♀ ♂ ♁
+- ☉ ↑ ↓ ← → ↖ ↗ ↙ ↘ ∥ ∣ / \ $ ¥ 〒
+- ¢ £ % @ ℃ ℉ ﹩ ﹪ ﹫ ㏕ ㎜ ㎝ ㎞ ㏎ ㎡ ㎎
+- ㎏ ㏄ ° 兙 兛 兞 兝 兡 兣 嗧 瓩 糎 ▁ ▂ ▃ ▄
+- ▅ ▆ ▇ █ ▏ ▎ ▍ ▌ ▋ ▊ ▉ ┼ ┴ ┬ ┤ ├
+- ▔ ─ │ ▕ ┌ ┐ └ ┘ ◢ ◣ ◥ ◤ ╱ ╲ ╳ 0
+- 1 2 3 4 5 6 7 8 9 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ
+- Ⅷ Ⅸ Ⅹ 〡 〢 〣 〤 〥 〦 〧 〨 〩 卄 A B C
+- D E F G H I J K L M N O P Q R S
+- T U V W X Y Z a b c d e f g h i
+- j k l m n o p q r s t u v w x y
+- z Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο
+- Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η
+- θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ
+- ω ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ ㄐ ㄑ ㄒ ㄓ
+- ㄔ ㄕ ㄖ ㄗ ㄘ ㄙ ㄚ ㄛ ㄜ ㄝ ㄞ ㄟ ㄠ ㄡ ㄢ ㄣ
+- ㄤ ㄥ ㄦ ㄧ ㄨ ㄩ ˙ ˉ ˊ ˇ ˋ 一 乙 丁 七 乃
+- 九 了 二 人 儿 入 八 几 刀 刁 力 匕 十 卜 又 三
+- 下 丈 上 丫 丸 凡 久 么 也 乞 于 亡 兀 刃 勺 千
+- 叉 口 土 士 夕 大 女 子 孑 孓 寸 小 尢 尸 山 川
+- 工 己 已 巳 巾 干 廾 弋 弓 才 丑 丐 不 中 丰 丹
+- 之 尹 予 云 井 互 五 亢 仁 什 仃 仆 仇 仍 今 介
+- 仄 元 允 內 六 兮 公 冗 凶 分 切 刈 勻 勾 勿 化
+- 匹 午 升 卅 卞 厄 友 及 反 壬 天 夫 太 夭 孔 少
+- 尤 尺 屯 巴 幻 廿 弔 引 心 戈 戶 手 扎 支 文 斗
+- 斤 方 日 曰 月 木 欠 止 歹 毋 比 毛 氏 水 火 爪
+- 父 爻 片 牙 牛 犬 王 丙 世 丕 且 丘 主 乍 乏 乎
+- 以 付 仔 仕 他 仗 代 令 仙 仞 充 兄 冉 冊 冬 凹
+- 出 凸 刊 加 功 包 匆 北 匝 仟 半 卉 卡 占 卯 卮
+- 去 可 古 右 召 叮 叩 叨 叼 司 叵 叫 另 只 史 叱
+- 台 句 叭 叻 四 囚 外 央 失 奴 奶 孕 它 尼 巨 巧
+- 左 市 布 平 幼 弁 弘 弗 必 戊 打 扔 扒 扑 斥 旦
+- 朮 本 未 末 札 正 母 民 氐 永 汁 汀 氾 犯 玄 玉
+- 瓜 瓦 甘 生 用 甩 田 由 甲 申 疋 白 皮 皿 目 矛
+- 矢 石 示 禾 穴 立 丞 丟 乒 乓 乩 亙 交 亦 亥 仿
+- 伉 伙 伊 伕 伍 伐 休 伏 仲 件 任 仰 仳 份 企 伋
+- 光 兇 兆 先 全 共 再 冰 列 刑 划 刎 刖 劣 匈 匡
+- 匠 印 危 吉 吏 同 吊 吐 吁 吋 各 向 名 合 吃 后
+- 吆 吒 因 回 囝 圳 地 在 圭 圬 圯 圩 夙 多 夷 夸
+- 妄 奸 妃 好 她 如 妁 字 存 宇 守 宅 安 寺 尖 屹
+- 州 帆 并 年 式 弛 忙 忖 戎 戌 戍 成 扣 扛 托 收
+- 早 旨 旬 旭 曲 曳 有 朽 朴 朱 朵 次 此 死 氖 汝
+- 汗 汙 江 池 汐 汕 污 汛 汍 汎 灰 牟 牝 百 竹 米
+- 糸 缶 羊 羽 老 考 而 耒 耳 聿 肉 肋 肌 臣 自 至
+- 臼 舌 舛 舟 艮 色 艾 虫 血 行 衣 西 阡 串 亨 位
+- 住 佇 佗 佞 伴 佛 何 估 佐 佑 伽 伺 伸 佃 佔 似
+- 但 佣 作 你 伯 低 伶 余 佝 佈 佚 兌 克 免 兵 冶
+- 冷 別 判 利 刪 刨 劫 助 努 劬 匣 即 卵 吝 吭 吞
+- 吾 否 呎 吧 呆 呃 吳 呈 呂 君 吩 告 吹 吻 吸 吮
+- 吵 吶 吠 吼 呀 吱 含 吟 听 囪 困 囤 囫 坊 坑 址
+- 坍 均 坎 圾 坐 坏 圻 壯 夾 妝 妒 妨 妞 妣 妙 妖
+- 妍 妤 妓 妊 妥 孝 孜 孚 孛 完 宋 宏 尬 局 屁 尿
+- 尾 岐 岑 岔 岌 巫 希 序 庇 床 廷 弄 弟 彤 形 彷
+- 役 忘 忌 志 忍 忱 快 忸 忪 戒 我 抄 抗 抖 技 扶
+- 抉 扭 把 扼 找 批 扳 抒 扯 折 扮 投 抓 抑 抆 改
+- 攻 攸 旱 更 束 李 杏 材 村 杜 杖 杞 杉 杆 杠 杓
+- 杗 步 每 求 汞 沙 沁 沈 沉 沅 沛 汪 決 沐 汰 沌
+- 汨 沖 沒 汽 沃 汲 汾 汴 沆 汶 沍 沔 沘 沂 灶 灼
+- 災 灸 牢 牡 牠 狄 狂 玖 甬 甫 男 甸 皂 盯 矣 私
+- 秀 禿 究 系 罕 肖 肓 肝 肘 肛 肚 育 良 芒 芋 芍
+- 見 角 言 谷 豆 豕 貝 赤 走 足 身 車 辛 辰 迂 迆
+- 迅 迄 巡 邑 邢 邪 邦 那 酉 釆 里 防 阮 阱 阪 阬
+- 並 乖 乳 事 些 亞 享 京 佯 依 侍 佳 使 佬 供 例
+- 來 侃 佰 併 侈 佩 佻 侖 佾 侏 侑 佺 兔 兒 兕 兩
+- 具 其 典 冽 函 刻 券 刷 刺 到 刮 制 剁 劾 劻 卒
+- 協 卓 卑 卦 卷 卸 卹 取 叔 受 味 呵 咖 呸 咕 咀
+- 呻 呷 咄 咒 咆 呼 咐 呱 呶 和 咚 呢 周 咋 命 咎
+- 固 垃 坷 坪 坩 坡 坦 坤 坼 夜 奉 奇 奈 奄 奔 妾
+- 妻 委 妹 妮 姑 姆 姐 姍 始 姓 姊 妯 妳 姒 姅 孟
+- 孤 季 宗 定 官 宜 宙 宛 尚 屈 居 屆 岷 岡 岸 岩
+- 岫 岱 岳 帘 帚 帖 帕 帛 帑 幸 庚 店 府 底 庖 延
+- 弦 弧 弩 往 征 彿 彼 忝 忠 忽 念 忿 怏 怔 怯 怵
+- 怖 怪 怕 怡 性 怩 怫 怛 或 戕 房 戾 所 承 拉 拌
+- 拄 抿 拂 抹 拒 招 披 拓 拔 拋 拈 抨 抽 押 拐 拙
+- 拇 拍 抵 拚 抱 拘 拖 拗 拆 抬 拎 放 斧 於 旺 昔
+- 易 昌 昆 昂 明 昀 昏 昕 昊 昇 服 朋 杭 枋 枕 東
+- 果 杳 杷 枇 枝 林 杯 杰 板 枉 松 析 杵 枚 枓 杼
+- 杪 杲 欣 武 歧 歿 氓 氛 泣 注 泳 沱 泌 泥 河 沽
+- 沾 沼 波 沫 法 泓 沸 泄 油 況 沮 泗 泅 泱 沿 治
+- 泡 泛 泊 沬 泯 泜 泖 泠 炕 炎 炒 炊 炙 爬 爭 爸
+- 版 牧 物 狀 狎 狙 狗 狐 玩 玨 玟 玫 玥 甽 疝 疙
+- 疚 的 盂 盲 直 知 矽 社 祀 祁 秉 秈 空 穹 竺 糾
+- 罔 羌 羋 者 肺 肥 肢 肱 股 肫 肩 肴 肪 肯 臥 臾
+- 舍 芳 芝 芙 芭 芽 芟 芹 花 芬 芥 芯 芸 芣 芰 芾
+- 芷 虎 虱 初 表 軋 迎 返 近 邵 邸 邱 邶 采 金 長
+- 門 阜 陀 阿 阻 附 陂 隹 雨 青 非 亟 亭 亮 信 侵
+- 侯 便 俠 俑 俏 保 促 侶 俘 俟 俊 俗 侮 俐 俄 係
+- 俚 俎 俞 侷 兗 冒 冑 冠 剎 剃 削 前 剌 剋 則 勇
+- 勉 勃 勁 匍 南 卻 厚 叛 咬 哀 咨 哎 哉 咸 咦 咳
+- 哇 哂 咽 咪 品 哄 哈 咯 咫 咱 咻 咩 咧 咿 囿 垂
+- 型 垠 垣 垢 城 垮 垓 奕 契 奏 奎 奐 姜 姘 姿 姣
+- 姨 娃 姥 姪 姚 姦 威 姻 孩 宣 宦 室 客 宥 封 屎
+- 屏 屍 屋 峙 峒 巷 帝 帥 帟 幽 庠 度 建 弈 弭 彥
+- 很 待 徊 律 徇 後 徉 怒 思 怠 急 怎 怨 恍 恰 恨
+- 恢 恆 恃 恬 恫 恪 恤 扁 拜 挖 按 拼 拭 持 拮 拽
+- 指 拱 拷 拯 括 拾 拴 挑 挂 政 故 斫 施 既 春 昭
+- 映 昧 是 星 昨 昱 昤 曷 柿 染 柱 柔 某 柬 架 枯
+- 柵 柩 柯 柄 柑 枴 柚 查 枸 柏 柞 柳 枰 柙 柢 柝
+- 柒 歪 殃 殆 段 毒 毗 氟 泉 洋 洲 洪 流 津 洌 洱
+- 洞 洗 活 洽 派 洶 洛 泵 洹 洧 洸 洩 洮 洵 洎 洫
+- 炫 為 炳 炬 炯 炭 炸 炮 炤 爰 牲 牯 牴 狩 狠 狡
+- 玷 珊 玻 玲 珍 珀 玳 甚 甭 畏 界 畎 畋 疫 疤 疥
+- 疢 疣 癸 皆 皇 皈 盈 盆 盃 盅 省 盹 相 眉 看 盾
+- 盼 眇 矜 砂 研 砌 砍 祆 祉 祈 祇 禹 禺 科 秒 秋
+- 穿 突 竿 竽 籽 紂 紅 紀 紉 紇 約 紆 缸 美 羿 耄
+- 耐 耍 耑 耶 胖 胥 胚 胃 胄 背 胡 胛 胎 胞 胤 胝
+- 致 舢 苧 范 茅 苣 苛 苦 茄 若 茂 茉 苒 苗 英 茁
+- 苜 苔 苑 苞 苓 苟 苯 茆 虐 虹 虻 虺 衍 衫 要 觔
+- 計 訂 訃 貞 負 赴 赳 趴 軍 軌 述 迦 迢 迪 迥 迭
+- 迫 迤 迨 郊 郎 郁 郃 酋 酊 重 閂 限 陋 陌 降 面
+- 革 韋 韭 音 頁 風 飛 食 首 香 乘 亳 倌 倍 倣 俯
+- 倦 倥 俸 倩 倖 倆 值 借 倚 倒 們 俺 倀 倔 倨 俱
+- 倡 個 候 倘 俳 修 倭 倪 俾 倫 倉 兼 冤 冥 冢 凍
+- 凌 准 凋 剖 剜 剔 剛 剝 匪 卿 原 厝 叟 哨 唐 唁
+- 唷 哼 哥 哲 唆 哺 唔 哩 哭 員 唉 哮 哪 哦 唧 唇
+- 哽 唏 圃 圄 埂 埔 埋 埃 堉 夏 套 奘 奚 娑 娘 娜
+- 娟 娛 娓 姬 娠 娣 娩 娥 娌 娉 孫 屘 宰 害 家 宴
+- 宮 宵 容 宸 射 屑 展 屐 峭 峽 峻 峪 峨 峰 島 崁
+- 峴 差 席 師 庫 庭 座 弱 徒 徑 徐 恙 恣 恥 恐 恕
+- 恭 恩 息 悄 悟 悚 悍 悔 悌 悅 悖 扇 拳 挈 拿 捎
+- 挾 振 捕 捂 捆 捏 捉 挺 捐 挽 挪 挫 挨 捍 捌 效
+- 敉 料 旁 旅 時 晉 晏 晃 晒 晌 晅 晁 書 朔 朕 朗
+- 校 核 案 框 桓 根 桂 桔 栩 梳 栗 桌 桑 栽 柴 桐
+- 桀 格 桃 株 桅 栓 栘 桁 殊 殉 殷 氣 氧 氨 氦 氤
+- 泰 浪 涕 消 涇 浦 浸 海 浙 涓 浬 涉 浮 浚 浴 浩
+- 涌 涊 浹 涅 浥 涔 烊 烘 烤 烙 烈 烏 爹 特 狼 狹
+- 狽 狸 狷 玆 班 琉 珮 珠 珪 珞 畔 畝 畜 畚 留 疾
+- 病 症 疲 疳 疽 疼 疹 痂 疸 皋 皰 益 盍 盎 眩 真
+- 眠 眨 矩 砰 砧 砸 砝 破 砷 砥 砭 砠 砟 砲 祕 祐
+- 祠 祟 祖 神 祝 祗 祚 秤 秣 秧 租 秦 秩 秘 窄 窈
+- 站 笆 笑 粉 紡 紗 紋 紊 素 索 純 紐 紕 級 紜 納
+- 紙 紛 缺 罟 羔 翅 翁 耆 耘 耕 耙 耗 耽 耿 胱 脂
+- 胰 脅 胭 胴 脆 胸 胳 脈 能 脊 胼 胯 臭 臬 舀 舐
+- 航 舫 舨 般 芻 茫 荒 荔 荊 茸 荐 草 茵 茴 荏 茲
+- 茹 茶 茗 荀 茱 茨 荃 虔 蚊 蚪 蚓 蚤 蚩 蚌 蚣 蚜
+- 衰 衷 袁 袂 衽 衹 記 訐 討 訌 訕 訊 託 訓 訖 訏
+- 訑 豈 豺 豹 財 貢 起 躬 軒 軔 軏 辱 送 逆 迷 退
+- 迺 迴 逃 追 逅 迸 邕 郡 郝 郢 酒 配 酌 釘 針 釗
+- 釜 釙 閃 院 陣 陡 陛 陝 除 陘 陞 隻 飢 馬 骨 高
+- 鬥 鬲 鬼 乾 偺 偽 停 假 偃 偌 做 偉 健 偶 偎 偕
+- 偵 側 偷 偏 倏 偯 偭 兜 冕 凰 剪 副 勒 務 勘 動
+- 匐 匏 匙 匿 區 匾 參 曼 商 啪 啦 啄 啞 啡 啃 啊
+- 唱 啖 問 啕 唯 啤 唸 售 啜 唬 啣 唳 啁 啗 圈 國
+- 圉 域 堅 堊 堆 埠 埤 基 堂 堵 執 培 夠 奢 娶 婁
+- 婉 婦 婪 婀 娼 婢 婚 婆 婊 孰 寇 寅 寄 寂 宿 密
+- 尉 專 將 屠 屜 屝 崇 崆 崎 崛 崖 崢 崑 崩 崔 崙
+- 崤 崧 崗 巢 常 帶 帳 帷 康 庸 庶 庵 庾 張 強 彗
+- 彬 彩 彫 得 徙 從 徘 御 徠 徜 恿 患 悉 悠 您 惋
+- 悴 惦 悽 情 悻 悵 惜 悼 惘 惕 惆 惟 悸 惚 惇 戚
+- 戛 扈 掠 控 捲 掖 探 接 捷 捧 掘 措 捱 掩 掉 掃
+- 掛 捫 推 掄 授 掙 採 掬 排 掏 掀 捻 捩 捨 捺 敝
+- 敖 救 教 敗 啟 敏 敘 敕 敔 斜 斛 斬 族 旋 旌 旎
+- 晝 晚 晤 晨 晦 晞 曹 勗 望 梁 梯 梢 梓 梵 桿 桶
+- 梱 梧 梗 械 梃 棄 梭 梆 梅 梔 條 梨 梟 梡 梂 欲
+- 殺 毫 毬 氫 涎 涼 淳 淙 液 淡 淌 淤 添 淺 清 淇
+- 淋 涯 淑 涮 淞 淹 涸 混 淵 淅 淒 渚 涵 淚 淫 淘
+- 淪 深 淮 淨 淆 淄 涪 淬 涿 淦 烹 焉 焊 烽 烯 爽
+- 牽 犁 猜 猛 猖 猓 猙 率 琅 琊 球 理 現 琍 瓠 瓶
+- 瓷 甜 產 略 畦 畢 異 疏 痔 痕 疵 痊 痍 皎 盔 盒
+- 盛 眷 眾 眼 眶 眸 眺 硫 硃 硎 祥 票 祭 移 窒 窕
+- 笠 笨 笛 第 符 笙 笞 笮 粒 粗 粕 絆 絃 統 紮 紹
+- 紼 絀 細 紳 組 累 終 紲 紱 缽 羞 羚 翌 翎 習 耜
+- 聊 聆 脯 脖 脣 脫 脩 脰 脤 舂 舵 舷 舶 船 莎 莞
+- 莘 荸 莢 莖 莽 莫 莒 莊 莓 莉 莠 荷 荻 荼 莆 莧
+- 處 彪 蛇 蛀 蚶 蛄 蚵 蛆 蛋 蚱 蚯 蛉 術 袞 袈 被
+- 袒 袖 袍 袋 覓 規 訪 訝 訣 訥 許 設 訟 訛 訢 豉
+- 豚 販 責 貫 貨 貪 貧 赧 赦 趾 趺 軛 軟 這 逍 通
+- 逗 連 速 逝 逐 逕 逞 造 透 逢 逖 逛 途 部 郭 都
+- 酗 野 釵 釦 釣 釧 釭 釩 閉 陪 陵 陳 陸 陰 陴 陶
+- 陷 陬 雀 雪 雩 章 竟 頂 頃 魚 鳥 鹵 鹿 麥 麻 傢
+- 傍 傅 備 傑 傀 傖 傘 傚 最 凱 割 剴 創 剩 勞 勝
+- 勛 博 厥 啻 喀 喧 啼 喊 喝 喘 喂 喜 喪 喔 喇 喋
+- 喃 喳 單 喟 唾 喲 喚 喻 喬 喱 啾 喉 喫 喙 圍 堯
+- 堪 場 堤 堰 報 堡 堝 堠 壹 壺 奠 婷 媚 婿 媒 媛
+- 媧 孳 孱 寒 富 寓 寐 尊 尋 就 嵌 嵐 崴 嵇 巽 幅
+- 帽 幀 幃 幾 廊 廁 廂 廄 弼 彭 復 循 徨 惑 惡 悲
+- 悶 惠 愜 愣 惺 愕 惰 惻 惴 慨 惱 愎 惶 愉 愀 愒
+- 戟 扉 掣 掌 描 揀 揩 揉 揆 揍 插 揣 提 握 揖 揭
+- 揮 捶 援 揪 換 摒 揚 揹 敞 敦 敢 散 斑 斐 斯 普
+- 晰 晴 晶 景 暑 智 晾 晷 曾 替 期 朝 棺 棕 棠 棘
+- 棗 椅 棟 棵 森 棧 棹 棒 棲 棣 棋 棍 植 椒 椎 棉
+- 棚 楮 棻 款 欺 欽 殘 殖 殼 毯 氮 氯 氬 港 游 湔
+- 渡 渲 湧 湊 渠 渥 渣 減 湛 湘 渤 湖 湮 渭 渦 湯
+- 渴 湍 渺 測 湃 渝 渾 滋 溉 渙 湎 湣 湄 湲 湩 湟
+- 焙 焚 焦 焰 無 然 煮 焜 牌 犄 犀 猶 猥 猴 猩 琺
+- 琪 琳 琢 琥 琵 琶 琴 琯 琛 琦 琨 甥 甦 畫 番 痢
+- 痛 痣 痙 痘 痞 痠 登 發 皖 皓 皴 盜 睏 短 硝 硬
+- 硯 稍 稈 程 稅 稀 窘 窗 窖 童 竣 等 策 筆 筐 筒
+- 答 筍 筋 筏 筑 粟 粥 絞 結 絨 絕 紫 絮 絲 絡 給
+- 絢 絰 絳 善 翔 翕 耋 聒 肅 腕 腔 腋 腑 腎 脹 腆
+- 脾 腌 腓 腴 舒 舜 菩 萃 菸 萍 菠 菅 萋 菁 華 菱
+- 菴 著 萊 菰 萌 菌 菽 菲 菊 萸 萎 萄 菜 萇 菔 菟
+- 虛 蛟 蛙 蛭 蛔 蛛 蛤 蛐 蛞 街 裁 裂 袱 覃 視 註
+- 詠 評 詞 証 詁 詔 詛 詐 詆 訴 診 訶 詖 象 貂 貯
+- 貼 貳 貽 賁 費 賀 貴 買 貶 貿 貸 越 超 趁 跎 距
+- 跋 跚 跑 跌 跛 跆 軻 軸 軼 辜 逮 逵 週 逸 進 逶
+- 鄂 郵 鄉 郾 酣 酥 量 鈔 鈕 鈣 鈉 鈞 鈍 鈐 鈇 鈑
+- 閔 閏 開 閑 間 閒 閎 隊 階 隋 陽 隅 隆 隍 陲 隄
+- 雁 雅 雄 集 雇 雯 雲 韌 項 順 須 飧 飪 飯 飩 飲
+- 飭 馮 馭 黃 黍 黑 亂 傭 債 傲 傳 僅 傾 催 傷 傻
+- 傯 僇 剿 剷 剽 募 勦 勤 勢 勣 匯 嗟 嗨 嗓 嗦 嗎
+- 嗜 嗇 嗑 嗣 嗤 嗯 嗚 嗡 嗅 嗆 嗥 嗉 園 圓 塞 塑
+- 塘 塗 塚 塔 填 塌 塭 塊 塢 塒 塋 奧 嫁 嫉 嫌 媾
+- 媽 媼 媳 嫂 媲 嵩 嵯 幌 幹 廉 廈 弒 彙 徬 微 愚
+- 意 慈 感 想 愛 惹 愁 愈 慎 慌 慄 慍 愾 愴 愧 愍
+- 愆 愷 戡 戢 搓 搾 搞 搪 搭 搽 搬 搏 搜 搔 損 搶
+- 搖 搗 搆 敬 斟 新 暗 暉 暇 暈 暖 暄 暘 暍 會 榔
+- 業 楚 楷 楠 楔 極 椰 概 楊 楨 楫 楞 楓 楹 榆 楝
+- 楣 楛 歇 歲 毀 殿 毓 毽 溢 溯 滓 溶 滂 源 溝 滇
+- 滅 溥 溘 溼 溺 溫 滑 準 溜 滄 滔 溪 溧 溴 煎 煙
+- 煩 煤 煉 照 煜 煬 煦 煌 煥 煞 煆 煨 煖 爺 牒 猷
+- 獅 猿 猾 瑯 瑚 瑕 瑟 瑞 瑁 琿 瑙 瑛 瑜 當 畸 瘀
+- 痰 瘁 痲 痱 痺 痿 痴 痳 盞 盟 睛 睫 睦 睞 督 睹
+- 睪 睬 睜 睥 睨 睢 矮 碎 碰 碗 碘 碌 碉 硼 碑 碓
+- 硿 祺 祿 禁 萬 禽 稜 稚 稠 稔 稟 稞 窟 窠 筷 節
+- 筠 筮 筧 粱 粳 粵 經 絹 綑 綁 綏 絛 置 罩 罪 署
+- 義 羨 群 聖 聘 肆 肄 腱 腰 腸 腥 腮 腳 腫 腹 腺
+- 腦 舅 艇 蒂 葷 落 萱 葵 葦 葫 葉 葬 葛 萼 萵 葡
+- 董 葩 葭 葆 虞 虜 號 蛹 蜓 蜈 蜇 蜀 蛾 蛻 蜂 蜃
+- 蜆 蜊 衙 裟 裔 裙 補 裘 裝 裡 裊 裕 裒 覜 解 詫
+- 該 詳 試 詩 詰 誇 詼 詣 誠 話 誅 詭 詢 詮 詬 詹
+- 詻 訾 詨 豢 貊 貉 賊 資 賈 賄 貲 賃 賂 賅 跡 跟
+- 跨 路 跳 跺 跪 跤 跦 躲 較 載 軾 輊 辟 農 運 遊
+- 道 遂 達 逼 違 遐 遇 遏 過 遍 遑 逾 遁 鄒 鄗 酬
+- 酪 酩 釉 鈷 鉗 鈸 鈽 鉀 鈾 鉛 鉋 鉤 鉑 鈴 鉉 鉍
+- 鉅 鈹 鈿 鉚 閘 隘 隔 隕 雍 雋 雉 雊 雷 電 雹 零
+- 靖 靴 靶 預 頑 頓 頊 頒 頌 飼 飴 飽 飾 馳 馱 馴
+- 髡 鳩 麂 鼎 鼓 鼠 僧 僮 僥 僖 僭 僚 僕 像 僑 僱
+- 僎 僩 兢 凳 劃 劂 匱 厭 嗾 嘀 嘛 嘗 嗽 嘔 嘆 嘉
+- 嘍 嘎 嗷 嘖 嘟 嘈 嘐 嗶 團 圖 塵 塾 境 墓 墊 塹
+- 墅 塽 壽 夥 夢 夤 奪 奩 嫡 嫦 嫩 嫗 嫖 嫘 嫣 孵
+- 寞 寧 寡 寥 實 寨 寢 寤 察 對 屢 嶄 嶇 幛 幣 幕
+- 幗 幔 廓 廖 弊 彆 彰 徹 慇 愿 態 慷 慢 慣 慟 慚
+- 慘 慵 截 撇 摘 摔 撤 摸 摟 摺 摑 摧 搴 摭 摻 敲
+- 斡 旗 旖 暢 暨 暝 榜 榨 榕 槁 榮 槓 構 榛 榷 榻
+- 榫 榴 槐 槍 榭 槌 榦 槃 榣 歉 歌 氳 漳 演 滾 漓
+- 滴 漩 漾 漠 漬 漏 漂 漢 滿 滯 漆 漱 漸 漲 漣 漕
+- 漫 漯 澈 漪 滬 漁 滲 滌 滷 熔 熙 煽 熊 熄 熒 爾
+- 犒 犖 獄 獐 瑤 瑣 瑪 瑰 瑭 甄 疑 瘧 瘍 瘋 瘉 瘓
+- 盡 監 瞄 睽 睿 睡 磁 碟 碧 碳 碩 碣 禎 福 禍 種
+- 稱 窪 窩 竭 端 管 箕 箋 筵 算 箝 箔 箏 箸 箇 箄
+- 粹 粽 精 綻 綰 綜 綽 綾 綠 緊 綴 網 綱 綺 綢 綿
+- 綵 綸 維 緒 緇 綬 罰 翠 翡 翟 聞 聚 肇 腐 膀 膏
+- 膈 膊 腿 膂 臧 臺 與 舔 舞 艋 蓉 蒿 蓆 蓄 蒙 蒞
+- 蒲 蒜 蓋 蒸 蓀 蓓 蒐 蒼 蓑 蓊 蜿 蜜 蜻 蜢 蜥 蜴
+- 蜘 蝕 蜷 蜩 裳 褂 裴 裹 裸 製 裨 褚 裯 誦 誌 語
+- 誣 認 誡 誓 誤 說 誥 誨 誘 誑 誚 誧 豪 貍 貌 賓
+- 賑 賒 赫 趙 趕 跼 輔 輒 輕 輓 辣 遠 遘 遜 遣 遙
+- 遞 遢 遝 遛 鄙 鄘 鄞 酵 酸 酷 酴 鉸 銀 銅 銘 銖
+- 鉻 銓 銜 銨 鉼 銑 閡 閨 閩 閣 閥 閤 隙 障 際 雌
+- 雒 需 靼 鞅 韶 頗 領 颯 颱 餃 餅 餌 餉 駁 骯 骰
+- 髦 魁 魂 鳴 鳶 鳳 麼 鼻 齊 億 儀 僻 僵 價 儂 儈
+- 儉 儅 凜 劇 劈 劉 劍 劊 勰 厲 嘮 嘻 嘹 嘲 嘿 嘴
+- 嘩 噓 噎 噗 噴 嘶 嘯 嘰 墀 墟 增 墳 墜 墮 墩 墦
+- 奭 嬉 嫻 嬋 嫵 嬌 嬈 寮 寬 審 寫 層 履 嶝 嶔 幢
+- 幟 幡 廢 廚 廟 廝 廣 廠 彈 影 德 徵 慶 慧 慮 慝
+- 慕 憂 慼 慰 慫 慾 憧 憐 憫 憎 憬 憚 憤 憔 憮 戮
+- 摩 摯 摹 撞 撲 撈 撐 撰 撥 撓 撕 撩 撒 撮 播 撫
+- 撚 撬 撙 撢 撳 敵 敷 數 暮 暫 暴 暱 樣 樟 槨 樁
+- 樞 標 槽 模 樓 樊 槳 樂 樅 槭 樑 歐 歎 殤 毅 毆
+- 漿 潼 澄 潑 潦 潔 澆 潭 潛 潸 潮 澎 潺 潰 潤 澗
+- 潘 滕 潯 潠 潟 熟 熬 熱 熨 牖 犛 獎 獗 瑩 璋 璃
+- 瑾 璀 畿 瘠 瘩 瘟 瘤 瘦 瘡 瘢 皚 皺 盤 瞎 瞇 瞌
+- 瞑 瞋 磋 磅 確 磊 碾 磕 碼 磐 稿 稼 穀 稽 稷 稻
+- 窯 窮 箭 箱 範 箴 篆 篇 篁 箠 篌 糊 締 練 緯 緻
+- 緘 緬 緝 編 緣 線 緞 緩 綞 緙 緲 緹 罵 罷 羯 翩
+- 耦 膛 膜 膝 膠 膚 膘 蔗 蔽 蔚 蓮 蔬 蔭 蔓 蔑 蔣
+- 蔡 蔔 蓬 蔥 蓿 蔆 螂 蝴 蝶 蝠 蝦 蝸 蝨 蝙 蝗 蝌
+- 蝓 衛 衝 褐 複 褒 褓 褕 褊 誼 諒 談 諄 誕 請 諸
+- 課 諉 諂 調 誰 論 諍 誶 誹 諛 豌 豎 豬 賠 賞 賦
+- 賤 賬 賭 賢 賣 賜 質 賡 赭 趟 趣 踫 踐 踝 踢 踏
+- 踩 踟 踡 踞 躺 輝 輛 輟 輩 輦 輪 輜 輞 輥 適 遮
+- 遨 遭 遷 鄰 鄭 鄧 鄱 醇 醉 醋 醃 鋅 銻 銷 鋪 銬
+- 鋤 鋁 銳 銼 鋒 鋇 鋰 銲 閭 閱 霄 霆 震 霉 靠 鞍
+- 鞋 鞏 頡 頫 頜 颳 養 餓 餒 餘 駝 駐 駟 駛 駑 駕
+- 駒 駙 骷 髮 髯 鬧 魅 魄 魷 魯 鴆 鴉 鴃 麩 麾 黎
+- 墨 齒 儒 儘 儔 儐 儕 冀 冪 凝 劑 劓 勳 噙 噫 噹
+- 噩 噤 噸 噪 器 噥 噱 噯 噬 噢 噶 壁 墾 壇 壅 奮
+- 嬝 嬴 學 寰 導 彊 憲 憑 憩 憊 懍 憶 憾 懊 懈 戰
+- 擅 擁 擋 撻 撼 據 擄 擇 擂 操 撿 擒 擔 撾 整 曆
+- 曉 暹 曄 曇 暸 樽 樸 樺 橙 橫 橘 樹 橄 橢 橡 橋
+- 橇 樵 機 橈 歙 歷 氅 濂 澱 澡 濃 澤 濁 澧 澳 激
+- 澹 澶 澦 澠 澴 熾 燉 燐 燒 燈 燕 熹 燎 燙 燜 燃
+- 燄 獨 璜 璣 璘 璟 璞 瓢 甌 甍 瘴 瘸 瘺 盧 盥 瞠
+- 瞞 瞟 瞥 磨 磚 磬 磧 禦 積 穎 穆 穌 穋 窺 篙 簑
+- 築 篤 篛 篡 篩 篦 糕 糖 縊 縑 縈 縛 縣 縞 縝 縉
+- 縐 罹 羲 翰 翱 翮 耨 膳 膩 膨 臻 興 艘 艙 蕊 蕙
+- 蕈 蕨 蕩 蕃 蕉 蕭 蕪 蕞 螃 螟 螞 螢 融 衡 褪 褲
+- 褥 褫 褡 親 覦 諦 諺 諫 諱 謀 諜 諧 諮 諾 謁 謂
+- 諷 諭 諳 諶 諼 豫 豭 貓 賴 蹄 踱 踴 蹂 踹 踵 輻
+- 輯 輸 輳 辨 辦 遵 遴 選 遲 遼 遺 鄴 醒 錠 錶 鋸
+- 錳 錯 錢 鋼 錫 錄 錚 錐 錦 錡 錕 錮 錙 閻 隧 隨
+- 險 雕 霎 霑 霖 霍 霓 霏 靛 靜 靦 鞘 頰 頸 頻 頷
+- 頭 頹 頤 餐 館 餞 餛 餡 餚 駭 駢 駱 骸 骼 髻 髭
+- 鬨 鮑 鴕 鴣 鴦 鴨 鴒 鴛 默 黔 龍 龜 優 償 儡 儲
+- 勵 嚎 嚀 嚐 嚅 嚇 嚏 壕 壓 壑 壎 嬰 嬪 嬤 孺 尷
+- 屨 嶼 嶺 嶽 嶸 幫 彌 徽 應 懂 懇 懦 懋 戲 戴 擎
+- 擊 擘 擠 擰 擦 擬 擱 擢 擭 斂 斃 曙 曖 檀 檔 檄
+- 檢 檜 櫛 檣 橾 檗 檐 檠 歜 殮 毚 氈 濘 濱 濟 濠
+- 濛 濤 濫 濯 澀 濬 濡 濩 濕 濮 濰 燧 營 燮 燦 燥
+- 燭 燬 燴 燠 爵 牆 獰 獲 璩 環 璦 璨 癆 療 癌 盪
+- 瞳 瞪 瞰 瞬 瞧 瞭 矯 磷 磺 磴 磯 礁 禧 禪 穗 窿
+- 簇 簍 篾 篷 簌 篠 糠 糜 糞 糢 糟 糙 糝 縮 績 繆
+- 縷 縲 繃 縫 總 縱 繅 繁 縴 縹 繈 縵 縿 縯 罄 翳
+- 翼 聱 聲 聰 聯 聳 臆 臃 膺 臂 臀 膿 膽 臉 膾 臨
+- 舉 艱 薪 薄 蕾 薜 薑 薔 薯 薛 薇 薨 薊 虧 蟀 蟑
+- 螳 蟒 蟆 螫 螻 螺 蟈 蟋 褻 褶 襄 褸 褽 覬 謎 謗
+- 謙 講 謊 謠 謝 謄 謐 豁 谿 豳 賺 賽 購 賸 賻 趨
+- 蹉 蹋 蹈 蹊 轄 輾 轂 轅 輿 避 遽 還 邁 邂 邀 鄹
+- 醣 醞 醜 鍍 鎂 錨 鍵 鍊 鍥 鍋 錘 鍾 鍬 鍛 鍰 鍚
+- 鍔 闊 闋 闌 闈 闆 隱 隸 雖 霜 霞 鞠 韓 顆 颶 餵
+- 騁 駿 鮮 鮫 鮪 鮭 鴻 鴿 麋 黏 點 黜 黝 黛 鼾 齋
+- 叢 嚕 嚮 壙 壘 嬸 彝 懣 戳 擴 擲 擾 攆 擺 擻 擷
+- 斷 曜 朦 檳 檬 櫃 檻 檸 櫂 檮 檯 歟 歸 殯 瀉 瀋
+- 濾 瀆 濺 瀑 瀏 燻 燼 燾 燸 獷 獵 璧 璿 甕 癖 癘
+- 癒 瞽 瞿 瞻 瞼 礎 禮 穡 穢 穠 竄 竅 簫 簧 簪 簞
+- 簣 簡 糧 織 繕 繞 繚 繡 繒 繙 罈 翹 翻 職 聶 臍
+- 臏 舊 藏 薩 藍 藐 藉 薰 薺 薹 薦 蟯 蟬 蟲 蟠 覆
+- 覲 觴 謨 謹 謬 謫 豐 贅 蹙 蹣 蹦 蹤 蹟 蹕 軀 轉
+- 轍 邇 邃 邈 醫 醬 釐 鎔 鎊 鎖 鎢 鎳 鎮 鎬 鎰 鎘
+- 鎚 鎗 闔 闖 闐 闕 離 雜 雙 雛 雞 霤 鞣 鞦 鞭 韹
+- 額 顏 題 顎 顓 颺 餾 餿 餽 餮 馥 騎 髁 鬃 鬆 魏
+- 魎 魍 鯊 鯉 鯽 鯈 鯀 鵑 鵝 鵠 黠 鼕 鼬 儳 嚥 壞
+- 壟 壢 寵 龐 廬 懲 懷 懶 懵 攀 攏 曠 曝 櫥 櫝 櫚
+- 櫓 瀛 瀟 瀨 瀚 瀝 瀕 瀘 爆 爍 牘 犢 獸 獺 璽 瓊
+- 瓣 疇 疆 癟 癡 矇 礙 禱 穫 穩 簾 簿 簸 簽 簷 籀
+- 繫 繭 繹 繩 繪 羅 繳 羶 羹 羸 臘 藩 藝 藪 藕 藤
+- 藥 藷 蟻 蠅 蠍 蟹 蟾 襠 襟 襖 襞 譁 譜 識 證 譚
+- 譎 譏 譆 譙 贈 贊 蹼 蹲 躇 蹶 蹬 蹺 蹴 轔 轎 辭
+- 邊 邋 醱 醮 鏡 鏑 鏟 鏃 鏈 鏜 鏝 鏖 鏢 鏍 鏘 鏤
+- 鏗 鏨 關 隴 難 霪 霧 靡 韜 韻 類 願 顛 颼 饅 饉
+- 騖 騙 鬍 鯨 鯧 鯖 鯛 鶉 鵡 鵲 鵪 鵬 麒 麗 麓 麴
+- 勸 嚨 嚷 嚶 嚴 嚼 壤 孀 孃 孽 寶 巉 懸 懺 攘 攔
+- 攙 曦 朧 櫬 瀾 瀰 瀲 爐 獻 瓏 癢 癥 礦 礪 礬 礫
+- 竇 競 籌 籃 籍 糯 糰 辮 繽 繼 纂 罌 耀 臚 艦 藻
+- 藹 蘑 藺 蘆 蘋 蘇 蘊 蠔 蠕 襤 覺 觸 議 譬 警 譯
+- 譟 譫 贏 贍 躉 躁 躅 躂 醴 釋 鐘 鐃 鏽 闡 霰 飄
+- 饒 饑 馨 騫 騰 騷 騵 鰓 鰍 鹹 麵 黨 鼯 齟 齣 齡
+- 儷 儸 囁 囀 囂 夔 屬 巍 懼 懾 攝 攜 斕 曩 櫻 欄
+- 櫺 殲 灌 爛 犧 瓖 瓔 癩 矓 籐 纏 續 羼 蘗 蘭 蘚
+- 蠣 蠢 蠡 蠟 襪 襬 覽 譴 護 譽 贓 躊 躍 躋 轟 辯
+- 醺 鐮 鐳 鐵 鐺 鐸 鐲 鐫 闢 霸 霹 露 響 顧 顥 饗
+- 驅 驃 驀 騾 髏 魔 魑 鰭 鰥 鶯 鶴 鷂 鶸 麝 黯 鼙
+- 齜 齦 齧 儼 儻 囈 囊 囉 孿 巔 巒 彎 懿 攤 權 歡
+- 灑 灘 玀 瓤 疊 癮 癬 禳 籠 籟 聾 聽 臟 襲 襯 觼
+- 讀 贖 贗 躑 躓 轡 酈 鑄 鑑 鑒 霽 霾 韃 韁 顫 饕
+- 驕 驍 髒 鬚 鱉 鰱 鰾 鰻 鷓 鷗 鼴 齬 齪 龔 囌 巖
+- 戀 攣 攫 攪 曬 欐 瓚 竊 籤 籣 籥 纓 纖 纔 臢 蘸
+- 蘿 蠱 變 邐 邏 鑣 鑠 鑤 靨 顯 饜 驚 驛 驗 髓 體
+- 髑 鱔 鱗 鱖 鷥 麟 黴 囑 壩 攬 灞 癱 癲 矗 罐 羈
+- 蠶 蠹 衢 讓 讒 讖 艷 贛 釀 鑪 靂 靈 靄 韆 顰 驟
+- 鬢 魘 鱟 鷹 鷺 鹼 鹽 鼇 齷 齲 廳 欖 灣 籬 籮 蠻
+- 觀 躡 釁 鑲 鑰 顱 饞 髖 鬣 黌 灤 矚 讚 鑷 韉 驢
+- 驥 纜 讜 躪 釅 鑽 鑾 鑼 鱷 鱸 黷 豔 鑿 鸚 爨 驪
+- 鬱 鸛 鸞 籲 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑴ ⑵
+- ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ
+- ⅸ ⅹ 丶 丿 亅 亠 冂 冖 冫 勹 匸 卩 厶 夊 宀 巛
+- ⼳ 广 彐 彡 攴 疒 辵 ¨ ˆ ヽ ヾ ゝ ゞ 々 〆 〇
+- ー [ ] ✽ ぁ あ ぃ い ぅ う ぇ え ぉ お か が
+- き ぎ く ぐ け げ こ ご さ ざ し じ す ず せ ぜ
+- そ ぞ た だ ち ぢ っ つ づ て で と ど な に ぬ
+- ね の は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ
+- ぽ ま み む め も ゃ や ゅ ゆ ょ よ ら り る れ
+- ろ ゎ わ ゐ ゑ を ん ァ ア ィ イ ゥ ウ ェ エ ォ
+- オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス
+- ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド
+- ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ
+- ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ
+- リ ル レ ロ ヮ ワ ヰ ヱ ヲ ン ヴ ヵ ヶ А Б В
+- Г Д Е Ё Ж З И Й К Л М Н О П Р С
+- Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б
+- в г д е ё ж з и й к л м н о п р
+- с т у ф х ц ч ш щ ъ ы ь э ю я ⇧
+- ↸ ↹   乚  刂   冈   ¬ ¦ ' "
+- ㈱ № ℡ ゛ ゜ ⺀ ⺄ ⺆ ⺇ ⺈ ⺊ ⺌ ⺍ ⺕ ⺜ ⺝
+- ⺥ ⺧ ⺪ ⺬ ⺮ ⺶ ⺼ ⺾ ⻆ ⻊ ⻌ ⻍ ⻏ ⻖ ⻗ ⻞
+- ⻣ ʃ ɐ ɛ ɔ ɵ œ ø ŋ ʊ ɪ 乂 乜 凵 匚 厂
+- 万 丌 乇 亍 囗 兀 屮 彳 丏 冇 与 丮 亓 仂 仉 仈
+- 冘 勼 卬 厹 圠 夃 夬 尐 巿 旡 殳 毌 气 爿 丱 丼
+- 仨 仜 仩 仡 仝 仚 刌 匜 卌 圢 圣 夗 夯 宁 宄 尒
+- 尻 屴 屳 帄 庀 庂 忉 戉 扐 氕 氶 汃 氿 氻 犮 犰
+- 玊 禸 肊 阞 伎 优 伬 仵 伔 仱 伀 价 伈 伝 伂 伅
+- 伢 伓 伄 仴 伒 冱 刓 刉 刐 劦 匢 匟 卍 厊 吇 囡
+- 囟 圮 圪 圴 夼 妀 奼 妅 奻 奾 奷 奿 孖 尕 尥 屼
+- 屺 屻 屾 巟 幵 庄 异 弚 彴 忕 忔 忏 扜 扞 扤 扡
+- 扦 扢 扙 扠 扚 扥 旯 旮 朾 朹 朸 朻 机 朿 朼 朳
+- 氘 汆 汒 汜 汏 汊 汔 汋 汌 灱 牞 犴 犵 玎 甪 癿
+- 穵 网 艸 艼 芀 艽 艿 虍 襾 邙 邗 邘 邛 邔 阢 阤
+- 阠 阣 佖 伻 佢 佉 体 佤 伾 佧 佒 佟 佁 佘 伭 伳
+- 伿 佡 冏 冹 刜 刞 刡 劭 劮 匉 卣 卲 厎 厏 吰 吷
+- 吪 呔 呅 吙 吜 吥 吘 吽 呏 呁 吨 吤 呇 囮 囧 囥
+- 坁 坅 坌 坉 坋 坒 夆 奀 妦 妘 妠 妗 妎 妢 妐 妏
+- 妧 妡 宎 宒 尨 尪 岍 岏 岈 岋 岉 岒 岊 岆 岓 岕
+- 巠 帊 帎 庋 庉 庌 庈 庍 弅 弝 彸 彶 忒 忑 忐 忭
+- 忨 忮 忳 忡 忤 忣 忺 忯 忷 忻 怀 忴 戺 抃 抌 抎
+- 抏 抔 抇 扱 扻 扺 扰 抁 抈 扷 扽 扲 扴 攷 旰 旴
+- 旳 旲 旵 杅 杇 杙 杕 杌 杈 杝 杍 杚 杋 毐 氙 氚
+- 汸 汧 汫 沄 沋 沏 汱 汯 汩 沚 汭 沇 沕 沜 汦 汳
+- 汥 汻 沎 灴 灺 牣 犿 犽 狃 狆 狁 犺 狅 玕 玗 玓
+- 玔 玒 町 甹 疔 疕 皁 礽 耴 肕 肙 肐 肒 肜 芐 芏
+- 芅 芎 芑 芓 芊 芃 芄 豸 迉 辿 邟 邡 邥 邞 邧 邠
+- 阰 阨 阯 阭 丳 侘 佼 侅 佽 侀 侇 佶 佴 侉 侄 佷
+- 佌 侗 佪 侚 佹 侁 佸 侐 侜 侔 侞 侒 侂 侕 佫 佮
+- 冞 冼 冾 刵 刲 刳 剆 刱 劼 匊 匋 匼 厒 厔 咇 呿
+- 咁 咑 咂 咈 呫 呺 呾 呥 呬 呴 呦 咍 呯 呡 呠 咘
+- 呣 呧 呤 囷 囹 坯 坲 坭 坫 坱 坰 坶 垀 坵 坻 坳
+- 坴 坢 坨 坽 夌 奅 妵 妺 姏 姎 妲 姌 姁 妶 妼 姃
+- 姖 妱 妽 姀 姈 妴 姇 孢 孥 宓 宕 屄 屇 岮 岤 岠
+- 岵 岯 岨 岬 岟 岣 岭 岢 岪 岧 岝 岥 岶 岰 岦 帗
+- 帔 帙 弨 弢 弣 弤 彔 徂 彾 彽 忞 忥 怭 怦 怙 怲
+- 怋 怴 怊 怗 怳 怚 怞 怬 怢 怍 怐 怮 怓 怑 怌 怉
+- 怜 戔 戽 抭 抴 拑 抾 抪 抶 拊 抮 抳 抯 抻 抩 抰
+- 抸 攽 斨 斻 昉 旼 昄 昒 昈 旻 昃 昋 昍 昅 旽 昑
+- 昐 曶 朊 枅 杬 枎 枒 杶 杻 枘 枆 构 杴 枍 枌 杺
+- 枟 枑 枙 枃 杽 极 杸 杹 枔 欥 殀 歾 毞 氝 沓 泬
+- 泫 泮 泙 沶 泔 沭 泧 沷 泐 泂 沺 泃 泆 泭 泲 泒
+- 泝 沴 沊 沝 沀 泞 泀 洰 泍 泇 沰 泹 泏 泩 泑 炔
+- 炘 炅 炓 炆 炄 炑 炖 炂 炚 炃 牪 狖 狋 狘 狉 狜
+- 狒 狔 狚 狌 狑 玤 玡 玭 玦 玢 玠 玬 玝 瓝 瓨 甿
+- 畀 甾 疌 疘 皯 盳 盱 盰 盵 矸 矼 矹 矻 矺 矷 祂
+- 礿 秅 穸 穻 竻 籵 糽 耵 肏 肮 肣 肸 肵 肭 舠 芠
+- 苀 芫 芚 芘 芛 芵 芧 芮 芼 芞 芺 芴 芨 芡 芩 苂
+- 芤 苃 芶 芢 虰 虯 虭 虮 豖 迒 迋 迓 迍 迖 迕 迗
+- 邲 邴 邯 邳 邰 阹 阽 阼 阺 陃 俍 俅 俓 侲 俉 俋
+- 俁 俔 俜 俙 侻 侳 俛 俇 俖 侺 俀 侹 俬 剄 剉 勀
+- 勂 匽 卼 厗 厖 厙 厘 咺 咡 咭 咥 哏 哃 茍 咷 咮
+- 哖 咶 哅 哆 咠 呰 咼 咢 咾 呲 哞 咰 垵 垞 垟 垤
+- 垌 垗 垝 垛 垔 垘 垏 垙 垥 垚 垕 壴 复 奓 姡 姞
+- 姮 娀 姱 姝 姺 姽 姼 姶 姤 姲 姷 姛 姩 姳 姵 姠
+- 姾 姴 姭 宨 屌 峐 峘 峌 峗 峋 峛 峞 峚 峉 峇 峊
+- 峖 峓 峔 峏 峈 峆 峎 峟 峸 巹 帡 帢 帣 帠 帤 庰
+- 庤 庢 庛 庣 庥 弇 弮 彖 徆 怷 怹 恔 恲 恞 恅 恓
+- 恇 恉 恛 恌 恀 恂 恟 怤 恄 恘 恦 恮 扂 扃 拏 挍
+- 挋 拵 挎 挃 拫 拹 挏 挌 拸 拶 挀 挓 挔 拺 挕 拻
+- 拰 敁 敃 斪 斿 昶 昡 昲 昵 昜 昦 昢 昳 昫 昺 昝
+- 昴 昹 昮 朏 朐 柁 柲 柈 枺 柜 枻 柸 柘 柀 枷 柅
+- 柫 柤 柟 枵 柍 枳 柷 柶 柮 柣 柂 枹 柎 柧 柰 枲
+- 柼 柆 柭 柌 枮 柦 柛 柺 柉 柊 柃 柪 柋 欨 殂 殄
+- 殶 毖 毘 毠 氠 氡 洨 洴 洭 洟 洼 洿 洒 洊 泚 洳
+- 洄 洙 洺 洚 洑 洀 洝 浂 洁 洘 洷 洃 洏 浀 洇 洠
+- 洬 洈 洢 洉 洐 炷 炟 炾 炱 炰 炡 炴 炵 炩 牁 牉
+- 牊 牬 牰 牳 牮 狊 狤 狨 狫 狟 狪 狦 狣 玅 珌 珂
+- 珈 珅 玹 玶 玵 玴 珫 玿 珇 玾 珃 珆 玸 珋 瓬 瓮
+- 甮 畇 畈 疧 疪 癹 盄 眈 眃 眄 眅 眊 盷 盻 盺 矧
+- 矨 砆 砑 砒 砅 砐 砏 砎 砉 砃 砓 祊 祌 祋 祅 祄
+- 秕 种 秏 秖 秎 窀 穾 竑 笀 笁 籺 籸 籹 籿 粀 粁
+- 紃 紈 紁 罘 羑 羍 羾 耇 耎 耏 耔 耷 胘 胇 胠 胑
+- 胈 胂 胐 胅 胣 胙 胜 胊 胕 胉 胏 胗 胦 胍 臿 舡
+- 芔 苙 苾 苹 茇 苨 茀 苕 茺 苫 苖 苴 苬 苡 苲 苵
+- 茌 苻 苶 苰 苪 苤 苠 苺 苳 苭 虷 虴 虼 虳 衁 衎
+- 衧 衪 衩 觓 訄 訇 赲 迣 迡 迮 迠 郱 邽 邿 郕 郅
+- 邾 郇 郋 郈 釔 釓 陔 陏 陑 陓 陊 陎 倞 倅 倇 倓
+- 倢 倰 倛 俵 俴 倳 倷 倬 俶 俷 倗 倜 倠 倧 倵 倯
+- 倱 倎 党 冔 冓 凊 凄 凅 凈 凎 剡 剚 剒 剞 剟 剕
+- 剢 勍 匎 厞 唦 哢 唗 唒 哧 哳 哤 唚 哿 唄 唈 哫
+- 唑 唅 哱 唊 哻 哷 哸 哠 唎 唃 唋 圁 圂 埌 堲 埕
+- 埒 垺 埆 垽 垼 垸 垶 垿 埇 埐 垹 埁 夎 奊 娙 娖
+- 娭 娮 娕 娏 娗 娊 娞 娳 孬 宧 宭 宬 尃 屖 屔 峬
+- 峿 峮 峱 峷 崀 峹 帩 帨 庨 庮 庪 庬 弳 弰 彧 恝
+- 恚 恧 恁 悢 悈 悀 悒 悁 悝 悃 悕 悛 悗 悇 悜 悎
+- 戙 扆 拲 挐 捖 挬 捄 捅 挶 捃 揤 挹 捋 捊 挼 挩
+- 捁 挴 捘 捔 捙 挭 捇 挳 捚 捑 挸 捗 捀 捈 敊 敆
+- 旆 旃 旄 旂 晊 晟 晇 晑 朒 朓 栟 栚 桉 栲 栳 栻
+- 桋 桏 栖 栱 栜 栵 栫 栭 栯 桎 桄 栴 栝 栒 栔 栦
+- 栨 栮 桍 栺 栥 栠 欬 欯 欭 欱 欴 歭 肂 殈 毦 毤
+- 毨 毣 毢 毧 氥 浺 浣 浤 浶 洍 浡 涒 浘 浢 浭 浯
+- 涑 涍 淯 浿 涆 浞 浧 浠 涗 浰 浼 浟 涂 涘 洯 浨
+- 涋 浾 涀 涄 洖 涃 浻 浽 浵 涐 烜 烓 烑 烝 烋 缹
+- 烢 烗 烒 烞 烠 烔 烍 烅 烆 烇 烚 烎 烡 牂 牸 牷
+- 牶 猀 狺 狴 狾 狶 狳 狻 猁 珓 珙 珥 珖 玼 珧 珣
+- 珩 珜 珒 珛 珔 珝 珚 珗 珘 珨 瓞 瓟 瓴 瓵 甡 畛
+- 畟 疰 痁 疻 痄 痀 疿 疶 疺 皊 盉 眝 眛 眐 眓 眒
+- 眣 眑 眕 眙 眚 眢 眧 砣 砬 砢 砵 砯 砨 砮 砫 砡
+- 砩 砳 砪 砱 祔 祛 祏 祜 祓 祒 祑 秫 秬 秠 秮 秭
+- 秪 秜 秞 秝 窆 窉 窅 窋 窌 窊 窇 竘 笐 笄 笓 笅
+- 笏 笈 笊 笎 笉 笒 粄 粑 粊 粌 粈 粍 粅 紞 紝 紑
+- 紎 紘 紖 紓 紟 紒 紏 紌 罜 罡 罞 罠 罝 罛 羖 羒
+- 翃 翂 翀 耖 耾 耹 胺 胲 胹 胵 脁 胻 脀 舁 舯 舥
+- 茳 茭 荄 茙 荑 茥 荖 茿 荁 茦 茜 茢 荂 荎 茛 茪
+- 茈 茼 荍 茖 茤 茠 茷 茯 茩 荇 荅 荌 荓 茞 茬 荋
+- 茧 荈 虓 虒 蚢 蚨 蚖 蚍 蚑 蚞 蚇 蚗 蚆 蚋 蚚 蚅
+- 蚥 蚙 蚡 蚧 蚕 蚘 蚎 蚝 蚐 蚔 衃 衄 衭 衵 衶 衲
+- 袀 衱 衿 衯 袃 衾 衴 衼 訒 豇 豗 豻 貤 貣 赶 赸
+- 趵 趷 趶 軑 軓 迾 迵 适 迿 迻 逄 迼 迶 郖 郠 郙
+- 郚 郣 郟 郥 郘 郛 郗 郜 郤 酐 酎 酏 釕 釢 釚 陜
+- 陟 隼 飣 髟 鬯 乿 偰 偪 偡 偞 偠 偓 偋 偝 偲 偈
+- 偍 偁 偛 偊 偢 倕 偅 偟 偩 偫 偣 偤 偆 偀 偮 偳
+- 偗 偑 凐 剫 剭 剬 剮 勖 勓 匭 厜 啵 啶 唼 啍 啐
+- 唴 唪 啑 啢 唶 唵 唰 啒 啅 唌 唲 啥 啎 唹 啈 唭
+- 唻 啀 啋 圊 圇 埻 堔 埢 埶 埜 埴 堀 埭 埽 堈 埸
+- 堋 埳 埏 堇 埮 埣 埲 埥 埬 埡 堎 埼 堐 埧 堁 堌
+- 埱 埩 埰 堍 堄 奜 婠 婘 婕 婧 婞 娸 娵 婭 婐 婟
+- 婥 婬 婓 婤 婗 婃 婝 婒 婄 婛 婈 媎 娾 婍 娹 婌
+- 婰 婩 婇 婑 婖 婂 婜 孲 孮 寁 寀 屙 崞 崋 崝 崚
+- 崠 崌 崨 崍 崦 崥 崏 崰 崒 崣 崟 崮 帾 帴 庱 庴
+- 庹 庲 庳 弶 弸 徛 徖 徟 悊 悐 悆 悾 悰 悺 惓 惔
+- 惏 惤 惙 惝 惈 悱 惛 悷 惊 悿 惃 惍 惀 挲 捥 掊
+- 掂 捽 掽 掞 掭 掝 掗 掫 掎 捯 掇 掐 据 掯 捵 掜
+- 捭 掮 捼 掤 挻 掟 捸 掅 掁 掑 掍 捰 敓 旍 晥 晡
+- 晛 晙 晜 晢 朘 桹 梇 梐 梜 桭 桮 梮 梫 楖 桯 梣
+- 梬 梩 桵 桴 梲 梏 桷 梒 桼 桫 桲 梪 梀 桱 桾 梛
+- 梖 梋 梠 梉 梤 桸 桻 梑 梌 梊 桽 欶 欳 欷 欸 殑
+- 殏 殍 殎 殌 氪 淀 涫 涴 涳 湴 涬 淩 淢 涷 淶 淔
+- 渀 淈 淠 淟 淖 涾 淥 淜 淝 淛 淴 淊 涽 淭 淰 涺
+- 淕 淂 淏 淉 淐 淲 淓 淽 淗 淍 淣 涻 烺 焍 烷 焗
+- 烴 焌 烰 焄 烳 焐 烼 烿 焆 焓 焀 烸 烶 焋 焂 焎
+- 牾 牻 牼 牿 猝 猗 猇 猑 猘 猊 猈 狿 猏 猞 玈 珶
+- 珸 珵 琄 琁 珽 琇 琀 珺 珼 珿 琌 琋 珴 琈 畤 畣
+- 痎 痒 痏 痋 痌 痑 痐 皏 皉 盓 眹 眯 眭 眱 眲 眴
+- 眳 眽 眥 眻 眵 硈 硒 硉 硍 硊 硌 砦 硅 硐 祤 祧
+- 祩 祪 祣 祫 祡 离 秺 秸 秶 秷 窏 窔 窐 笵 筇 笴
+- 笥 笰 笢 笤 笳 笘 笪 笝 笱 笫 笭 笯 笲 笸 笚 笣
+- 粔 粘 粖 粣 紵 紽 紸 紶 紺 絅 紬 紩 絁 絇 紾 紿
+- 絊 紻 紨 罣 羕 羜 羝 羛 翊 翋 翍 翐 翑 翇 翏 翉
+- 耟 耞 耛 聇 聃 聈 脘 脥 脙 脛 脭 脟 脬 脞 脡 脕
+- 脧 脝 脢 舑 舸 舳 舺 舴 舲 艴 莐 莣 莨 莍 荺 荳
+- 莤 荴 莏 莁 莕 莙 荵 莔 莩 荽 莃 莌 莝 莛 莪 莋
+- 荾 莥 莯 莈 莗 莰 荿 莦 莇 莮 荶 莚 虙 虖 蚿 蚷
+- 蛂 蛁 蛅 蚺 蚰 蛈 蚹 蚳 蚸 蛌 蚴 蚻 蚼 蛃 蚽 蚾
+- 衒 袉 袕 袨 袢 袪 袚 袑 袡 袟 袘 袧 袙 袛 袗 袤
+- 袬 袌 袓 袎 覂 觖 觙 觕 訰 訧 訬 訞 谹 谻 豜 豝
+- 豽 貥 赽 赻 赹 趼 跂 趹 趿 跁 軘 軞 軝 軜 軗 軠
+- 軡 逤 逋 逑 逜 逌 逡 郯 郪 郰 郴 郲 郳 郔 郫 郬
+- 郩 酖 酘 酚 酓 酕 釬 釴 釱 釳 釸 釤 釹 釪 釫 釷
+- 釨 釮 镺 閆 閈 陼 陭 陫 陱 陯 隿 靪 頄 飥 馗 傛
+- 傕 傔 傞 傋 傣 傃 傌 傎 傝 偨 傜 傒 傂 傇 兟 凔
+- 匒 匑 厤 厧 喑 喨 喥 喭 啷 噅 喢 喓 喈 喏 喵 喁
+- 喣 喒 喤 啽 喌 喦 啿 喕 喡 喎 圌 堩 堷 堙 堞 堧
+- 堣 堨 埵 塈 堥 堜 堛 堳 堿 堶 堮 堹 堸 堭 堬 堻
+- 奡 媯 媔 媟 婺 媢 媞 婸 媦 婼 媥 媬 媕 媮 娷 媄
+- 媊 媗 媃 媋 媩 婻 婽 媌 媜 媏 媓 媝 寪 寍 寋 寔
+- 寑 寊 寎 尌 尰 崷 嵃 嵫 嵁 嵋 崿 崵 嵑 嵎 嵕 崳
+- 崺 嵒 崽 崱 嵙 嵂 崹 嵉 崸 崼 崲 崶 嵀 嵅 幄 幁
+- 彘 徦 徥 徫 惉 悹 惌 惢 惎 惄 愔 惲 愊 愖 愅 惵
+- 愓 惸 惼 惾 惁 愃 愘 愝 愐 惿 愄 愋 扊 掔 掱 掰
+- 揎 揥 揨 揯 揃 撝 揳 揊 揠 揶 揕 揲 揵 摡 揟 掾
+- 揝 揜 揄 揘 揓 揂 揇 揌 揋 揈 揰 揗 揙 攲 敧 敪
+- 敤 敜 敨 敥 斌 斝 斞 斮 旐 旒 晼 晬 晻 暀 晱 晹
+- 晪 晲 朁 椌 棓 椄 棜 椪 棬 棪 棱 椏 棖 棷 棫 棤
+- 棶 椓 椐 棳 棡 椇 棌 椈 楰 梴 椑 棯 棆 椔 棸 棐
+- 棽 棼 棨 椋 椊 椗 棎 棈 棝 棞 棦 棴 棑 椆 棔 棩
+- 椕 椥 棇 欹 欻 欿 欼 殔 殗 殙 殕 殽 毰 毲 毳 氰
+- 淼 湆 湇 渟 湉 溈 渼 渽 湅 湢 渫 渿 湁 湝 湳 渜
+- 渳 湋 湀 湑 渻 渃 渮 湞 湨 湜 湡 渱 渨 湠 湱 湫
+- 渹 渢 渰 湓 湥 渧 湸 湤 湷 湕 湹 湒 湦 渵 渶 湚
+- 焠 焞 焯 烻 焮 焱 焣 焥 焢 焲 焟 焨 焺 焛 牋 牚
+- 犈 犉 犆 犅 犋 猒 猋 猰 猢 猱 猳 猧 猲 猭 猦 猣
+- 猵 猌 琮 琬 琰 琫 琖 琚 琡 琭 琱 琤 琣 琝 琩 琠
+- 琲 瓻 甯 畯 畬 痧 痚 痡 痦 痝 痟 痤 痗 皕 皒 盚
+- 睆 睇 睄 睍 睅 睊 睎 睋 睌 矞 矬 硠 硤 硥 硜 硭
+- 硱 硪 确 硰 硩 硨 硞 硢 祴 祳 祲 祰 稂 稊 稃 稌
+- 稄 窙 竦 竤 筊 笻 筄 筈 筌 筎 筀 筘 筅 粢 粞 粨
+- 粡 絘 絯 絣 絓 絖 絧 絪 絏 絭 絜 絫 絒 絔 絩 絑
+- 絟 絎 缾 缿 罥 罦 羢 羠 羡 翗 聑 聏 聐 胾 胔 腃
+- 腊 腒 腏 腇 脽 腍 脺 臦 臮 臷 臸 臹 舄 舼 舽 舿
+- 艵 茻 菏 菹 萣 菀 菨 萒 菧 菤 菼 菶 萐 菆 菈 菫
+- 菣 莿 萁 菝 菥 菘 菿 菡 菋 菎 菖 菵 菉 萉 萏 菞
+- 萑 萆 菂 菳 菕 菺 菇 菑 菪 萓 菃 菬 菮 菄 菻 菗
+- 菢 萛 菛 菾 蛘 蛢 蛦 蛓 蛣 蛚 蛪 蛝 蛫 蛜 蛬 蛩
+- 蛗 蛨 蛑 衈 衖 衕 袺 裗 袹 袸 裀 袾 袶 袼 袷 袽
+- 袲 褁 裉 覕 覘 覗 觝 觚 觛 詎 詍 訹 詙 詀 詗 詘
+- 詄 詅 詒 詈 詑 詊 詌 詏 豟 貁 貀 貺 貾 貰 貹 貵
+- 趄 趀 趉 跘 跓 跍 跇 跖 跜 跏 跕 跙 跈 跗 跅 軯
+- 軷 軺 軹 軦 軮 軥 軵 軧 軨 軶 軫 軱 軬 軴 軩 逭
+- 逴 逯 鄆 鄬 鄄 郿 郼 鄈 郹 郻 鄁 鄀 鄇 鄅 鄃 酡
+- 酤 酟 酢 酠 鈁 鈊 鈥 鈃 鈚 鈦 鈏 鈌 鈀 鈒 釿 釽
+- 鈆 鈄 鈧 鈂 鈜 鈤 鈙 鈗 鈅 鈖 镻 閍 閌 閐 隇 陾
+- 隈 隉 隃 隀 雂 雈 雃 雱 雰 靬 靰 靮 頇 颩 飫 鳦
+- 黹 亃 亄 亶 傽 傿 僆 傮 僄 僊 傴 僈 僂 傰 僁 傺
+- 傱 僋 僉 傶 傸 凗 剺 剸 剻 剼 嗃 嗛 嗌 嗐 嗋 嗊
+- 嗝 嗀 嗔 嗄 嗩 喿 嗒 喍 嗏 嗕 嗢 嗖 嗈 嗲 嗍 嗙
+- 嗂 圔 塓 塨 塤 塏 塍 塉 塯 塕 塎 塝 塙 塥 塛 堽
+- 塣 塱 壼 嫇 嫄 嫋 媺 媸 媱 媵 媰 媿 嫈 媻 嫆 媷
+- 嫀 嫊 媴 媶 嫍 媹 媐 寖 寘 寙 尟 尳 嵱 嵣 嵊 嵥
+- 嵲 嵬 嵞 嵨 嵧 嵢 巰 幏 幎 幊 幍 幋 廅 廌 廆 廋
+- 廇 彀 徯 徭 惷 慉 慊 愫 慅 愶 愲 愮 慆 愯 慏 愩
+- 慀 戠 酨 戣 戥 戤 揅 揱 揫 搐 搒 搉 搠 搤 搳 摃
+- 搟 搕 搘 搹 搷 搢 搣 搌 搦 搰 搨 摁 搵 搯 搊 搚
+- 摀 搥 搧 搋 揧 搛 搮 搡 搎 敯 斒 旓 暆 暌 暕 暐
+- 暋 暊 暙 暔 晸 朠 楦 楟 椸 楎 楢 楱 椿 楅 楪 椹
+- 楂 楗 楙 楺 楈 楉 椵 楬 椳 椽 楥 棰 楸 椴 楩 楀
+- 楯 楄 楶 楘 楁 楴 楌 椻 楋 椷 楜 楏 楑 椲 楒 椯
+- 楻 椼 歆 歅 歃 歂 歈 歁 殛 嗀 毻 毼 毹 毷 毸 溛
+- 滖 滈 溏 滀 溟 溓 溔 溠 溱 溹 滆 滒 溽 滁 溞 滉
+- 溷 溰 滍 溦 滏 溲 溾 滃 滜 滘 溙 溒 溎 溍 溤 溡
+- 溿 溳 滐 滊 溗 溮 溣 煇 煔 煒 煣 煠 煁 煝 煢 煲
+- 煸 煪 煡 煂 煘 煃 煋 煰 煟 煐 煓 煄 煍 煚 牏 犍
+- 犌 犑 犐 犎 猼 獂 猻 猺 獀 獊 獉 瑄 瑊 瑋 瑒 瑑
+- 瑗 瑀 瑏 瑐 瑎 瑂 瑆 瑍 瑔 瓡 瓿 瓾 瓽 甝 畹 畷
+- 榃 痯 瘏 瘃 痷 痾 痼 痹 痸 瘐 痻 痶 痭 痵 痽 皙
+- 皵 盝 睕 睟 睠 睒 睖 睚 睩 睧 睔 睙 睭 矠 碇 碚
+- 碔 碏 碄 碕 碅 碆 碡 碃 硹 碙 碀 碖 硻 祼 禂 祽
+- 祹 稑 稘 稙 稒 稗 稕 稢 稓 稛 稐 窣 窢 窞 竫 筦
+- 筤 筭 筴 筩 筲 筥 筳 筱 筰 筡 筸 筶 筣 粲 粴 粯
+- 綈 綆 綀 綍 絿 綅 絺 綎 絻 綃 絼 綌 綔 綄 絽 綒
+- 罭 罫 罧 罨 罬 羦 羥 羧 翛 翜 耡 腤 腠 腷 腜 腩
+- 腛 腢 腲 朡 腞 腶 腧 腯 腄 腡 舝 艉 艄 艀 艂 艅
+- 蓱 萿 葖 葶 葹 蒏 蒍 葥 葑 葀 蒆 葧 萰 葍 葽 葚
+- 葙 葴 葳 葝 蔇 葞 萷 萺 萴 葺 葃 葸 萲 葅 萩 菙
+- 葋 萯 葂 萭 葟 葰 萹 葎 葌 葒 葯 蓅 蒎 萻 葇 萶
+- 萳 葨 葾 葄 萫 葠 葔 葮 葐 蜋 蜄 蛷 蜌 蛺 蛖 蛵
+- 蝍 蛸 蜎 蜉 蜁 蛶 蜍 蜅 裖 裋 裍 裎 裞 裛 裚 裌
+- 裐 覅 覛 觟 觥 觤 觡 觠 觢 觜 触 詶 誆 詿 詡 訿
+- 詷 誂 誄 詵 誃 誁 詴 詺 谼 豋 豊 豥 豤 豦 貆 貄
+- 貅 賌 赨 赩 趑 趌 趎 趏 趍 趓 趔 趐 趒 跰 跠 跬
+- 跱 跮 跐 跩 跣 跢 跧 跲 跫 跴 輆 軿 輁 輀 輅 輇
+- 輈 輂 輋 遒 逿 遄 遉 逽 鄐 鄍 鄏 鄑 鄖 鄔 鄋 鄎
+- 酮 酯 鉈 鉒 鈰 鈺 鉦 鈳 鉥 鉞 銃 鈮 鉊 鉆 鉭 鉬
+- 鉏 鉠 鉧 鉯 鈶 鉡 鉰 鈱 鉔 鉣 鉐 鉲 鉎 鉓 鉌 鉖
+- 鈲 閟 閜 閞 閛 隒 隓 隑 隗 雎 雺 雽 雸 雵 靳 靷
+- 靸 靲 頏 頍 頎 颬 飶 飹 馯 馲 馰 馵 骭 骫 魛 鳪
+- 鳭 鳧 麀 黽 僦 僔 僗 僨 僳 僛 僪 僝 僤 僓 僬 僰
+- 僯 僣 僠 凘 劀 劁 勩 勫 匰 厬 嘧 嘕 嘌 嘒 嗼 嘏
+- 嘜 嘁 嘓 嘂 嗺 嘝 嘄 嗿 嗹 墉 塼 墐 墘 墆 墁 塿
+- 塴 墋 塺 墇 墑 墎 塶 墂 墈 塻 墔 墏 壾 奫 嫜 嫮
+- 嫥 嫕 嫪 嫚 嫭 嫫 嫳 嫢 嫠 嫛 嫬 嫞 嫝 嫙 嫨 嫟
+- 孷 寠 寣 屣 嶂 嶀 嵽 嶆 嵺 嶁 嵷 嶊 嶉 嶈 嵾 嵼
+- 嶍 嵹 嵿 幘 幙 幓 廘 廑 廗 廎 廜 廕 廙 廒 廔 彄
+- 彃 彯 徶 愬 愨 慁 慞 慱 慳 慒 慓 慲 慬 憀 慴 慔
+- 慺 慛 慥 愻 慪 慡 慖 戩 戧 戫 搫 摍 摛 摝 摴 摶
+- 摲 摳 摽 摵 摦 撦 摎 撂 摞 摜 摋 摓 摠 摐 摿 搿
+- 摬 摫 摙 摥 摷 敳 斠 暡 暠 暟 朅 朄 朢 榱 榶 槉
+- 榠 槎 榖 榰 榬 榼 榑 榙 榎 榧 榍 榩 榾 榯 榿 槄
+- 榽 榤 槔 榹 槊 榚 槏 榳 榓 榪 榡 榞 槙 榗 榐 槂
+- 榵 榥 槆 歊 歍 歋 殞 殟 殠 毃 毄 毾 滎 滵 滱 漃
+- 漥 滸 漷 滻 漮 漉 潎 漙 漚 漧 漘 漻 漒 滭 漊 漶
+- 潳 滹 滮 漭 潀 漰 漼 漵 滫 漇 漎 潃 漅 滽 滶 漹
+- 漜 滼 漺 漟 漍 漞 漈 漡 熇 熐 熉 熀 熅 熂 熏 煻
+- 熆 熁 熗 牄 牓 犗 犕 犓 獃 獍 獑 獌 瑢 瑳 瑱 瑵
+- 瑲 瑧 瑮 甀 甂 甃 畽 疐 瘖 瘈 瘌 瘕 瘑 瘊 瘔 皸
+- 瞁 睼 瞅 瞂 睮 瞀 睯 睾 瞃 碲 碪 碴 碭 碨 硾 碫
+- 碞 碥 碠 碬 碢 碤 禘 禊 禋 禖 禕 禔 禓 禗 禈 禒
+- 禐 稫 穊 稰 稯 稨 稦 窨 窫 窬 竮 箈 箜 箊 箑 箐
+- 箖 箍 箌 箛 箎 箅 箘 劄 箙 箤 箂 粻 粿 粼 粺 綧
+- 綷 緂 綣 綪 緁 緀 緅 綝 緎 緄 緆 緋 緌 綯 綹 綖
+- 綼 綟 綦 綮 綩 綡 緉 罳 翢 翣 翥 翞 耤 聝 聜 膉
+- 膆 膃 膇 膍 膌 膋 舕 蒗 蒤 蒡 蒟 蒺 蓎 蓂 蒬 蒮
+- 蒫 蒹 蒴 蓁 蓍 蒪 蒚 蒱 蓐 蒝 蒧 蒻 蒢 蒔 蓇 蓌
+- 蒛 蒩 蒯 蒨 蓖 蒘 蒶 蓏 蒠 蓗 蓔 蓒 蓛 蒰 蒑 虡
+- 蜳 蜣 蜨 蝫 蝀 蜮 蜞 蜡 蜙 蜛 蝃 蜬 蝁 蜾 蝆 蜠
+- 蜲 蜪 蜭 蜼 蜒 蜺 蜱 蜵 蝂 蜦 蜧 蜸 蜤 蜚 蜰 蜑
+- 裷 裧 裱 裲 裺 裾 裮 裼 裶 裻 裰 裬 裫 覝 覡 覟
+- 覞 觩 觫 觨 誫 誙 誋 誒 誏 誖 谽 豨 豩 賕 賏 賗
+- 趖 踉 踂 跿 踍 跽 踊 踃 踇 踆 踅 跾 踀 踄 輐 輑
+- 輎 輍 鄣 鄜 鄠 鄢 鄟 鄝 鄚 鄤 鄡 鄛 酺 酲 酹 酳
+- 銥 銤 鉶 銛 鉺 銠 銔 銪 銍 銦 銚 銫 鉹 銗 鉿 銣
+- 鋮 銎 銂 銕 銢 鉽 銈 銡 銊 銆 銌 銙 銧 鉾 銇 銩
+- 銝 銋 鈭 隞 隡 雿 靘 靽 靺 靾 鞃 鞀 鞂 靻 鞄 鞁
+- 靿 韎 韍 頖 颭 颮 餂 餀 餇 馝 馜 駃 馹 馻 馺 駂
+- 馽 駇 骱 髣 髧 鬾 鬿 魠 魡 魟 鳱 鳲 鳵 麧 僿 儃
+- 儰 僸 儆 儇 僶 僾 儋 儌 僽 儊 劋 劌 勱 勯 噈 噂
+- 噌 嘵 噁 噊 噉 噆 噘 噚 噀 嘳 嘽 嘬 嘾 嘸 嘪 嘺
+- 圚 墫 墝 墱 墠 墣 墯 墬 墥 墡 壿 嫿 嫴 嫽 嫷 嫶
+- 嬃 嫸 嬂 嫹 嬁 嬇 嬅 嬏 屧 嶙 嶗 嶟 嶒 嶢 嶓 嶕
+- 嶠 嶜 嶡 嶚 嶞 幩 幝 幠 幜 緳 廛 廞 廡 彉 徲 憋
+- 憃 慹 憱 憰 憢 憉 憛 憓 憯 憭 憟 憒 憪 憡 憍 慦
+- 憳 戭 摮 摰 撖 撠 撅 撗 撜 撏 撋 撊 撌 撣 撟 摨
+- 撱 撘 敶 敺 敹 敻 斲 斳 暵 暰 暩 暲 暷 暪 暯 樀
+- 樆 樗 槥 槸 樕 槱 槤 樠 槿 槬 槢 樛 樝 槾 樧 槲
+- 槮 樔 槷 槧 橀 樈 槦 槻 樍 槼 槫 樉 樄 樘 樥 樏
+- 槶 樦 樇 槴 樖 歑 殥 殣 殢 殦 氁 氀 毿 氂 潁 漦
+- 潾 澇 濆 澒 澍 澉 澌 潢 潏 澅 潚 澖 潶 潬 澂 潕
+- 潲 潒 潐 潗 澔 澓 潝 漀 潡 潫 潽 潧 澐 潓 澋 潩
+- 潿 澕 潣 潷 潪 潻 熲 熯 熛 熰 熠 熚 熩 熵 熝 熥
+- 熞 熤 熡 熪 熜 熧 熳 犘 犚 獘 獒 獞 獟 獠 獝 獛
+- 獡 獚 獙 獢 璇 璉 璊 璆 璁 瑽 璅 璈 瑼 瑹 甈 甇
+- 畾 瘥 瘞 瘙 瘝 瘜 瘣 瘚 瘨 瘛 皜 皝 皞 皛 瞍 瞏
+- 瞉 瞈 磍 碻 磏 磌 磑 磎 磔 磈 磃 磄 磉 禚 禡 禠
+- 禜 禢 禛 歶 稹 窲 窴 窳 箷 篋 箾 箬 篎 箯 箹 篊
+- 箵 糅 糈 糌 糋 緷 緛 緪 緧 緗 緡 縃 緺 緦 緶 緱
+- 緰 緮 緟 罶 羬 羰 羭 翭 翫 翪 翬 翦 翨 聤 聧 膣
+- 膟 膞 膕 膢 膙 膗 舖 艏 艓 艒 艐 艎 艑 蔤 蔻 蔏
+- 蔀 蔩 蔎 蔉 蔍 蔟 蔊 蔧 蔜 蓻 蔫 蓺 蔈 蔌 蓴 蔪
+- 蓲 蔕 蓷 蓫 蓳 蓼 蔒 蓪 蓩 蔖 蓾 蔨 蔝 蔮 蔂 蓽
+- 蔞 蓶 蔱 蔦 蓧 蓨 蓰 蓯 蓹 蔘 蔠 蔰 蔋 蔙 蔯 虢
+- 蝖 蝣 蝤 蝷 蟡 蝳 蝘 蝔 蝛 蝒 蝡 蝚 蝑 蝞 蝭 蝪
+- 蝐 蝎 蝟 蝝 蝯 蝬 蝺 蝮 蝜 蝥 蝏 蝻 蝵 蝢 蝧 蝩
+- 衚 褅 褌 褔 褋 褗 褘 褙 褆 褖 褑 褎 褉 覢 覤 覣
+- 觭 觰 觬 諏 諆 誸 諓 諑 諔 諕 誻 諗 誾 諀 諅 諘
+- 諃 誺 誽 諙 谾 豍 貏 賥 賟 賙 賨 賚 賝 賧 趠 趜
+- 趡 趛 踠 踣 踥 踤 踮 踕 踛 踖 踑 踙 踦 踧 踔 踒
+- 踘 踓 踜 踗 踚 輬 輤 輘 輚 輠 輣 輖 輗 遳 遰 遯
+- 遧 遫 鄯 鄫 鄩 鄪 鄲 鄦 鄮 醅 醆 醊 醁 醂 醄 醀
+- 鋐 鋃 鋄 鋀 鋙 銶 鋏 鋱 鋟 鋘 鋩 鋗 鋝 鋌 鋯 鋂
+- 鋨 鋊 鋈 鋎 鋦 鋍 鋕 鋉 鋠 鋞 鋧 鋑 鋓 銵 鋡 鋆
+- 銴 镼 閬 閫 閮 閰 隤 隢 雓 霅 霈 霂 靚 鞊 鞎 鞈
+- 韐 韏 頞 頝 頦 頩 頨 頠 頛 頧 颲 餈 飺 餑 餔 餖
+- 餗 餕 駜 駍 駏 駓 駔 駎 駉 駖 駘 駋 駗 駌 骳 髬
+- 髫 髳 髲 髱 魆 魃 魧 魴 魱 魦 魶 魵 魰 魨 魤 魬
+- 鳼 鳺 鳽 鳿 鳷 鴇 鴀 鳹 鳻 鴈 鴅 鴄 麃 黓 鼏 鼐
+- 儜 儓 儗 儚 儑 凞 匴 叡 噰 噠 噮 噳 噦 噣 噭 噲
+- 噞 噷 圜 圛 壈 墽 壉 墿 墺 壂 墼 壆 嬗 嬙 嬛 嬡
+- 嬔 嬓 嬐 嬖 嬨 嬚 嬠 嬞 寯 嶬 嶱 嶩 嶧 嶵 嶰 嶮
+- 嶪 嶨 嶲 嶭 嶯 嶴 幧 幨 幦 幯 廩 廧 廦 廨 廥 彋
+- 徼 憝 憨 憖 懅 憴 懆 懁 懌 憺 憿 憸 憌 擗 擖 擐
+- 擏 擉 撽 撉 擃 擛 擳 擙 攳 敿 敼 斢 曈 暾 曀 曊
+- 曋 曏 暽 暻 暺 曌 朣 樴 橦 橉 橧 樲 橨 樾 橝 橭
+- 橶 橛 橑 樨 橚 樻 樿 橁 橪 橤 橐 橏 橔 橯 橩 橠
+- 樼 橞 橖 橕 橍 橎 橆 歕 歔 歖 殧 殪 殫 毈 毇 氄
+- 氃 氆 澭 濋 澣 濇 澼 濎 濈 潞 濄 澽 澞 濊 澨 瀄
+- 澥 澮 澺 澬 澪 濏 澿 澸 澢 濉 澫 濍 澯 澲 澰 燅
+- 燂 熿 熸 燖 燀 燁 燋 燔 燊 燇 燏 熽 燘 熼 燆 燚
+- 燛 犝 犞 獩 獦 獧 獬 獥 獫 獪 瑿 璚 璠 璔 璒 璕
+- 璡 甋 疀 瘯 瘭 瘱 瘽 瘳 瘼 瘵 瘲 瘰 皻 盦 瞚 瞝
+- 瞡 瞜 瞛 瞢 瞣 瞕 瞙 瞗 磝 磩 磥 磪 磞 磣 磛 磡
+- 磢 磭 磟 磠 禤 穄 穈 穇 窶 窸 窵 窱 窷 篞 篣 篧
+- 篝 篕 篥 篚 篨 篹 篔 篪 篢 篜 篫 篘 篟 糒 糔 糗
+- 糐 糑 縒 縡 縗 縌 縟 縠 縓 縎 縜 縕 縚 縢 縋 縏
+- 縖 縍 縔 縥 縤 罃 罻 罼 罺 羱 翯 耪 耩 聬 膱 膦
+- 膮 膹 膵 膫 膰 膬 膴 膲 膷 膧 臲 艕 艖 艗 蕖 蕅
+- 蕫 蕍 蕓 蕡 蕘 蕀 蕆 蕤 蕁 蕢 蕄 蕑 蕇 蕣 蔾 蕛
+- 蕱 蕎 蕮 蕵 蕕 蕧 蕠 薌 蕦 蕝 蕔 蕥 蕬 虣 虥 虤
+- 螛 螏 螗 螓 螒 螈 螁 螖 螘 蝹 螇 螣 螅 螐 螑 螝
+- 螄 螔 螜 螚 螉 褞 褦 褰 褭 褮 褧 褱 褢 褩 褣 褯
+- 褬 褟 觱 諠 諢 諲 諴 諵 諝 謔 諤 諟 諰 諈 諞 諡
+- 諨 諿 諯 諻 貑 貒 貐 賵 賮 賱 賰 賳 赬 赮 趥 趧
+- 踳 踾 踸 蹀 蹅 踶 踼 踽 蹁 踰 踿 躽 輶 輮 輵 輲
+- 輹 輷 輴 遶 遹 遻 邆 郺 鄳 鄵 鄶 醓 醐 醑 醍 醏
+- 錧 錞 錈 錟 錆 錏 鍺 錸 錼 錛 錣 錒 錁 鍆 錭 錎
+- 錍 鋋 錝 鋺 錥 錓 鋹 鋷 錴 錂 錤 鋿 錩 錹 錵 錪
+- 錔 錌 錋 鋾 錉 錀 鋻 錖 閼 闍 閾 閹 閺 閶 閿 閵
+- 閽 隩 雔 霋 霒 霐 鞙 鞗 鞔 韰 韸 頵 頯 頲 餤 餟
+- 餧 餩 馞 駮 駬 駥 駤 駰 駣 駪 駩 駧 骹 骿 骴 骻
+- 髶 髺 髹 髷 鬳 鮀 鮅 鮇 魼 魾 魻 鮂 鮓 鮒 鮐 魺
+- 鮕 魽 鮈 鴥 鴗 鴠 鴞 鴔 鴩 鴝 鴘 鴢 鴐 鴙 鴟 麈
+- 麆 麇 麮 麭 黕 黖 黺 鼒 鼽 儦 儥 儢 儤 儠 儩 勴
+- 嚓 嚌 嚍 嚆 嚄 嚃 噾 嚂 噿 嚁 壖 壔 壏 壒 嬭 嬥
+- 嬲 嬣 嬬 嬧 嬦 嬯 嬮 孻 寱 寲 嶷 幬 幪 徾 徻 懃
+- 憵 憼 懧 懠 懥 懤 懨 懞 擯 擩 擣 擫 擤 擨 斁 斀
+- 斶 旚 曒 檍 檖 檁 檥 檉 檟 檛 檡 檞 檇 檓 檎 檕
+- 檃 檨 檤 檑 橿 檦 檚 檅 檌 檒 歛 殭 氉 濌 澩 濴
+- 濔 濣 濜 濭 濧 濦 濞 濲 濝 濢 濨 燡 燱 燨 燲 燤
+- 燰 燢 獳 獮 獯 璗 璲 璫 璐 璪 璭 璱 璥 璯 甐 甑
+- 甒 甏 疄 癃 癈 癉 癇 皤 盩 瞵 瞫 瞲 瞷 瞶 瞴 瞱
+- 瞨 矰 磳 磽 礂 磻 磼 磲 礅 磹 磾 礄 禫 禨 穜 穛
+- 穖 穘 穔 穚 窾 竀 竁 簅 簏 篲 簀 篿 篻 簎 篴 簋
+- 篳 簂 簉 簃 簁 篸 篽 簆 篰 篱 簐 簊 糨 縭 縼 繂
+- 縳 顈 縸 縪 繉 繀 繇 縩 繌 縰 縻 縶 繄 縺 罅 罿
+- 罾 罽 翴 翲 耬 膻 臄 臌 臊 臅 臇 膼 臩 艛 艚 艜
+- 薃 薀 薏 薧 薕 薠 薋 薣 蕻 薤 薚 薞 蕷 蕼 薉 薡
+- 蕺 蕸 蕗 薎 薖 薆 薍 薙 薝 薁 薢 薂 薈 薅 蕹 蕶
+- 薘 薐 薟 虨 螾 螪 螭 蟅 螰 螬 螹 螵 螼 螮 蟉 蟃
+- 蟂 蟌 螷 螯 蟄 蟊 螴 螶 螿 螸 螽 蟞 螲 褵 褳 褼
+- 褾 襁 襒 褷 襂 覭 覯 覮 觲 觳 謞 謘 謖 謑 謅 謋
+- 謢 謏 謒 謕 謇 謍 謈 謆 謜 謓 謚 豏 豰 豲 豱 豯
+- 貕 貔 賹 赯 蹎 蹍 蹓 蹐 蹌 蹇 轃 轀 邅 遾 鄸 醚
+- 醢 醛 醙 醟 醡 醝 醠 鎡 鎃 鎯 鍤 鍖 鍇 鍼 鍘 鍜
+- 鍶 鍉 鍐 鍑 鍠 鍭 鎏 鍌 鍪 鍹 鍗 鍕 鍒 鍏 鍱 鍷
+- 鍻 鍡 鍞 鍣 鍧 鎀 鍎 鍙 闇 闀 闉 闃 闅 閷 隮 隰
+- 隬 霠 霟 霘 霝 霙 鞚 鞡 鞜 鞞 鞝 韕 韔 韱 顁 顄
+- 顊 顉 顅 顃 餥 餫 餬 餪 餳 餲 餯 餭 餱 餰 馘 馣
+- 馡 騂 駺 駴 駷 駹 駸 駶 駻 駽 駾 駼 騃 骾 髾 髽
+- 鬁 髼 魈 鮚 鮨 鮞 鮛 鮦 鮡 鮥 鮤 鮆 鮢 鮠 鮯 鴳
+- 鵁 鵧 鴶 鴮 鴯 鴱 鴸 鴰 鵅 鵂 鵃 鴾 鴷 鵀 鴽 翵
+- 鴭 麊 麉 麍 麰 黈 黚 黻 黿 鼤 鼣 鼢 齔 龠 儱 儭
+- 儮 嚘 嚜 嚗 嚚 嚝 嚙 奰 嬼 屩 屪 巀 幭 幮 懘 懟
+- 懭 懮 懱 懪 懰 懫 懖 懩 擿 攄 擽 擸 攁 攃 擼 斔
+- 旛 曚 曛 曘 櫅 檹 檽 櫡 櫆 檺 檶 檷 櫇 檴 檭 歞
+- 毉 氋 瀇 瀌 瀍 瀁 瀅 瀔 瀎 濿 瀀 濻 瀦 濼 濷 瀊
+- 爁 燿 燹 爃 燽 獶 璸 瓀 璵 瓁 璾 璶 璻 瓂 甔 甓
+- 癜 癤 癙 癐 癓 癗 癚 皦 皽 盬 矂 瞺 磿 礌 礓 礔
+- 礉 礐 礒 礑 禭 禬 穟 簜 簩 簙 簠 簟 簭 簝 簦 簨
+- 簢 簥 簰 繜 繐 繖 繣 繘 繢 繟 繑 繠 繗 繓 羵 羳
+- 翷 翸 聵 臑 臒 臐 艟 艞 薴 藆 藀 藃 藂 薳 薵 薽
+- 藇 藄 薿 藋 藎 藈 藅 薱 薶 藒 蘤 薸 薷 薾 虩 蟧
+- 蟦 蟢 蟛 蟫 蟪 蟥 蟟 蟳 蟤 蟔 蟜 蟓 蟭 蟘 蟣 螤
+- 蟗 蟙 蠁 蟴 蟨 蟝 襓 襋 襏 襌 襆 襐 襑 襉 謪 謧
+- 謣 謳 謰 謵 譇 謯 謼 謾 謱 謥 謷 謦 謶 謮 謤 謻
+- 謽 謺 豂 豵 貙 貘 貗 賾 贄 贂 贀 蹜 蹢 蹠 蹗 蹖
+- 蹞 蹥 蹧 蹛 蹚 蹡 蹝 蹩 蹔 轆 轇 轈 轋 鄨 鄺 鄻
+- 鄾 醨 醥 醧 醯 醪 鎵 鎌 鎒 鎷 鎛 鎝 鎉 鎧 鎎 鎪
+- 鎞 鎦 鎕 鎈 鎙 鎟 鎍 鎱 鎑 鎲 鎤 鎨 鎴 鎣 鎥 闒
+- 闓 闑 隳 雗 雚 巂 雟 雘 雝 霣 霢 霥 鞬 鞮 鞨 鞫
+- 鞤 鞪 鞢 鞥 韗 韙 韖 韘 韺 顐 顑 顒 颸 饁 餼 餺
+- 騏 騋 騉 騍 騄 騑 騊 騅 騇 騆 髀 髜 鬈 鬄 鬅 鬩
+- 鬵 魊 魌 魋 鯇 鯆 鯃 鮿 鯁 鮵 鮸 鯓 鮶 鯄 鮹 鮽
+- 鵜 鵓 鵏 鵊 鵛 鵋 鵙 鵖 鵌 鵗 鵒 鵔 鵟 鵘 鵚 麎
+- 麌 黟 鼁 鼀 鼖 鼥 鼫 鼪 鼩 鼨 齌 齕 儴 儵 劖 勷
+- 厴 嚫 嚭 嚦 嚧 嚪 嚬 壚 壝 壛 夒 嬽 嬾 嬿 巃 幰
+- 徿 懻 攇 攐 攍 攉 攌 攎 斄 旞 旝 曞 櫧 櫠 櫌 櫑
+- 櫙 櫋 櫟 櫜 櫐 櫫 櫏 櫍 櫞 歠 殰 氌 瀙 瀧 瀠 瀖
+- 瀫 瀡 瀢 瀣 瀩 瀗 瀤 瀜 瀪 爌 爊 爇 爂 爅 犥 犦
+- 犤 犣 犡 瓋 瓅 璷 瓃 甖 癠 矉 矊 矄 矱 礝 礛 礡
+- 礜 礗 礞 禰 穧 穨 簳 簼 簹 簬 簻 糬 糪 繶 繵 繸
+- 繰 繷 繯 繺 繲 繴 繨 罋 罊 羃 羆 羷 翽 翾 聸 臗
+- 臕 艤 艡 艣 藫 藱 藭 藙 藡 藨 藚 藗 藬 藲 藸 藘
+- 藟 藣 藜 藑 藰 藦 藯 藞 藢 蠀 蟺 蠃 蟶 蟷 蠉 蠌
+- 蠋 蠆 蟼 蠈 蟿 蠊 蠂 襢 襚 襛 襗 襡 襜 襘 襝 襙
+- 覈 覷 覶 觶 譐 譈 譊 譀 譓 譖 譔 譋 譕 譑 譂 譒
+- 譗 豃 豷 豶 貚 贆 贇 贉 趬 趪 趭 趫 蹭 蹸 蹳 蹪
+- 蹯 蹻 軂 轒 轑 轏 轐 轓 辴 酀 鄿 醰 醭 鏞 鏇 鏏
+- 鏂 鏚 鏐 鏹 鏬 鏌 鏙 鎩 鏦 鏊 鏔 鏮 鏣 鏕 鏄 鏎
+- 鏀 鏒 鏧 镽 闚 闛 雡 霩 霫 霬 霨 霦 鞳 鞷 鞶 韝
+- 韞 韟 顜 顙 顝 顗 颿 颽 颻 颾 饈 饇 饃 馦 馧 騚
+- 騕 騥 騝 騤 騛 騢 騠 騧 騣 騞 騜 騔 髂 鬋 鬊 鬎
+- 鬌 鬷 鯪 鯫 鯠 鯞 鯤 鯦 鯢 鯰 鯔 鯗 鯬 鯜 鯙 鯥
+- 鯕 鯡 鯚 鵷 鶁 鶊 鶄 鶈 鵱 鶀 鵸 鶆 鶋 鶌 鵽 鵫
+- 鵴 鵵 鵰 鵩 鶅 鵳 鵻 鶂 鵯 鵹 鵿 鶇 鵨 麔 麑 黀
+- 黼 鼭 齀 齁 齍 齖 齗 齘 匷 嚲 嚵 嚳 壣 孅 巆 巇
+- 廮 廯 忀 忁 懹 攗 攖 攕 攓 旟 曨 曣 曤 櫳 櫰 櫪
+- 櫨 櫹 櫱 櫮 櫯 瀼 瀵 瀯 瀷 瀴 瀱 灂 瀸 瀿 瀺 瀹
+- 灀 瀻 瀳 灁 爓 爔 犨 獽 獼 璺 皫 皪 皾 盭 矌 矎
+- 矏 矍 矲 礥 礣 礧 礨 礤 礩 禲 穮 穬 穭 竷 籉 籈
+- 籊 籇 籅 糮 繻 繾 纁 纀 羺 翿 聹 臛 臙 舋 艨 艩
+- 蘢 藿 蘁 藾 蘛 蘀 藶 蘄 蘉 蘅 蘌 藽 蠙 蠐 蠑 蠗
+- 蠓 蠖 襣 襦 覹 觷 譠 譪 譝 譨 譣 譥 譧 譭 趮 躆
+- 躈 躄 轙 轖 轗 轕 轘 轚 邍 酃 酁 醷 醵 醲 醳 鐋
+- 鐓 鏻 鐠 鐏 鐔 鏾 鐕 鐐 鐨 鐙 鐍 鏵 鐀 鏷 鐇 鐎
+- 鐖 鐒 鏺 鐉 鏸 鐊 鏿 鏼 鐌 鏶 鐑 鐆 闞 闠 闟 霮
+- 霯 鞹 鞻 韽 韾 顠 顢 顣 顟 飁 飂 饐 饎 饙 饌 饋
+- 饓 騲 騴 騱 騬 騪 騶 騩 騮 騸 騭 髇 髊 髆 鬐 鬒
+- 鬑 鰋 鰈 鯷 鰅 鰒 鯸 鱀 鰇 鰎 鰆 鰗 鰔 鰉 鶟 鶙
+- 鶤 鶝 鶒 鶘 鶐 鶛 鶠 鶔 鶜 鶪 鶗 鶡 鶚 鶢 鶨 鶞
+- 鶣 鶿 鶩 鶖 鶦 鶧 麙 麛 麚 黥 黤 黧 黦 鼰 鼮 齛
+- 齠 齞 齝 齙 龑 儺 儹 劘 劗 囃 嚽 嚾 孈 孇 巋 巏
+- 廱 懽 攛 欂 櫼 欃 櫸 欀 灃 灄 灊 灈 灉 灅 灆 爝
+- 爚 爙 獾 甗 癪 矐 礭 礱 礯 籔 籓 糲 纊 纇 纈 纋
+- 纆 纍 罍 羻 耰 臝 蘘 蘪 蘦 蘟 蘣 蘜 蘙 蘧 蘮 蘡
+- 蘠 蘩 蘞 蘥 蠩 蠝 蠛 蠠 蠤 蠜 蠫 衊 襭 襩 襮 襫
+- 觺 譹 譸 譅 譺 譻 贐 贔 趯 躎 躌 轞 轛 轝 酆 酄
+- 酅 醹 鐿 鐻 鐶 鐩 鐽 鐼 鐰 鐹 鐪 鐷 鐬 鑀 鐱 闥
+- 闤 闣 霵 霺 鞿 韡 顤 飉 飆 飀 饘 饖 騹 騽 驆 驄
+- 驂 驁 騺 騿 髍 鬕 鬗 鬘 鬖 鬺 魒 鰫 鰝 鰜 鰬 鰣
+- 鰨 鰩 鰤 鰡 鶷 鶶 鶼 鷁 鷇 鷊 鷏 鶾 鷅 鷃 鶻 鶵
+- 鷎 鶹 鶺 鶬 鷈 鶱 鶭 鷌 鶳 鷍 鶲 鹺 麜 黫 黮 黭
+- 鼛 鼘 鼚 鼱 齎 齥 齤 龒 亹 囆 囅 囋 奱 孋 孌 巕
+- 巑 廲 攡 攠 攦 攢 欋 欈 欉 氍 灕 灖 灗 灒 爞 爟
+- 犩 獿 瓘 瓕 瓙 瓗 癭 皭 礵 禴 穰 穱 籗 籜 籙 籛
+- 籚 糴 糱 纑 罏 羇 臞 艫 蘴 蘵 蘳 蘬 蘲 蘶 蠬 蠨
+- 蠦 蠪 蠥 襱 覿 覾 觻 譾 讄 讂 讆 讅 譿 贕 躕 躔
+- 躚 躒 躐 躖 躗 轠 轢 酇 鑌 鑐 鑊 鑋 鑏 鑇 鑅 鑈
+- 鑉 鑆 霿 韣 顪 顩 飋 饔 饛 驎 驓 驔 驌 驏 驈 驊
+- 驉 驒 驐 髐 鬙 鬫 鬻 魖 魕 鱆 鱈 鰿 鱄 鰹 鰳 鱁
+- 鰼 鰷 鰴 鰲 鰽 鰶 鷛 鷒 鷞 鷚 鷋 鷐 鷜 鷑 鷟 鷩
+- 鷙 鷘 鷖 鷵 鷕 鷝 麶 黰 鼵 鼳 鼲 齂 齫 龕 龢 儽
+- 劙 壨 壧 奲 孍 巘 蠯 彏 戁 戃 戄 攩 攥 斖 曫 欑
+- 欒 欏 毊 灛 灚 爢 玂 玁 玃 癰 矔 籧 籦 纕 艬 蘺
+- 虀 蘹 蘼 蘱 蘻 蘾 蠰 蠲 蠮 蠳 襶 襴 襳 觾 讌 讎
+- 讋 讈 豅 贙 躘 轤 轣 醼 鑢 鑕 鑝 鑗 鑞 韄 韅 頀
+- 驖 驙 鬞 鬟 鬠 鱒 鱘 鱐 鱊 鱍 鱋 鱕 鱙 鱌 鱎 鷻
+- 鷷 鷯 鷣 鷫 鷸 鷤 鷶 鷡 鷮 鷦 鷲 鷰 鷢 鷬 鷴 鷳
+- 鷨 鷭 黂 黐 黲 黳 鼆 鼜 鼸 鼷 鼶 齃 齏 齱 齰 齮
+- 齯 囓 囍 孎 屭 攭 曭 曮 欓 灟 灡 灝 灠 爣 瓛 瓥
+- 矕 礸 禷 禶 籪 纗 羉 艭 虃 蠸 蠷 蠵 衋 讔 讕 躞
+- 躟 躠 躝 醾 醽 釂 鑫 鑨 鑩 雥 靆 靃 靇 韇 韥 驞
+- 髕 魙 鱣 鱧 鱦 鱢 鱞 鱠 鸂 鷾 鸇 鸃 鸆 鸅 鸀 鸁
+- 鸉 鷿 鷽 鸄 麠 鼞 齆 齴 齵 齶 囔 攮 斸 欘 欙 欗
+- 欚 灢 爦 犪 矘 矙 礹 籩 籫 糶 纚 纘 纛 纙 臠 臡
+- 虆 虇 虈 襹 襺 襼 襻 觿 讘 讙 躥 躤 躣 鑮 鑭 鑯
+- 鑱 鑳 靉 顲 饟 鱨 鱮 鱭 鸋 鸍 鸐 鸏 鸒 鸑 麡 黵
+- 鼉 齇 齸 齻 齺 齹 圞 灦 籯 蠼 趲 躦 釃 鑴 鑸 鑶
+- 鑵 驠 鱴 鱳 鱱 鱵 鸔 鸓 黶 鼊 龤 灨 灥 糷 虪 蠾
+- 蠽 蠿 讞 貜 躩 軉 靋 顳 顴 飌 饡 馫 驤 驦 驧 鬤
+- 鸕 鸗 齈 戇 欞 爧 虌 躨 钂 钀 钁 驩 驨 鬮 鸙 爩
+- 虋 讟 钃 鱹 麷 癵 驫 鱺 鸝 灩 灪 麤 齾 齉 龘 碁
+- 銹 裏 墻 恒 粧 嫺 ╔ ╦ ╗ ╠ ╬ ╣ ╚ ╩ ╝ ╒
+- ╤ ╕ ╞ ╪ ╡ ╘ ╧ ╛ ╓ ╥ ╖ ╟ ╫ ╢ ╙ ╨
+- ╜ ║ ═ ╭ ╮ ╰ ╯ ■ 𠕇 鋛 𠗟  蕌 䊵 珯 况
+- 㙉 𤥂 𨧤 鍄 𡧛 苮 𣳈 砼 杄 拟 𤤳 𨦪 𠊠 𦮳 𡌅 侫
+-  倈 𦴩  𣘀 𤪱 𢔓 𠍾 徤 𠎀 𠍇 滛 𠐟 儁 㑺 儎
+- 顬 㝃 萖  𠒇 兠 𣎴 兪 𠯿 𢃼 𠋥 𢔰 𠖎 𣈳  宂
+- 蝽 𠖳 𣲙 冲 冸 鴴 凉 减 凑 㳜 凓 𤪦 决 凢 卂 凭
+- 菍 椾  彻 刋 刦 刼 劵 剗 劔 効 勅 簕 蕂 勠 蘍
+-  𨫞 啉 滙 𣾀 𠥔 𣿬 匳 𠯢 泋 𡜦 栛 珕 恊 㺪 㣌
+- 𡛨 燝 䒢 卭 却 𨚫 卾 𡖖 𡘓 矦 厓 𨪛 厠 厫 厮 玧
+- 𥝲 㽙 玜 叁 叅 汉 义 埾 叙 㪫 𠮏 叠 𣿫 𢶣 叶 𠱷
+- 吓 灹 唫 晗 浛 呭 𦭓  啝 咏 咤 䞦   㶴 𠵍
+- 𨦼 𢚘 啇 䳭 启 琗 喆 喩 𡣗 𤀺 䕒 𤐵 暳 𡂴 嘷 曍
+- 𣊊 暤 暭 噍 噏 磱 囱 鞇 叾 圀 囯 园 𨭦 㘣 𡉏 坆
+- 𤆥 汮 炋 坂 㚱 𦱾 埦  堃 𡑔 𤍣 堦 𤯵 塜 墪 㕡
+- 壠 壜  壻 寿 坃 𪅐 𤉸 鏓 㖡 够 梦 㛃 湙 𡘾 娤
+- 啓 𡚒 蔅 姉 𠵎 𦲁 𦴪 𡟜 姙 𡟻 𡞲 𦶦 浱 𡠨 𡛕 姹
+- 𦹅 媫 婣 㛦  㜈 媖 瑥 嫓 𦾡  㶅 𡤑 㜲  広
+- 勐 孶 斈 孼 𧨎 䀄 䡝  寕 慠   𠖥 寳 宝 䴐
+- 尅 𡭄 尓 珎 尔 𡲥 𦬨 屉 䣝 岅 峩 峯 嶋 𡷹 𡸷 崐
+- 崘 嵆 𡺤 岺 巗 苼 㠭 𤤁 𢁉 𢅳 芇 㠶 㯂 帮 檊 幺
+-  𠳓 厦 亷 厨 𡝱 帉 廴 𨒂 廹 廻 㢠 廼 栾 鐛 弍
+- 𠇁 弢 㫞 䢮 𡌺 强 𦢈 𢏐 𢑱 彣 鞽 𦹮 彲 鍀  徧
+- 嶶 㵟  𡽪 𧃸 𢙨 釖 𠊞 𨨩 怱 暅  㥣 㷇 㘹 垐
+- 𢞴 祱 㹀 悞 悳  𤦏  璤 僡 媠 慤 萤 慂  𦻒
+- 憁 凴  憇 宪 𣾷 𢡟 懓 𨮝 𩥝 懐 㤲 𢦀 𢣁 怣 慜
+- 攞 掋 𠄘 担 𡝰 拕 𢸍 捬 𤧟 㨗 搸 揸  𡟼 澊 𢸶
+- 頔 𤂌 𥜝 擡 擥 鑻 㩦 携 㩗 敍 漖 𤨨 𤨣 斅 敭 敟
+- 𣁾 斵 𤥀 䬷 旑 䃘 𡠩 无 旣 忟 𣐀 昘 𣇷 𣇸 晄 𣆤
+- 𣆥 晋 𠹵 晧 𥇦 晳  𣈱 𨗴 𣇈 𥌓 矅 𢣷 馤 朂 𤎜
+- 𤨡 㬫 槺 𣟂 杧 杢   柗 䓩 栢 湐 鈼 栁 𣏦 𦶠
+- 桝  槡 樋 𨫟 楳 棃 𣗍 椁 椀 㴲 㨁 𣘼 㮀 枬 楡
+- 𨩊 䋼 椶 榘 㮡 𠏉 荣 傐 槹  𢄪 橅  檝 㯳 枱
+- 櫈 𩆜 㰍 欝  惞 欵 歴  溵 𣫛 𠎵  㝀 吡 𣭚
+- 毡 𣻼 毜 氷 𢒋  𦭑 汚 舦 汹 𣶼 䓅 𣶽 𤆤 𤤌 𤤀
+- 𣳉 㛥 㳫  鮃 𣇹  羏 样 𦴥 𦶡 𦷫 涖 浜 湼 漄
+- 𤥿  𦹲 蔳 𦽴 凇 萮 𨬡 𣸯 瑓 𣾂 秌 湏 媑 𣁋 濸
+- 㜍 澝 𣸰 滺 𡒗 𤀽 䕕 鏰 潄 潜 㵎 潴  㴻 澟 𤅄
+- 濓  𤅕 𤀹 𥴠  𤄿 凟 𤅖 𤅗 𤅀 𦇝 灋 灾 炧 炁
+- 烌 烕 烖 烟 䄄 㷨 熴 熖 𤉷 焫 煅 媈 煊 岜 𤍥 煏
+- 鍢  焬 𤑚 𤨧 𤨢 熺 𨯨 炽 爎 鑂 爕 夑 鑃 爤 鍁
+-  爮 牀 𤥴 梽 牕 牗 㹕  栍 漽 犂 猫 𤠣 𨠫 䣭
+- 𨠄 猨 献 珏 玪  𦨮 珉 瑉 𤇢 𡛧 𤨤 昣 㛅 𤦷 𤦍
+-  珷 琕 椃 𤨦 琹  㻗 𢢭 瑠 𨺲 瑇 珤 瑶 莹 瑬
+- 㜰 瑴 鏱 樬 璂 䥓  𤅟 𤩹 𨮏 孆  𡢞 瓈 𡦈 甎
+- 甞 𨻙 𡩋 寗  鎅 畍 畊 畧 畮 𤾂 㼄  疎 瑝 疞
+- 疴 瘂 瘬 癑 癏 癯 癶  皐 臯 㟸 𦤑 𦤎 皡 皥 皷
+- 盌 𦾟 葢 𥂝 𥅽  眞 眦 着 撯 𥈠 睘 𣊬 瞯  
+- 𡛁 矴   棊 碯 磇 磓 隥 礮 𥗠 磗 礴 碱 𧘌 辸
+- 袄 𨬫  𢘜 禆 褀 椂 禀 𥡗 禝 𧬹 礼 禩 渪 𧄦 㺨
+- 秆 𩄍 秔
++ 䏰 䰲 䘃 䖦 䕸 𧉧 䵷 䖳 𧲱 䳢 𧳅 㮕 䜶 䝄 䱇 䱀
++ 𤊿 𣘗 𧍒 𦺋 𧃒 䱗 𪍑 䝏 䗚 䲅 𧱬 䴇 䪤 䚡 𦬣 爥
++ 𥩔 𡩣 𣸆 𣽡 晍 囻 綕 夝 𨮹 㷴 霴 𧯯 寛 𡵞 媤 㘥
++ 𩺰 嫑 宷 峼 杮 薓 𩥅 瑡 璝 㡵 𡵓 𣚞 𦀡 㻬 𥣞 㫵
++ 竼 龗 𤅡 𨤍 𣇪 𠪊 𣉞 䌊 蒄 龖 鐯 䤰 蘓 墖 靊 鈘
++ 秐 稲 晠 権 袝 瑌 篅 枂 稬 剏 遆 㓦 珄 𥶹 瓆 鿇
++ 垳 䤯 呌 䄱 𣚎 堘 穲 𧭥 讏 䚮 𦺈 䆁 𥶙 箮 𢒼 鿈
++ 𢓁 𢓉 𢓌 鿉 蔄 𣖻 䂴 鿊 䓡 𪷿 拁 灮 鿋 ㇀ ㇁ ㇂
++ ㇃ ㇄ 𠄌 ㇅ 𠃑 𠃍 ㇆ ㇇ 𠃋 𡿨 ㇈ 𠃊 ㇉ ㇊ ㇋ ㇌
++ 𠄎 ㇍ ㇎ Ā Á Ǎ À Ē É Ě È Ō Ó Ǒ Ò Ê̄
++ Ế Ê̌ Ề Ê ā á ǎ à ɑ ē é ě è ī í ǐ
++ ì ō ó ǒ ò ū ú ǔ ù ǖ ǘ ǚ ǜ ü ê̄ ế
++ ê̌ ề ê ɡ ⏚ ⏛ 𪎩 𡅅 攊 丽 滝 鵎 釟 𧜵 撑 会
++ 伨 侨 兖 兴 农 凤 务 动 医 华 发 变 团 声 处 备
++ 夲 头 学 实 実 岚 庆 总 斉 柾 栄 桥 济 炼 电 纤
++ 纬 纺 织 经 统 缆 缷 艺 苏 药 视 设 询 车 轧 轮
++ 琑 糼 緍 楆 竉 刧 醌 碸 酞 肼 贋 胶 𠧧 肟 黇 䳍
++ 鷉 鸌 䰾 𩷶 𧀎 鸊 𪄳 㗁 溚 舾 甙 䤑 马 骏 龙 禇
++ 𨑬 𡷊 𠗐 𢫦 两 亁 亀 亇 亿 仫 伷 㑌 侽 㹈 倃 傈
++ 㑽 㒓 㒥 円 夅 凛 凼 刅 争 剹 劐 匧 㗇 厩 㕑 厰
++ 㕓 参 吣 㕭 㕲 㚁 咓 咣 咴 咹 哐 哯 唘 唣 唨 㖘
++ 唿 㖥 㖿 嗗 㗅 𧶄 唥 𠱂 𠴕 𥄫 喐 𢳆 㧬 𠍁 蹆 𤶸
++ 𩓥 䁓 𨂾 睺 𢰸 㨴 䟕 𨅝 𦧲 𤷪 擝 𠵼 𠾴 𠳕 𡃴 撍
++ 蹾 𠺖 𠰋 𠽤 𢲩 𨉖 𤓓 𠵆 𩩍 𨃩 䟴 𤺧 𢳂 骲 㩧 𩗴
++ 㿭 㔆 𥋇 𩟔 𧣈 𢵄 鵮 頕 䏙 𦂥 撴 哣 𢵌 𢯊 𡁷 㧻
++ 𡁯 𦛚 𦜖 𧦠 擪 𥁒 𠱃 蹨 𢆡 𨭌 𠜱 䠋 𠆩 㿺 塳 𢶍
++ 𤗈 𠓼 𦂗 𠽌 𠶖 啹 䂻 䎺 䪴 𢩦 𡂝 膪 飵 𠶜 捹 㧾
++ 𢝵 跀 嚡 摼 㹃 𪘁 𠸉 𢫏 𢳉 𡃈 𣧂 㦒 㨆 𨊛 㕸 𥹉
++ 𢃇 噒 𠼱 𢲲 𩜠 㒼 氽 𤸻 𧕴 𢺋 𢈈 𪙛 𨳍 𠹺 𠰴 𦠜
++ 羓 𡃏 𢠃 𢤹 㗻 𥇣 𠺌 𠾍 𠺪 㾓 𠼰 𠵇 𡅏 𠹌 𠺫 𠮩
++ 𠵈 𡃀 𡄽 㿹 𢚖 搲 𠾭 𣏴 𧘹 𢯎 𠵾 𠵿 𢱑 𢱕 㨘 𠺘
++ 𡃇 𠼮 𪘲 𦭐 𨳒 𨶙 𨳊 閪 哌 苄 喹 𩻃 鰦 骶 𧝞 𢷮
++ 煀 腭 胬 尜 𦕲 脴 㞗 卟 𨂽 醶 𠻺 𠸏 𠹷 𠻻 㗝 𤷫
++ 㘉 𠳖 嚯 𢞵 𡃉 𠸐 𠹸 𡁸 𡅈 𨈇 𡑕 𠹹 𤹐 𢶤 婔 𡀝
++ 𡀞 𡃵 𡃶 垜 𠸑 𧚔 𨋍 𠾵 𠹻 𥅾 㜃 𠾶 𡆀 𥋘 𪊽 𤧚
++ 𡠺 𤅷 𨉼 墙 剨 㘚 𥜽 箲 孨 䠀 䬬 鼧 䧧 鰟 鮍 𥭴
++ 𣄽 嗻 㗲 嚉 丨 夂 𡯁 屮 靑 𠂆 乛 亻 㔾 尣 彑 忄
++ 㣺 扌 攵 歺 氵 氺 灬 爫 丬 犭 𤣩 罒 礻 糹 罓 𦉪
++ 㓁 𦍋 耂 肀 𦘒 𦥑 卝 衤 见 𧢲 讠 贝 钅 镸 长 门
++ 𨸏 韦 页 风 飞 饣 𩠐 鱼 鸟 黄 歯 龜 丷 𠂇 阝 户
++ 钢 倻 淾 𩱳 龦 㷉 袏 𤅎 灷 峵 䬠 𥇍 㕙 𥴰 愢 𨨲
++ 辧 釶 熑 朙 玺 𣊁 𪄇 㲋 𡦀 䬐 磤 琂 冮 𨜏 䀉 橣
++ 𪊺 䈣 蘏 𠩯 稪 𩥇 𨫪 靕 灍 匤 𢁾 鏴 盙 𨧣 龧 矝
++ 亣 俰 傼 丯 众 龨 吴 綋 墒 壐 𡶶 庒 庙 忂 𢜒 斋
++ 𣏹 椙 橃 𣱣 泿 爀 𤔅 玌 㻛 𤨓 嬕 璹 讃 𥲤 𥚕 窓
++ 篬 糃 繬 苸 薗 龩 袐 龪 躹 龫 迏 蕟 駠 鈡 龬 𨶹
++ 𡐿 䁱 䊢 娚 顨 杫 䉶 圽 藖 𤥻 芿 𧄍 䲁 𦵴 嵻 𦬕
++ 𦾾 龭 龮 宖 龯 曧 繛 湗 秊 㶈 䓃 𣉖 𢞖 䎚 䔶 峕
++ 𣬚 諹 屸 㴒 𣕑 嵸 龲 煗 䕘 𤃬 𡸣 䱷 㥸 㑊 𠆤 𦱁
++ 諌 侴 𠈹 妿 腬 顖 𩣺 弻 𠮟 𢇁 𨥭 䄂 䚻 𩁹 㼇 龳
++ 𪆵 䃸 㟖 䛷 𦱆 䅼 𨚲 𧏿 䕭 㣔 𥒚 䕡 䔛 䶉 䱻 䵶
++ 䗪 㿈 𤬏 㙡 䓞 䒽 䇭 崾 嵈 嵖 㷼 㠏 嶤 嶹 㠠 㠸
++ 幂 庽 弥 徃 㤈 㤔 㤿 㥍 惗 愽 峥 㦉 憷 憹 懏 㦸
++ 戬 抐 拥 挘 㧸 嚱 㨃 揢 揻 搇 摚 㩋 擀 崕 嘡 龟
++ 㪗 斆 㪽 旿 晓 㫲 暒 㬢 朖 㭂 枤 栀 㭘 桊 梄 㭲
++ 㭱 㭻 椉 楃 牜 楤 榟 榅 㮼 槖 㯝 橥 橴 橱 檂 㯬
++ 檙 㯲 檫 檵 櫔 櫶 殁 毁 毪 汵 沪 㳋 洂 洆 洦 涁
++ 㳯 涤 涱 渕 渘 温 溆 𨧀 溻 滢 滚 齿 滨 滩 漤 漴
++ 㵆 𣽁 澁 澾 㵪 㵵 熷 岙 㶊 瀬 㶑 灐 灔 灯 灿 炉
++ 𠌥 䏁 㗱 𠻘 𣻗 垾 𦻓 焾 𥟠 㙎 榢 𨯩 孴 穉 𥣡 𩓙
++ 穥 穽 𥦬 窻 窰 竂 竃 燑 𦒍 䇊 竚 竝 竪 䇯 咲 𥰁
++ 笋 筕 笩 𥌎 𥳾 箢 筯 莜 𥮴 𦱿 篐 萡 箒 𥴠 㶭 𥱥
++ 蒒 篺 簵 𥳁 籄 粃 𤢂 粦 晽 𤕸 糉 糇 糦 籴 糳 糵
++ 繧 䔝 𦹄 絝 𦻖 璍 綉 綫 焵 綳 𤁗 𦀩 緤 㴓 緵 𡟹
++ 緥 𨍭 𦄡 𦅚 繮 纒 䌫 鑬 縧 罀 罁 罇 礶 𦋐 駡 羗
++ 𦍑 羣 𡙡 𠁨 䕜 𣝦 䔃 𨌺 翺 𦒉 耈 耝 耯 𪂇 𦳃 耻
++ 耼 聡 𢜔 䦉 𦘦 𣷣 𦛨 朥 肧 𨩈 脇 脚 墰 𢛶 汿 𦒘
++ 𤾸 擧 𡒊 舘 𡡞 橓 𤩥 𤪕 䑺 舩 𠬍 𦩒 𣵾 俹 𡓽 蓢
++ 荢 𦬊 𤦧 𣔰 𡝳 𣷸 芪 椛 芳 䇛 蕋 苐 茚 𠸖 𡞴 㛁
++ 𣅽 𣕚 艻 苢 茘 𣺋 𦶣 𦬅 𦮗 𣗎 㶿 茝 嗬 莅 䔋 𦶥
++ 莬 菓 㑾 𦻔 橗 蕚 㒖 𦹂 𢻯 葘 𥯤 葱 㷓 䓤 檧 葊
++ 𣲵 祘 𦮖 𦹷 𦹃 蓞 莑 䒠 蒓 蓤 𥲑 䉀 𥳀 䕃 蔴 嫲
++ 𦺙 䔧 蕳 䔖 枿 蘖 𨘥 𨘻 藁 𧂈 蘂 𡖂 𧃍 䕫 䕪 蘨
++ 㙈 𡢢 号 𧎚 虾 蝱 𪃸 蟮 𢰧 螱 蟚 蠏 噡 虬 桖 䘏
++ 衅 衆 𧗠 𣶹 𧗤 衞 袜 䙛 袴 袵 揁 装 睷 𧜏 覇 覊
++ 覧 覼 𨨥 觧 𧤤 𧪽 誜 瞓 釾 誐 𧩙 竩 𧬺 𣾏 䜓 𧬸
++ 煼 謌 謟 𥐰 𥕥 謿 譌 譍 誩 𤩺 讐 讛 誯 𡛟 䘕 衏
++ 貛 𧵔 𧶏 貫 㜥 𧵓 賖 𧶘 𧶽 贒 贃 𡤐 賛 灜 贑 𤳉
++ 㻐 趩 𨀂 𡀔 𤦊 㭼 𨆼 𧄌 竧 躭 躶 軃 鋔 輙 輭 𨍥
++ 𨐒 辥 錃 𪊟 𠩐 辳 䤪 𨧞 𨔽 𣶻 廸 𣉢 迹 𪀔 𨚼 𨔁
++ 𢌥 㦀 𦻗 逷 𨔼 𧪾 遡 𨕬 𨘋 邨 𨜓 郄 𨛦 邮 酧 㫰
++ 醩 釄 粬 𨤳 𡺉 鈎 沟 鉁 鉢 𥖹 𨫆 𣲛 𨬌 𥗛 𠴱 錬
++ 鍫 𨫡 𨯫 炏 嫃 𨫢 𨫥 䥥 鉄 𨯬 𨰹 𨯿 鍳 鑛 躼 閅
++ 閦 鐦 閠 濶 䊹 𢙺 𨛘 𡉼 𣸮 䧟 氜 陻 隖 䅬 隣 𦻕
++ 懚 隶 磵 𨫠 隽 双 䦡 𦲸 𠉴 𦐐 𩂯 𩃥 𤫑 𡤕 𣌊 霱
++ 虂 霶 䨏 䔽 䖅 𤫩 灵 孁 霛 𩇕 靗 孊 𩇫 靟 鐥 僐
++ 𣂷 𣂼 鞉 鞟 鞱 鞾 韀 韒 韠 𥑬 韮 琜 𩐳 韵 𩐝 𧥺
++ 䫑 頴 頳 顋 顦 㬎 𧅵 㵑 𠘰 𤅜 𥜆 飊 颷 飈 飇 䫿
++ 𦴧 𡛓 喰 飡 飦 飬 鍸 餹 𤨩 䭲 𩡗 𩤅 駵 騌 騻 騐
++ 驘 𥜥 㛄 𩂱 𩯕 髠 髢 𩬅 髴 䰎 鬔 鬭 𨘀 倴 鬴 𦦨
++ 㣃 𣁽 魐 魀 𩴾 婅 𡡣 鮎 𤉋 鰂 鯿 鰌 𩹨 鷔 𩾷 𪆒
++ 𪆫 𪃡 𪄣 𪇟 鵾 鶃 𪄴 鸎 梈 鷄 𢅛 𪆓 𪈠 𡤻 𪈳 鴹
++ 𪂹 𪊴 麐 麕 麞 麢 䴴 麪 麯 𤍤 黁 㭠 㧥 㴝 伲 㞾
++ 𨰫 鼂 鼈 䮖 鐤 𦶢 鼗 鼹 嚟 嚊 齅 馸 𩂋 韲 葿 齢
++ 齩 竜 龎 爖 䮾 𤥵 𤦻 煷 𤧸 𤍈 𤩑 玞 𨯚 𡣺 禟 𨥾
++ 𨸶 鍩 鏳 𨩄 鋬 鎁 鏋 𨥬 𤒹 爗 㻫 睲 穃 烐 𤑳 𤏸
++ 煾 𡟯 炣 𡢾 𣖙 㻇 𡢅 𥐯 𡟸 㜢 𡛻 𡠹 㛡 𡝴 𡣑 𥽋
++ 㜣 𡛀 坛 𤨥 𡏾 𡊨 𡏆 𡒶 蔃 𣚦 葕 𤦔 𧅥 𣸱 𥕜 𣻻
++ 𧁒 䓴 𣛮 𩦝 𦼦 柹 㜳 㰕 㷧 塬 𡤢 栐 䁗 𣜿 𤃡 𤂋
++ 𤄏 𦰡 哋 嚞 𦚱 嚒 𠿟 𠮨 𠸍 鏆 𨬓 鎜 仸 儫 㠙 𤐶
++ 亼 𠑥 𠍿 佋 侊 𥙑 婨 𠆫 𠏋 㦙 𠌊 𠐔 㐵 伩 𠋀 𨺳
++ 𠉵 諚 𠈌 亘 働 儍 侢 伃 𤨎 𣺊 佂 倮 偬 傁 俌 俥
++ 偘 僼 湶 𣖕 𣸹 𣺿 浲 𡢄 𣺉 冨 凃 𠗠 䓝 𠒣 𠒒 𠒑
++ 赺 𨪜 𠜎 剙 劤 𠡳 勡 䙺 熌 𤎌 𠰠 𤦬 𡃤 槑 𠸝 㻞
++ 璙 琔 瑖 玘 䮎 𤪼 𤂍 叐 㖄 爏 𤃉 喴 𠍅 响 𠯆 圝
++ 鉝 雴 鍦 埝 垍 坿 㘾 壋 媙 𨩆 𡛺 𡝯 𡜐 娬 妸 銏
++ 婾 嫏 娒 𥥆 𡧳 𡡡 𤊕 㛵 洅 瑃 娡 𥺃 媁 𨯗 𠐓 鏠
++ 璌 𡌃 焅 䥲 鐈 𨧻 鎽 㞠 尞 岞 幞 幈 𡦖 𡥼 𣫮 廍
++ 孏 𡤃 𡤄 㜁 𡢠 㛝 𡛾 㛓 脪 𨩇 𡶺 𣑲 𨦨 弌 弎 𡤧
++ 𡞫 婫 𡜻 孄 蘔 𧗽 衠 恾 𢡠 𢘫 忛 㺸 𢖯 𢖾 𩂈 𦽳
++ 懀 𠀾 𠁆 𢘛 憙 憘 恵 𢲛 𢴇 𤛔 𩅍 摱 𤙥 𢭪 㨩 𢬢
++ 𣑐 𩣪 𢹸 挷 𪑛 撶 挱 揑 𤧣 𢵧 护 𢲡 搻 敫 楲 㯴
++ 𣂎 𣊭 𤦉 𣊫 唍 𣋠 𡣙 𩐿 曎 𣊉 𣆳 㫠 䆐 𥖄 𨬢 𥖏
++ 𡛼 𥕛 𥐥 磮 𣄃 𡠪 𣈴 㑤 𣈏 𣆂 𤋉 暎 𦴤 晫 䮓 昰
++ 𧡰 𡷫 晣 𣋒 𣋡 昞 𥡲 㣑 𣠺 𣞼 㮙 𣞢 𣏾 瓐 㮖 枏
++ 𤘪 梶 栞 㯄 檾 㡣 𣟕 𤒇 樳 橒 櫉 欅 𡤒 攑 梘 橌
++ 㯗 橺 歗 𣿀 𣲚 鎠 鋲 𨯪 𨫋 銉 𨀞 𨧜 鑧 涥 漋 𤧬
++ 𣽿 㶏 渄 𤀼 娽 渊 塇 洤 硂 焻 𤌚 𤉶 烱 牐 犇 犔
++ 𤞏 𤜥 兹 𤪤 𠗫 瑺 𣻸 𣙟 𤩊 𤤗 𥿡 㼆 㺱 𤫟 𨰣 𣼵
++ 悧 㻳 瓌 琼 鎇 琷 䒟 𦷪 䕑 疃 㽣 𤳙 𤴆 㽘 畕 癳
++ 𪗆 㬙 瑨 𨫌 𤦫 𤦎 㫻 㷍 𤩎 㻿 𤧅 𤣳 釺 圲 鍂 𨫣
++ 𡡤 僟 𥈡 𥇧 睸 𣈲 眎 眏 睻 𤚗 𣞁 㩞 𤣰 琸 璛 㺿
++ 𤪺 𤫇 䃈 𤪖 𦆮 錇 𥖁 砞 碍 碈 磒 珐 祙 𧝁 𥛣 䄎
++ 蒖 禥 樭 𣻺 稺 秴 䅮 𡛦 䄲 鈵 秱 𠵌 𤦌 𠊙 𣶺 𡝮
++ 㖗 啫 㕰 㚪 𠇔 𠰍 竢 婙 𢛵 𥪯 𥪜 娍 𠉛 磰 娪 𥯆
++ 竾 䇹 籝 籭 䈑 𥮳 𥺼 𥺦 糍 𤧹 𡞰 粎 籼 粮 檲 緜
++ 縇 緓 罎 𦉡 𦅜 𧭈 綗 𥺂 䉪 𦭵 𠤖 柖 𠁎 𣗏 埄 𦐒
++ 𦏸 𤥢 翝 笧 𠠬 𥫩 𥵃 笌 𥸎 駦 虅 驣 樜 𣐿 㧢 𤧷
++ 𦖭 騟 𦖠 蒀 𧄧 𦳑 䓪 脷 䐂 胆 脉 腂 𦞴 飃 𦩂 艢
++ 艥 𦩑 葓 𦶧 蘐 𧈛 媆 䅿 𡡀 嬫 𡢡 嫤 𡣘 蚠 蜨 𣶏
++ 蠭 𧐢 娂 衮 佅 袇 袿 裦 襥 襍 𥚃 襔 𧞅 𧞄 𨯵 𨯙
++ 𨮜 𨧹 㺭 蒣 䛵 䛏 㟲 訽 訜 𩑈 彍 鈫 𤊄 旔 焩 烄
++ 𡡅 鵭 貟 賩 𧷜 妚 矃 姰 䍮 㛔 踪 躧 𤰉 輰 轊 䋴
++ 汘 澻 𢌡 䢛 潹 溋 𡟚 鯩 㚵 𤤯 邻 啱 䤆 醻 鐄 𨩋
++ 䁢 𨫼 鐧 𨰝 𨰻 蓥 訫 閙 閧 閗 閖 𨴴 瑅 㻂 𤣿 𤩂
++ 𤏪 㻧 𣈥 随 𨻧 𨹦 𨹥 㻌 𤧭 𤩸 𣿮 琒 瑫 㻼 靁 𩂰
++ 桇 䨝 𩂓 𥟟 鍨 𨦉 𨰦 𨬯 𦎾 銺 嬑 譩 䤼 珹 𤈛 鞛
++ 靱 餸 𠼦 巁 𨯅 𤪲 頟 𩓚 鋶 𩗗 釥 䓀 𨭐 𤩧 𨭤 飜
++ 𨩅 㼀 鈪 䤥 萔 餻 饍 𧬆 㷽 馛 䭯 馪 驜 𨭥 𥣈 檏
++ 騡 嫾 騯 𩣱 䮐 𩥈 馼 䮽 䮗 鍽 塲 𡌂 堢 𤦸 𡓨 硄
++ 𢜟 𣶸 棅 㵽 鑘 㤧 慐 𢞁 𢥫 愇 鱏 鱓 鱻 鰵 鰐 魿
++ 鯏 𩸭 鮟 𪇵 𪃾 鴡 䲮 𤄄 鸘 䲰 鴌 𪆴 𪃭 𪃳 𩤯 鶥
++ 蒽 𦸒 𦿟 𦮂 藼 䔳 𦶤 𦺄 𦷰 萠 藮 𦸀 𣟗 𦁤 秢 𣖜
++ 𣙀 䤭 𤧞 㵢 鏛 銾 鍈 𠊿 碹 鉷 鑍 俤 㑀 遤 𥕝 砽
++ 硔 碶 硋 𡝗 𣇉 𤥁 㚚 佲 濚 濙 瀞 吔 𤆵 垻 壳 垊
++ 鴖 埗 焴 㒯 𤆬 燫 𦱀 𤾗 𡞵 𨩉 愌 嫎 娋 䊼 𤒈 㜬
++ 䭻 𨧼 鎻 鎸 𡣖 𠼝 葲 𦳀 𡐓 𤋺 𢰦 𤏁 妔 𣶷 𦝁 綨
++ 𦅛 𦂤 𤦹 𤦋 𨧺 鋥 珢 㻩 璴 𨭣 𡢟 㻡 𤪳 櫘 珳 珻
++ 㻖 𤨾 𤪔 𡟙 𤩦 𠎧 𡐤 𤧥 瑈 𤤖 炥 𤥶 銄 珦 鍟 𠓾
++ 錱 𨫎 𨨖 鎆 𨯧 𥗕 䤵 𨪂 煫 𤥃 𠳿 嚤 𠘚 𠯫 𠲸 唂
++ 秄 𡟺 緾 𡛂 𤩐 𡡒 䔮 鐁 㜊 𨫀 𤦭 妰 𡢿 𡢃 𧒄 媡
++ 㛢 𣵛 㚰 鉟 婹 𨪁 𡡢 鍴 㳍 𠪴 䪖 㦊 僴 㵩 㵌 𡎜
++ 煵 䋻 𨈘 渏 𩃤 䓫 浗 𧹏 灧 沯 㳖 𣿭 𣸭 渂 漌 㵯
++ 𠏵 畑 㚼 㓈 䚀 㻚 䡱 姄 鉮 䤾 轁 𨰜 𦯀 堒 埈 㛖
++ 𡑒 烾 𤍢 𤩱 𢿣 𡊰 𢎽 梹 楧 𡎘 𣓥 𧯴 𣛟 𨪃 𣟖 𣏺
++ 𤲟 樚 𣚭 𦲷 萾 䓟 䓎 𦴦 𦵑 𦲂 𦿞 漗 𧄉 茽 𡜺 菭
++ 𦲀 𧁓 𡟛 妉 媂 𡞳 婡 婱 𡤅 𤇼 㜭 姯 𡜼 㛇 熎 鎐
++ 暚 𤊥 婮 娫 𤊓 樫 𣻹 𧜶 𤑛 𤋊 焝 𤉙 𨧡 侰 𦴨 峂
++ 𤓎 𧹍 𤎽 樌 𤉖 𡌄 炦 焳 𤏩 㶥 泟 勇 𤩏 繥 姫 崯
++ 㷳 彜 𤩝 𡟟 綤 萦 咅 𣫺 𣌀 𠈔 坾 𠣕 𠘙 㿥 𡾞 𪊶
++ 瀃 𩅛 嵰 玏 糓 𨩙 𩐠 俈 翧 狍 猐 𧫴 猸 猹 𥛶 獁
++ 獈 㺩 𧬘 遬 燵 𤣲 珡 臶 㻊 県 㻑 沢 国 琙 琞 琟
++ 㻢 㻰 㻴 㻺 瓓 㼎 㽓 畂 畭 畲 疍 㽼 痈 痜 㿀 癍
++ 㿗 癴 㿜 発 𤽜 熈 嘣 覀 塩 䀝 睃 䀹 条 䁅 㗛 瞘
++ 䁪 䁯 属 瞾 矋 売 砘 点 砜 䂨 砹 硇 硑 硦 葈 𥔵
++ 礳 栃 礲 䄃 䄉 禑 禙 辻 稆 込 䅧 窑 䆲 窼 艹 䇄
++ 竏 竛 䇏 両 筢 筬 筻 簒 簛 䉠 䉺 类 粜 䊌 粸 䊔
++ 糭 输 烀 𠳏 総 緔 緐 緽 羮 羴 犟 䎗 耠 耥 笹 耮
++ 耱 联 㷌 垴 炠 肷 胩 䏭 脌 猪 脎 脒 畠 脔 䐁 㬹
++ 腖 腙 腚 䐓 堺 腼 膄 䐥 膓 䐭 膥 埯 臁 臤 艔 䒏
++ 芦 艶 苊 苘 苿 䒰 荗 险 榊 萅 烵 葤 惣 蒈 䔄 蒾
++ 蓡 蓸 蔐 蔸 蕒 䔻 蕯 蕰 藠 䕷 虲 蚒 蚲 蛯 际 螋
++ 䘆 䘗 袮 裿 褤 襇 覑 𧥧 訩 訸 誔 誴 豑 賔 賲 贜
++ 䞘 塟 跃 䟭 仮 踺 嗘 坔 蹱 嗵 躰 䠷 軎 転 軤 軭
++ 軲 辷 迁 迊 迌 逳 駄 䢭 飠 鈓 䤞 鈨 鉘 鉫 銱 銮
++ 銿 鋣 鋫 鋳 鋴 鋽 鍃 鎄 鎭 䥅 䥑 麿 鐗 匁 鐝 鐭
++ 鐾 䥪 鑔 鑹 锭 関 䦧 间 阳 䧥 枠 䨤 靀 䨵 鞲 韂
++ 噔 䫤 惨 颹 䬙 飱 塄 餎 餙 冴 餜 餷 饂 饝 饢 䭰
++ 駅 䮝 騼 鬏 窃 魩 鮁 鯝 鯱 鯴 䱭 鰠 㝯 𡯂 鵉 鰺
++ 黾 噐 鶓 鶽 鷀 鷼 银 辶 鹻 麬 麱 麽 黆 铜 黢 黱
++ 黸 竈 齄 𠂔 𠊷 𠎠 椚 铃 妬 𠓗 塀 铁 㞹 𠗕 𠘕 𠙶
++ 𡚺 块 煳 𠫂 𠫍 𠮿 呪 吆 𠯋 咞 𠯻 𠰻 𠱓 𠱥 𠱼 惧
++ 𠲍 噺 𠲵 𠳝 𠳭 𠵯 𠶲 𠷈 楕 鰯 螥 𠸄 𠸎 𠻗 𠾐 𠼭
++ 𠹳 尠 𠾼 帋 𡁜 𡁏 𡁶 朞 𡁻 𡂈 𡂖 㙇 𡂿 𡃓 𡄯 𡄻
++ 卤 蒭 𡋣 𡍵 𡌶 讁 𡕷 𡘙 𡟃 𡟇 乸 炻 𡠭 𡥪 𡨭 𡩅
++ 𡰪 𡱰 𡲬 𡻈 拃 𡻕 𡼕 熘 桕 𢁅 槩 㛈 𢉼 𢏗 𢏺 𢜪
++ 𢡱 𢥏 苽 𢥧 𢦓 𢫕 覥 𢫨 辠 𢬎 鞸 𢬿 顇 骽 𢱌 𢲈
++ 𢲷 𥯨 𢴈 𢴒 𢶷 𢶕 𢹂 𢽴 𢿌 𣀳 𣁦 𣌟 𣏞 徱 晈 暿
++ 𧩹 𣕧 𣗳 𤦺 𣘚 𣜖 𠍆 墵 朎 椘 𣪧 𧙗 𥿢 𣸑 𣺹 𧗾
++ 𢂚 䣐 䪸 𤄙 𨪚 𤋮 𤌍 𤀻 𤌴 𤎖 𤩅 𠗊 凒 𠘑 妟 𡺨
++ 㮾 𣳿 𤐄 𤓖 垈 𤙴 㦛 𤜯 𨗨 𩧉 㝢 𢇃 譞 𨭎 𤠒 𤣻
++ 𤨕 爉 𤫀 𠱸 奥 𤺥 𤾆 𠝹 軚 𥀬 劏 圿 煱 𥊙 𥐙 𣽊
++ 𤪧 喼 𥑆 𥑮 𦭒 㑳 𥔿 𧘲 𥕞 䜘 𥕢 𥕦 𥟇 𤤿 𥡝 偦
++ 㓻 𣏌 𥤃 䝼 𨥈 𥪮 𥮉 𥰆 𡶐 垡 煑 𦄂 𧰒 遖 𦆲 𤾚
++ 譢 𦐂 𦑊 嵛 𦯷 𦒄 𡤜 諪 𤧶 𦒈 𣿯 𦔒 䯀 𦖿 𦚵 𢜛
++ 鑥 𥟡 憕 娧 晉 嚹 𤔡 𦛼 乪 𤤴 陖 涏 𦲽 㘘 襷 𦞙
++ 𦡮 𦐑 𦡞 𦣇 筂 𩃀 𠨑 𦤦 𦤹 穅 𦧺 騦 𦨭 㙟 𦑩 𠀡
++ 禃 𦨴 𦭛 崬 𣔙 𦮝 䛐 𦲤 画 补 𦶮 墶 㜜 𢖍 𧁋 𧇍
++ 㱔 𧊀 𧊅 銁 𢅺 𧊋 錰 𧋦 𤧐 氹 钟 𧑐 𠻸 蠧 裵 𢤦
++ 𨑳 𡞱 溸 𤨪 𡠠 㦤 㚹 䔿 暶 𩲭 𩢤 襃 𧟌 𧡘 囖 䃟
++ 𡘊 㦡 𣜯 𨃨 𡏅 熭 荦 𧧝 𩆨 䲷 𧂯 𨦫 𧧽 𧨊 𧬋 𧵦
++ 𤅺 筃 祾 𨀉 澵 𪋟 樃 𨌘 厢 𦸇 鎿 栶 靝 𨅯 𨀣 𦦵
++ 𡏭 𣈯 𨁈 嶅 𨰰 𨂃 圕 頣 𨥉 嶫 𤦈 斾 槕 叒 𤪥 𣾁
++ 㰑 朶 𨂐 𨃴 𨄮 𡾡 𨅏 𨆉 𨆯 𨈚 𨌆 𨌯 𨎊 㗊 𨑨 𨚪
++ 䣺 揦 𨥖 砈 鉕 𨦸 䏲 𨧧 䏟 𨧨 𨭆 𨯔 姸 𨰉 𨿅 𩃬
++ 𩄐 𩄼 㷷 𩅞 𤫊 运 犏 嚋 𩓧 𩗩 𩖰 𩖸 𩜲 𩣑 𩥉 𩥪
++ 𩧃 𩨨 𩬎 𩵚 𩶛 纟 𩻸 𩼣 䲤 镇 𪊓 熢 𪋿 䶑 递 𪗋
++ 䶜 𠲜 达 嗁 辺 𢒰 边 𤪓 䔉 繿 潖 檱 仪 㓤 𨬬 𧢝
++ 㜺 躀 𡟵 𨀤 𨭬 𨮙 𧨾 𦚯 㷫 𧙕 𣲷 𥘵 𥥖 亚 𥺁 𦉘
++ 嚿 𠹭 踎 孭 𣺈 𤲞 揞 𡟶 𡡻 攰 嘭 𥱊 吚 𥌑 㷆 𩶘
++ 䱽 嘢 嘞 罉 𥻘 奵 𣵀 蝰 东 𠿪 𠵉 𣚺 脗 鵞 贘 瘻
++ 鱅 癎 瞹 鍅 吲 腈 苷 嘥 脲 萘 肽 嗪 祢 噃 吖 𠺝
++ 㗎 嘅 嗱 曱 𨋢 㘭 甴 嗰 喺 咗 啲 𠱁 𠲖 廐 𥅈 𠹶
++ 𢱢 𠺢 麫 絚 嗞 𡁵 抝 靭 咔 賍 燶 酶 揼 掹 揾 啩
++ 𢭃 鱲 𢺳 冚 㓟 𠶧 冧 呍 唞 唓 癦 踭 𦢊 疱 肶 蠄
++ 螆 裇 膶 萜 𡃁 䓬 猄 𤜆 宐 茋 𦢓 噻 𢛴 𧴯 𤆣 𧵳
++ 𦻐 𧊶 酰 𡇙 鈈 𣳼 𪚩 𠺬 𠻹 牦 𡲢 䝎 𤿂 𧿹 𠿫 䃺
++ 鱝 攟 𢶠 䣳 𤟠 𩵼 𠿬 𠸊 𧖣 𠿭 𦁈 𡆇 熣 纎 鵐 业
++ 丄 㕷 嬍 沲 卧 㚬 㧜 卽 㚥 𤘘 墚 𤭮 舭 呋 垪 𥪕
++ 𠥹 㩒 𢑥 獴 𩺬 䴉 鯭 𣳾 𩼰 䱛 𤾩 𩖞 𩿞 葜 𣶶 𧊲
++ 𦞳 𣜠 挮 紥 𣻷 𣸬 㨪 逈 勌 㹴 㙺 䗩 𠒎 癀 嫰 𠺶
++ 硺 𧼮 墧 䂿 噼 鮋 嵴 癔 𪐴 麅 䳡 㟻 愙 𣃚 𤏲 噝
++ 𡊩 垧 𤥣 𩸆 刴 𧂮 㖭 鵼 籖 鬹 埞 𡝬 屓 擓 𩓐 𦌵
++ 𧅤 蚭 𠴨 𦴢 𤫢 𠵱 凾 𡼏 嶎 霃 𡷑 麁 遌 笟 鬂 峑
++ 箣 扨 挵 髿 篏 鬪 籾 籂 粆 鰕 篼 鬉 鰛 𤤾 齚 啳
++ 寃 俽 麘 俲 剠 㸆 勑 坧 偖 妷 帒 韈 鶫 轜 呩 鞴
++ 饀 鞺 匬 愰 椬 叚 鰊 鴂 䰻 陁 榀 傦 畆 𡝭 駚 剳
++ 酙 隁 酜 酑 𨺗 捿 𦴣 櫊 嘑 醎 畺 抅 𠏼 獏 籰 𥰡
++ 𣳽 𤤙 盖 鮝 个 𠳔 莾 衂 届 槀 坺 刟 巵 从 氱 𠇲
++ 伹 咜 哚 劚 趂 㗾 㗳 歒 酼 龥 鮗 頮 颴 骺 麨 麄
++ 煺 笔 毺 蠘 罸 嘠 𪙊 蹷 齓 跔 蹏 鸜 踁 抂 𨍽 踨
++ 蹵 竓 𤩷 稾 磘 泪 詧 瘇 𨩚 鼦 泎 蟖 痃 𪊲 硓 咢
++ 贌 狢 獱 謭 猂 瓱 賫 𤪻 蘯 徺 袠 䒷 𡠻 𦸅 詾 𢔛
++ 惽 癧 髗 鵄 鍮 鮏 蟵 賷 猬 霡 鮰 㗖 犲 䰇 籑 饊
++ 𦅙 慙 䰄 麖 慽 坟 慯 抦 戹 㩜 懢 厪 𣏵 捤 栂 㗒
++ 嵗 𨯂 迚 𨸹 僙 𡵆 礆 匲 阸 𠼻 䁥 矾 糂 𥼚 糚 稭
++ 聦 聣 絍 甅 瓲 覔 舚 朌 聢 𧒆 聛 瓰 脃 眤 覉 𦟌
++ 畓 𦻑 螩 蟎 臈 螌 詉 貭 譃 眫 瓸 蓚 㘵 榲 趦 覩
++ 涹 蟁 𤀑 瓧 㷛 煶 悤 憜 㳑 恷 罱 𨬭 惩 䭾 删 㰘
++ 𣳇 𥻗 𧙖 𥔱 𡥄 𡋾 𩤃 𦷜 𧂭 峁 𦆭 𨨏 𣙷 𠃮 𦡆 𤼎
++ 䕢 嬟 𦍌 齐 麦 𦉫   , 、 。 . • ; : ? !
++ ︰ … ‥ ﹐ 、 ﹒ · ﹔ ﹕ ﹖ ﹗ | – ︱ — ︳
++ ︴ ﹏ ( ) ︵ ︶ { } ︷ ︸ 〔 〕 ︹ ︺ 【 】
++ ︻ ︼ 《 》 ︽ ︾ 〈 〉 ︿ ﹀ 「 」 ﹁ ﹂ 『 』
++ ﹃ ﹄ ﹙ ﹚ ﹛ ﹜ ﹝ ﹞ ‘ ’ “ ” 〝 〞 ‵ ′
++ # & * ※ § 〃 ○ ● △ ▲ ◎ ☆ ★ ◇ ◆ □
++ ■ ▽ ▼ ㊣ ℅ ‾ _ ﹉ ﹊ ﹍ ﹎ ﹋ ﹌ ﹟ ﹠ ﹡
++ + - × ÷ ± √ < > = ≦ ≧ ≠ ∞ ≒ ≡ ﹢
++ ﹣ ﹤ ﹥ ﹦ ∼ ∩ ∪ ⊥ ∠ ∟ ⊿ ㏒ ㏑ ∫ ∮ ∵
++ ∴ ♀ ♂ ♁ ☉ ↑ ↓ ← → ↖ ↗ ↙ ↘ ∥ ∣ /
++ \ $ ¥ 〒 ¢ £ % @ ℃ ℉ ﹩ ﹪ ﹫ ㏕ ㎜ ㎝
++ ㎞ ㏎ ㎡ ㎎ ㎏ ㏄ ° 兙 兛 兞 兝 兡 兣 嗧 瓩 糎
++ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▏ ▎ ▍ ▌ ▋ ▊ ▉ ┼
++ ┴ ┬ ┤ ├ ▔ ─ │ ▕ ┌ ┐ └ ┘ ◢ ◣ ◥ ◤
++ ╱ ╲ ╳ 0 1 2 3 4 5 6 7 8 9 Ⅰ Ⅱ Ⅲ
++ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ 〡 〢 〣 〤 〥 〦 〧 〨 〩
++ 卄 A B C D E F G H I J K L M N O
++ P Q R S T U V W X Y Z a b c d e
++ f g h i j k l m n o p q r s t u
++ v w x y z Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ
++ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ
++ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ
++ υ φ χ ψ ω ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ
++ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ ㄗ ㄘ ㄙ ㄚ ㄛ ㄜ ㄝ ㄞ ㄟ
++ ㄠ ㄡ ㄢ ㄣ ㄤ ㄥ ㄦ ㄧ ㄨ ㄩ ˙ ˉ ˊ ˇ ˋ 一
++ 乙 丁 七 乃 九 了 二 人 儿 入 八 几 刀 刁 力 匕
++ 十 卜 又 三 下 丈 上 丫 丸 凡 久 么 也 乞 于 亡
++ 兀 刃 勺 千 叉 口 土 士 夕 大 女 子 孑 孓 寸 小
++ 尢 尸 山 川 工 己 已 巳 巾 干 廾 弋 弓 才 丑 丐
++ 不 中 丰 丹 之 尹 予 云 井 互 五 亢 仁 什 仃 仆
++ 仇 仍 今 介 仄 元 允 內 六 兮 公 冗 凶 分 切 刈
++ 勻 勾 勿 化 匹 午 升 卅 卞 厄 友 及 反 壬 天 夫
++ 太 夭 孔 少 尤 尺 屯 巴 幻 廿 弔 引 心 戈 戶 手
++ 扎 支 文 斗 斤 方 日 曰 月 木 欠 止 歹 毋 比 毛
++ 氏 水 火 爪 父 爻 片 牙 牛 犬 王 丙 世 丕 且 丘
++ 主 乍 乏 乎 以 付 仔 仕 他 仗 代 令 仙 仞 充 兄
++ 冉 冊 冬 凹 出 凸 刊 加 功 包 匆 北 匝 仟 半 卉
++ 卡 占 卯 卮 去 可 古 右 召 叮 叩 叨 叼 司 叵 叫
++ 另 只 史 叱 台 句 叭 叻 四 囚 外 央 失 奴 奶 孕
++ 它 尼 巨 巧 左 市 布 平 幼 弁 弘 弗 必 戊 打 扔
++ 扒 扑 斥 旦 朮 本 未 末 札 正 母 民 氐 永 汁 汀
++ 氾 犯 玄 玉 瓜 瓦 甘 生 用 甩 田 由 甲 申 疋 白
++ 皮 皿 目 矛 矢 石 示 禾 穴 立 丞 丟 乒 乓 乩 亙
++ 交 亦 亥 仿 伉 伙 伊 伕 伍 伐 休 伏 仲 件 任 仰
++ 仳 份 企 伋 光 兇 兆 先 全 共 再 冰 列 刑 划 刎
++ 刖 劣 匈 匡 匠 印 危 吉 吏 同 吊 吐 吁 吋 各 向
++ 名 合 吃 后 吆 吒 因 回 囝 圳 地 在 圭 圬 圯 圩
++ 夙 多 夷 夸 妄 奸 妃 好 她 如 妁 字 存 宇 守 宅
++ 安 寺 尖 屹 州 帆 并 年 式 弛 忙 忖 戎 戌 戍 成
++ 扣 扛 托 收 早 旨 旬 旭 曲 曳 有 朽 朴 朱 朵 次
++ 此 死 氖 汝 汗 汙 江 池 汐 汕 污 汛 汍 汎 灰 牟
++ 牝 百 竹 米 糸 缶 羊 羽 老 考 而 耒 耳 聿 肉 肋
++ 肌 臣 自 至 臼 舌 舛 舟 艮 色 艾 虫 血 行 衣 西
++ 阡 串 亨 位 住 佇 佗 佞 伴 佛 何 估 佐 佑 伽 伺
++ 伸 佃 佔 似 但 佣 作 你 伯 低 伶 余 佝 佈 佚 兌
++ 克 免 兵 冶 冷 別 判 利 刪 刨 劫 助 努 劬 匣 即
++ 卵 吝 吭 吞 吾 否 呎 吧 呆 呃 吳 呈 呂 君 吩 告
++ 吹 吻 吸 吮 吵 吶 吠 吼 呀 吱 含 吟 听 囪 困 囤
++ 囫 坊 坑 址 坍 均 坎 圾 坐 坏 圻 壯 夾 妝 妒 妨
++ 妞 妣 妙 妖 妍 妤 妓 妊 妥 孝 孜 孚 孛 完 宋 宏
++ 尬 局 屁 尿 尾 岐 岑 岔 岌 巫 希 序 庇 床 廷 弄
++ 弟 彤 形 彷 役 忘 忌 志 忍 忱 快 忸 忪 戒 我 抄
++ 抗 抖 技 扶 抉 扭 把 扼 找 批 扳 抒 扯 折 扮 投
++ 抓 抑 抆 改 攻 攸 旱 更 束 李 杏 材 村 杜 杖 杞
++ 杉 杆 杠 杓 杗 步 每 求 汞 沙 沁 沈 沉 沅 沛 汪
++ 決 沐 汰 沌 汨 沖 沒 汽 沃 汲 汾 汴 沆 汶 沍 沔
++ 沘 沂 灶 灼 災 灸 牢 牡 牠 狄 狂 玖 甬 甫 男 甸
++ 皂 盯 矣 私 秀 禿 究 系 罕 肖 肓 肝 肘 肛 肚 育
++ 良 芒 芋 芍 見 角 言 谷 豆 豕 貝 赤 走 足 身 車
++ 辛 辰 迂 迆 迅 迄 巡 邑 邢 邪 邦 那 酉 釆 里 防
++ 阮 阱 阪 阬 並 乖 乳 事 些 亞 享 京 佯 依 侍 佳
++ 使 佬 供 例 來 侃 佰 併 侈 佩 佻 侖 佾 侏 侑 佺
++ 兔 兒 兕 兩 具 其 典 冽 函 刻 券 刷 刺 到 刮 制
++ 剁 劾 劻 卒 協 卓 卑 卦 卷 卸 卹 取 叔 受 味 呵
++ 咖 呸 咕 咀 呻 呷 咄 咒 咆 呼 咐 呱 呶 和 咚 呢
++ 周 咋 命 咎 固 垃 坷 坪 坩 坡 坦 坤 坼 夜 奉 奇
++ 奈 奄 奔 妾 妻 委 妹 妮 姑 姆 姐 姍 始 姓 姊 妯
++ 妳 姒 姅 孟 孤 季 宗 定 官 宜 宙 宛 尚 屈 居 屆
++ 岷 岡 岸 岩 岫 岱 岳 帘 帚 帖 帕 帛 帑 幸 庚 店
++ 府 底 庖 延 弦 弧 弩 往 征 彿 彼 忝 忠 忽 念 忿
++ 怏 怔 怯 怵 怖 怪 怕 怡 性 怩 怫 怛 或 戕 房 戾
++ 所 承 拉 拌 拄 抿 拂 抹 拒 招 披 拓 拔 拋 拈 抨
++ 抽 押 拐 拙 拇 拍 抵 拚 抱 拘 拖 拗 拆 抬 拎 放
++ 斧 於 旺 昔 易 昌 昆 昂 明 昀 昏 昕 昊 昇 服 朋
++ 杭 枋 枕 東 果 杳 杷 枇 枝 林 杯 杰 板 枉 松 析
++ 杵 枚 枓 杼 杪 杲 欣 武 歧 歿 氓 氛 泣 注 泳 沱
++ 泌 泥 河 沽 沾 沼 波 沫 法 泓 沸 泄 油 況 沮 泗
++ 泅 泱 沿 治 泡 泛 泊 沬 泯 泜 泖 泠 炕 炎 炒 炊
++ 炙 爬 爭 爸 版 牧 物 狀 狎 狙 狗 狐 玩 玨 玟 玫
++ 玥 甽 疝 疙 疚 的 盂 盲 直 知 矽 社 祀 祁 秉 秈
++ 空 穹 竺 糾 罔 羌 羋 者 肺 肥 肢 肱 股 肫 肩 肴
++ 肪 肯 臥 臾 舍 芳 芝 芙 芭 芽 芟 芹 花 芬 芥 芯
++ 芸 芣 芰 芾 芷 虎 虱 初 表 軋 迎 返 近 邵 邸 邱
++ 邶 采 金 長 門 阜 陀 阿 阻 附 陂 隹 雨 青 非 亟
++ 亭 亮 信 侵 侯 便 俠 俑 俏 保 促 侶 俘 俟 俊 俗
++ 侮 俐 俄 係 俚 俎 俞 侷 兗 冒 冑 冠 剎 剃 削 前
++ 剌 剋 則 勇 勉 勃 勁 匍 南 卻 厚 叛 咬 哀 咨 哎
++ 哉 咸 咦 咳 哇 哂 咽 咪 品 哄 哈 咯 咫 咱 咻 咩
++ 咧 咿 囿 垂 型 垠 垣 垢 城 垮 垓 奕 契 奏 奎 奐
++ 姜 姘 姿 姣 姨 娃 姥 姪 姚 姦 威 姻 孩 宣 宦 室
++ 客 宥 封 屎 屏 屍 屋 峙 峒 巷 帝 帥 帟 幽 庠 度
++ 建 弈 弭 彥 很 待 徊 律 徇 後 徉 怒 思 怠 急 怎
++ 怨 恍 恰 恨 恢 恆 恃 恬 恫 恪 恤 扁 拜 挖 按 拼
++ 拭 持 拮 拽 指 拱 拷 拯 括 拾 拴 挑 挂 政 故 斫
++ 施 既 春 昭 映 昧 是 星 昨 昱 昤 曷 柿 染 柱 柔
++ 某 柬 架 枯 柵 柩 柯 柄 柑 枴 柚 查 枸 柏 柞 柳
++ 枰 柙 柢 柝 柒 歪 殃 殆 段 毒 毗 氟 泉 洋 洲 洪
++ 流 津 洌 洱 洞 洗 活 洽 派 洶 洛 泵 洹 洧 洸 洩
++ 洮 洵 洎 洫 炫 為 炳 炬 炯 炭 炸 炮 炤 爰 牲 牯
++ 牴 狩 狠 狡 玷 珊 玻 玲 珍 珀 玳 甚 甭 畏 界 畎
++ 畋 疫 疤 疥 疢 疣 癸 皆 皇 皈 盈 盆 盃 盅 省 盹
++ 相 眉 看 盾 盼 眇 矜 砂 研 砌 砍 祆 祉 祈 祇 禹
++ 禺 科 秒 秋 穿 突 竿 竽 籽 紂 紅 紀 紉 紇 約 紆
++ 缸 美 羿 耄 耐 耍 耑 耶 胖 胥 胚 胃 胄 背 胡 胛
++ 胎 胞 胤 胝 致 舢 苧 范 茅 苣 苛 苦 茄 若 茂 茉
++ 苒 苗 英 茁 苜 苔 苑 苞 苓 苟 苯 茆 虐 虹 虻 虺
++ 衍 衫 要 觔 計 訂 訃 貞 負 赴 赳 趴 軍 軌 述 迦
++ 迢 迪 迥 迭 迫 迤 迨 郊 郎 郁 郃 酋 酊 重 閂 限
++ 陋 陌 降 面 革 韋 韭 音 頁 風 飛 食 首 香 乘 亳
++ 倌 倍 倣 俯 倦 倥 俸 倩 倖 倆 值 借 倚 倒 們 俺
++ 倀 倔 倨 俱 倡 個 候 倘 俳 修 倭 倪 俾 倫 倉 兼
++ 冤 冥 冢 凍 凌 准 凋 剖 剜 剔 剛 剝 匪 卿 原 厝
++ 叟 哨 唐 唁 唷 哼 哥 哲 唆 哺 唔 哩 哭 員 唉 哮
++ 哪 哦 唧 唇 哽 唏 圃 圄 埂 埔 埋 埃 堉 夏 套 奘
++ 奚 娑 娘 娜 娟 娛 娓 姬 娠 娣 娩 娥 娌 娉 孫 屘
++ 宰 害 家 宴 宮 宵 容 宸 射 屑 展 屐 峭 峽 峻 峪
++ 峨 峰 島 崁 峴 差 席 師 庫 庭 座 弱 徒 徑 徐 恙
++ 恣 恥 恐 恕 恭 恩 息 悄 悟 悚 悍 悔 悌 悅 悖 扇
++ 拳 挈 拿 捎 挾 振 捕 捂 捆 捏 捉 挺 捐 挽 挪 挫
++ 挨 捍 捌 效 敉 料 旁 旅 時 晉 晏 晃 晒 晌 晅 晁
++ 書 朔 朕 朗 校 核 案 框 桓 根 桂 桔 栩 梳 栗 桌
++ 桑 栽 柴 桐 桀 格 桃 株 桅 栓 栘 桁 殊 殉 殷 氣
++ 氧 氨 氦 氤 泰 浪 涕 消 涇 浦 浸 海 浙 涓 浬 涉
++ 浮 浚 浴 浩 涌 涊 浹 涅 浥 涔 烊 烘 烤 烙 烈 烏
++ 爹 特 狼 狹 狽 狸 狷 玆 班 琉 珮 珠 珪 珞 畔 畝
++ 畜 畚 留 疾 病 症 疲 疳 疽 疼 疹 痂 疸 皋 皰 益
++ 盍 盎 眩 真 眠 眨 矩 砰 砧 砸 砝 破 砷 砥 砭 砠
++ 砟 砲 祕 祐 祠 祟 祖 神 祝 祗 祚 秤 秣 秧 租 秦
++ 秩 秘 窄 窈 站 笆 笑 粉 紡 紗 紋 紊 素 索 純 紐
++ 紕 級 紜 納 紙 紛 缺 罟 羔 翅 翁 耆 耘 耕 耙 耗
++ 耽 耿 胱 脂 胰 脅 胭 胴 脆 胸 胳 脈 能 脊 胼 胯
++ 臭 臬 舀 舐 航 舫 舨 般 芻 茫 荒 荔 荊 茸 荐 草
++ 茵 茴 荏 茲 茹 茶 茗 荀 茱 茨 荃 虔 蚊 蚪 蚓 蚤
++ 蚩 蚌 蚣 蚜 衰 衷 袁 袂 衽 衹 記 訐 討 訌 訕 訊
++ 託 訓 訖 訏 訑 豈 豺 豹 財 貢 起 躬 軒 軔 軏 辱
++ 送 逆 迷 退 迺 迴 逃 追 逅 迸 邕 郡 郝 郢 酒 配
++ 酌 釘 針 釗 釜 釙 閃 院 陣 陡 陛 陝 除 陘 陞 隻
++ 飢 馬 骨 高 鬥 鬲 鬼 乾 偺 偽 停 假 偃 偌 做 偉
++ 健 偶 偎 偕 偵 側 偷 偏 倏 偯 偭 兜 冕 凰 剪 副
++ 勒 務 勘 動 匐 匏 匙 匿 區 匾 參 曼 商 啪 啦 啄
++ 啞 啡 啃 啊 唱 啖 問 啕 唯 啤 唸 售 啜 唬 啣 唳
++ 啁 啗 圈 國 圉 域 堅 堊 堆 埠 埤 基 堂 堵 執 培
++ 夠 奢 娶 婁 婉 婦 婪 婀 娼 婢 婚 婆 婊 孰 寇 寅
++ 寄 寂 宿 密 尉 專 將 屠 屜 屝 崇 崆 崎 崛 崖 崢
++ 崑 崩 崔 崙 崤 崧 崗 巢 常 帶 帳 帷 康 庸 庶 庵
++ 庾 張 強 彗 彬 彩 彫 得 徙 從 徘 御 徠 徜 恿 患
++ 悉 悠 您 惋 悴 惦 悽 情 悻 悵 惜 悼 惘 惕 惆 惟
++ 悸 惚 惇 戚 戛 扈 掠 控 捲 掖 探 接 捷 捧 掘 措
++ 捱 掩 掉 掃 掛 捫 推 掄 授 掙 採 掬 排 掏 掀 捻
++ 捩 捨 捺 敝 敖 救 教 敗 啟 敏 敘 敕 敔 斜 斛 斬
++ 族 旋 旌 旎 晝 晚 晤 晨 晦 晞 曹 勗 望 梁 梯 梢
++ 梓 梵 桿 桶 梱 梧 梗 械 梃 棄 梭 梆 梅 梔 條 梨
++ 梟 梡 梂 欲 殺 毫 毬 氫 涎 涼 淳 淙 液 淡 淌 淤
++ 添 淺 清 淇 淋 涯 淑 涮 淞 淹 涸 混 淵 淅 淒 渚
++ 涵 淚 淫 淘 淪 深 淮 淨 淆 淄 涪 淬 涿 淦 烹 焉
++ 焊 烽 烯 爽 牽 犁 猜 猛 猖 猓 猙 率 琅 琊 球 理
++ 現 琍 瓠 瓶 瓷 甜 產 略 畦 畢 異 疏 痔 痕 疵 痊
++ 痍 皎 盔 盒 盛 眷 眾 眼 眶 眸 眺 硫 硃 硎 祥 票
++ 祭 移 窒 窕 笠 笨 笛 第 符 笙 笞 笮 粒 粗 粕 絆
++ 絃 統 紮 紹 紼 絀 細 紳 組 累 終 紲 紱 缽 羞 羚
++ 翌 翎 習 耜 聊 聆 脯 脖 脣 脫 脩 脰 脤 舂 舵 舷
++ 舶 船 莎 莞 莘 荸 莢 莖 莽 莫 莒 莊 莓 莉 莠 荷
++ 荻 荼 莆 莧 處 彪 蛇 蛀 蚶 蛄 蚵 蛆 蛋 蚱 蚯 蛉
++ 術 袞 袈 被 袒 袖 袍 袋 覓 規 訪 訝 訣 訥 許 設
++ 訟 訛 訢 豉 豚 販 責 貫 貨 貪 貧 赧 赦 趾 趺 軛
++ 軟 這 逍 通 逗 連 速 逝 逐 逕 逞 造 透 逢 逖 逛
++ 途 部 郭 都 酗 野 釵 釦 釣 釧 釭 釩 閉 陪 陵 陳
++ 陸 陰 陴 陶 陷 陬 雀 雪 雩 章 竟 頂 頃 魚 鳥 鹵
++ 鹿 麥 麻 傢 傍 傅 備 傑 傀 傖 傘 傚 最 凱 割 剴
++ 創 剩 勞 勝 勛 博 厥 啻 喀 喧 啼 喊 喝 喘 喂 喜
++ 喪 喔 喇 喋 喃 喳 單 喟 唾 喲 喚 喻 喬 喱 啾 喉
++ 喫 喙 圍 堯 堪 場 堤 堰 報 堡 堝 堠 壹 壺 奠 婷
++ 媚 婿 媒 媛 媧 孳 孱 寒 富 寓 寐 尊 尋 就 嵌 嵐
++ 崴 嵇 巽 幅 帽 幀 幃 幾 廊 廁 廂 廄 弼 彭 復 循
++ 徨 惑 惡 悲 悶 惠 愜 愣 惺 愕 惰 惻 惴 慨 惱 愎
++ 惶 愉 愀 愒 戟 扉 掣 掌 描 揀 揩 揉 揆 揍 插 揣
++ 提 握 揖 揭 揮 捶 援 揪 換 摒 揚 揹 敞 敦 敢 散
++ 斑 斐 斯 普 晰 晴 晶 景 暑 智 晾 晷 曾 替 期 朝
++ 棺 棕 棠 棘 棗 椅 棟 棵 森 棧 棹 棒 棲 棣 棋 棍
++ 植 椒 椎 棉 棚 楮 棻 款 欺 欽 殘 殖 殼 毯 氮 氯
++ 氬 港 游 湔 渡 渲 湧 湊 渠 渥 渣 減 湛 湘 渤 湖
++ 湮 渭 渦 湯 渴 湍 渺 測 湃 渝 渾 滋 溉 渙 湎 湣
++ 湄 湲 湩 湟 焙 焚 焦 焰 無 然 煮 焜 牌 犄 犀 猶
++ 猥 猴 猩 琺 琪 琳 琢 琥 琵 琶 琴 琯 琛 琦 琨 甥
++ 甦 畫 番 痢 痛 痣 痙 痘 痞 痠 登 發 皖 皓 皴 盜
++ 睏 短 硝 硬 硯 稍 稈 程 稅 稀 窘 窗 窖 童 竣 等
++ 策 筆 筐 筒 答 筍 筋 筏 筑 粟 粥 絞 結 絨 絕 紫
++ 絮 絲 絡 給 絢 絰 絳 善 翔 翕 耋 聒 肅 腕 腔 腋
++ 腑 腎 脹 腆 脾 腌 腓 腴 舒 舜 菩 萃 菸 萍 菠 菅
++ 萋 菁 華 菱 菴 著 萊 菰 萌 菌 菽 菲 菊 萸 萎 萄
++ 菜 萇 菔 菟 虛 蛟 蛙 蛭 蛔 蛛 蛤 蛐 蛞 街 裁 裂
++ 袱 覃 視 註 詠 評 詞 証 詁 詔 詛 詐 詆 訴 診 訶
++ 詖 象 貂 貯 貼 貳 貽 賁 費 賀 貴 買 貶 貿 貸 越
++ 超 趁 跎 距 跋 跚 跑 跌 跛 跆 軻 軸 軼 辜 逮 逵
++ 週 逸 進 逶 鄂 郵 鄉 郾 酣 酥 量 鈔 鈕 鈣 鈉 鈞
++ 鈍 鈐 鈇 鈑 閔 閏 開 閑 間 閒 閎 隊 階 隋 陽 隅
++ 隆 隍 陲 隄 雁 雅 雄 集 雇 雯 雲 韌 項 順 須 飧
++ 飪 飯 飩 飲 飭 馮 馭 黃 黍 黑 亂 傭 債 傲 傳 僅
++ 傾 催 傷 傻 傯 僇 剿 剷 剽 募 勦 勤 勢 勣 匯 嗟
++ 嗨 嗓 嗦 嗎 嗜 嗇 嗑 嗣 嗤 嗯 嗚 嗡 嗅 嗆 嗥 嗉
++ 園 圓 塞 塑 塘 塗 塚 塔 填 塌 塭 塊 塢 塒 塋 奧
++ 嫁 嫉 嫌 媾 媽 媼 媳 嫂 媲 嵩 嵯 幌 幹 廉 廈 弒
++ 彙 徬 微 愚 意 慈 感 想 愛 惹 愁 愈 慎 慌 慄 慍
++ 愾 愴 愧 愍 愆 愷 戡 戢 搓 搾 搞 搪 搭 搽 搬 搏
++ 搜 搔 損 搶 搖 搗 搆 敬 斟 新 暗 暉 暇 暈 暖 暄
++ 暘 暍 會 榔 業 楚 楷 楠 楔 極 椰 概 楊 楨 楫 楞
++ 楓 楹 榆 楝 楣 楛 歇 歲 毀 殿 毓 毽 溢 溯 滓 溶
++ 滂 源 溝 滇 滅 溥 溘 溼 溺 溫 滑 準 溜 滄 滔 溪
++ 溧 溴 煎 煙 煩 煤 煉 照 煜 煬 煦 煌 煥 煞 煆 煨
++ 煖 爺 牒 猷 獅 猿 猾 瑯 瑚 瑕 瑟 瑞 瑁 琿 瑙 瑛
++ 瑜 當 畸 瘀 痰 瘁 痲 痱 痺 痿 痴 痳 盞 盟 睛 睫
++ 睦 睞 督 睹 睪 睬 睜 睥 睨 睢 矮 碎 碰 碗 碘 碌
++ 碉 硼 碑 碓 硿 祺 祿 禁 萬 禽 稜 稚 稠 稔 稟 稞
++ 窟 窠 筷 節 筠 筮 筧 粱 粳 粵 經 絹 綑 綁 綏 絛
++ 置 罩 罪 署 義 羨 群 聖 聘 肆 肄 腱 腰 腸 腥 腮
++ 腳 腫 腹 腺 腦 舅 艇 蒂 葷 落 萱 葵 葦 葫 葉 葬
++ 葛 萼 萵 葡 董 葩 葭 葆 虞 虜 號 蛹 蜓 蜈 蜇 蜀
++ 蛾 蛻 蜂 蜃 蜆 蜊 衙 裟 裔 裙 補 裘 裝 裡 裊 裕
++ 裒 覜 解 詫 該 詳 試 詩 詰 誇 詼 詣 誠 話 誅 詭
++ 詢 詮 詬 詹 詻 訾 詨 豢 貊 貉 賊 資 賈 賄 貲 賃
++ 賂 賅 跡 跟 跨 路 跳 跺 跪 跤 跦 躲 較 載 軾 輊
++ 辟 農 運 遊 道 遂 達 逼 違 遐 遇 遏 過 遍 遑 逾
++ 遁 鄒 鄗 酬 酪 酩 釉 鈷 鉗 鈸 鈽 鉀 鈾 鉛 鉋 鉤
++ 鉑 鈴 鉉 鉍 鉅 鈹 鈿 鉚 閘 隘 隔 隕 雍 雋 雉 雊
++ 雷 電 雹 零 靖 靴 靶 預 頑 頓 頊 頒 頌 飼 飴 飽
++ 飾 馳 馱 馴 髡 鳩 麂 鼎 鼓 鼠 僧 僮 僥 僖 僭 僚
++ 僕 像 僑 僱 僎 僩 兢 凳 劃 劂 匱 厭 嗾 嘀 嘛 嘗
++ 嗽 嘔 嘆 嘉 嘍 嘎 嗷 嘖 嘟 嘈 嘐 嗶 團 圖 塵 塾
++ 境 墓 墊 塹 墅 塽 壽 夥 夢 夤 奪 奩 嫡 嫦 嫩 嫗
++ 嫖 嫘 嫣 孵 寞 寧 寡 寥 實 寨 寢 寤 察 對 屢 嶄
++ 嶇 幛 幣 幕 幗 幔 廓 廖 弊 彆 彰 徹 慇 愿 態 慷
++ 慢 慣 慟 慚 慘 慵 截 撇 摘 摔 撤 摸 摟 摺 摑 摧
++ 搴 摭 摻 敲 斡 旗 旖 暢 暨 暝 榜 榨 榕 槁 榮 槓
++ 構 榛 榷 榻 榫 榴 槐 槍 榭 槌 榦 槃 榣 歉 歌 氳
++ 漳 演 滾 漓 滴 漩 漾 漠 漬 漏 漂 漢 滿 滯 漆 漱
++ 漸 漲 漣 漕 漫 漯 澈 漪 滬 漁 滲 滌 滷 熔 熙 煽
++ 熊 熄 熒 爾 犒 犖 獄 獐 瑤 瑣 瑪 瑰 瑭 甄 疑 瘧
++ 瘍 瘋 瘉 瘓 盡 監 瞄 睽 睿 睡 磁 碟 碧 碳 碩 碣
++ 禎 福 禍 種 稱 窪 窩 竭 端 管 箕 箋 筵 算 箝 箔
++ 箏 箸 箇 箄 粹 粽 精 綻 綰 綜 綽 綾 綠 緊 綴 網
++ 綱 綺 綢 綿 綵 綸 維 緒 緇 綬 罰 翠 翡 翟 聞 聚
++ 肇 腐 膀 膏 膈 膊 腿 膂 臧 臺 與 舔 舞 艋 蓉 蒿
++ 蓆 蓄 蒙 蒞 蒲 蒜 蓋 蒸 蓀 蓓 蒐 蒼 蓑 蓊 蜿 蜜
++ 蜻 蜢 蜥 蜴 蜘 蝕 蜷 蜩 裳 褂 裴 裹 裸 製 裨 褚
++ 裯 誦 誌 語 誣 認 誡 誓 誤 說 誥 誨 誘 誑 誚 誧
++ 豪 貍 貌 賓 賑 賒 赫 趙 趕 跼 輔 輒 輕 輓 辣 遠
++ 遘 遜 遣 遙 遞 遢 遝 遛 鄙 鄘 鄞 酵 酸 酷 酴 鉸
++ 銀 銅 銘 銖 鉻 銓 銜 銨 鉼 銑 閡 閨 閩 閣 閥 閤
++ 隙 障 際 雌 雒 需 靼 鞅 韶 頗 領 颯 颱 餃 餅 餌
++ 餉 駁 骯 骰 髦 魁 魂 鳴 鳶 鳳 麼 鼻 齊 億 儀 僻
++ 僵 價 儂 儈 儉 儅 凜 劇 劈 劉 劍 劊 勰 厲 嘮 嘻
++ 嘹 嘲 嘿 嘴 嘩 噓 噎 噗 噴 嘶 嘯 嘰 墀 墟 增 墳
++ 墜 墮 墩 墦 奭 嬉 嫻 嬋 嫵 嬌 嬈 寮 寬 審 寫 層
++ 履 嶝 嶔 幢 幟 幡 廢 廚 廟 廝 廣 廠 彈 影 德 徵
++ 慶 慧 慮 慝 慕 憂 慼 慰 慫 慾 憧 憐 憫 憎 憬 憚
++ 憤 憔 憮 戮 摩 摯 摹 撞 撲 撈 撐 撰 撥 撓 撕 撩
++ 撒 撮 播 撫 撚 撬 撙 撢 撳 敵 敷 數 暮 暫 暴 暱
++ 樣 樟 槨 樁 樞 標 槽 模 樓 樊 槳 樂 樅 槭 樑 歐
++ 歎 殤 毅 毆 漿 潼 澄 潑 潦 潔 澆 潭 潛 潸 潮 澎
++ 潺 潰 潤 澗 潘 滕 潯 潠 潟 熟 熬 熱 熨 牖 犛 獎
++ 獗 瑩 璋 璃 瑾 璀 畿 瘠 瘩 瘟 瘤 瘦 瘡 瘢 皚 皺
++ 盤 瞎 瞇 瞌 瞑 瞋 磋 磅 確 磊 碾 磕 碼 磐 稿 稼
++ 穀 稽 稷 稻 窯 窮 箭 箱 範 箴 篆 篇 篁 箠 篌 糊
++ 締 練 緯 緻 緘 緬 緝 編 緣 線 緞 緩 綞 緙 緲 緹
++ 罵 罷 羯 翩 耦 膛 膜 膝 膠 膚 膘 蔗 蔽 蔚 蓮 蔬
++ 蔭 蔓 蔑 蔣 蔡 蔔 蓬 蔥 蓿 蔆 螂 蝴 蝶 蝠 蝦 蝸
++ 蝨 蝙 蝗 蝌 蝓 衛 衝 褐 複 褒 褓 褕 褊 誼 諒 談
++ 諄 誕 請 諸 課 諉 諂 調 誰 論 諍 誶 誹 諛 豌 豎
++ 豬 賠 賞 賦 賤 賬 賭 賢 賣 賜 質 賡 赭 趟 趣 踫
++ 踐 踝 踢 踏 踩 踟 踡 踞 躺 輝 輛 輟 輩 輦 輪 輜
++ 輞 輥 適 遮 遨 遭 遷 鄰 鄭 鄧 鄱 醇 醉 醋 醃 鋅
++ 銻 銷 鋪 銬 鋤 鋁 銳 銼 鋒 鋇 鋰 銲 閭 閱 霄 霆
++ 震 霉 靠 鞍 鞋 鞏 頡 頫 頜 颳 養 餓 餒 餘 駝 駐
++ 駟 駛 駑 駕 駒 駙 骷 髮 髯 鬧 魅 魄 魷 魯 鴆 鴉
++ 鴃 麩 麾 黎 墨 齒 儒 儘 儔 儐 儕 冀 冪 凝 劑 劓
++ 勳 噙 噫 噹 噩 噤 噸 噪 器 噥 噱 噯 噬 噢 噶 壁
++ 墾 壇 壅 奮 嬝 嬴 學 寰 導 彊 憲 憑 憩 憊 懍 憶
++ 憾 懊 懈 戰 擅 擁 擋 撻 撼 據 擄 擇 擂 操 撿 擒
++ 擔 撾 整 曆 曉 暹 曄 曇 暸 樽 樸 樺 橙 橫 橘 樹
++ 橄 橢 橡 橋 橇 樵 機 橈 歙 歷 氅 濂 澱 澡 濃 澤
++ 濁 澧 澳 激 澹 澶 澦 澠 澴 熾 燉 燐 燒 燈 燕 熹
++ 燎 燙 燜 燃 燄 獨 璜 璣 璘 璟 璞 瓢 甌 甍 瘴 瘸
++ 瘺 盧 盥 瞠 瞞 瞟 瞥 磨 磚 磬 磧 禦 積 穎 穆 穌
++ 穋 窺 篙 簑 築 篤 篛 篡 篩 篦 糕 糖 縊 縑 縈 縛
++ 縣 縞 縝 縉 縐 罹 羲 翰 翱 翮 耨 膳 膩 膨 臻 興
++ 艘 艙 蕊 蕙 蕈 蕨 蕩 蕃 蕉 蕭 蕪 蕞 螃 螟 螞 螢
++ 融 衡 褪 褲 褥 褫 褡 親 覦 諦 諺 諫 諱 謀 諜 諧
++ 諮 諾 謁 謂 諷 諭 諳 諶 諼 豫 豭 貓 賴 蹄 踱 踴
++ 蹂 踹 踵 輻 輯 輸 輳 辨 辦 遵 遴 選 遲 遼 遺 鄴
++ 醒 錠 錶 鋸 錳 錯 錢 鋼 錫 錄 錚 錐 錦 錡 錕 錮
++ 錙 閻 隧 隨 險 雕 霎 霑 霖 霍 霓 霏 靛 靜 靦 鞘
++ 頰 頸 頻 頷 頭 頹 頤 餐 館 餞 餛 餡 餚 駭 駢 駱
++ 骸 骼 髻 髭 鬨 鮑 鴕 鴣 鴦 鴨 鴒 鴛 默 黔 龍 龜
++ 優 償 儡 儲 勵 嚎 嚀 嚐 嚅 嚇 嚏 壕 壓 壑 壎 嬰
++ 嬪 嬤 孺 尷 屨 嶼 嶺 嶽 嶸 幫 彌 徽 應 懂 懇 懦
++ 懋 戲 戴 擎 擊 擘 擠 擰 擦 擬 擱 擢 擭 斂 斃 曙
++ 曖 檀 檔 檄 檢 檜 櫛 檣 橾 檗 檐 檠 歜 殮 毚 氈
++ 濘 濱 濟 濠 濛 濤 濫 濯 澀 濬 濡 濩 濕 濮 濰 燧
++ 營 燮 燦 燥 燭 燬 燴 燠 爵 牆 獰 獲 璩 環 璦 璨
++ 癆 療 癌 盪 瞳 瞪 瞰 瞬 瞧 瞭 矯 磷 磺 磴 磯 礁
++ 禧 禪 穗 窿 簇 簍 篾 篷 簌 篠 糠 糜 糞 糢 糟 糙
++ 糝 縮 績 繆 縷 縲 繃 縫 總 縱 繅 繁 縴 縹 繈 縵
++ 縿 縯 罄 翳 翼 聱 聲 聰 聯 聳 臆 臃 膺 臂 臀 膿
++ 膽 臉 膾 臨 舉 艱 薪 薄 蕾 薜 薑 薔 薯 薛 薇 薨
++ 薊 虧 蟀 蟑 螳 蟒 蟆 螫 螻 螺 蟈 蟋 褻 褶 襄 褸
++ 褽 覬 謎 謗 謙 講 謊 謠 謝 謄 謐 豁 谿 豳 賺 賽
++ 購 賸 賻 趨 蹉 蹋 蹈 蹊 轄 輾 轂 轅 輿 避 遽 還
++ 邁 邂 邀 鄹 醣 醞 醜 鍍 鎂 錨 鍵 鍊 鍥 鍋 錘 鍾
++ 鍬 鍛 鍰 鍚 鍔 闊 闋 闌 闈 闆 隱 隸 雖 霜 霞 鞠
++ 韓 顆 颶 餵 騁 駿 鮮 鮫 鮪 鮭 鴻 鴿 麋 黏 點 黜
++ 黝 黛 鼾 齋 叢 嚕 嚮 壙 壘 嬸 彝 懣 戳 擴 擲 擾
++ 攆 擺 擻 擷 斷 曜 朦 檳 檬 櫃 檻 檸 櫂 檮 檯 歟
++ 歸 殯 瀉 瀋 濾 瀆 濺 瀑 瀏 燻 燼 燾 燸 獷 獵 璧
++ 璿 甕 癖 癘 癒 瞽 瞿 瞻 瞼 礎 禮 穡 穢 穠 竄 竅
++ 簫 簧 簪 簞 簣 簡 糧 織 繕 繞 繚 繡 繒 繙 罈 翹
++ 翻 職 聶 臍 臏 舊 藏 薩 藍 藐 藉 薰 薺 薹 薦 蟯
++ 蟬 蟲 蟠 覆 覲 觴 謨 謹 謬 謫 豐 贅 蹙 蹣 蹦 蹤
++ 蹟 蹕 軀 轉 轍 邇 邃 邈 醫 醬 釐 鎔 鎊 鎖 鎢 鎳
++ 鎮 鎬 鎰 鎘 鎚 鎗 闔 闖 闐 闕 離 雜 雙 雛 雞 霤
++ 鞣 鞦 鞭 韹 額 顏 題 顎 顓 颺 餾 餿 餽 餮 馥 騎
++ 髁 鬃 鬆 魏 魎 魍 鯊 鯉 鯽 鯈 鯀 鵑 鵝 鵠 黠 鼕
++ 鼬 儳 嚥 壞 壟 壢 寵 龐 廬 懲 懷 懶 懵 攀 攏 曠
++ 曝 櫥 櫝 櫚 櫓 瀛 瀟 瀨 瀚 瀝 瀕 瀘 爆 爍 牘 犢
++ 獸 獺 璽 瓊 瓣 疇 疆 癟 癡 矇 礙 禱 穫 穩 簾 簿
++ 簸 簽 簷 籀 繫 繭 繹 繩 繪 羅 繳 羶 羹 羸 臘 藩
++ 藝 藪 藕 藤 藥 藷 蟻 蠅 蠍 蟹 蟾 襠 襟 襖 襞 譁
++ 譜 識 證 譚 譎 譏 譆 譙 贈 贊 蹼 蹲 躇 蹶 蹬 蹺
++ 蹴 轔 轎 辭 邊 邋 醱 醮 鏡 鏑 鏟 鏃 鏈 鏜 鏝 鏖
++ 鏢 鏍 鏘 鏤 鏗 鏨 關 隴 難 霪 霧 靡 韜 韻 類 願
++ 顛 颼 饅 饉 騖 騙 鬍 鯨 鯧 鯖 鯛 鶉 鵡 鵲 鵪 鵬
++ 麒 麗 麓 麴 勸 嚨 嚷 嚶 嚴 嚼 壤 孀 孃 孽 寶 巉
++ 懸 懺 攘 攔 攙 曦 朧 櫬 瀾 瀰 瀲 爐 獻 瓏 癢 癥
++ 礦 礪 礬 礫 竇 競 籌 籃 籍 糯 糰 辮 繽 繼 纂 罌
++ 耀 臚 艦 藻 藹 蘑 藺 蘆 蘋 蘇 蘊 蠔 蠕 襤 覺 觸
++ 議 譬 警 譯 譟 譫 贏 贍 躉 躁 躅 躂 醴 釋 鐘 鐃
++ 鏽 闡 霰 飄 饒 饑 馨 騫 騰 騷 騵 鰓 鰍 鹹 麵 黨
++ 鼯 齟 齣 齡 儷 儸 囁 囀 囂 夔 屬 巍 懼 懾 攝 攜
++ 斕 曩 櫻 欄 櫺 殲 灌 爛 犧 瓖 瓔 癩 矓 籐 纏 續
++ 羼 蘗 蘭 蘚 蠣 蠢 蠡 蠟 襪 襬 覽 譴 護 譽 贓 躊
++ 躍 躋 轟 辯 醺 鐮 鐳 鐵 鐺 鐸 鐲 鐫 闢 霸 霹 露
++ 響 顧 顥 饗 驅 驃 驀 騾 髏 魔 魑 鰭 鰥 鶯 鶴 鷂
++ 鶸 麝 黯 鼙 齜 齦 齧 儼 儻 囈 囊 囉 孿 巔 巒 彎
++ 懿 攤 權 歡 灑 灘 玀 瓤 疊 癮 癬 禳 籠 籟 聾 聽
++ 臟 襲 襯 觼 讀 贖 贗 躑 躓 轡 酈 鑄 鑑 鑒 霽 霾
++ 韃 韁 顫 饕 驕 驍 髒 鬚 鱉 鰱 鰾 鰻 鷓 鷗 鼴 齬
++ 齪 龔 囌 巖 戀 攣 攫 攪 曬 欐 瓚 竊 籤 籣 籥 纓
++ 纖 纔 臢 蘸 蘿 蠱 變 邐 邏 鑣 鑠 鑤 靨 顯 饜 驚
++ 驛 驗 髓 體 髑 鱔 鱗 鱖 鷥 麟 黴 囑 壩 攬 灞 癱
++ 癲 矗 罐 羈 蠶 蠹 衢 讓 讒 讖 艷 贛 釀 鑪 靂 靈
++ 靄 韆 顰 驟 鬢 魘 鱟 鷹 鷺 鹼 鹽 鼇 齷 齲 廳 欖
++ 灣 籬 籮 蠻 觀 躡 釁 鑲 鑰 顱 饞 髖 鬣 黌 灤 矚
++ 讚 鑷 韉 驢 驥 纜 讜 躪 釅 鑽 鑾 鑼 鱷 鱸 黷 豔
++ 鑿 鸚 爨 驪 鬱 鸛 鸞 籲 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧
++ ⑨ ⑩ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⅰ ⅱ ⅲ ⅳ
++ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ 丶 丿 亅 亠 冂 冖 冫 勹 匸 卩
++ 厶 夊 宀 巛 ⼳ 广 彐 彡 攴 疒 辵 ¨ ˆ ヽ ヾ ゝ
++ ゞ 々 〆 〇 ー [ ] ✽ ぁ あ ぃ い ぅ う ぇ え
++ ぉ お か が き ぎ く ぐ け げ こ ご さ ざ し じ
++ す ず せ ぜ そ ぞ た だ ち ぢ っ つ づ て で と
++ ど な に ぬ ね の は ば ぱ ひ び ぴ ふ ぶ ぷ へ
++ べ ぺ ほ ぼ ぽ ま み む め も ゃ や ゅ ゆ ょ よ
++ ら り る れ ろ ゎ わ ゐ ゑ を ん ァ ア ィ イ ゥ
++ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ
++ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ
++ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ
++ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ
++ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ ヰ ヱ ヲ ン ヴ ヵ
++ ヶ А Б В Г Д Е Ё Ж З И Й К Л М Н
++ О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э
++ Ю Я а б в г д е ё ж з и й к л м
++ н о п р с т у ф х ц ч ш щ ъ ы ь
++ э ю я ⇧ ↸ ↹ ㇏ 𠃌 乚 𠂊 刂 䒑 龰 冈 龱 𧘇
++ ¬ ¦ ' " ㈱ № ℡ ゛ ゜ ⺀ ⺄ ⺆ ⺇ ⺈ ⺊ ⺌
++ ⺍ ⺕ ⺜ ⺝ ⺥ ⺧ ⺪ ⺬ ⺮ ⺶ ⺼ ⺾ ⻆ ⻊ ⻌ ⻍
++ ⻏ ⻖ ⻗ ⻞ ⻣ ʃ ɐ ɛ ɔ ɵ œ ø ŋ ʊ ɪ 乂
++ 乜 凵 匚 厂 万 丌 乇 亍 囗 兀 屮 彳 丏 冇 与 丮
++ 亓 仂 仉 仈 冘 勼 卬 厹 圠 夃 夬 尐 巿 旡 殳 毌
++ 气 爿 丱 丼 仨 仜 仩 仡 仝 仚 刌 匜 卌 圢 圣 夗
++ 夯 宁 宄 尒 尻 屴 屳 帄 庀 庂 忉 戉 扐 氕 氶 汃
++ 氿 氻 犮 犰 玊 禸 肊 阞 伎 优 伬 仵 伔 仱 伀 价
++ 伈 伝 伂 伅 伢 伓 伄 仴 伒 冱 刓 刉 刐 劦 匢 匟
++ 卍 厊 吇 囡 囟 圮 圪 圴 夼 妀 奼 妅 奻 奾 奷 奿
++ 孖 尕 尥 屼 屺 屻 屾 巟 幵 庄 异 弚 彴 忕 忔 忏
++ 扜 扞 扤 扡 扦 扢 扙 扠 扚 扥 旯 旮 朾 朹 朸 朻
++ 机 朿 朼 朳 氘 汆 汒 汜 汏 汊 汔 汋 汌 灱 牞 犴
++ 犵 玎 甪 癿 穵 网 艸 艼 芀 艽 艿 虍 襾 邙 邗 邘
++ 邛 邔 阢 阤 阠 阣 佖 伻 佢 佉 体 佤 伾 佧 佒 佟
++ 佁 佘 伭 伳 伿 佡 冏 冹 刜 刞 刡 劭 劮 匉 卣 卲
++ 厎 厏 吰 吷 吪 呔 呅 吙 吜 吥 吘 吽 呏 呁 吨 吤
++ 呇 囮 囧 囥 坁 坅 坌 坉 坋 坒 夆 奀 妦 妘 妠 妗
++ 妎 妢 妐 妏 妧 妡 宎 宒 尨 尪 岍 岏 岈 岋 岉 岒
++ 岊 岆 岓 岕 巠 帊 帎 庋 庉 庌 庈 庍 弅 弝 彸 彶
++ 忒 忑 忐 忭 忨 忮 忳 忡 忤 忣 忺 忯 忷 忻 怀 忴
++ 戺 抃 抌 抎 抏 抔 抇 扱 扻 扺 扰 抁 抈 扷 扽 扲
++ 扴 攷 旰 旴 旳 旲 旵 杅 杇 杙 杕 杌 杈 杝 杍 杚
++ 杋 毐 氙 氚 汸 汧 汫 沄 沋 沏 汱 汯 汩 沚 汭 沇
++ 沕 沜 汦 汳 汥 汻 沎 灴 灺 牣 犿 犽 狃 狆 狁 犺
++ 狅 玕 玗 玓 玔 玒 町 甹 疔 疕 皁 礽 耴 肕 肙 肐
++ 肒 肜 芐 芏 芅 芎 芑 芓 芊 芃 芄 豸 迉 辿 邟 邡
++ 邥 邞 邧 邠 阰 阨 阯 阭 丳 侘 佼 侅 佽 侀 侇 佶
++ 佴 侉 侄 佷 佌 侗 佪 侚 佹 侁 佸 侐 侜 侔 侞 侒
++ 侂 侕 佫 佮 冞 冼 冾 刵 刲 刳 剆 刱 劼 匊 匋 匼
++ 厒 厔 咇 呿 咁 咑 咂 咈 呫 呺 呾 呥 呬 呴 呦 咍
++ 呯 呡 呠 咘 呣 呧 呤 囷 囹 坯 坲 坭 坫 坱 坰 坶
++ 垀 坵 坻 坳 坴 坢 坨 坽 夌 奅 妵 妺 姏 姎 妲 姌
++ 姁 妶 妼 姃 姖 妱 妽 姀 姈 妴 姇 孢 孥 宓 宕 屄
++ 屇 岮 岤 岠 岵 岯 岨 岬 岟 岣 岭 岢 岪 岧 岝 岥
++ 岶 岰 岦 帗 帔 帙 弨 弢 弣 弤 彔 徂 彾 彽 忞 忥
++ 怭 怦 怙 怲 怋 怴 怊 怗 怳 怚 怞 怬 怢 怍 怐 怮
++ 怓 怑 怌 怉 怜 戔 戽 抭 抴 拑 抾 抪 抶 拊 抮 抳
++ 抯 抻 抩 抰 抸 攽 斨 斻 昉 旼 昄 昒 昈 旻 昃 昋
++ 昍 昅 旽 昑 昐 曶 朊 枅 杬 枎 枒 杶 杻 枘 枆 构
++ 杴 枍 枌 杺 枟 枑 枙 枃 杽 极 杸 杹 枔 欥 殀 歾
++ 毞 氝 沓 泬 泫 泮 泙 沶 泔 沭 泧 沷 泐 泂 沺 泃
++ 泆 泭 泲 泒 泝 沴 沊 沝 沀 泞 泀 洰 泍 泇 沰 泹
++ 泏 泩 泑 炔 炘 炅 炓 炆 炄 炑 炖 炂 炚 炃 牪 狖
++ 狋 狘 狉 狜 狒 狔 狚 狌 狑 玤 玡 玭 玦 玢 玠 玬
++ 玝 瓝 瓨 甿 畀 甾 疌 疘 皯 盳 盱 盰 盵 矸 矼 矹
++ 矻 矺 矷 祂 礿 秅 穸 穻 竻 籵 糽 耵 肏 肮 肣 肸
++ 肵 肭 舠 芠 苀 芫 芚 芘 芛 芵 芧 芮 芼 芞 芺 芴
++ 芨 芡 芩 苂 芤 苃 芶 芢 虰 虯 虭 虮 豖 迒 迋 迓
++ 迍 迖 迕 迗 邲 邴 邯 邳 邰 阹 阽 阼 阺 陃 俍 俅
++ 俓 侲 俉 俋 俁 俔 俜 俙 侻 侳 俛 俇 俖 侺 俀 侹
++ 俬 剄 剉 勀 勂 匽 卼 厗 厖 厙 厘 咺 咡 咭 咥 哏
++ 哃 茍 咷 咮 哖 咶 哅 哆 咠 呰 咼 咢 咾 呲 哞 咰
++ 垵 垞 垟 垤 垌 垗 垝 垛 垔 垘 垏 垙 垥 垚 垕 壴
++ 复 奓 姡 姞 姮 娀 姱 姝 姺 姽 姼 姶 姤 姲 姷 姛
++ 姩 姳 姵 姠 姾 姴 姭 宨 屌 峐 峘 峌 峗 峋 峛 峞
++ 峚 峉 峇 峊 峖 峓 峔 峏 峈 峆 峎 峟 峸 巹 帡 帢
++ 帣 帠 帤 庰 庤 庢 庛 庣 庥 弇 弮 彖 徆 怷 怹 恔
++ 恲 恞 恅 恓 恇 恉 恛 恌 恀 恂 恟 怤 恄 恘 恦 恮
++ 扂 扃 拏 挍 挋 拵 挎 挃 拫 拹 挏 挌 拸 拶 挀 挓
++ 挔 拺 挕 拻 拰 敁 敃 斪 斿 昶 昡 昲 昵 昜 昦 昢
++ 昳 昫 昺 昝 昴 昹 昮 朏 朐 柁 柲 柈 枺 柜 枻 柸
++ 柘 柀 枷 柅 柫 柤 柟 枵 柍 枳 柷 柶 柮 柣 柂 枹
++ 柎 柧 柰 枲 柼 柆 柭 柌 枮 柦 柛 柺 柉 柊 柃 柪
++ 柋 欨 殂 殄 殶 毖 毘 毠 氠 氡 洨 洴 洭 洟 洼 洿
++ 洒 洊 泚 洳 洄 洙 洺 洚 洑 洀 洝 浂 洁 洘 洷 洃
++ 洏 浀 洇 洠 洬 洈 洢 洉 洐 炷 炟 炾 炱 炰 炡 炴
++ 炵 炩 牁 牉 牊 牬 牰 牳 牮 狊 狤 狨 狫 狟 狪 狦
++ 狣 玅 珌 珂 珈 珅 玹 玶 玵 玴 珫 玿 珇 玾 珃 珆
++ 玸 珋 瓬 瓮 甮 畇 畈 疧 疪 癹 盄 眈 眃 眄 眅 眊
++ 盷 盻 盺 矧 矨 砆 砑 砒 砅 砐 砏 砎 砉 砃 砓 祊
++ 祌 祋 祅 祄 秕 种 秏 秖 秎 窀 穾 竑 笀 笁 籺 籸
++ 籹 籿 粀 粁 紃 紈 紁 罘 羑 羍 羾 耇 耎 耏 耔 耷
++ 胘 胇 胠 胑 胈 胂 胐 胅 胣 胙 胜 胊 胕 胉 胏 胗
++ 胦 胍 臿 舡 芔 苙 苾 苹 茇 苨 茀 苕 茺 苫 苖 苴
++ 苬 苡 苲 苵 茌 苻 苶 苰 苪 苤 苠 苺 苳 苭 虷 虴
++ 虼 虳 衁 衎 衧 衪 衩 觓 訄 訇 赲 迣 迡 迮 迠 郱
++ 邽 邿 郕 郅 邾 郇 郋 郈 釔 釓 陔 陏 陑 陓 陊 陎
++ 倞 倅 倇 倓 倢 倰 倛 俵 俴 倳 倷 倬 俶 俷 倗 倜
++ 倠 倧 倵 倯 倱 倎 党 冔 冓 凊 凄 凅 凈 凎 剡 剚
++ 剒 剞 剟 剕 剢 勍 匎 厞 唦 哢 唗 唒 哧 哳 哤 唚
++ 哿 唄 唈 哫 唑 唅 哱 唊 哻 哷 哸 哠 唎 唃 唋 圁
++ 圂 埌 堲 埕 埒 垺 埆 垽 垼 垸 垶 垿 埇 埐 垹 埁
++ 夎 奊 娙 娖 娭 娮 娕 娏 娗 娊 娞 娳 孬 宧 宭 宬
++ 尃 屖 屔 峬 峿 峮 峱 峷 崀 峹 帩 帨 庨 庮 庪 庬
++ 弳 弰 彧 恝 恚 恧 恁 悢 悈 悀 悒 悁 悝 悃 悕 悛
++ 悗 悇 悜 悎 戙 扆 拲 挐 捖 挬 捄 捅 挶 捃 揤 挹
++ 捋 捊 挼 挩 捁 挴 捘 捔 捙 挭 捇 挳 捚 捑 挸 捗
++ 捀 捈 敊 敆 旆 旃 旄 旂 晊 晟 晇 晑 朒 朓 栟 栚
++ 桉 栲 栳 栻 桋 桏 栖 栱 栜 栵 栫 栭 栯 桎 桄 栴
++ 栝 栒 栔 栦 栨 栮 桍 栺 栥 栠 欬 欯 欭 欱 欴 歭
++ 肂 殈 毦 毤 毨 毣 毢 毧 氥 浺 浣 浤 浶 洍 浡 涒
++ 浘 浢 浭 浯 涑 涍 淯 浿 涆 浞 浧 浠 涗 浰 浼 浟
++ 涂 涘 洯 浨 涋 浾 涀 涄 洖 涃 浻 浽 浵 涐 烜 烓
++ 烑 烝 烋 缹 烢 烗 烒 烞 烠 烔 烍 烅 烆 烇 烚 烎
++ 烡 牂 牸 牷 牶 猀 狺 狴 狾 狶 狳 狻 猁 珓 珙 珥
++ 珖 玼 珧 珣 珩 珜 珒 珛 珔 珝 珚 珗 珘 珨 瓞 瓟
++ 瓴 瓵 甡 畛 畟 疰 痁 疻 痄 痀 疿 疶 疺 皊 盉 眝
++ 眛 眐 眓 眒 眣 眑 眕 眙 眚 眢 眧 砣 砬 砢 砵 砯
++ 砨 砮 砫 砡 砩 砳 砪 砱 祔 祛 祏 祜 祓 祒 祑 秫
++ 秬 秠 秮 秭 秪 秜 秞 秝 窆 窉 窅 窋 窌 窊 窇 竘
++ 笐 笄 笓 笅 笏 笈 笊 笎 笉 笒 粄 粑 粊 粌 粈 粍
++ 粅 紞 紝 紑 紎 紘 紖 紓 紟 紒 紏 紌 罜 罡 罞 罠
++ 罝 罛 羖 羒 翃 翂 翀 耖 耾 耹 胺 胲 胹 胵 脁 胻
++ 脀 舁 舯 舥 茳 茭 荄 茙 荑 茥 荖 茿 荁 茦 茜 茢
++ 荂 荎 茛 茪 茈 茼 荍 茖 茤 茠 茷 茯 茩 荇 荅 荌
++ 荓 茞 茬 荋 茧 荈 虓 虒 蚢 蚨 蚖 蚍 蚑 蚞 蚇 蚗
++ 蚆 蚋 蚚 蚅 蚥 蚙 蚡 蚧 蚕 蚘 蚎 蚝 蚐 蚔 衃 衄
++ 衭 衵 衶 衲 袀 衱 衿 衯 袃 衾 衴 衼 訒 豇 豗 豻
++ 貤 貣 赶 赸 趵 趷 趶 軑 軓 迾 迵 适 迿 迻 逄 迼
++ 迶 郖 郠 郙 郚 郣 郟 郥 郘 郛 郗 郜 郤 酐 酎 酏
++ 釕 釢 釚 陜 陟 隼 飣 髟 鬯 乿 偰 偪 偡 偞 偠 偓
++ 偋 偝 偲 偈 偍 偁 偛 偊 偢 倕 偅 偟 偩 偫 偣 偤
++ 偆 偀 偮 偳 偗 偑 凐 剫 剭 剬 剮 勖 勓 匭 厜 啵
++ 啶 唼 啍 啐 唴 唪 啑 啢 唶 唵 唰 啒 啅 唌 唲 啥
++ 啎 唹 啈 唭 唻 啀 啋 圊 圇 埻 堔 埢 埶 埜 埴 堀
++ 埭 埽 堈 埸 堋 埳 埏 堇 埮 埣 埲 埥 埬 埡 堎 埼
++ 堐 埧 堁 堌 埱 埩 埰 堍 堄 奜 婠 婘 婕 婧 婞 娸
++ 娵 婭 婐 婟 婥 婬 婓 婤 婗 婃 婝 婒 婄 婛 婈 媎
++ 娾 婍 娹 婌 婰 婩 婇 婑 婖 婂 婜 孲 孮 寁 寀 屙
++ 崞 崋 崝 崚 崠 崌 崨 崍 崦 崥 崏 崰 崒 崣 崟 崮
++ 帾 帴 庱 庴 庹 庲 庳 弶 弸 徛 徖 徟 悊 悐 悆 悾
++ 悰 悺 惓 惔 惏 惤 惙 惝 惈 悱 惛 悷 惊 悿 惃 惍
++ 惀 挲 捥 掊 掂 捽 掽 掞 掭 掝 掗 掫 掎 捯 掇 掐
++ 据 掯 捵 掜 捭 掮 捼 掤 挻 掟 捸 掅 掁 掑 掍 捰
++ 敓 旍 晥 晡 晛 晙 晜 晢 朘 桹 梇 梐 梜 桭 桮 梮
++ 梫 楖 桯 梣 梬 梩 桵 桴 梲 梏 桷 梒 桼 桫 桲 梪
++ 梀 桱 桾 梛 梖 梋 梠 梉 梤 桸 桻 梑 梌 梊 桽 欶
++ 欳 欷 欸 殑 殏 殍 殎 殌 氪 淀 涫 涴 涳 湴 涬 淩
++ 淢 涷 淶 淔 渀 淈 淠 淟 淖 涾 淥 淜 淝 淛 淴 淊
++ 涽 淭 淰 涺 淕 淂 淏 淉 淐 淲 淓 淽 淗 淍 淣 涻
++ 烺 焍 烷 焗 烴 焌 烰 焄 烳 焐 烼 烿 焆 焓 焀 烸
++ 烶 焋 焂 焎 牾 牻 牼 牿 猝 猗 猇 猑 猘 猊 猈 狿
++ 猏 猞 玈 珶 珸 珵 琄 琁 珽 琇 琀 珺 珼 珿 琌 琋
++ 珴 琈 畤 畣 痎 痒 痏 痋 痌 痑 痐 皏 皉 盓 眹 眯
++ 眭 眱 眲 眴 眳 眽 眥 眻 眵 硈 硒 硉 硍 硊 硌 砦
++ 硅 硐 祤 祧 祩 祪 祣 祫 祡 离 秺 秸 秶 秷 窏 窔
++ 窐 笵 筇 笴 笥 笰 笢 笤 笳 笘 笪 笝 笱 笫 笭 笯
++ 笲 笸 笚 笣 粔 粘 粖 粣 紵 紽 紸 紶 紺 絅 紬 紩
++ 絁 絇 紾 紿 絊 紻 紨 罣 羕 羜 羝 羛 翊 翋 翍 翐
++ 翑 翇 翏 翉 耟 耞 耛 聇 聃 聈 脘 脥 脙 脛 脭 脟
++ 脬 脞 脡 脕 脧 脝 脢 舑 舸 舳 舺 舴 舲 艴 莐 莣
++ 莨 莍 荺 荳 莤 荴 莏 莁 莕 莙 荵 莔 莩 荽 莃 莌
++ 莝 莛 莪 莋 荾 莥 莯 莈 莗 莰 荿 莦 莇 莮 荶 莚
++ 虙 虖 蚿 蚷 蛂 蛁 蛅 蚺 蚰 蛈 蚹 蚳 蚸 蛌 蚴 蚻
++ 蚼 蛃 蚽 蚾 衒 袉 袕 袨 袢 袪 袚 袑 袡 袟 袘 袧
++ 袙 袛 袗 袤 袬 袌 袓 袎 覂 觖 觙 觕 訰 訧 訬 訞
++ 谹 谻 豜 豝 豽 貥 赽 赻 赹 趼 跂 趹 趿 跁 軘 軞
++ 軝 軜 軗 軠 軡 逤 逋 逑 逜 逌 逡 郯 郪 郰 郴 郲
++ 郳 郔 郫 郬 郩 酖 酘 酚 酓 酕 釬 釴 釱 釳 釸 釤
++ 釹 釪 釫 釷 釨 釮 镺 閆 閈 陼 陭 陫 陱 陯 隿 靪
++ 頄 飥 馗 傛 傕 傔 傞 傋 傣 傃 傌 傎 傝 偨 傜 傒
++ 傂 傇 兟 凔 匒 匑 厤 厧 喑 喨 喥 喭 啷 噅 喢 喓
++ 喈 喏 喵 喁 喣 喒 喤 啽 喌 喦 啿 喕 喡 喎 圌 堩
++ 堷 堙 堞 堧 堣 堨 埵 塈 堥 堜 堛 堳 堿 堶 堮 堹
++ 堸 堭 堬 堻 奡 媯 媔 媟 婺 媢 媞 婸 媦 婼 媥 媬
++ 媕 媮 娷 媄 媊 媗 媃 媋 媩 婻 婽 媌 媜 媏 媓 媝
++ 寪 寍 寋 寔 寑 寊 寎 尌 尰 崷 嵃 嵫 嵁 嵋 崿 崵
++ 嵑 嵎 嵕 崳 崺 嵒 崽 崱 嵙 嵂 崹 嵉 崸 崼 崲 崶
++ 嵀 嵅 幄 幁 彘 徦 徥 徫 惉 悹 惌 惢 惎 惄 愔 惲
++ 愊 愖 愅 惵 愓 惸 惼 惾 惁 愃 愘 愝 愐 惿 愄 愋
++ 扊 掔 掱 掰 揎 揥 揨 揯 揃 撝 揳 揊 揠 揶 揕 揲
++ 揵 摡 揟 掾 揝 揜 揄 揘 揓 揂 揇 揌 揋 揈 揰 揗
++ 揙 攲 敧 敪 敤 敜 敨 敥 斌 斝 斞 斮 旐 旒 晼 晬
++ 晻 暀 晱 晹 晪 晲 朁 椌 棓 椄 棜 椪 棬 棪 棱 椏
++ 棖 棷 棫 棤 棶 椓 椐 棳 棡 椇 棌 椈 楰 梴 椑 棯
++ 棆 椔 棸 棐 棽 棼 棨 椋 椊 椗 棎 棈 棝 棞 棦 棴
++ 棑 椆 棔 棩 椕 椥 棇 欹 欻 欿 欼 殔 殗 殙 殕 殽
++ 毰 毲 毳 氰 淼 湆 湇 渟 湉 溈 渼 渽 湅 湢 渫 渿
++ 湁 湝 湳 渜 渳 湋 湀 湑 渻 渃 渮 湞 湨 湜 湡 渱
++ 渨 湠 湱 湫 渹 渢 渰 湓 湥 渧 湸 湤 湷 湕 湹 湒
++ 湦 渵 渶 湚 焠 焞 焯 烻 焮 焱 焣 焥 焢 焲 焟 焨
++ 焺 焛 牋 牚 犈 犉 犆 犅 犋 猒 猋 猰 猢 猱 猳 猧
++ 猲 猭 猦 猣 猵 猌 琮 琬 琰 琫 琖 琚 琡 琭 琱 琤
++ 琣 琝 琩 琠 琲 瓻 甯 畯 畬 痧 痚 痡 痦 痝 痟 痤
++ 痗 皕 皒 盚 睆 睇 睄 睍 睅 睊 睎 睋 睌 矞 矬 硠
++ 硤 硥 硜 硭 硱 硪 确 硰 硩 硨 硞 硢 祴 祳 祲 祰
++ 稂 稊 稃 稌 稄 窙 竦 竤 筊 笻 筄 筈 筌 筎 筀 筘
++ 筅 粢 粞 粨 粡 絘 絯 絣 絓 絖 絧 絪 絏 絭 絜 絫
++ 絒 絔 絩 絑 絟 絎 缾 缿 罥 罦 羢 羠 羡 翗 聑 聏
++ 聐 胾 胔 腃 腊 腒 腏 腇 脽 腍 脺 臦 臮 臷 臸 臹
++ 舄 舼 舽 舿 艵 茻 菏 菹 萣 菀 菨 萒 菧 菤 菼 菶
++ 萐 菆 菈 菫 菣 莿 萁 菝 菥 菘 菿 菡 菋 菎 菖 菵
++ 菉 萉 萏 菞 萑 萆 菂 菳 菕 菺 菇 菑 菪 萓 菃 菬
++ 菮 菄 菻 菗 菢 萛 菛 菾 蛘 蛢 蛦 蛓 蛣 蛚 蛪 蛝
++ 蛫 蛜 蛬 蛩 蛗 蛨 蛑 衈 衖 衕 袺 裗 袹 袸 裀 袾
++ 袶 袼 袷 袽 袲 褁 裉 覕 覘 覗 觝 觚 觛 詎 詍 訹
++ 詙 詀 詗 詘 詄 詅 詒 詈 詑 詊 詌 詏 豟 貁 貀 貺
++ 貾 貰 貹 貵 趄 趀 趉 跘 跓 跍 跇 跖 跜 跏 跕 跙
++ 跈 跗 跅 軯 軷 軺 軹 軦 軮 軥 軵 軧 軨 軶 軫 軱
++ 軬 軴 軩 逭 逴 逯 鄆 鄬 鄄 郿 郼 鄈 郹 郻 鄁 鄀
++ 鄇 鄅 鄃 酡 酤 酟 酢 酠 鈁 鈊 鈥 鈃 鈚 鈦 鈏 鈌
++ 鈀 鈒 釿 釽 鈆 鈄 鈧 鈂 鈜 鈤 鈙 鈗 鈅 鈖 镻 閍
++ 閌 閐 隇 陾 隈 隉 隃 隀 雂 雈 雃 雱 雰 靬 靰 靮
++ 頇 颩 飫 鳦 黹 亃 亄 亶 傽 傿 僆 傮 僄 僊 傴 僈
++ 僂 傰 僁 傺 傱 僋 僉 傶 傸 凗 剺 剸 剻 剼 嗃 嗛
++ 嗌 嗐 嗋 嗊 嗝 嗀 嗔 嗄 嗩 喿 嗒 喍 嗏 嗕 嗢 嗖
++ 嗈 嗲 嗍 嗙 嗂 圔 塓 塨 塤 塏 塍 塉 塯 塕 塎 塝
++ 塙 塥 塛 堽 塣 塱 壼 嫇 嫄 嫋 媺 媸 媱 媵 媰 媿
++ 嫈 媻 嫆 媷 嫀 嫊 媴 媶 嫍 媹 媐 寖 寘 寙 尟 尳
++ 嵱 嵣 嵊 嵥 嵲 嵬 嵞 嵨 嵧 嵢 巰 幏 幎 幊 幍 幋
++ 廅 廌 廆 廋 廇 彀 徯 徭 惷 慉 慊 愫 慅 愶 愲 愮
++ 慆 愯 慏 愩 慀 戠 酨 戣 戥 戤 揅 揱 揫 搐 搒 搉
++ 搠 搤 搳 摃 搟 搕 搘 搹 搷 搢 搣 搌 搦 搰 搨 摁
++ 搵 搯 搊 搚 摀 搥 搧 搋 揧 搛 搮 搡 搎 敯 斒 旓
++ 暆 暌 暕 暐 暋 暊 暙 暔 晸 朠 楦 楟 椸 楎 楢 楱
++ 椿 楅 楪 椹 楂 楗 楙 楺 楈 楉 椵 楬 椳 椽 楥 棰
++ 楸 椴 楩 楀 楯 楄 楶 楘 楁 楴 楌 椻 楋 椷 楜 楏
++ 楑 椲 楒 椯 楻 椼 歆 歅 歃 歂 歈 歁 殛 嗀 毻 毼
++ 毹 毷 毸 溛 滖 滈 溏 滀 溟 溓 溔 溠 溱 溹 滆 滒
++ 溽 滁 溞 滉 溷 溰 滍 溦 滏 溲 溾 滃 滜 滘 溙 溒
++ 溎 溍 溤 溡 溿 溳 滐 滊 溗 溮 溣 煇 煔 煒 煣 煠
++ 煁 煝 煢 煲 煸 煪 煡 煂 煘 煃 煋 煰 煟 煐 煓 煄
++ 煍 煚 牏 犍 犌 犑 犐 犎 猼 獂 猻 猺 獀 獊 獉 瑄
++ 瑊 瑋 瑒 瑑 瑗 瑀 瑏 瑐 瑎 瑂 瑆 瑍 瑔 瓡 瓿 瓾
++ 瓽 甝 畹 畷 榃 痯 瘏 瘃 痷 痾 痼 痹 痸 瘐 痻 痶
++ 痭 痵 痽 皙 皵 盝 睕 睟 睠 睒 睖 睚 睩 睧 睔 睙
++ 睭 矠 碇 碚 碔 碏 碄 碕 碅 碆 碡 碃 硹 碙 碀 碖
++ 硻 祼 禂 祽 祹 稑 稘 稙 稒 稗 稕 稢 稓 稛 稐 窣
++ 窢 窞 竫 筦 筤 筭 筴 筩 筲 筥 筳 筱 筰 筡 筸 筶
++ 筣 粲 粴 粯 綈 綆 綀 綍 絿 綅 絺 綎 絻 綃 絼 綌
++ 綔 綄 絽 綒 罭 罫 罧 罨 罬 羦 羥 羧 翛 翜 耡 腤
++ 腠 腷 腜 腩 腛 腢 腲 朡 腞 腶 腧 腯 腄 腡 舝 艉
++ 艄 艀 艂 艅 蓱 萿 葖 葶 葹 蒏 蒍 葥 葑 葀 蒆 葧
++ 萰 葍 葽 葚 葙 葴 葳 葝 蔇 葞 萷 萺 萴 葺 葃 葸
++ 萲 葅 萩 菙 葋 萯 葂 萭 葟 葰 萹 葎 葌 葒 葯 蓅
++ 蒎 萻 葇 萶 萳 葨 葾 葄 萫 葠 葔 葮 葐 蜋 蜄 蛷
++ 蜌 蛺 蛖 蛵 蝍 蛸 蜎 蜉 蜁 蛶 蜍 蜅 裖 裋 裍 裎
++ 裞 裛 裚 裌 裐 覅 覛 觟 觥 觤 觡 觠 觢 觜 触 詶
++ 誆 詿 詡 訿 詷 誂 誄 詵 誃 誁 詴 詺 谼 豋 豊 豥
++ 豤 豦 貆 貄 貅 賌 赨 赩 趑 趌 趎 趏 趍 趓 趔 趐
++ 趒 跰 跠 跬 跱 跮 跐 跩 跣 跢 跧 跲 跫 跴 輆 軿
++ 輁 輀 輅 輇 輈 輂 輋 遒 逿 遄 遉 逽 鄐 鄍 鄏 鄑
++ 鄖 鄔 鄋 鄎 酮 酯 鉈 鉒 鈰 鈺 鉦 鈳 鉥 鉞 銃 鈮
++ 鉊 鉆 鉭 鉬 鉏 鉠 鉧 鉯 鈶 鉡 鉰 鈱 鉔 鉣 鉐 鉲
++ 鉎 鉓 鉌 鉖 鈲 閟 閜 閞 閛 隒 隓 隑 隗 雎 雺 雽
++ 雸 雵 靳 靷 靸 靲 頏 頍 頎 颬 飶 飹 馯 馲 馰 馵
++ 骭 骫 魛 鳪 鳭 鳧 麀 黽 僦 僔 僗 僨 僳 僛 僪 僝
++ 僤 僓 僬 僰 僯 僣 僠 凘 劀 劁 勩 勫 匰 厬 嘧 嘕
++ 嘌 嘒 嗼 嘏 嘜 嘁 嘓 嘂 嗺 嘝 嘄 嗿 嗹 墉 塼 墐
++ 墘 墆 墁 塿 塴 墋 塺 墇 墑 墎 塶 墂 墈 塻 墔 墏
++ 壾 奫 嫜 嫮 嫥 嫕 嫪 嫚 嫭 嫫 嫳 嫢 嫠 嫛 嫬 嫞
++ 嫝 嫙 嫨 嫟 孷 寠 寣 屣 嶂 嶀 嵽 嶆 嵺 嶁 嵷 嶊
++ 嶉 嶈 嵾 嵼 嶍 嵹 嵿 幘 幙 幓 廘 廑 廗 廎 廜 廕
++ 廙 廒 廔 彄 彃 彯 徶 愬 愨 慁 慞 慱 慳 慒 慓 慲
++ 慬 憀 慴 慔 慺 慛 慥 愻 慪 慡 慖 戩 戧 戫 搫 摍
++ 摛 摝 摴 摶 摲 摳 摽 摵 摦 撦 摎 撂 摞 摜 摋 摓
++ 摠 摐 摿 搿 摬 摫 摙 摥 摷 敳 斠 暡 暠 暟 朅 朄
++ 朢 榱 榶 槉 榠 槎 榖 榰 榬 榼 榑 榙 榎 榧 榍 榩
++ 榾 榯 榿 槄 榽 榤 槔 榹 槊 榚 槏 榳 榓 榪 榡 榞
++ 槙 榗 榐 槂 榵 榥 槆 歊 歍 歋 殞 殟 殠 毃 毄 毾
++ 滎 滵 滱 漃 漥 滸 漷 滻 漮 漉 潎 漙 漚 漧 漘 漻
++ 漒 滭 漊 漶 潳 滹 滮 漭 潀 漰 漼 漵 滫 漇 漎 潃
++ 漅 滽 滶 漹 漜 滼 漺 漟 漍 漞 漈 漡 熇 熐 熉 熀
++ 熅 熂 熏 煻 熆 熁 熗 牄 牓 犗 犕 犓 獃 獍 獑 獌
++ 瑢 瑳 瑱 瑵 瑲 瑧 瑮 甀 甂 甃 畽 疐 瘖 瘈 瘌 瘕
++ 瘑 瘊 瘔 皸 瞁 睼 瞅 瞂 睮 瞀 睯 睾 瞃 碲 碪 碴
++ 碭 碨 硾 碫 碞 碥 碠 碬 碢 碤 禘 禊 禋 禖 禕 禔
++ 禓 禗 禈 禒 禐 稫 穊 稰 稯 稨 稦 窨 窫 窬 竮 箈
++ 箜 箊 箑 箐 箖 箍 箌 箛 箎 箅 箘 劄 箙 箤 箂 粻
++ 粿 粼 粺 綧 綷 緂 綣 綪 緁 緀 緅 綝 緎 緄 緆 緋
++ 緌 綯 綹 綖 綼 綟 綦 綮 綩 綡 緉 罳 翢 翣 翥 翞
++ 耤 聝 聜 膉 膆 膃 膇 膍 膌 膋 舕 蒗 蒤 蒡 蒟 蒺
++ 蓎 蓂 蒬 蒮 蒫 蒹 蒴 蓁 蓍 蒪 蒚 蒱 蓐 蒝 蒧 蒻
++ 蒢 蒔 蓇 蓌 蒛 蒩 蒯 蒨 蓖 蒘 蒶 蓏 蒠 蓗 蓔 蓒
++ 蓛 蒰 蒑 虡 蜳 蜣 蜨 蝫 蝀 蜮 蜞 蜡 蜙 蜛 蝃 蜬
++ 蝁 蜾 蝆 蜠 蜲 蜪 蜭 蜼 蜒 蜺 蜱 蜵 蝂 蜦 蜧 蜸
++ 蜤 蜚 蜰 蜑 裷 裧 裱 裲 裺 裾 裮 裼 裶 裻 裰 裬
++ 裫 覝 覡 覟 覞 觩 觫 觨 誫 誙 誋 誒 誏 誖 谽 豨
++ 豩 賕 賏 賗 趖 踉 踂 跿 踍 跽 踊 踃 踇 踆 踅 跾
++ 踀 踄 輐 輑 輎 輍 鄣 鄜 鄠 鄢 鄟 鄝 鄚 鄤 鄡 鄛
++ 酺 酲 酹 酳 銥 銤 鉶 銛 鉺 銠 銔 銪 銍 銦 銚 銫
++ 鉹 銗 鉿 銣 鋮 銎 銂 銕 銢 鉽 銈 銡 銊 銆 銌 銙
++ 銧 鉾 銇 銩 銝 銋 鈭 隞 隡 雿 靘 靽 靺 靾 鞃 鞀
++ 鞂 靻 鞄 鞁 靿 韎 韍 頖 颭 颮 餂 餀 餇 馝 馜 駃
++ 馹 馻 馺 駂 馽 駇 骱 髣 髧 鬾 鬿 魠 魡 魟 鳱 鳲
++ 鳵 麧 僿 儃 儰 僸 儆 儇 僶 僾 儋 儌 僽 儊 劋 劌
++ 勱 勯 噈 噂 噌 嘵 噁 噊 噉 噆 噘 噚 噀 嘳 嘽 嘬
++ 嘾 嘸 嘪 嘺 圚 墫 墝 墱 墠 墣 墯 墬 墥 墡 壿 嫿
++ 嫴 嫽 嫷 嫶 嬃 嫸 嬂 嫹 嬁 嬇 嬅 嬏 屧 嶙 嶗 嶟
++ 嶒 嶢 嶓 嶕 嶠 嶜 嶡 嶚 嶞 幩 幝 幠 幜 緳 廛 廞
++ 廡 彉 徲 憋 憃 慹 憱 憰 憢 憉 憛 憓 憯 憭 憟 憒
++ 憪 憡 憍 慦 憳 戭 摮 摰 撖 撠 撅 撗 撜 撏 撋 撊
++ 撌 撣 撟 摨 撱 撘 敶 敺 敹 敻 斲 斳 暵 暰 暩 暲
++ 暷 暪 暯 樀 樆 樗 槥 槸 樕 槱 槤 樠 槿 槬 槢 樛
++ 樝 槾 樧 槲 槮 樔 槷 槧 橀 樈 槦 槻 樍 槼 槫 樉
++ 樄 樘 樥 樏 槶 樦 樇 槴 樖 歑 殥 殣 殢 殦 氁 氀
++ 毿 氂 潁 漦 潾 澇 濆 澒 澍 澉 澌 潢 潏 澅 潚 澖
++ 潶 潬 澂 潕 潲 潒 潐 潗 澔 澓 潝 漀 潡 潫 潽 潧
++ 澐 潓 澋 潩 潿 澕 潣 潷 潪 潻 熲 熯 熛 熰 熠 熚
++ 熩 熵 熝 熥 熞 熤 熡 熪 熜 熧 熳 犘 犚 獘 獒 獞
++ 獟 獠 獝 獛 獡 獚 獙 獢 璇 璉 璊 璆 璁 瑽 璅 璈
++ 瑼 瑹 甈 甇 畾 瘥 瘞 瘙 瘝 瘜 瘣 瘚 瘨 瘛 皜 皝
++ 皞 皛 瞍 瞏 瞉 瞈 磍 碻 磏 磌 磑 磎 磔 磈 磃 磄
++ 磉 禚 禡 禠 禜 禢 禛 歶 稹 窲 窴 窳 箷 篋 箾 箬
++ 篎 箯 箹 篊 箵 糅 糈 糌 糋 緷 緛 緪 緧 緗 緡 縃
++ 緺 緦 緶 緱 緰 緮 緟 罶 羬 羰 羭 翭 翫 翪 翬 翦
++ 翨 聤 聧 膣 膟 膞 膕 膢 膙 膗 舖 艏 艓 艒 艐 艎
++ 艑 蔤 蔻 蔏 蔀 蔩 蔎 蔉 蔍 蔟 蔊 蔧 蔜 蓻 蔫 蓺
++ 蔈 蔌 蓴 蔪 蓲 蔕 蓷 蓫 蓳 蓼 蔒 蓪 蓩 蔖 蓾 蔨
++ 蔝 蔮 蔂 蓽 蔞 蓶 蔱 蔦 蓧 蓨 蓰 蓯 蓹 蔘 蔠 蔰
++ 蔋 蔙 蔯 虢 蝖 蝣 蝤 蝷 蟡 蝳 蝘 蝔 蝛 蝒 蝡 蝚
++ 蝑 蝞 蝭 蝪 蝐 蝎 蝟 蝝 蝯 蝬 蝺 蝮 蝜 蝥 蝏 蝻
++ 蝵 蝢 蝧 蝩 衚 褅 褌 褔 褋 褗 褘 褙 褆 褖 褑 褎
++ 褉 覢 覤 覣 觭 觰 觬 諏 諆 誸 諓 諑 諔 諕 誻 諗
++ 誾 諀 諅 諘 諃 誺 誽 諙 谾 豍 貏 賥 賟 賙 賨 賚
++ 賝 賧 趠 趜 趡 趛 踠 踣 踥 踤 踮 踕 踛 踖 踑 踙
++ 踦 踧 踔 踒 踘 踓 踜 踗 踚 輬 輤 輘 輚 輠 輣 輖
++ 輗 遳 遰 遯 遧 遫 鄯 鄫 鄩 鄪 鄲 鄦 鄮 醅 醆 醊
++ 醁 醂 醄 醀 鋐 鋃 鋄 鋀 鋙 銶 鋏 鋱 鋟 鋘 鋩 鋗
++ 鋝 鋌 鋯 鋂 鋨 鋊 鋈 鋎 鋦 鋍 鋕 鋉 鋠 鋞 鋧 鋑
++ 鋓 銵 鋡 鋆 銴 镼 閬 閫 閮 閰 隤 隢 雓 霅 霈 霂
++ 靚 鞊 鞎 鞈 韐 韏 頞 頝 頦 頩 頨 頠 頛 頧 颲 餈
++ 飺 餑 餔 餖 餗 餕 駜 駍 駏 駓 駔 駎 駉 駖 駘 駋
++ 駗 駌 骳 髬 髫 髳 髲 髱 魆 魃 魧 魴 魱 魦 魶 魵
++ 魰 魨 魤 魬 鳼 鳺 鳽 鳿 鳷 鴇 鴀 鳹 鳻 鴈 鴅 鴄
++ 麃 黓 鼏 鼐 儜 儓 儗 儚 儑 凞 匴 叡 噰 噠 噮 噳
++ 噦 噣 噭 噲 噞 噷 圜 圛 壈 墽 壉 墿 墺 壂 墼 壆
++ 嬗 嬙 嬛 嬡 嬔 嬓 嬐 嬖 嬨 嬚 嬠 嬞 寯 嶬 嶱 嶩
++ 嶧 嶵 嶰 嶮 嶪 嶨 嶲 嶭 嶯 嶴 幧 幨 幦 幯 廩 廧
++ 廦 廨 廥 彋 徼 憝 憨 憖 懅 憴 懆 懁 懌 憺 憿 憸
++ 憌 擗 擖 擐 擏 擉 撽 撉 擃 擛 擳 擙 攳 敿 敼 斢
++ 曈 暾 曀 曊 曋 曏 暽 暻 暺 曌 朣 樴 橦 橉 橧 樲
++ 橨 樾 橝 橭 橶 橛 橑 樨 橚 樻 樿 橁 橪 橤 橐 橏
++ 橔 橯 橩 橠 樼 橞 橖 橕 橍 橎 橆 歕 歔 歖 殧 殪
++ 殫 毈 毇 氄 氃 氆 澭 濋 澣 濇 澼 濎 濈 潞 濄 澽
++ 澞 濊 澨 瀄 澥 澮 澺 澬 澪 濏 澿 澸 澢 濉 澫 濍
++ 澯 澲 澰 燅 燂 熿 熸 燖 燀 燁 燋 燔 燊 燇 燏 熽
++ 燘 熼 燆 燚 燛 犝 犞 獩 獦 獧 獬 獥 獫 獪 瑿 璚
++ 璠 璔 璒 璕 璡 甋 疀 瘯 瘭 瘱 瘽 瘳 瘼 瘵 瘲 瘰
++ 皻 盦 瞚 瞝 瞡 瞜 瞛 瞢 瞣 瞕 瞙 瞗 磝 磩 磥 磪
++ 磞 磣 磛 磡 磢 磭 磟 磠 禤 穄 穈 穇 窶 窸 窵 窱
++ 窷 篞 篣 篧 篝 篕 篥 篚 篨 篹 篔 篪 篢 篜 篫 篘
++ 篟 糒 糔 糗 糐 糑 縒 縡 縗 縌 縟 縠 縓 縎 縜 縕
++ 縚 縢 縋 縏 縖 縍 縔 縥 縤 罃 罻 罼 罺 羱 翯 耪
++ 耩 聬 膱 膦 膮 膹 膵 膫 膰 膬 膴 膲 膷 膧 臲 艕
++ 艖 艗 蕖 蕅 蕫 蕍 蕓 蕡 蕘 蕀 蕆 蕤 蕁 蕢 蕄 蕑
++ 蕇 蕣 蔾 蕛 蕱 蕎 蕮 蕵 蕕 蕧 蕠 薌 蕦 蕝 蕔 蕥
++ 蕬 虣 虥 虤 螛 螏 螗 螓 螒 螈 螁 螖 螘 蝹 螇 螣
++ 螅 螐 螑 螝 螄 螔 螜 螚 螉 褞 褦 褰 褭 褮 褧 褱
++ 褢 褩 褣 褯 褬 褟 觱 諠 諢 諲 諴 諵 諝 謔 諤 諟
++ 諰 諈 諞 諡 諨 諿 諯 諻 貑 貒 貐 賵 賮 賱 賰 賳
++ 赬 赮 趥 趧 踳 踾 踸 蹀 蹅 踶 踼 踽 蹁 踰 踿 躽
++ 輶 輮 輵 輲 輹 輷 輴 遶 遹 遻 邆 郺 鄳 鄵 鄶 醓
++ 醐 醑 醍 醏 錧 錞 錈 錟 錆 錏 鍺 錸 錼 錛 錣 錒
++ 錁 鍆 錭 錎 錍 鋋 錝 鋺 錥 錓 鋹 鋷 錴 錂 錤 鋿
++ 錩 錹 錵 錪 錔 錌 錋 鋾 錉 錀 鋻 錖 閼 闍 閾 閹
++ 閺 閶 閿 閵 閽 隩 雔 霋 霒 霐 鞙 鞗 鞔 韰 韸 頵
++ 頯 頲 餤 餟 餧 餩 馞 駮 駬 駥 駤 駰 駣 駪 駩 駧
++ 骹 骿 骴 骻 髶 髺 髹 髷 鬳 鮀 鮅 鮇 魼 魾 魻 鮂
++ 鮓 鮒 鮐 魺 鮕 魽 鮈 鴥 鴗 鴠 鴞 鴔 鴩 鴝 鴘 鴢
++ 鴐 鴙 鴟 麈 麆 麇 麮 麭 黕 黖 黺 鼒 鼽 儦 儥 儢
++ 儤 儠 儩 勴 嚓 嚌 嚍 嚆 嚄 嚃 噾 嚂 噿 嚁 壖 壔
++ 壏 壒 嬭 嬥 嬲 嬣 嬬 嬧 嬦 嬯 嬮 孻 寱 寲 嶷 幬
++ 幪 徾 徻 懃 憵 憼 懧 懠 懥 懤 懨 懞 擯 擩 擣 擫
++ 擤 擨 斁 斀 斶 旚 曒 檍 檖 檁 檥 檉 檟 檛 檡 檞
++ 檇 檓 檎 檕 檃 檨 檤 檑 橿 檦 檚 檅 檌 檒 歛 殭
++ 氉 濌 澩 濴 濔 濣 濜 濭 濧 濦 濞 濲 濝 濢 濨 燡
++ 燱 燨 燲 燤 燰 燢 獳 獮 獯 璗 璲 璫 璐 璪 璭 璱
++ 璥 璯 甐 甑 甒 甏 疄 癃 癈 癉 癇 皤 盩 瞵 瞫 瞲
++ 瞷 瞶 瞴 瞱 瞨 矰 磳 磽 礂 磻 磼 磲 礅 磹 磾 礄
++ 禫 禨 穜 穛 穖 穘 穔 穚 窾 竀 竁 簅 簏 篲 簀 篿
++ 篻 簎 篴 簋 篳 簂 簉 簃 簁 篸 篽 簆 篰 篱 簐 簊
++ 糨 縭 縼 繂 縳 顈 縸 縪 繉 繀 繇 縩 繌 縰 縻 縶
++ 繄 縺 罅 罿 罾 罽 翴 翲 耬 膻 臄 臌 臊 臅 臇 膼
++ 臩 艛 艚 艜 薃 薀 薏 薧 薕 薠 薋 薣 蕻 薤 薚 薞
++ 蕷 蕼 薉 薡 蕺 蕸 蕗 薎 薖 薆 薍 薙 薝 薁 薢 薂
++ 薈 薅 蕹 蕶 薘 薐 薟 虨 螾 螪 螭 蟅 螰 螬 螹 螵
++ 螼 螮 蟉 蟃 蟂 蟌 螷 螯 蟄 蟊 螴 螶 螿 螸 螽 蟞
++ 螲 褵 褳 褼 褾 襁 襒 褷 襂 覭 覯 覮 觲 觳 謞 謘
++ 謖 謑 謅 謋 謢 謏 謒 謕 謇 謍 謈 謆 謜 謓 謚 豏
++ 豰 豲 豱 豯 貕 貔 賹 赯 蹎 蹍 蹓 蹐 蹌 蹇 轃 轀
++ 邅 遾 鄸 醚 醢 醛 醙 醟 醡 醝 醠 鎡 鎃 鎯 鍤 鍖
++ 鍇 鍼 鍘 鍜 鍶 鍉 鍐 鍑 鍠 鍭 鎏 鍌 鍪 鍹 鍗 鍕
++ 鍒 鍏 鍱 鍷 鍻 鍡 鍞 鍣 鍧 鎀 鍎 鍙 闇 闀 闉 闃
++ 闅 閷 隮 隰 隬 霠 霟 霘 霝 霙 鞚 鞡 鞜 鞞 鞝 韕
++ 韔 韱 顁 顄 顊 顉 顅 顃 餥 餫 餬 餪 餳 餲 餯 餭
++ 餱 餰 馘 馣 馡 騂 駺 駴 駷 駹 駸 駶 駻 駽 駾 駼
++ 騃 骾 髾 髽 鬁 髼 魈 鮚 鮨 鮞 鮛 鮦 鮡 鮥 鮤 鮆
++ 鮢 鮠 鮯 鴳 鵁 鵧 鴶 鴮 鴯 鴱 鴸 鴰 鵅 鵂 鵃 鴾
++ 鴷 鵀 鴽 翵 鴭 麊 麉 麍 麰 黈 黚 黻 黿 鼤 鼣 鼢
++ 齔 龠 儱 儭 儮 嚘 嚜 嚗 嚚 嚝 嚙 奰 嬼 屩 屪 巀
++ 幭 幮 懘 懟 懭 懮 懱 懪 懰 懫 懖 懩 擿 攄 擽 擸
++ 攁 攃 擼 斔 旛 曚 曛 曘 櫅 檹 檽 櫡 櫆 檺 檶 檷
++ 櫇 檴 檭 歞 毉 氋 瀇 瀌 瀍 瀁 瀅 瀔 瀎 濿 瀀 濻
++ 瀦 濼 濷 瀊 爁 燿 燹 爃 燽 獶 璸 瓀 璵 瓁 璾 璶
++ 璻 瓂 甔 甓 癜 癤 癙 癐 癓 癗 癚 皦 皽 盬 矂 瞺
++ 磿 礌 礓 礔 礉 礐 礒 礑 禭 禬 穟 簜 簩 簙 簠 簟
++ 簭 簝 簦 簨 簢 簥 簰 繜 繐 繖 繣 繘 繢 繟 繑 繠
++ 繗 繓 羵 羳 翷 翸 聵 臑 臒 臐 艟 艞 薴 藆 藀 藃
++ 藂 薳 薵 薽 藇 藄 薿 藋 藎 藈 藅 薱 薶 藒 蘤 薸
++ 薷 薾 虩 蟧 蟦 蟢 蟛 蟫 蟪 蟥 蟟 蟳 蟤 蟔 蟜 蟓
++ 蟭 蟘 蟣 螤 蟗 蟙 蠁 蟴 蟨 蟝 襓 襋 襏 襌 襆 襐
++ 襑 襉 謪 謧 謣 謳 謰 謵 譇 謯 謼 謾 謱 謥 謷 謦
++ 謶 謮 謤 謻 謽 謺 豂 豵 貙 貘 貗 賾 贄 贂 贀 蹜
++ 蹢 蹠 蹗 蹖 蹞 蹥 蹧 蹛 蹚 蹡 蹝 蹩 蹔 轆 轇 轈
++ 轋 鄨 鄺 鄻 鄾 醨 醥 醧 醯 醪 鎵 鎌 鎒 鎷 鎛 鎝
++ 鎉 鎧 鎎 鎪 鎞 鎦 鎕 鎈 鎙 鎟 鎍 鎱 鎑 鎲 鎤 鎨
++ 鎴 鎣 鎥 闒 闓 闑 隳 雗 雚 巂 雟 雘 雝 霣 霢 霥
++ 鞬 鞮 鞨 鞫 鞤 鞪 鞢 鞥 韗 韙 韖 韘 韺 顐 顑 顒
++ 颸 饁 餼 餺 騏 騋 騉 騍 騄 騑 騊 騅 騇 騆 髀 髜
++ 鬈 鬄 鬅 鬩 鬵 魊 魌 魋 鯇 鯆 鯃 鮿 鯁 鮵 鮸 鯓
++ 鮶 鯄 鮹 鮽 鵜 鵓 鵏 鵊 鵛 鵋 鵙 鵖 鵌 鵗 鵒 鵔
++ 鵟 鵘 鵚 麎 麌 黟 鼁 鼀 鼖 鼥 鼫 鼪 鼩 鼨 齌 齕
++ 儴 儵 劖 勷 厴 嚫 嚭 嚦 嚧 嚪 嚬 壚 壝 壛 夒 嬽
++ 嬾 嬿 巃 幰 徿 懻 攇 攐 攍 攉 攌 攎 斄 旞 旝 曞
++ 櫧 櫠 櫌 櫑 櫙 櫋 櫟 櫜 櫐 櫫 櫏 櫍 櫞 歠 殰 氌
++ 瀙 瀧 瀠 瀖 瀫 瀡 瀢 瀣 瀩 瀗 瀤 瀜 瀪 爌 爊 爇
++ 爂 爅 犥 犦 犤 犣 犡 瓋 瓅 璷 瓃 甖 癠 矉 矊 矄
++ 矱 礝 礛 礡 礜 礗 礞 禰 穧 穨 簳 簼 簹 簬 簻 糬
++ 糪 繶 繵 繸 繰 繷 繯 繺 繲 繴 繨 罋 罊 羃 羆 羷
++ 翽 翾 聸 臗 臕 艤 艡 艣 藫 藱 藭 藙 藡 藨 藚 藗
++ 藬 藲 藸 藘 藟 藣 藜 藑 藰 藦 藯 藞 藢 蠀 蟺 蠃
++ 蟶 蟷 蠉 蠌 蠋 蠆 蟼 蠈 蟿 蠊 蠂 襢 襚 襛 襗 襡
++ 襜 襘 襝 襙 覈 覷 覶 觶 譐 譈 譊 譀 譓 譖 譔 譋
++ 譕 譑 譂 譒 譗 豃 豷 豶 貚 贆 贇 贉 趬 趪 趭 趫
++ 蹭 蹸 蹳 蹪 蹯 蹻 軂 轒 轑 轏 轐 轓 辴 酀 鄿 醰
++ 醭 鏞 鏇 鏏 鏂 鏚 鏐 鏹 鏬 鏌 鏙 鎩 鏦 鏊 鏔 鏮
++ 鏣 鏕 鏄 鏎 鏀 鏒 鏧 镽 闚 闛 雡 霩 霫 霬 霨 霦
++ 鞳 鞷 鞶 韝 韞 韟 顜 顙 顝 顗 颿 颽 颻 颾 饈 饇
++ 饃 馦 馧 騚 騕 騥 騝 騤 騛 騢 騠 騧 騣 騞 騜 騔
++ 髂 鬋 鬊 鬎 鬌 鬷 鯪 鯫 鯠 鯞 鯤 鯦 鯢 鯰 鯔 鯗
++ 鯬 鯜 鯙 鯥 鯕 鯡 鯚 鵷 鶁 鶊 鶄 鶈 鵱 鶀 鵸 鶆
++ 鶋 鶌 鵽 鵫 鵴 鵵 鵰 鵩 鶅 鵳 鵻 鶂 鵯 鵹 鵿 鶇
++ 鵨 麔 麑 黀 黼 鼭 齀 齁 齍 齖 齗 齘 匷 嚲 嚵 嚳
++ 壣 孅 巆 巇 廮 廯 忀 忁 懹 攗 攖 攕 攓 旟 曨 曣
++ 曤 櫳 櫰 櫪 櫨 櫹 櫱 櫮 櫯 瀼 瀵 瀯 瀷 瀴 瀱 灂
++ 瀸 瀿 瀺 瀹 灀 瀻 瀳 灁 爓 爔 犨 獽 獼 璺 皫 皪
++ 皾 盭 矌 矎 矏 矍 矲 礥 礣 礧 礨 礤 礩 禲 穮 穬
++ 穭 竷 籉 籈 籊 籇 籅 糮 繻 繾 纁 纀 羺 翿 聹 臛
++ 臙 舋 艨 艩 蘢 藿 蘁 藾 蘛 蘀 藶 蘄 蘉 蘅 蘌 藽
++ 蠙 蠐 蠑 蠗 蠓 蠖 襣 襦 覹 觷 譠 譪 譝 譨 譣 譥
++ 譧 譭 趮 躆 躈 躄 轙 轖 轗 轕 轘 轚 邍 酃 酁 醷
++ 醵 醲 醳 鐋 鐓 鏻 鐠 鐏 鐔 鏾 鐕 鐐 鐨 鐙 鐍 鏵
++ 鐀 鏷 鐇 鐎 鐖 鐒 鏺 鐉 鏸 鐊 鏿 鏼 鐌 鏶 鐑 鐆
++ 闞 闠 闟 霮 霯 鞹 鞻 韽 韾 顠 顢 顣 顟 飁 飂 饐
++ 饎 饙 饌 饋 饓 騲 騴 騱 騬 騪 騶 騩 騮 騸 騭 髇
++ 髊 髆 鬐 鬒 鬑 鰋 鰈 鯷 鰅 鰒 鯸 鱀 鰇 鰎 鰆 鰗
++ 鰔 鰉 鶟 鶙 鶤 鶝 鶒 鶘 鶐 鶛 鶠 鶔 鶜 鶪 鶗 鶡
++ 鶚 鶢 鶨 鶞 鶣 鶿 鶩 鶖 鶦 鶧 麙 麛 麚 黥 黤 黧
++ 黦 鼰 鼮 齛 齠 齞 齝 齙 龑 儺 儹 劘 劗 囃 嚽 嚾
++ 孈 孇 巋 巏 廱 懽 攛 欂 櫼 欃 櫸 欀 灃 灄 灊 灈
++ 灉 灅 灆 爝 爚 爙 獾 甗 癪 矐 礭 礱 礯 籔 籓 糲
++ 纊 纇 纈 纋 纆 纍 罍 羻 耰 臝 蘘 蘪 蘦 蘟 蘣 蘜
++ 蘙 蘧 蘮 蘡 蘠 蘩 蘞 蘥 蠩 蠝 蠛 蠠 蠤 蠜 蠫 衊
++ 襭 襩 襮 襫 觺 譹 譸 譅 譺 譻 贐 贔 趯 躎 躌 轞
++ 轛 轝 酆 酄 酅 醹 鐿 鐻 鐶 鐩 鐽 鐼 鐰 鐹 鐪 鐷
++ 鐬 鑀 鐱 闥 闤 闣 霵 霺 鞿 韡 顤 飉 飆 飀 饘 饖
++ 騹 騽 驆 驄 驂 驁 騺 騿 髍 鬕 鬗 鬘 鬖 鬺 魒 鰫
++ 鰝 鰜 鰬 鰣 鰨 鰩 鰤 鰡 鶷 鶶 鶼 鷁 鷇 鷊 鷏 鶾
++ 鷅 鷃 鶻 鶵 鷎 鶹 鶺 鶬 鷈 鶱 鶭 鷌 鶳 鷍 鶲 鹺
++ 麜 黫 黮 黭 鼛 鼘 鼚 鼱 齎 齥 齤 龒 亹 囆 囅 囋
++ 奱 孋 孌 巕 巑 廲 攡 攠 攦 攢 欋 欈 欉 氍 灕 灖
++ 灗 灒 爞 爟 犩 獿 瓘 瓕 瓙 瓗 癭 皭 礵 禴 穰 穱
++ 籗 籜 籙 籛 籚 糴 糱 纑 罏 羇 臞 艫 蘴 蘵 蘳 蘬
++ 蘲 蘶 蠬 蠨 蠦 蠪 蠥 襱 覿 覾 觻 譾 讄 讂 讆 讅
++ 譿 贕 躕 躔 躚 躒 躐 躖 躗 轠 轢 酇 鑌 鑐 鑊 鑋
++ 鑏 鑇 鑅 鑈 鑉 鑆 霿 韣 顪 顩 飋 饔 饛 驎 驓 驔
++ 驌 驏 驈 驊 驉 驒 驐 髐 鬙 鬫 鬻 魖 魕 鱆 鱈 鰿
++ 鱄 鰹 鰳 鱁 鰼 鰷 鰴 鰲 鰽 鰶 鷛 鷒 鷞 鷚 鷋 鷐
++ 鷜 鷑 鷟 鷩 鷙 鷘 鷖 鷵 鷕 鷝 麶 黰 鼵 鼳 鼲 齂
++ 齫 龕 龢 儽 劙 壨 壧 奲 孍 巘 蠯 彏 戁 戃 戄 攩
++ 攥 斖 曫 欑 欒 欏 毊 灛 灚 爢 玂 玁 玃 癰 矔 籧
++ 籦 纕 艬 蘺 虀 蘹 蘼 蘱 蘻 蘾 蠰 蠲 蠮 蠳 襶 襴
++ 襳 觾 讌 讎 讋 讈 豅 贙 躘 轤 轣 醼 鑢 鑕 鑝 鑗
++ 鑞 韄 韅 頀 驖 驙 鬞 鬟 鬠 鱒 鱘 鱐 鱊 鱍 鱋 鱕
++ 鱙 鱌 鱎 鷻 鷷 鷯 鷣 鷫 鷸 鷤 鷶 鷡 鷮 鷦 鷲 鷰
++ 鷢 鷬 鷴 鷳 鷨 鷭 黂 黐 黲 黳 鼆 鼜 鼸 鼷 鼶 齃
++ 齏 齱 齰 齮 齯 囓 囍 孎 屭 攭 曭 曮 欓 灟 灡 灝
++ 灠 爣 瓛 瓥 矕 礸 禷 禶 籪 纗 羉 艭 虃 蠸 蠷 蠵
++ 衋 讔 讕 躞 躟 躠 躝 醾 醽 釂 鑫 鑨 鑩 雥 靆 靃
++ 靇 韇 韥 驞 髕 魙 鱣 鱧 鱦 鱢 鱞 鱠 鸂 鷾 鸇 鸃
++ 鸆 鸅 鸀 鸁 鸉 鷿 鷽 鸄 麠 鼞 齆 齴 齵 齶 囔 攮
++ 斸 欘 欙 欗 欚 灢 爦 犪 矘 矙 礹 籩 籫 糶 纚 纘
++ 纛 纙 臠 臡 虆 虇 虈 襹 襺 襼 襻 觿 讘 讙 躥 躤
++ 躣 鑮 鑭 鑯 鑱 鑳 靉 顲 饟 鱨 鱮 鱭 鸋 鸍 鸐 鸏
++ 鸒 鸑 麡 黵 鼉 齇 齸 齻 齺 齹 圞 灦 籯 蠼 趲 躦
++ 釃 鑴 鑸 鑶 鑵 驠 鱴 鱳 鱱 鱵 鸔 鸓 黶 鼊 龤 灨
++ 灥 糷 虪 蠾 蠽 蠿 讞 貜 躩 軉 靋 顳 顴 飌 饡 馫
++ 驤 驦 驧 鬤 鸕 鸗 齈 戇 欞 爧 虌 躨 钂 钀 钁 驩
++ 驨 鬮 鸙 爩 虋 讟 钃 鱹 麷 癵 驫 鱺 鸝 灩 灪 麤
++ 齾 齉 龘 碁 銹 裏 墻 恒 粧 嫺 ╔ ╦ ╗ ╠ ╬ ╣
++ ╚ ╩ ╝ ╒ ╤ ╕ ╞ ╪ ╡ ╘ ╧ ╛ ╓ ╥ ╖ ╟
++ ╫ ╢ ╙ ╨ ╜ ║ ═ ╭ ╮ ╰ ╯ ■ 𠕇 鋛 𠗟 𣿅
++ 蕌 䊵 珯 况 㙉 𤥂 𨧤 鍄 𡧛 苮 𣳈 砼 杄 拟 𤤳 𨦪
++ 𠊠 𦮳 𡌅 侫 𢓭 倈 𦴩 𧪄 𣘀 𤪱 𢔓 𠍾 徤 𠎀 𠍇 滛
++ 𠐟 儁 㑺 儎 顬 㝃 萖 𤦤 𠒇 兠 𣎴 兪 𠯿 𢃼 𠋥 𢔰
++ 𠖎 𣈳 𡦃 宂 蝽 𠖳 𣲙 冲 冸 鴴 凉 减 凑 㳜 凓 𤪦
++ 决 凢 卂 凭 菍 椾 𣜭 彻 刋 刦 刼 劵 剗 劔 効 勅
++ 簕 蕂 勠 蘍 𦬓 𨫞 啉 滙 𣾀 𠥔 𣿬 匳 𠯢 泋 𡜦 栛
++ 珕 恊 㺪 㣌 𡛨 燝 䒢 卭 却 𨚫 卾 𡖖 𡘓 矦 厓 𨪛
++ 厠 厫 厮 玧 𥝲 㽙 玜 叁 叅 汉 义 埾 叙 㪫 𠮏 叠
++ 𣿫 𢶣 叶 𠱷 吓 灹 唫 晗 浛 呭 𦭓 𠵴 啝 咏 咤 䞦
++ 𡜍 𠻝 㶴 𠵍 𨦼 𢚘 啇 䳭 启 琗 喆 喩 𡣗 𤀺 䕒 𤐵
++ 暳 𡂴 嘷 曍 𣊊 暤 暭 噍 噏 磱 囱 鞇 叾 圀 囯 园
++ 𨭦 㘣 𡉏 坆 𤆥 汮 炋 坂 㚱 𦱾 埦 𡐖 堃 𡑔 𤍣 堦
++ 𤯵 塜 墪 㕡 壠 壜 𡈼 壻 寿 坃 𪅐 𤉸 鏓 㖡 够 梦
++ 㛃 湙 𡘾 娤 啓 𡚒 蔅 姉 𠵎 𦲁 𦴪 𡟜 姙 𡟻 𡞲 𦶦
++ 浱 𡠨 𡛕 姹 𦹅 媫 婣 㛦 𤦩 㜈 媖 瑥 嫓 𦾡 𢕔 㶅
++ 𡤑 㜲 𡚸 広 勐 孶 斈 孼 𧨎 䀄 䡝 𠈄 寕 慠 𡨴 𥧌
++ 𠖥 寳 宝 䴐 尅 𡭄 尓 珎 尔 𡲥 𦬨 屉 䣝 岅 峩 峯
++ 嶋 𡷹 𡸷 崐 崘 嵆 𡺤 岺 巗 苼 㠭 𤤁 𢁉 𢅳 芇 㠶
++ 㯂 帮 檊 幺 𤒼 𠳓 厦 亷 厨 𡝱 帉 廴 𨒂 廹 廻 㢠
++ 廼 栾 鐛 弍 𠇁 弢 㫞 䢮 𡌺 强 𦢈 𢏐 𢑱 彣 鞽 𦹮
++ 彲 鍀 𨨶 徧 嶶 㵟 𥉐 𡽪 𧃸 𢙨 釖 𠊞 𨨩 怱 暅 𡡷
++ 㥣 㷇 㘹 垐 𢞴 祱 㹀 悞 悳 𤦂 𤦏 𧩓 璤 僡 媠 慤
++ 萤 慂 慈 𦻒 憁 凴 𠙖 憇 宪 𣾷 𢡟 懓 𨮝 𩥝 懐 㤲
++ 𢦀 𢣁 怣 慜 攞 掋 𠄘 担 𡝰 拕 𢸍 捬 𤧟 㨗 搸 揸
++ 𡎎 𡟼 澊 𢸶 頔 𤂌 𥜝 擡 擥 鑻 㩦 携 㩗 敍 漖 𤨨
++ 𤨣 斅 敭 敟 𣁾 斵 𤥀 䬷 旑 䃘 𡠩 无 旣 忟 𣐀 昘
++ 𣇷 𣇸 晄 𣆤 𣆥 晋 𠹵 晧 𥇦 晳 𡸽 𣈱 𨗴 𣇈 𥌓 矅
++ 𢣷 馤 朂 𤎜 𤨡 㬫 槺 𣟂 杧 杢 𤇍 𩃭 柗 䓩 栢 湐
++ 鈼 栁 𣏦 𦶠 桝 𣑯 槡 樋 𨫟 楳 棃 𣗍 椁 椀 㴲 㨁
++ 𣘼 㮀 枬 楡 𨩊 䋼 椶 榘 㮡 𠏉 荣 傐 槹 𣙙 𢄪 橅
++ 𣜃 檝 㯳 枱 櫈 𩆜 㰍 欝 𠤣 惞 欵 歴 𢟍 溵 𣫛 𠎵
++ 𡥘 㝀 吡 𣭚 毡 𣻼 毜 氷 𢒋 𤣱 𦭑 汚 舦 汹 𣶼 䓅
++ 𣶽 𤆤 𤤌 𤤀 𣳉 㛥 㳫 𠴲 鮃 𣇹 𢒑 羏 样 𦴥 𦶡 𦷫
++ 涖 浜 湼 漄 𤥿 𤂅 𦹲 蔳 𦽴 凇 萮 𨬡 𣸯 瑓 𣾂 秌
++ 湏 媑 𣁋 濸 㜍 澝 𣸰 滺 𡒗 𤀽 䕕 鏰 潄 潜 㵎 潴
++ 𩅰 㴻 澟 𤅄 濓 𤂑 𤅕 𤀹 𣿰 𣾴 𤄿 凟 𤅖 𤅗 𤅀 𦇝
++ 灋 灾 炧 炁 烌 烕 烖 烟 䄄 㷨 熴 熖 𤉷 焫 煅 媈
++ 煊 岜 𤍥 煏 鍢 𤋁 焬 𤑚 𤨧 𤨢 熺 𨯨 炽 爎 鑂 爕
++ 夑 鑃 爤 鍁 𥘅 爮 牀 𤥴 梽 牕 牗 㹕 𣁄 栍 漽 犂
++ 猫 𤠣 𨠫 䣭 𨠄 猨 献 珏 玪 𠰺 𦨮 珉 瑉 𤇢 𡛧 𤨤
++ 昣 㛅 𤦷 𤦍 𤧻 珷 琕 椃 𤨦 琹 𠗃 㻗 𢢭 瑠 𨺲 瑇
++ 珤 瑶 莹 瑬 㜰 瑴 鏱 樬 璂 䥓 𤪌 𤅟 𤩹 𨮏 孆 𨰃
++ 𡢞 瓈 𡦈 甎 甞 𨻙 𡩋 寗 𨺬 鎅 畍 畊 畧 畮 𤾂 㼄
++ 𤴓 疎 瑝 疞 疴 瘂 瘬 癑 癏 癯 癶 𦏵 皐 臯 㟸 𦤑
++ 𦤎 皡 皥 皷 盌 𦾟 葢 𥂝 𥅽 𡸜 眞 眦 着 撯 𥈠 睘
++ 𣊬 瞯 𨥤 𨥨 𡛁 矴 𡍶 𤨒 棊 碯 磇 磓 隥 礮 𥗠 磗
++ 礴 碱 𧘌 辸 袄 𨬫 𦂃 𢘜 禆 褀 椂 禀 𥡗 禝 𧬹 礼
++ 禩 渪 𧄦 㺨 秆 𩄍 秔
+diff --git a/localedata/charmaps/BIG5-HKSCS b/localedata/charmaps/BIG5-HKSCS
+index b6f55b4..0735efc 100644
+--- a/localedata/charmaps/BIG5-HKSCS
++++ b/localedata/charmaps/BIG5-HKSCS
+@@ -7,7 +7,8 @@
+ % alias BIG5HKSCS
+ 
+ %
+-% Generated from the big5hkscs.c iconv module.
++% Last updated from the HKSCS-2008 standard
++% http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/e_hkscs_2008.pdf
+ %
+ 
+ CHARMAP
+@@ -140,28 +141,153 @@ CHARMAP
+ <U007E>     /x7e         TILDE
+ <U007F>     /x7f         DELETE
+ <U0080>     /x80         PADDING CHARACTER (PAD)
+-<UF303>     /x88/x40     <CJK>
+-<UF304>     /x88/x41     <CJK>
+-<UF305>     /x88/x42     <CJK>
+-<UF306>     /x88/x43     <CJK>
+-<UF307>     /x88/x44     <CJK>
+-<UF308>     /x88/x45     <CJK>
+-<UF309>     /x88/x46     <CJK>
+-<UF30A>     /x88/x47     <CJK>
+-<UF30B>     /x88/x48     <CJK>
+-<UF30C>     /x88/x49     <CJK>
+-<UF30D>     /x88/x4a     <CJK>
+-<UF30E>     /x88/x4b     <CJK>
+-<UF30F>     /x88/x4c     <CJK>
+-<UF310>     /x88/x4d     <CJK>
+-<UF311>     /x88/x4e     <CJK>
+-<UF312>     /x88/x4f     <CJK>
+-<UF313>     /x88/x50     <CJK>
+-<UF314>     /x88/x51     <CJK>
+-<UF315>     /x88/x52     <CJK>
+-<UF316>     /x88/x53     <CJK>
+-<UF317>     /x88/x54     <CJK>
+-<UF318>     /x88/x55     <CJK>
++<U43F0>     /x87/x40     <CJK>
++<U4C32>     /x87/x41     <CJK>
++<U4603>     /x87/x42     <CJK>
++<U45A6>     /x87/x43     <CJK>
++<U4578>     /x87/x44     <CJK>
++<U00027267> /x87/x45     <CJK>
++<U4D77>     /x87/x46     <CJK>
++<U45B3>     /x87/x47     <CJK>
++<U00027CB1> /x87/x48     <CJK>
++<U4CE2>     /x87/x49     <CJK>
++<U00027CC5> /x87/x4a     <CJK>
++<U3B95>     /x87/x4b     <CJK>
++<U4736>     /x87/x4c     <CJK>
++<U4744>     /x87/x4d     <CJK>
++<U4C47>     /x87/x4e     <CJK>
++<U4C40>     /x87/x4f     <CJK>
++<U000242BF> /x87/x50     <CJK>
++<U00023617> /x87/x51     <CJK>
++<U00027352> /x87/x52     <CJK>
++<U00026E8B> /x87/x53     <CJK>
++<U000270D2> /x87/x54     <CJK>
++<U4C57>     /x87/x55     <CJK>
++<U0002A351> /x87/x56     <CJK>
++<U474F>     /x87/x57     <CJK>
++<U45DA>     /x87/x58     <CJK>
++<U4C85>     /x87/x59     <CJK>
++<U00027C6C> /x87/x5a     <CJK>
++<U4D07>     /x87/x5b     <CJK>
++<U4AA4>     /x87/x5c     <CJK>
++<U46A1>     /x87/x5d     <CJK>
++<U00026B23> /x87/x5e     <CJK>
++<U7225>     /x87/x5f     <CJK>
++<U00025A54> /x87/x60     <CJK>
++<U00021A63> /x87/x61     <CJK>
++<U00023E06> /x87/x62     <CJK>
++<U00023F61> /x87/x63     <CJK>
++<U664D>     /x87/x64     <CJK>
++<U56FB>     /x87/x65     <CJK>
++<U7D95>     /x87/x67     <CJK>
++<U591D>     /x87/x68     <CJK>
++<U00028BB9> /x87/x69     <CJK>
++<U3DF4>     /x87/x6a     <CJK>
++<U9734>     /x87/x6b     <CJK>
++<U00027BEF> /x87/x6c     <CJK>
++<U5BDB>     /x87/x6d     <CJK>
++<U00021D5E> /x87/x6e     <CJK>
++<U5AA4>     /x87/x6f     <CJK>
++<U3625>     /x87/x70     <CJK>
++<U00029EB0> /x87/x71     <CJK>
++<U5AD1>     /x87/x72     <CJK>
++<U5BB7>     /x87/x73     <CJK>
++<U5CFC>     /x87/x74     <CJK>
++<U676E>     /x87/x75     <CJK>
++<U8593>     /x87/x76     <CJK>
++<U00029945> /x87/x77     <CJK>
++<U7461>     /x87/x78     <CJK>
++<U749D>     /x87/x79     <CJK>
++<U3875>     /x87/x7a     <CJK>
++<U00021D53> /x87/x7b     <CJK>
++<U0002369E> /x87/x7c     <CJK>
++<U00026021> /x87/x7d     <CJK>
++<U3EEC>     /x87/x7e     <CJK>
++<U000258DE> /x87/xa1     <CJK>
++<U3AF5>     /x87/xa2     <CJK>
++<U7AFC>     /x87/xa3     <CJK>
++<U9F97>     /x87/xa4     <CJK>
++<U00024161> /x87/xa5     <CJK>
++<U0002890D> /x87/xa6     <CJK>
++<U000231EA> /x87/xa7     <CJK>
++<U00020A8A> /x87/xa8     <CJK>
++<U0002325E> /x87/xa9     <CJK>
++<U430A>     /x87/xaa     <CJK>
++<U8484>     /x87/xab     <CJK>
++<U9F96>     /x87/xac     <CJK>
++<U942F>     /x87/xad     <CJK>
++<U4930>     /x87/xae     <CJK>
++<U8613>     /x87/xaf     <CJK>
++<U5896>     /x87/xb0     <CJK>
++<U974A>     /x87/xb1     <CJK>
++<U9218>     /x87/xb2     <CJK>
++<U79D0>     /x87/xb3     <CJK>
++<U7A32>     /x87/xb4     <CJK>
++<U6660>     /x87/xb5     <CJK>
++<U6A29>     /x87/xb6     <CJK>
++<U889D>     /x87/xb7     <CJK>
++<U744C>     /x87/xb8     <CJK>
++<U7BC5>     /x87/xb9     <CJK>
++<U6782>     /x87/xba     <CJK>
++<U7A2C>     /x87/xbb     <CJK>
++<U524F>     /x87/xbc     <CJK>
++<U9046>     /x87/xbd     <CJK>
++<U34E6>     /x87/xbe     <CJK>
++<U73C4>     /x87/xbf     <CJK>
++<U00025DB9> /x87/xc0     <CJK>
++<U74C6>     /x87/xc1     <CJK>
++<U9FC7>     /x87/xc2     <CJK>
++<U57B3>     /x87/xc3     <CJK>
++<U492F>     /x87/xc4     <CJK>
++<U544C>     /x87/xc5     <CJK>
++<U4131>     /x87/xc6     <CJK>
++<U0002368E> /x87/xc7     <CJK>
++<U5818>     /x87/xc8     <CJK>
++<U7A72>     /x87/xc9     <CJK>
++<U00027B65> /x87/xca     <CJK>
++<U8B8F>     /x87/xcb     <CJK>
++<U46AE>     /x87/xcc     <CJK>
++<U00026E88> /x87/xcd     <CJK>
++<U4181>     /x87/xce     <CJK>
++<U00025D99> /x87/xcf     <CJK>
++<U7BAE>     /x87/xd0     <CJK>
++<U000224BC> /x87/xd1     <CJK>
++<U9FC8>     /x87/xd2     <CJK>
++<U000224C1> /x87/xd3     <CJK>
++<U000224C9> /x87/xd4     <CJK>
++<U000224CC> /x87/xd5     <CJK>
++<U9FC9>     /x87/xd6     <CJK>
++<U8504>     /x87/xd7     <CJK>
++<U000235BB> /x87/xd8     <CJK>
++<U40B4>     /x87/xd9     <CJK>
++<U9FCA>     /x87/xda     <CJK>
++<U44E1>     /x87/xdb     <CJK>
++<U0002ADFF> /x87/xdc     <CJK>
++<U62C1>     /x87/xdd     <CJK>
++<U706E>     /x87/xde     <CJK>
++<U9FCB>     /x87/xdf     <CJK>
++<U31C0>     /x88/x40     <CJK>
++<U31C1>     /x88/x41     <CJK>
++<U31C2>     /x88/x42     <CJK>
++<U31C3>     /x88/x43     <CJK>
++<U31C4>     /x88/x44     <CJK>
++<U0002010C> /x88/x45     <CJK>
++<U31C5>     /x88/x46     <CJK>
++<U000200D1> /x88/x47     <CJK>
++<U000200CD> /x88/x48     <CJK>
++<U31C6>     /x88/x49     <CJK>
++<U31C7>     /x88/x4a     <CJK>
++<U000200CB> /x88/x4b     <CJK>
++<U00021FE8> /x88/x4c     <CJK>
++<U31C8>     /x88/x4d     <CJK>
++<U000200CA> /x88/x4e     <CJK>
++<U31C9>     /x88/x4f     <CJK>
++<U31CA>     /x88/x50     <CJK>
++<U31CB>     /x88/x51     <CJK>
++<U31CC>     /x88/x52     <CJK>
++<U0002010E> /x88/x53     <CJK>
++<U31CD>     /x88/x54     <CJK>
++<U31CE>     /x88/x55     <CJK>
+ <U0100>     /x88/x56     LATIN CAPITAL LETTER A WITH MACRON
+ <U00C1>     /x88/x57     LATIN CAPITAL LETTER A WITH ACUTE
+ <U01CD>     /x88/x58     LATIN CAPITAL LETTER A WITH CARON
+@@ -174,9 +300,9 @@ CHARMAP
+ <U00D3>     /x88/x5f     LATIN CAPITAL LETTER O WITH ACUTE
+ <U01D1>     /x88/x60     LATIN CAPITAL LETTER O WITH CARON
+ <U00D2>     /x88/x61     LATIN CAPITAL LETTER O WITH GRAVE
+-<UF325>     /x88/x62     <CJK>
++%<U00CA><U0304>     /x88/x62
+ <U1EBE>     /x88/x63     LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+-<UF327>     /x88/x64     <CJK>
++%<U00CA><U030C>     /x88/x64
+ <U1EC0>     /x88/x65     LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+ <U00CA>     /x88/x66     LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ <U0101>     /x88/x67     LATIN SMALL LETTER A WITH MACRON
+@@ -205,16 +331,16 @@ CHARMAP
+ <U01DA>     /x88/x7e     LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+ <U01DC>     /x88/xa1     LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+ <U00FC>     /x88/xa2     LATIN SMALL LETTER U WITH DIAERESIS
+-<UF344>     /x88/xa3     <CJK>
++%<U00EA><U0304>     /x88/xa3
+ <U1EBF>     /x88/xa4     LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+-<UF346>     /x88/xa5     <CJK>
++%<U00EA><U030C>     /x88/xa5
+ <U1EC1>     /x88/xa6     LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+ <U00EA>     /x88/xa7     LATIN SMALL LETTER E WITH CIRCUMFLEX
+ <U0261>     /x88/xa8     LATIN SMALL LETTER SCRIPT G
+-<UF34A>     /x88/xa9     <CJK>
+-<UF34B>     /x88/xaa     <CJK>
++<U23DA>     /x88/xa9     EARTH GROUND
++<U23DB>     /x88/xaa     FUSE
+ <U0002A3A9> /x89/x40     <CJK>
+-<UF3A1>     /x89/x41     <CJK>
++<U00021145> /x89/x41     <CJK>
+ <U650A>     /x89/x43     <CJK>
+ <U4E3D>     /x89/x46     <CJK>
+ <U6EDD>     /x89/x47     <CJK>
+@@ -283,17 +409,17 @@ CHARMAP
+ <U80BC>     /x89/xae     <CJK>
+ <U8D0B>     /x89/xb0     <CJK>
+ <U80F6>     /x89/xb1     <CJK>
+-<UF3F0>     /x89/xb2     <CJK>
++<U000209E7> /x89/xb2     <CJK>
+ <U809F>     /x89/xb5     <CJK>
+ <U9EC7>     /x89/xb6     <CJK>
+ <U4CCD>     /x89/xb7     <CJK>
+ <U9DC9>     /x89/xb8     <CJK>
+ <U9E0C>     /x89/xb9     <CJK>
+ <U4C3E>     /x89/xba     <CJK>
+-<UF3F9>     /x89/xbb     <CJK>
++<U00029DF6> /x89/xbb     <CJK>
+ <U0002700E> /x89/xbc     <CJK>
+ <U9E0A>     /x89/xbd     <CJK>
+-<UF3FC>     /x89/xbe     <CJK>
++<U0002A133> /x89/xbe     <CJK>
+ <U35C1>     /x89/xbf     <CJK>
+ <U6E9A>     /x89/xc1     <CJK>
+ <U823E>     /x89/xc2     <CJK>
+@@ -303,10 +429,10 @@ CHARMAP
+ <U9A8F>     /x89/xc7     <CJK>
+ <U9F99>     /x89/xc8     <CJK>
+ <U7987>     /x89/xc9     <CJK>
+-<UF408>     /x89/xca     <CJK>
++<U0002846C> /x89/xca     <CJK>
+ <U00021DCA> /x89/xcb     <CJK>
+ <U000205D0> /x89/xcc     <CJK>
+-<UF40B>     /x89/xcd     <CJK>
++<U00022AE6> /x89/xcd     <CJK>
+ <U4E24>     /x89/xce     <CJK>
+ <U4E81>     /x89/xcf     <CJK>
+ <U4E80>     /x89/xd0     <CJK>
+@@ -356,95 +482,95 @@ CHARMAP
+ <U35BF>     /x89/xfc     <CJK>
+ <U55D7>     /x89/xfd     <CJK>
+ <U35C5>     /x89/xfe     <CJK>
+-<UF43D>     /x8a/x40     <CJK>
++<U00027D84> /x8a/x40     <CJK>
+ <U5525>     /x8a/x41     <CJK>
+ <U00020C42> /x8a/x43     <CJK>
+-<UF441>     /x8a/x44     <CJK>
+-<UF442>     /x8a/x45     <CJK>
++<U00020D15> /x8a/x44     <CJK>
++<U0002512B> /x8a/x45     <CJK>
+ <U5590>     /x8a/x46     <CJK>
+ <U00022CC6> /x8a/x47     <CJK>
+ <U39EC>     /x8a/x48     <CJK>
+ <U00020341> /x8a/x49     <CJK>
+ <U8E46>     /x8a/x4a     <CJK>
+ <U00024DB8> /x8a/x4b     <CJK>
+-<UF449>     /x8a/x4c     <CJK>
++<U000294E5> /x8a/x4c     <CJK>
+ <U4053>     /x8a/x4d     <CJK>
+ <U000280BE> /x8a/x4e     <CJK>
+ <U777A>     /x8a/x4f     <CJK>
+-<UF44D>     /x8a/x50     <CJK>
++<U00022C38> /x8a/x50     <CJK>
+ <U3A34>     /x8a/x51     <CJK>
+ <U47D5>     /x8a/x52     <CJK>
+-<UF450>     /x8a/x53     <CJK>
++<U0002815D> /x8a/x53     <CJK>
+ <U000269F2> /x8a/x54     <CJK>
+ <U00024DEA> /x8a/x55     <CJK>
+ <U64DD>     /x8a/x56     <CJK>
+-<UF454>     /x8a/x57     <CJK>
++<U00020D7C> /x8a/x57     <CJK>
+ <U00020FB4> /x8a/x58     <CJK>
+ <U00020CD5> /x8a/x59     <CJK>
+ <U000210F4> /x8a/x5a     <CJK>
+ <U648D>     /x8a/x5b     <CJK>
+ <U8E7E>     /x8a/x5c     <CJK>
+-<UF45A>     /x8a/x5d     <CJK>
+-<UF45B>     /x8a/x5e     <CJK>
+-<UF45C>     /x8a/x5f     <CJK>
+-<UF45D>     /x8a/x60     <CJK>
++<U00020E96> /x8a/x5d     <CJK>
++<U00020C0B> /x8a/x5e     <CJK>
++<U00020F64> /x8a/x5f     <CJK>
++<U00022CA9> /x8a/x60     <CJK>
+ <U00028256> /x8a/x61     <CJK>
+ <U000244D3> /x8a/x62     <CJK>
+ <U00020D46> /x8a/x64     <CJK>
+-<UF462>     /x8a/x65     <CJK>
++<U00029A4D> /x8a/x65     <CJK>
+ <U000280E9> /x8a/x66     <CJK>
+ <U47F4>     /x8a/x67     <CJK>
+-<UF465>     /x8a/x68     <CJK>
+-<UF466>     /x8a/x69     <CJK>
++<U00024EA7> /x8a/x68     <CJK>
++<U00022CC2> /x8a/x69     <CJK>
+ <U9AB2>     /x8a/x6a     <CJK>
+ <U3A67>     /x8a/x6b     <CJK>
+-<UF469>     /x8a/x6c     <CJK>
++<U000295F4> /x8a/x6c     <CJK>
+ <U3FED>     /x8a/x6d     <CJK>
+ <U3506>     /x8a/x6e     <CJK>
+ <U000252C7> /x8a/x6f     <CJK>
+-<UF46D>     /x8a/x70     <CJK>
+-<UF46E>     /x8a/x71     <CJK>
+-<UF46F>     /x8a/x72     <CJK>
++<U000297D4> /x8a/x70     <CJK>
++<U000278C8> /x8a/x71     <CJK>
++<U00022D44> /x8a/x72     <CJK>
+ <U9D6E>     /x8a/x73     <CJK>
+ <U9815>     /x8a/x74     <CJK>
+ <U43D9>     /x8a/x76     <CJK>
+ <U000260A5> /x8a/x77     <CJK>
+ <U64B4>     /x8a/x78     <CJK>
+ <U54E3>     /x8a/x79     <CJK>
+-<UF477>     /x8a/x7a     <CJK>
+-<UF478>     /x8a/x7b     <CJK>
++<U00022D4C> /x8a/x7a     <CJK>
++<U00022BCA> /x8a/x7b     <CJK>
+ <U00021077> /x8a/x7c     <CJK>
+ <U39FB>     /x8a/x7d     <CJK>
+ <U0002106F> /x8a/x7e     <CJK>
+-<UF47C>     /x8a/xa1     <CJK>
+-<UF47D>     /x8a/xa2     <CJK>
+-<UF47E>     /x8a/xa3     <CJK>
++<U000266DA> /x8a/xa1     <CJK>
++<U00026716> /x8a/xa2     <CJK>
++<U000279A0> /x8a/xa3     <CJK>
+ <U64EA>     /x8a/xa4     <CJK>
+-<UF480>     /x8a/xa5     <CJK>
++<U00025052> /x8a/xa5     <CJK>
+ <U00020C43> /x8a/xa6     <CJK>
+ <U8E68>     /x8a/xa7     <CJK>
+ <U000221A1> /x8a/xa8     <CJK>
+ <U00028B4C> /x8a/xa9     <CJK>
+-<UF485>     /x8a/xaa     <CJK>
++<U00020731> /x8a/xaa     <CJK>
+ <U480B>     /x8a/xac     <CJK>
+-<UF488>     /x8a/xad     <CJK>
++<U000201A9> /x8a/xad     <CJK>
+ <U3FFA>     /x8a/xae     <CJK>
+ <U5873>     /x8a/xaf     <CJK>
+-<UF48B>     /x8a/xb0     <CJK>
+-<UF48D>     /x8a/xb2     <CJK>
++<U00022D8D> /x8a/xb0     <CJK>
++<U000245C8> /x8a/xb2     <CJK>
+ <U000204FC> /x8a/xb3     <CJK>
+-<UF48F>     /x8a/xb4     <CJK>
+-<UF490>     /x8a/xb5     <CJK>
+-<UF491>     /x8a/xb6     <CJK>
++<U00026097> /x8a/xb4     <CJK>
++<U00020F4C> /x8a/xb5     <CJK>
++<U00020D96> /x8a/xb6     <CJK>
+ <U5579>     /x8a/xb7     <CJK>
+ <U40BB>     /x8a/xb8     <CJK>
+ <U43BA>     /x8a/xb9     <CJK>
+ <U4AB4>     /x8a/xbb     <CJK>
+-<UF497>     /x8a/xbc     <CJK>
+-<UF498>     /x8a/xbd     <CJK>
++<U00022A66> /x8a/xbc     <CJK>
++<U0002109D> /x8a/xbd     <CJK>
+ <U81AA>     /x8a/xbe     <CJK>
+ <U98F5>     /x8a/xbf     <CJK>
+-<UF49B>     /x8a/xc0     <CJK>
++<U00020D9C> /x8a/xc0     <CJK>
+ <U6379>     /x8a/xc1     <CJK>
+ <U39FE>     /x8a/xc2     <CJK>
+ <U00022775> /x8a/xc3     <CJK>
+@@ -452,49 +578,49 @@ CHARMAP
+ <U56A1>     /x8a/xc5     <CJK>
+ <U647C>     /x8a/xc6     <CJK>
+ <U3E43>     /x8a/xc7     <CJK>
+-<UF4A4>     /x8a/xc9     <CJK>
++<U0002A601> /x8a/xc9     <CJK>
+ <U00020E09> /x8a/xca     <CJK>
+ <U00022ACF> /x8a/xcb     <CJK>
+-<UF4A7>     /x8a/xcc     <CJK>
++<U00022CC9> /x8a/xcc     <CJK>
+ <U000210C8> /x8a/xce     <CJK>
+-<UF4AA>     /x8a/xcf     <CJK>
++<U000239C2> /x8a/xcf     <CJK>
+ <U3992>     /x8a/xd0     <CJK>
+ <U3A06>     /x8a/xd1     <CJK>
+-<UF4AD>     /x8a/xd2     <CJK>
++<U0002829B> /x8a/xd2     <CJK>
+ <U3578>     /x8a/xd3     <CJK>
+-<UF4AF>     /x8a/xd4     <CJK>
++<U00025E49> /x8a/xd4     <CJK>
+ <U000220C7> /x8a/xd5     <CJK>
+ <U5652>     /x8a/xd6     <CJK>
+ <U00020F31> /x8a/xd7     <CJK>
+-<UF4B3>     /x8a/xd8     <CJK>
+-<UF4B4>     /x8a/xd9     <CJK>
++<U00022CB2> /x8a/xd8     <CJK>
++<U00029720> /x8a/xd9     <CJK>
+ <U34BC>     /x8a/xda     <CJK>
+ <U6C3D>     /x8a/xdb     <CJK>
+-<UF4B7>     /x8a/xdc     <CJK>
+-<UF4BA>     /x8a/xdf     <CJK>
+-<UF4BB>     /x8a/xe0     <CJK>
+-<UF4BC>     /x8a/xe1     <CJK>
+-<UF4BD>     /x8a/xe2     <CJK>
++<U00024E3B> /x8a/xdc     <CJK>
++<U00027574> /x8a/xdf     <CJK>
++<U00022E8B> /x8a/xe0     <CJK>
++<U00022208> /x8a/xe1     <CJK>
++<U0002A65B> /x8a/xe2     <CJK>
+ <U00028CCD> /x8a/xe3     <CJK>
+ <U00020E7A> /x8a/xe4     <CJK>
+-<UF4C0>     /x8a/xe5     <CJK>
+-<UF4C1>     /x8a/xe6     <CJK>
++<U00020C34> /x8a/xe5     <CJK>
++<U0002681C> /x8a/xe6     <CJK>
+ <U7F93>     /x8a/xe7     <CJK>
+-<UF4C3>     /x8a/xe8     <CJK>
++<U000210CF> /x8a/xe8     <CJK>
+ <U00022803> /x8a/xe9     <CJK>
+ <U00022939> /x8a/xea     <CJK>
+ <U35FB>     /x8a/xeb     <CJK>
+ <U000251E3> /x8a/xec     <CJK>
+-<UF4C8>     /x8a/xed     <CJK>
++<U00020E8C> /x8a/xed     <CJK>
+ <U00020F8D> /x8a/xee     <CJK>
+ <U00020EAA> /x8a/xef     <CJK>
+ <U3F93>     /x8a/xf0     <CJK>
+ <U00020F30> /x8a/xf1     <CJK>
+ <U00020D47> /x8a/xf2     <CJK>
+-<UF4CE>     /x8a/xf3     <CJK>
+-<UF4CF>     /x8a/xf4     <CJK>
++<U0002114F> /x8a/xf3     <CJK>
++<U00020E4C> /x8a/xf4     <CJK>
+ <U00020EAB> /x8a/xf6     <CJK>
+-<UF4D2>     /x8a/xf7     <CJK>
++<U00020BA9> /x8a/xf7     <CJK>
+ <U00020D48> /x8a/xf8     <CJK>
+ <U000210C0> /x8a/xf9     <CJK>
+ <U0002113D> /x8a/xfa     <CJK>
+@@ -510,14 +636,14 @@ CHARMAP
+ <U00022C51> /x8b/x45     <CJK>
+ <U00022C55> /x8b/x46     <CJK>
+ <U3A18>     /x8b/x47     <CJK>
+-<UF4E2>     /x8b/x48     <CJK>
++<U00020E98> /x8b/x48     <CJK>
+ <U000210C7> /x8b/x49     <CJK>
+ <U00020F2E> /x8b/x4a     <CJK>
+-<UF4E5>     /x8b/x4b     <CJK>
++<U0002A632> /x8b/x4b     <CJK>
+ <U00026B50> /x8b/x4c     <CJK>
+-<UF4E7>     /x8b/x4d     <CJK>
+-<UF4E8>     /x8b/x4e     <CJK>
+-<UF4E9>     /x8b/x4f     <CJK>
++<U00028CD2> /x8b/x4d     <CJK>
++<U00028D99> /x8b/x4e     <CJK>
++<U00028CCA> /x8b/x4f     <CJK>
+ <U95AA>     /x8b/x50     <CJK>
+ <U54CC>     /x8b/x51     <CJK>
+ <U82C4>     /x8b/x52     <CJK>
+@@ -526,7 +652,7 @@ CHARMAP
+ <U9C26>     /x8b/x56     <CJK>
+ <U9AB6>     /x8b/x57     <CJK>
+ <U0002775E> /x8b/x58     <CJK>
+-<UF4F3>     /x8b/x59     <CJK>
++<U00022DEE> /x8b/x59     <CJK>
+ <U7140>     /x8b/x5a     <CJK>
+ <U816D>     /x8b/x5b     <CJK>
+ <U80EC>     /x8b/x5c     <CJK>
+@@ -573,15 +699,15 @@ CHARMAP
+ <U00020FB6> /x8b/xa7     <CJK>
+ <U00021180> /x8b/xa8     <CJK>
+ <U000252D8> /x8b/xa9     <CJK>
+-<UF522>     /x8b/xaa     <CJK>
+-<UF523>     /x8b/xab     <CJK>
++<U0002A2BD> /x8b/xaa     <CJK>
++<U000249DA> /x8b/xab     <CJK>
+ <U0002183A> /x8b/xac     <CJK>
+-<UF525>     /x8b/xad     <CJK>
+-<UF526>     /x8b/xae     <CJK>
++<U00024177> /x8b/xad     <CJK>
++<U0002827C> /x8b/xae     <CJK>
+ <U5899>     /x8b/xaf     <CJK>
+ <U5268>     /x8b/xb0     <CJK>
+ <U361A>     /x8b/xb1     <CJK>
+-<UF52A>     /x8b/xb2     <CJK>
++<U0002573D> /x8b/xb2     <CJK>
+ <U7BB2>     /x8b/xb3     <CJK>
+ <U5B68>     /x8b/xb4     <CJK>
+ <U4800>     /x8b/xb5     <CJK>
+@@ -597,10 +723,10 @@ CHARMAP
+ <U5689>     /x8b/xbf     <CJK>
+ <U4E28>     /x8b/xc0     <CJK>
+ <U5902>     /x8b/xc1     <CJK>
+-<UF53A>     /x8b/xc2     <CJK>
+-<UF53B>     /x8b/xc3     <CJK>
++<U00021BC1> /x8b/xc2     <CJK>
++<U0002F878> /x8b/xc3     <CJK>
+ <U9751>     /x8b/xc4     <CJK>
+-<UF53D>     /x8b/xc5     <CJK>
++<U00020086> /x8b/xc5     <CJK>
+ <U4E5B>     /x8b/xc6     <CJK>
+ <U4EBB>     /x8b/xc7     <CJK>
+ <U353E>     /x8b/xc8     <CJK>
+@@ -617,45 +743,227 @@ CHARMAP
+ <U722B>     /x8b/xd3     <CJK>
+ <U4E2C>     /x8b/xd4     <CJK>
+ <U72AD>     /x8b/xd5     <CJK>
+-<UF54E>     /x8b/xd6     <CJK>
++<U000248E9> /x8b/xd6     <CJK>
+ <U7F52>     /x8b/xd7     <CJK>
+ <U793B>     /x8b/xd8     <CJK>
+ <U7CF9>     /x8b/xd9     <CJK>
+ <U7F53>     /x8b/xda     <CJK>
+-<UF553>     /x8b/xdb     <CJK>
++<U0002626A> /x8b/xdb     <CJK>
+ <U34C1>     /x8b/xdc     <CJK>
+-<UF556>     /x8b/xde     <CJK>
++<U0002634B> /x8b/xde     <CJK>
+ <U8002>     /x8b/xdf     <CJK>
+ <U8080>     /x8b/xe0     <CJK>
+-<UF559>     /x8b/xe1     <CJK>
+-<UF55A>     /x8b/xe2     <CJK>
++<U00026612> /x8b/xe1     <CJK>
++<U00026951> /x8b/xe2     <CJK>
+ <U535D>     /x8b/xe3     <CJK>
+ <U8864>     /x8b/xe4     <CJK>
+ <U89C1>     /x8b/xe5     <CJK>
+-<UF55E>     /x8b/xe6     <CJK>
++<U000278B2> /x8b/xe6     <CJK>
+ <U8BA0>     /x8b/xe7     <CJK>
+ <U8D1D>     /x8b/xe8     <CJK>
+ <U9485>     /x8b/xe9     <CJK>
+ <U9578>     /x8b/xea     <CJK>
+ <U957F>     /x8b/xeb     <CJK>
+ <U95E8>     /x8b/xec     <CJK>
+-<UF565>     /x8b/xed     <CJK>
++<U00028E0F> /x8b/xed     <CJK>
+ <U97E6>     /x8b/xee     <CJK>
+ <U9875>     /x8b/xef     <CJK>
+ <U98CE>     /x8b/xf0     <CJK>
+ <U98DE>     /x8b/xf1     <CJK>
+ <U9963>     /x8b/xf2     <CJK>
+-<UF56B>     /x8b/xf3     <CJK>
++<U00029810> /x8b/xf3     <CJK>
+ <U9C7C>     /x8b/xf4     <CJK>
+ <U9E1F>     /x8b/xf5     <CJK>
+ <U9EC4>     /x8b/xf6     <CJK>
+ <U6B6F>     /x8b/xf7     <CJK>
+-%IRREVERSIBLE%<U9F9C>     /x8b/xf8     <CJK>
++<UF907>     /x8b/xf8     <CJK>
+ <U4E37>     /x8b/xf9     <CJK>
+-<UF572>     /x8b/xfa     <CJK>
++<U00020087> /x8b/xfa     <CJK>
+ <U961D>     /x8b/xfb     <CJK>
+ <U6237>     /x8b/xfc     <CJK>
+ <U94A2>     /x8b/xfd     <CJK>
++<U503B>     /x8c/x40     <CJK>
++<U6DFE>     /x8c/x41     <CJK>
++<U00029C73> /x8c/x42     <CJK>
++<U9FA6>     /x8c/x43     <CJK>
++<U3DC9>     /x8c/x44     <CJK>
++<U888F>     /x8c/x45     <CJK>
++<U0002414E> /x8c/x46     <CJK>
++<U7077>     /x8c/x47     <CJK>
++<U5CF5>     /x8c/x48     <CJK>
++<U4B20>     /x8c/x49     <CJK>
++<U000251CD> /x8c/x4a     <CJK>
++<U3559>     /x8c/x4b     <CJK>
++<U00025D30> /x8c/x4c     <CJK>
++<U6122>     /x8c/x4d     <CJK>
++<U00028A32> /x8c/x4e     <CJK>
++<U8FA7>     /x8c/x4f     <CJK>
++<U91F6>     /x8c/x50     <CJK>
++<U7191>     /x8c/x51     <CJK>
++<U6719>     /x8c/x52     <CJK>
++<U73BA>     /x8c/x53     <CJK>
++<U00023281> /x8c/x54     <CJK>
++<U0002A107> /x8c/x55     <CJK>
++<U3C8B>     /x8c/x56     <CJK>
++<U00021980> /x8c/x57     <CJK>
++<U4B10>     /x8c/x58     <CJK>
++<U78E4>     /x8c/x59     <CJK>
++<U7402>     /x8c/x5a     <CJK>
++<U51AE>     /x8c/x5b     <CJK>
++<U0002870F> /x8c/x5c     <CJK>
++<U4009>     /x8c/x5d     <CJK>
++<U6A63>     /x8c/x5e     <CJK>
++<U0002A2BA> /x8c/x5f     <CJK>
++<U4223>     /x8c/x60     <CJK>
++<U860F>     /x8c/x61     <CJK>
++<U00020A6F> /x8c/x62     <CJK>
++<U7A2A>     /x8c/x63     <CJK>
++<U00029947> /x8c/x64     <CJK>
++<U00028AEA> /x8c/x65     <CJK>
++<U9755>     /x8c/x66     <CJK>
++<U704D>     /x8c/x67     <CJK>
++<U5324>     /x8c/x68     <CJK>
++<U0002207E> /x8c/x69     <CJK>
++<U93F4>     /x8c/x6a     <CJK>
++<U76D9>     /x8c/x6b     <CJK>
++<U000289E3> /x8c/x6c     <CJK>
++<U9FA7>     /x8c/x6d     <CJK>
++<U77DD>     /x8c/x6e     <CJK>
++<U4EA3>     /x8c/x6f     <CJK>
++<U4FF0>     /x8c/x70     <CJK>
++<U50BC>     /x8c/x71     <CJK>
++<U4E2F>     /x8c/x72     <CJK>
++<U4F17>     /x8c/x73     <CJK>
++<U9FA8>     /x8c/x74     <CJK>
++<U5434>     /x8c/x75     <CJK>
++<U7D8B>     /x8c/x76     <CJK>
++<U5892>     /x8c/x77     <CJK>
++<U58D0>     /x8c/x78     <CJK>
++<U00021DB6> /x8c/x79     <CJK>
++<U5E92>     /x8c/x7a     <CJK>
++<U5E99>     /x8c/x7b     <CJK>
++<U5FC2>     /x8c/x7c     <CJK>
++<U00022712> /x8c/x7d     <CJK>
++<U658B>     /x8c/x7e     <CJK>
++<U000233F9> /x8c/xa1     <CJK>
++<U6919>     /x8c/xa2     <CJK>
++<U6A43>     /x8c/xa3     <CJK>
++<U00023C63> /x8c/xa4     <CJK>
++<U6CFF>     /x8c/xa5     <CJK>
++<U7200>     /x8c/xa7     <CJK>
++<U00024505> /x8c/xa8     <CJK>
++<U738C>     /x8c/xa9     <CJK>
++<U3EDB>     /x8c/xaa     <CJK>
++<U00024A13> /x8c/xab     <CJK>
++<U5B15>     /x8c/xac     <CJK>
++<U74B9>     /x8c/xad     <CJK>
++<U8B83>     /x8c/xae     <CJK>
++<U00025CA4> /x8c/xaf     <CJK>
++<U00025695> /x8c/xb0     <CJK>
++<U7A93>     /x8c/xb1     <CJK>
++<U7BEC>     /x8c/xb2     <CJK>
++<U7CC3>     /x8c/xb3     <CJK>
++<U7E6C>     /x8c/xb4     <CJK>
++<U82F8>     /x8c/xb5     <CJK>
++<U8597>     /x8c/xb6     <CJK>
++<U9FA9>     /x8c/xb7     <CJK>
++<U8890>     /x8c/xb8     <CJK>
++<U9FAA>     /x8c/xb9     <CJK>
++<U8EB9>     /x8c/xba     <CJK>
++<U9FAB>     /x8c/xbb     <CJK>
++<U8FCF>     /x8c/xbc     <CJK>
++<U855F>     /x8c/xbd     <CJK>
++<U99E0>     /x8c/xbe     <CJK>
++<U9221>     /x8c/xbf     <CJK>
++<U9FAC>     /x8c/xc0     <CJK>
++<U00028DB9> /x8c/xc1     <CJK>
++<U0002143F> /x8c/xc2     <CJK>
++<U4071>     /x8c/xc3     <CJK>
++<U42A2>     /x8c/xc4     <CJK>
++<U5A1A>     /x8c/xc5     <CJK>
++<U9868>     /x8c/xc9     <CJK>
++<U676B>     /x8c/xca     <CJK>
++<U4276>     /x8c/xcb     <CJK>
++<U573D>     /x8c/xcc     <CJK>
++<U85D6>     /x8c/xce     <CJK>
++<U0002497B> /x8c/xcf     <CJK>
++<U82BF>     /x8c/xd0     <CJK>
++<U0002710D> /x8c/xd1     <CJK>
++<U4C81>     /x8c/xd2     <CJK>
++<U00026D74> /x8c/xd3     <CJK>
++<U5D7B>     /x8c/xd4     <CJK>
++<U00026B15> /x8c/xd5     <CJK>
++<U00026FBE> /x8c/xd6     <CJK>
++<U9FAD>     /x8c/xd7     <CJK>
++<U9FAE>     /x8c/xd8     <CJK>
++<U5B96>     /x8c/xd9     <CJK>
++<U9FAF>     /x8c/xda     <CJK>
++<U66E7>     /x8c/xdb     <CJK>
++<U7E5B>     /x8c/xdc     <CJK>
++<U6E57>     /x8c/xdd     <CJK>
++<U79CA>     /x8c/xde     <CJK>
++<U3D88>     /x8c/xdf     <CJK>
++<U44C3>     /x8c/xe0     <CJK>
++<U00023256> /x8c/xe1     <CJK>
++<U00022796> /x8c/xe2     <CJK>
++<U439A>     /x8c/xe3     <CJK>
++<U4536>     /x8c/xe4     <CJK>
++<U5CD5>     /x8c/xe6     <CJK>
++<U00023B1A> /x8c/xe7     <CJK>
++<U8AF9>     /x8c/xe8     <CJK>
++<U5C78>     /x8c/xe9     <CJK>
++<U3D12>     /x8c/xea     <CJK>
++<U00023551> /x8c/xeb     <CJK>
++<U5D78>     /x8c/xec     <CJK>
++<U9FB2>     /x8c/xed     <CJK>
++<U7157>     /x8c/xee     <CJK>
++<U4558>     /x8c/xef     <CJK>
++<U000240EC> /x8c/xf0     <CJK>
++<U00021E23> /x8c/xf1     <CJK>
++<U4C77>     /x8c/xf2     <CJK>
++<U3978>     /x8c/xf3     <CJK>
++<U344A>     /x8c/xf4     <CJK>
++<U000201A4> /x8c/xf5     <CJK>
++<U00026C41> /x8c/xf6     <CJK>
++<U8ACC>     /x8c/xf7     <CJK>
++<U4FB4>     /x8c/xf8     <CJK>
++<U00020239> /x8c/xf9     <CJK>
++<U59BF>     /x8c/xfa     <CJK>
++<U816C>     /x8c/xfb     <CJK>
++<U9856>     /x8c/xfc     <CJK>
++<U000298FA> /x8c/xfd     <CJK>
++<U5F3B>     /x8c/xfe     <CJK>
++<U00020B9F> /x8d/x40     <CJK>
++<U000221C1> /x8d/x42     <CJK>
++<U0002896D> /x8d/x43     <CJK>
++<U4102>     /x8d/x44     <CJK>
++<U46BB>     /x8d/x45     <CJK>
++<U00029079> /x8d/x46     <CJK>
++<U3F07>     /x8d/x47     <CJK>
++<U9FB3>     /x8d/x48     <CJK>
++<U0002A1B5> /x8d/x49     <CJK>
++<U40F8>     /x8d/x4a     <CJK>
++<U37D6>     /x8d/x4b     <CJK>
++<U46F7>     /x8d/x4c     <CJK>
++<U00026C46> /x8d/x4d     <CJK>
++<U417C>     /x8d/x4e     <CJK>
++<U000286B2> /x8d/x4f     <CJK>
++<U000273FF> /x8d/x50     <CJK>
++<U456D>     /x8d/x51     <CJK>
++<U38D4>     /x8d/x52     <CJK>
++<U0002549A> /x8d/x53     <CJK>
++<U4561>     /x8d/x54     <CJK>
++<U451B>     /x8d/x55     <CJK>
++<U4D89>     /x8d/x56     <CJK>
++<U4C7B>     /x8d/x57     <CJK>
++<U4D76>     /x8d/x58     <CJK>
++<U45EA>     /x8d/x59     <CJK>
++<U3FC8>     /x8d/x5a     <CJK>
++<U00024B0F> /x8d/x5b     <CJK>
++<U3661>     /x8d/x5c     <CJK>
++<U44DE>     /x8d/x5d     <CJK>
++<U44BD>     /x8d/x5e     <CJK>
++<U41ED>     /x8d/x5f     <CJK>
+ <U5D3E>     /x8d/x60     <CJK>
+ <U5D48>     /x8d/x61     <CJK>
+ <U5D56>     /x8d/x62     <CJK>
+@@ -780,8 +1088,8 @@ CHARMAP
+ <U00020325> /x8d/xfb     <CJK>
+ <U43C1>     /x8d/xfc     <CJK>
+ <U35F1>     /x8d/xfd     <CJK>
+-<UF6B0>     /x8d/xfe     <CJK>
+-<UE311>     /x8e/x40     <CJK>
++<U00020ED8> /x8d/xfe     <CJK>
++<U00023ED7> /x8e/x40     <CJK>
+ <U57BE>     /x8e/x41     <CJK>
+ <U00026ED3> /x8e/x42     <CJK>
+ <U713E>     /x8e/x43     <CJK>
+@@ -801,7 +1109,7 @@ CHARMAP
+ <U7AC2>     /x8e/x51     <CJK>
+ <U7AC3>     /x8e/x52     <CJK>
+ <U71D1>     /x8e/x53     <CJK>
+-<UE325>     /x8e/x54     <CJK>
++<U0002648D> /x8e/x54     <CJK>
+ <U41CA>     /x8e/x55     <CJK>
+ <U7ADA>     /x8e/x56     <CJK>
+ <U7ADD>     /x8e/x57     <CJK>
+@@ -812,7 +1120,7 @@ CHARMAP
+ <U7B0B>     /x8e/x5c     <CJK>
+ <U7B55>     /x8e/x5d     <CJK>
+ <U7B29>     /x8e/x5e     <CJK>
+-<UE330>     /x8e/x5f     <CJK>
++<U0002530E> /x8e/x5f     <CJK>
+ <U00025CFE> /x8e/x60     <CJK>
+ <U7BA2>     /x8e/x61     <CJK>
+ <U7B6F>     /x8e/x62     <CJK>
+@@ -822,7 +1130,7 @@ CHARMAP
+ <U7BD0>     /x8e/x66     <CJK>
+ <U8421>     /x8e/x67     <CJK>
+ <U7B92>     /x8e/x68     <CJK>
+-<U00023FF0> /x8e/x6a     <CJK>
++<U00025D20> /x8e/x6a     <CJK>
+ <U3DAD>     /x8e/x6b     <CJK>
+ <U00025C65> /x8e/x6c     <CJK>
+ <U8492>     /x8e/x6d     <CJK>
+@@ -831,7 +1139,7 @@ CHARMAP
+ <U00025CC1> /x8e/x71     <CJK>
+ <U7C44>     /x8e/x72     <CJK>
+ <U7C83>     /x8e/x73     <CJK>
+-<UE345>     /x8e/x74     <CJK>
++<U00024882> /x8e/x74     <CJK>
+ <U7CA6>     /x8e/x75     <CJK>
+ <U667D>     /x8e/x76     <CJK>
+ <U00024578> /x8e/x77     <CJK>
+@@ -858,7 +1166,7 @@ CHARMAP
+ <U7DF5>     /x8e/xb0     <CJK>
+ <U000217F9> /x8e/xb1     <CJK>
+ <U7DE5>     /x8e/xb2     <CJK>
+-<UE362>     /x8e/xb3     <CJK>
++<U0002836D> /x8e/xb3     <CJK>
+ <U00026121> /x8e/xb5     <CJK>
+ <U0002615A> /x8e/xb6     <CJK>
+ <U7E6E>     /x8e/xb7     <CJK>
+@@ -886,15 +1194,15 @@ CHARMAP
+ <U8008>     /x8e/xce     <CJK>
+ <U801D>     /x8e/xcf     <CJK>
+ <U802F>     /x8e/xd1     <CJK>
+-<UE381>     /x8e/xd2     <CJK>
+-<UE382>     /x8e/xd3     <CJK>
++<U0002A087> /x8e/xd2     <CJK>
++<U00026CC3> /x8e/xd3     <CJK>
+ <U803B>     /x8e/xd4     <CJK>
+ <U803C>     /x8e/xd5     <CJK>
+ <U8061>     /x8e/xd6     <CJK>
+-<UE386>     /x8e/xd7     <CJK>
++<U00022714> /x8e/xd7     <CJK>
+ <U4989>     /x8e/xd8     <CJK>
+ <U00026626> /x8e/xd9     <CJK>
+-<UE389>     /x8e/xda     <CJK>
++<U00023DE3> /x8e/xda     <CJK>
+ <U000266E8> /x8e/xdb     <CJK>
+ <U6725>     /x8e/xdc     <CJK>
+ <U80A7>     /x8e/xdd     <CJK>
+@@ -905,9 +1213,9 @@ CHARMAP
+ <U000226F6> /x8e/xe2     <CJK>
+ <U6C7F>     /x8e/xe3     <CJK>
+ <U00026498> /x8e/xe4     <CJK>
+-<UE394>     /x8e/xe5     <CJK>
++<U00024FB8> /x8e/xe5     <CJK>
+ <U64E7>     /x8e/xe6     <CJK>
+-<UE396>     /x8e/xe7     <CJK>
++<U0002148A> /x8e/xe7     <CJK>
+ <U8218>     /x8e/xe8     <CJK>
+ <U0002185E> /x8e/xe9     <CJK>
+ <U6A53>     /x8e/xea     <CJK>
+@@ -915,9 +1223,9 @@ CHARMAP
+ <U00024A95> /x8e/xec     <CJK>
+ <U447A>     /x8e/xed     <CJK>
+ <U8229>     /x8e/xee     <CJK>
+-<UE39E>     /x8e/xef     <CJK>
++<U00020B0D> /x8e/xef     <CJK>
+ <U00026A52> /x8e/xf0     <CJK>
+-<UE3A0>     /x8e/xf1     <CJK>
++<U00023D7E> /x8e/xf1     <CJK>
+ <U4FF9>     /x8e/xf2     <CJK>
+ <U000214FD> /x8e/xf3     <CJK>
+ <U84E2>     /x8e/xf4     <CJK>
+@@ -937,14 +1245,14 @@ CHARMAP
+ <U00020E16> /x8f/x43     <CJK>
+ <U000217B4> /x8f/x44     <CJK>
+ <U36C1>     /x8f/x45     <CJK>
+-<UE3B4>     /x8f/x46     <CJK>
++<U0002317D> /x8f/x46     <CJK>
+ <U0002355A> /x8f/x47     <CJK>
+ <U827B>     /x8f/x48     <CJK>
+ <U82E2>     /x8f/x49     <CJK>
+ <U8318>     /x8f/x4a     <CJK>
+ <U00023E8B> /x8f/x4b     <CJK>
+ <U00026DA3> /x8f/x4c     <CJK>
+-<UE3BB>     /x8f/x4d     <CJK>
++<U00026B05> /x8f/x4d     <CJK>
+ <U00026B97> /x8f/x4e     <CJK>
+ <U000235CE> /x8f/x4f     <CJK>
+ <U3DBF>     /x8f/x50     <CJK>
+@@ -961,15 +1269,15 @@ CHARMAP
+ <U855A>     /x8f/x5c     <CJK>
+ <U3496>     /x8f/x5d     <CJK>
+ <U00026E42> /x8f/x5e     <CJK>
+-<UE3CD>     /x8f/x5f     <CJK>
++<U00022EEF> /x8f/x5f     <CJK>
+ <U8458>     /x8f/x60     <CJK>
+-<UE3CF>     /x8f/x61     <CJK>
++<U00025BE4> /x8f/x61     <CJK>
+ <U8471>     /x8f/x62     <CJK>
+ <U3DD3>     /x8f/x63     <CJK>
+ <U44E4>     /x8f/x64     <CJK>
+ <U6AA7>     /x8f/x65     <CJK>
+ <U844A>     /x8f/x66     <CJK>
+-<UE3D5>     /x8f/x67     <CJK>
++<U00023CB5> /x8f/x67     <CJK>
+ <U7958>     /x8f/x68     <CJK>
+ <U00026B96> /x8f/x6a     <CJK>
+ <U00026E77> /x8f/x6b     <CJK>
+@@ -979,13 +1287,13 @@ CHARMAP
+ <U44A0>     /x8f/x70     <CJK>
+ <U8493>     /x8f/x71     <CJK>
+ <U84E4>     /x8f/x72     <CJK>
+-<UE3E1>     /x8f/x73     <CJK>
++<U00025C91> /x8f/x73     <CJK>
+ <U4240>     /x8f/x74     <CJK>
+ <U00025CC0> /x8f/x75     <CJK>
+ <U4543>     /x8f/x76     <CJK>
+ <U8534>     /x8f/x77     <CJK>
+ <U5AF2>     /x8f/x78     <CJK>
+-<UE3E7>     /x8f/x79     <CJK>
++<U00026E99> /x8f/x79     <CJK>
+ <U4527>     /x8f/x7a     <CJK>
+ <U8573>     /x8f/x7b     <CJK>
+ <U4516>     /x8f/x7c     <CJK>
+@@ -994,11 +1302,11 @@ CHARMAP
+ <U00028625> /x8f/xa1     <CJK>
+ <U0002863B> /x8f/xa2     <CJK>
+ <U85C1>     /x8f/xa3     <CJK>
+-<UE3F0>     /x8f/xa4     <CJK>
++<U00027088> /x8f/xa4     <CJK>
+ <U8602>     /x8f/xa5     <CJK>
+-<UE3F2>     /x8f/xa6     <CJK>
++<U00021582> /x8f/xa6     <CJK>
+ <U000270CD> /x8f/xa7     <CJK>
+-<UE3F4>     /x8f/xa8     <CJK>
++<U0002F9B2> /x8f/xa8     <CJK>
+ <U456A>     /x8f/xa9     <CJK>
+ <U8628>     /x8f/xaa     <CJK>
+ <U3648>     /x8f/xab     <CJK>
+@@ -1046,7 +1354,7 @@ CHARMAP
+ <U00027A59> /x8f/xd7     <CJK>
+ <U7AE9>     /x8f/xd8     <CJK>
+ <U00027B3A> /x8f/xd9     <CJK>
+-<UE426>     /x8f/xda     <CJK>
++<U00023F8F> /x8f/xda     <CJK>
+ <U4713>     /x8f/xdb     <CJK>
+ <U00027B38> /x8f/xdc     <CJK>
+ <U717C>     /x8f/xdd     <CJK>
+@@ -1062,7 +1370,7 @@ CHARMAP
+ <U8B90>     /x8f/xe7     <CJK>
+ <U8B9B>     /x8f/xe8     <CJK>
+ <U8AAF>     /x8f/xe9     <CJK>
+-<UE436>     /x8f/xea     <CJK>
++<U000216DF> /x8f/xea     <CJK>
+ <U4615>     /x8f/xeb     <CJK>
+ <U884F>     /x8f/xec     <CJK>
+ <U8C9B>     /x8f/xed     <CJK>
+@@ -1080,14 +1388,14 @@ CHARMAP
+ <U8CDB>     /x8f/xf9     <CJK>
+ <U705C>     /x8f/xfa     <CJK>
+ <U8D11>     /x8f/xfb     <CJK>
+-<UE448>     /x8f/xfc     <CJK>
++<U00024CC9> /x8f/xfc     <CJK>
+ <U3ED0>     /x8f/xfd     <CJK>
+ <U8DA9>     /x90/x40     <CJK>
+ <U00028002> /x90/x41     <CJK>
+-<UE44D>     /x90/x42     <CJK>
++<U00021014> /x90/x42     <CJK>
+ <U0002498A> /x90/x43     <CJK>
+ <U3B7C>     /x90/x44     <CJK>
+-<UE450>     /x90/x45     <CJK>
++<U000281BC> /x90/x45     <CJK>
+ <U0002710C> /x90/x46     <CJK>
+ <U7AE7>     /x90/x47     <CJK>
+ <U8EAD>     /x90/x48     <CJK>
+@@ -1110,9 +1418,9 @@ CHARMAP
+ <U5EF8>     /x90/x59     <CJK>
+ <U00023262> /x90/x5a     <CJK>
+ <U8FF9>     /x90/x5b     <CJK>
+-<UE467>     /x90/x5c     <CJK>
+-<UE468>     /x90/x5d     <CJK>
+-<UE469>     /x90/x5e     <CJK>
++<U0002A014> /x90/x5c     <CJK>
++<U000286BC> /x90/x5d     <CJK>
++<U00028501> /x90/x5e     <CJK>
+ <U00022325> /x90/x5f     <CJK>
+ <U3980>     /x90/x60     <CJK>
+ <U00026ED7> /x90/x61     <CJK>
+@@ -1123,7 +1431,7 @@ CHARMAP
+ <U0002856C> /x90/x66     <CJK>
+ <U0002860B> /x90/x67     <CJK>
+ <U90A8>     /x90/x68     <CJK>
+-<UE474>     /x90/x69     <CJK>
++<U00028713> /x90/x69     <CJK>
+ <U90C4>     /x90/x6a     <CJK>
+ <U000286E6> /x90/x6b     <CJK>
+ <U90AE>     /x90/x6c     <CJK>
+@@ -1143,7 +1451,7 @@ CHARMAP
+ <U00023C9B> /x90/x7c     <CJK>
+ <U00028B0C> /x90/x7d     <CJK>
+ <U000255DB> /x90/x7e     <CJK>
+-<UE48A>     /x90/xa1     <CJK>
++<U00020D31> /x90/xa1     <CJK>
+ <U932C>     /x90/xa2     <CJK>
+ <U936B>     /x90/xa3     <CJK>
+ <U00028AE1> /x90/xa4     <CJK>
+@@ -1166,7 +1474,7 @@ CHARMAP
+ <U95A0>     /x90/xb5     <CJK>
+ <U6FF6>     /x90/xb6     <CJK>
+ <U42B9>     /x90/xb7     <CJK>
+-<UE4A1>     /x90/xb8     <CJK>
++<U0002267A> /x90/xb8     <CJK>
+ <U000286D8> /x90/xb9     <CJK>
+ <U0002127C> /x90/xba     <CJK>
+ <U00023E2E> /x90/xbb     <CJK>
+@@ -1198,11 +1506,11 @@ CHARMAP
+ <U4A0F>     /x90/xd5     <CJK>
+ <U453D>     /x90/xd6     <CJK>
+ <U4585>     /x90/xd7     <CJK>
+-<UE4C1>     /x90/xd8     <CJK>
++<U00024AE9> /x90/xd8     <CJK>
+ <U7075>     /x90/xd9     <CJK>
+ <U5B41>     /x90/xda     <CJK>
+ <U971B>     /x90/xdb     <CJK>
+-<UE4C6>     /x90/xdd     <CJK>
++<U000291D5> /x90/xdd     <CJK>
+ <U9757>     /x90/xde     <CJK>
+ <U5B4A>     /x90/xdf     <CJK>
+ <U000291EB> /x90/xe0     <CJK>
+@@ -1224,7 +1532,7 @@ CHARMAP
+ <U00029433> /x90/xf0     <CJK>
+ <U97F5>     /x90/xf2     <CJK>
+ <U0002941D> /x90/xf3     <CJK>
+-<UE4DD>     /x90/xf4     <CJK>
++<U0002797A> /x90/xf4     <CJK>
+ <U4AD1>     /x90/xf5     <CJK>
+ <U9834>     /x90/xf6     <CJK>
+ <U9833>     /x90/xf7     <CJK>
+@@ -1289,24 +1597,24 @@ CHARMAP
+ <U9DD4>     /x91/x73     <CJK>
+ <U00029FB7> /x91/x74     <CJK>
+ <U0002A192> /x91/x75     <CJK>
+-<UE51E>     /x91/x76     <CJK>
++<U0002A1AB> /x91/x76     <CJK>
+ <U0002A0E1> /x91/x77     <CJK>
+ <U0002A123> /x91/x78     <CJK>
+ <U0002A1DF> /x91/x79     <CJK>
+ <U9D7E>     /x91/x7a     <CJK>
+ <U9D83>     /x91/x7b     <CJK>
+-<UE524>     /x91/x7c     <CJK>
++<U0002A134> /x91/x7c     <CJK>
+ <U9E0E>     /x91/x7d     <CJK>
+ <U6888>     /x91/x7e     <CJK>
+ <U9DC4>     /x91/xa1     <CJK>
+-<UE528>     /x91/xa2     <CJK>
++<U0002215B> /x91/xa2     <CJK>
+ <U0002A193> /x91/xa3     <CJK>
+ <U0002A220> /x91/xa4     <CJK>
+ <U0002193B> /x91/xa5     <CJK>
+ <U0002A233> /x91/xa6     <CJK>
+ <U9D39>     /x91/xa7     <CJK>
+-<UE52E>     /x91/xa8     <CJK>
+-<UE52F>     /x91/xa9     <CJK>
++<U0002A0B9> /x91/xa8     <CJK>
++<U0002A2B4> /x91/xa9     <CJK>
+ <U9E90>     /x91/xaa     <CJK>
+ <U9E95>     /x91/xab     <CJK>
+ <U9E9E>     /x91/xac     <CJK>
+@@ -1367,10 +1675,10 @@ CHARMAP
+ <U7772>     /x91/xe4     <CJK>
+ <U7A43>     /x91/xe5     <CJK>
+ <U70D0>     /x91/xe6     <CJK>
+-<UE56D>     /x91/xe7     <CJK>
++<U00024473> /x91/xe7     <CJK>
+ <U000243F8> /x91/xe8     <CJK>
+ <U717E>     /x91/xe9     <CJK>
+-<UE570>     /x91/xea     <CJK>
++<U000217EF> /x91/xea     <CJK>
+ <U70A3>     /x91/xeb     <CJK>
+ <U000218BE> /x91/xec     <CJK>
+ <U00023599> /x91/xed     <CJK>
+@@ -1380,23 +1688,23 @@ CHARMAP
+ <U000217F8> /x91/xf1     <CJK>
+ <U3722>     /x91/xf2     <CJK>
+ <U000216FB> /x91/xf3     <CJK>
+-<UE57A>     /x91/xf4     <CJK>
++<U00021839> /x91/xf4     <CJK>
+ <U36E1>     /x91/xf5     <CJK>
+ <U00021774> /x91/xf6     <CJK>
+-<UE57D>     /x91/xf7     <CJK>
++<U000218D1> /x91/xf7     <CJK>
+ <U00025F4B> /x91/xf8     <CJK>
+ <U3723>     /x91/xf9     <CJK>
+ <U000216C0> /x91/xfa     <CJK>
+ <U575B>     /x91/xfb     <CJK>
+ <U00024A25> /x91/xfc     <CJK>
+ <U000213FE> /x91/xfd     <CJK>
+-<UE584>     /x91/xfe     <CJK>
++<U000212A8> /x91/xfe     <CJK>
+ <U000213C6> /x92/x40     <CJK>
+ <U000214B6> /x92/x41     <CJK>
+ <U8503>     /x92/x42     <CJK>
+ <U000236A6> /x92/x43     <CJK>
+ <U8455>     /x92/x45     <CJK>
+-<UE58B>     /x92/x46     <CJK>
++<U00024994> /x92/x46     <CJK>
+ <U00027165> /x92/x47     <CJK>
+ <U00023E31> /x92/x48     <CJK>
+ <U0002555C> /x92/x49     <CJK>
+@@ -1411,23 +1719,23 @@ CHARMAP
+ <U3C15>     /x92/x52     <CJK>
+ <U3DE7>     /x92/x53     <CJK>
+ <U586C>     /x92/x54     <CJK>
+-<UE59A>     /x92/x55     <CJK>
++<U00021922> /x92/x55     <CJK>
+ <U6810>     /x92/x56     <CJK>
+ <U4057>     /x92/x57     <CJK>
+ <U0002373F> /x92/x58     <CJK>
+-<UE59E>     /x92/x59     <CJK>
++<U000240E1> /x92/x59     <CJK>
+ <U0002408B> /x92/x5a     <CJK>
+-<UE5A0>     /x92/x5b     <CJK>
++<U0002410F> /x92/x5b     <CJK>
+ <U00026C21> /x92/x5c     <CJK>
+ <U54CB>     /x92/x5d     <CJK>
+ <U569E>     /x92/x5e     <CJK>
+ <U000266B1> /x92/x5f     <CJK>
+ <U5692>     /x92/x60     <CJK>
+-<UE5A6>     /x92/x61     <CJK>
++<U00020FDF> /x92/x61     <CJK>
+ <U00020BA8> /x92/x62     <CJK>
+ <U00020E0D> /x92/x63     <CJK>
+ <U93C6>     /x92/x64     <CJK>
+-<UE5AA>     /x92/x65     <CJK>
++<U00028B13> /x92/x65     <CJK>
+ <U939C>     /x92/x66     <CJK>
+ <U4EF8>     /x92/x67     <CJK>
+ <U512B>     /x92/x68     <CJK>
+@@ -1451,13 +1759,13 @@ CHARMAP
+ <U00028EB3> /x92/x7a     <CJK>
+ <U00020275> /x92/x7b     <CJK>
+ <U8ADA>     /x92/x7c     <CJK>
+-<UE5C2>     /x92/x7d     <CJK>
++<U0002020C> /x92/x7d     <CJK>
+ <U4E98>     /x92/x7e     <CJK>
+ <U50CD>     /x92/xa1     <CJK>
+ <U510D>     /x92/xa2     <CJK>
+ <U4FA2>     /x92/xa3     <CJK>
+ <U4F03>     /x92/xa4     <CJK>
+-<UE5C8>     /x92/xa5     <CJK>
++<U00024A0E> /x92/xa5     <CJK>
+ <U00023E8A> /x92/xa6     <CJK>
+ <U4F42>     /x92/xa7     <CJK>
+ <U502E>     /x92/xa8     <CJK>
+@@ -1469,7 +1777,7 @@ CHARMAP
+ <U50FC>     /x92/xae     <CJK>
+ <U6E76>     /x92/xb3     <CJK>
+ <U00023595> /x92/xb4     <CJK>
+-<UE5D8>     /x92/xb5     <CJK>
++<U00023E39> /x92/xb5     <CJK>
+ <U00023EBF> /x92/xb6     <CJK>
+ <U6D72>     /x92/xb7     <CJK>
+ <U00021884> /x92/xb8     <CJK>
+@@ -1493,7 +1801,7 @@ CHARMAP
+ <U0002438C> /x92/xcb     <CJK>
+ <U00020C20> /x92/xcc     <CJK>
+ <U000249AC> /x92/xcd     <CJK>
+-<UE5F1>     /x92/xce     <CJK>
++<U000210E4> /x92/xce     <CJK>
+ <U69D1>     /x92/xcf     <CJK>
+ <U00020E1D> /x92/xd0     <CJK>
+ <U3EDE>     /x92/xd2     <CJK>
+@@ -1532,10 +1840,10 @@ CHARMAP
+ <U5A7E>     /x92/xf3     <CJK>
+ <U5ACF>     /x92/xf4     <CJK>
+ <U5A12>     /x92/xf5     <CJK>
+-<UE619>     /x92/xf6     <CJK>
++<U00025946> /x92/xf6     <CJK>
+ <U000219F3> /x92/xf7     <CJK>
+ <U00021861> /x92/xf8     <CJK>
+-<UE61C>     /x92/xf9     <CJK>
++<U00024295> /x92/xf9     <CJK>
+ <U36F5>     /x92/xfa     <CJK>
+ <U6D05>     /x92/xfb     <CJK>
+ <U7443>     /x92/xfc     <CJK>
+@@ -1577,7 +1885,7 @@ CHARMAP
+ <U5F0C>     /x93/x61     <CJK>
+ <U5F0E>     /x93/x62     <CJK>
+ <U00021927> /x93/x63     <CJK>
+-<UE646>     /x93/x64     <CJK>
++<U000217AB> /x93/x64     <CJK>
+ <U5A6B>     /x93/x65     <CJK>
+ <U0002173B> /x93/x66     <CJK>
+ <U5B44>     /x93/x67     <CJK>
+@@ -1591,7 +1899,7 @@ CHARMAP
+ <U3EB8>     /x93/x6f     <CJK>
+ <U000225AF> /x93/x70     <CJK>
+ <U000225BE> /x93/x71     <CJK>
+-<UE654>     /x93/x72     <CJK>
++<U00029088> /x93/x72     <CJK>
+ <U00026F73> /x93/x73     <CJK>
+ <U61C0>     /x93/x74     <CJK>
+ <U0002003E> /x93/x75     <CJK>
+@@ -1603,7 +1911,7 @@ CHARMAP
+ <U00022C9B> /x93/x7b     <CJK>
+ <U00022D07> /x93/x7c     <CJK>
+ <U000246D4> /x93/x7d     <CJK>
+-<UE660>     /x93/x7e     <CJK>
++<U0002914D> /x93/x7e     <CJK>
+ <U6471>     /x93/xa1     <CJK>
+ <U00024665> /x93/xa2     <CJK>
+ <U00022B6A> /x93/xa3     <CJK>
+@@ -1613,7 +1921,7 @@ CHARMAP
+ <U000298EA> /x93/xa7     <CJK>
+ <U00022E78> /x93/xa8     <CJK>
+ <U6337>     /x93/xa9     <CJK>
+-<UE66A>     /x93/xaa     <CJK>
++<U0002A45B> /x93/xaa     <CJK>
+ <U64B6>     /x93/xab     <CJK>
+ <U6331>     /x93/xac     <CJK>
+ <U63D1>     /x93/xad     <CJK>
+@@ -1632,10 +1940,10 @@ CHARMAP
+ <U550D>     /x93/xba     <CJK>
+ <U000232E0> /x93/xbb     <CJK>
+ <U000218D9> /x93/xbc     <CJK>
+-<UE67D>     /x93/xbd     <CJK>
++<U0002943F> /x93/xbd     <CJK>
+ <U66CE>     /x93/xbe     <CJK>
+ <U00023289> /x93/xbf     <CJK>
+-<UE680>     /x93/xc0     <CJK>
++<U000231B3> /x93/xc0     <CJK>
+ <U3AE0>     /x93/xc1     <CJK>
+ <U4190>     /x93/xc2     <CJK>
+ <U00025584> /x93/xc3     <CJK>
+@@ -1649,7 +1957,7 @@ CHARMAP
+ <U0002182A> /x93/xcb     <CJK>
+ <U00023234> /x93/xcc     <CJK>
+ <U3464>     /x93/xcd     <CJK>
+-<UE68E>     /x93/xce     <CJK>
++<U0002320F> /x93/xce     <CJK>
+ <U00023182> /x93/xcf     <CJK>
+ <U000242C9> /x93/xd0     <CJK>
+ <U668E>     /x93/xd1     <CJK>
+@@ -1658,14 +1966,14 @@ CHARMAP
+ <U4B93>     /x93/xd4     <CJK>
+ <U6630>     /x93/xd5     <CJK>
+ <U00027870> /x93/xd6     <CJK>
+-<UE697>     /x93/xd7     <CJK>
++<U00021DEB> /x93/xd7     <CJK>
+ <U6663>     /x93/xd8     <CJK>
+ <U000232D2> /x93/xd9     <CJK>
+ <U000232E1> /x93/xda     <CJK>
+ <U661E>     /x93/xdb     <CJK>
+ <U00025872> /x93/xdc     <CJK>
+ <U38D1>     /x93/xdd     <CJK>
+-<UE69E>     /x93/xde     <CJK>
++<U0002383A> /x93/xde     <CJK>
+ <U000237BC> /x93/xdf     <CJK>
+ <U3B99>     /x93/xe0     <CJK>
+ <U000237A2> /x93/xe1     <CJK>
+@@ -1699,12 +2007,12 @@ CHARMAP
+ <U00028BEA> /x93/xfd     <CJK>
+ <U00028ACB> /x93/xfe     <CJK>
+ <U9289>     /x94/x40     <CJK>
+-<UE6C0>     /x94/x41     <CJK>
++<U0002801E> /x94/x41     <CJK>
+ <U000289DC> /x94/x42     <CJK>
+ <U9467>     /x94/x43     <CJK>
+ <U6DA5>     /x94/x44     <CJK>
+ <U6F0B>     /x94/x45     <CJK>
+-<UE6C5>     /x94/x46     <CJK>
++<U000249EC> /x94/x46     <CJK>
+ <U00023F7F> /x94/x48     <CJK>
+ <U3D8F>     /x94/x49     <CJK>
+ <U6E04>     /x94/x4a     <CJK>
+@@ -1728,8 +2036,8 @@ CHARMAP
+ <U000205EB> /x94/x5c     <CJK>
+ <U747A>     /x94/x5d     <CJK>
+ <U00023EF8> /x94/x5e     <CJK>
+-<UE6DE>     /x94/x5f     <CJK>
+-<UE6DF>     /x94/x60     <CJK>
++<U0002365F> /x94/x5f     <CJK>
++<U00024A4A> /x94/x60     <CJK>
+ <U00024917> /x94/x61     <CJK>
+ <U00025FE1> /x94/x62     <CJK>
+ <U3F06>     /x94/x63     <CJK>
+@@ -1763,7 +2071,7 @@ CHARMAP
+ <U3DCD>     /x94/xa1     <CJK>
+ <U00024A4E> /x94/xa2     <CJK>
+ <U3EFF>     /x94/xa3     <CJK>
+-<UE701>     /x94/xa4     <CJK>
++<U000249C5> /x94/xa4     <CJK>
+ <U000248F3> /x94/xa5     <CJK>
+ <U91FA>     /x94/xa6     <CJK>
+ <U5732>     /x94/xa7     <CJK>
+@@ -1781,7 +2089,7 @@ CHARMAP
+ <U00024697> /x94/xb3     <CJK>
+ <U00023781> /x94/xb4     <CJK>
+ <U3A5E>     /x94/xb5     <CJK>
+-<UE713>     /x94/xb6     <CJK>
++<U000248F0> /x94/xb6     <CJK>
+ <U7438>     /x94/xb7     <CJK>
+ <U749B>     /x94/xb8     <CJK>
+ <U3EBF>     /x94/xb9     <CJK>
+@@ -1799,7 +2107,7 @@ CHARMAP
+ <U73D0>     /x94/xc5     <CJK>
+ <U7959>     /x94/xc6     <CJK>
+ <U00027741> /x94/xc7     <CJK>
+-<UE725>     /x94/xc8     <CJK>
++<U000256E3> /x94/xc8     <CJK>
+ <U410E>     /x94/xc9     <CJK>
+ <U8496>     /x94/xcb     <CJK>
+ <U79A5>     /x94/xcc     <CJK>
+@@ -1822,11 +2130,11 @@ CHARMAP
+ <U3570>     /x94/xdd     <CJK>
+ <U36AA>     /x94/xde     <CJK>
+ <U000201D4> /x94/xdf     <CJK>
+-<UE73D>     /x94/xe0     <CJK>
++<U00020C0D> /x94/xe0     <CJK>
+ <U7AE2>     /x94/xe1     <CJK>
+ <U5A59>     /x94/xe2     <CJK>
+ <U000226F5> /x94/xe3     <CJK>
+-<UE741>     /x94/xe4     <CJK>
++<U00025AAF> /x94/xe4     <CJK>
+ <U00025A9C> /x94/xe5     <CJK>
+ <U5A0D>     /x94/xe6     <CJK>
+ <U0002025B> /x94/xe7     <CJK>
+@@ -1843,7 +2151,7 @@ CHARMAP
+ <U00025EA6> /x94/xf2     <CJK>
+ <U7CCD>     /x94/xf3     <CJK>
+ <U000249F9> /x94/xf4     <CJK>
+-<UE752>     /x94/xf5     <CJK>
++<U000217B0> /x94/xf5     <CJK>
+ <U7C8E>     /x94/xf6     <CJK>
+ <U7C7C>     /x94/xf7     <CJK>
+ <U7CAE>     /x94/xf8     <CJK>
+@@ -1854,18 +2162,18 @@ CHARMAP
+ <U7F4E>     /x94/xfd     <CJK>
+ <U00026261> /x94/xfe     <CJK>
+ <U0002615C> /x95/x40     <CJK>
+-<UE75D>     /x95/x41     <CJK>
++<U00027B48> /x95/x41     <CJK>
+ <U7D97>     /x95/x42     <CJK>
+ <U00025E82> /x95/x43     <CJK>
+ <U426A>     /x95/x44     <CJK>
+-<UE761>     /x95/x45     <CJK>
++<U00026B75> /x95/x45     <CJK>
+ <U00020916> /x95/x46     <CJK>
+ <U67D6>     /x95/x47     <CJK>
+ <U0002004E> /x95/x48     <CJK>
+ <U000235CF> /x95/x49     <CJK>
+ <U57C4>     /x95/x4a     <CJK>
+ <U00026412> /x95/x4b     <CJK>
+-<UE768>     /x95/x4c     <CJK>
++<U000263F8> /x95/x4c     <CJK>
+ <U00024962> /x95/x4d     <CJK>
+ <U7FDD>     /x95/x4e     <CJK>
+ <U7B27>     /x95/x4f     <CJK>
+@@ -1878,15 +2186,15 @@ CHARMAP
+ <U8645>     /x95/x56     <CJK>
+ <U9A63>     /x95/x57     <CJK>
+ <U6A1C>     /x95/x58     <CJK>
+-<UE775>     /x95/x59     <CJK>
++<U0002343F> /x95/x59     <CJK>
+ <U39E2>     /x95/x5a     <CJK>
+ <U000249F7> /x95/x5b     <CJK>
+ <U000265AD> /x95/x5c     <CJK>
+ <U9A1F>     /x95/x5d     <CJK>
+-<UE77A>     /x95/x5e     <CJK>
++<U000265A0> /x95/x5e     <CJK>
+ <U8480>     /x95/x5f     <CJK>
+ <U00027127> /x95/x60     <CJK>
+-<UE77D>     /x95/x61     <CJK>
++<U00026CD1> /x95/x61     <CJK>
+ <U44EA>     /x95/x62     <CJK>
+ <U8137>     /x95/x63     <CJK>
+ <U4402>     /x95/x64     <CJK>
+@@ -1905,14 +2213,14 @@ CHARMAP
+ <U0002721B> /x95/x71     <CJK>
+ <U5A86>     /x95/x72     <CJK>
+ <U417F>     /x95/x73     <CJK>
+-<UE790>     /x95/x74     <CJK>
++<U00021840> /x95/x74     <CJK>
+ <U5B2B>     /x95/x75     <CJK>
+ <U000218A1> /x95/x76     <CJK>
+ <U5AE4>     /x95/x77     <CJK>
+ <U000218D8> /x95/x78     <CJK>
+ <U86A0>     /x95/x79     <CJK>
+-%IRREVERSIBLE%<U8728>     /x95/x7a     <CJK>
+-<UE797>     /x95/x7b     <CJK>
++<U0002F9BC> /x95/x7a     <CJK>
++<U00023D8F> /x95/x7b     <CJK>
+ <U882D>     /x95/x7c     <CJK>
+ <U00027422> /x95/x7d     <CJK>
+ <U5A02>     /x95/x7e     <CJK>
+@@ -1927,7 +2235,7 @@ CHARMAP
+ <U8954>     /x95/xa9     <CJK>
+ <U00027785> /x95/xaa     <CJK>
+ <U00027784> /x95/xab     <CJK>
+-<UE7A6>     /x95/xac     <CJK>
++<U00028BF5> /x95/xac     <CJK>
+ <U00028BD9> /x95/xad     <CJK>
+ <U00028B9C> /x95/xae     <CJK>
+ <U000289F9> /x95/xaf     <CJK>
+@@ -1941,7 +2249,7 @@ CHARMAP
+ <U00029448> /x95/xb7     <CJK>
+ <U5F4D>     /x95/xb8     <CJK>
+ <U922B>     /x95/xb9     <CJK>
+-<UE7B4>     /x95/xba     <CJK>
++<U00024284> /x95/xba     <CJK>
+ <U65D4>     /x95/xbb     <CJK>
+ <U7129>     /x95/xbc     <CJK>
+ <U70C4>     /x95/xbd     <CJK>
+@@ -1978,10 +2286,10 @@ CHARMAP
+ <U9404>     /x95/xdd     <CJK>
+ <U00028A4B> /x95/xde     <CJK>
+ <U4062>     /x95/xdf     <CJK>
+-<UE7DA>     /x95/xe0     <CJK>
++<U00028AFC> /x95/xe0     <CJK>
+ <U9427>     /x95/xe1     <CJK>
+ <U00028C1D> /x95/xe2     <CJK>
+-<UE7DD>     /x95/xe3     <CJK>
++<U00028C3B> /x95/xe3     <CJK>
+ <U84E5>     /x95/xe4     <CJK>
+ <U8A2B>     /x95/xe5     <CJK>
+ <U9599>     /x95/xe6     <CJK>
+@@ -1992,16 +2300,16 @@ CHARMAP
+ <U7445>     /x95/xeb     <CJK>
+ <U3EC2>     /x95/xec     <CJK>
+ <U000248FF> /x95/xed     <CJK>
+-<UE7E8>     /x95/xee     <CJK>
+-<UE7E9>     /x95/xef     <CJK>
++<U00024A42> /x95/xee     <CJK>
++<U000243EA> /x95/xef     <CJK>
+ <U3EE7>     /x95/xf0     <CJK>
+ <U00023225> /x95/xf1     <CJK>
+ <U968F>     /x95/xf2     <CJK>
+-<UE7ED>     /x95/xf3     <CJK>
++<U00028EE7> /x95/xf3     <CJK>
+ <U00028E66> /x95/xf4     <CJK>
+ <U00028E65> /x95/xf5     <CJK>
+ <U3ECC>     /x95/xf6     <CJK>
+-<UE7F1>     /x95/xf7     <CJK>
++<U000249ED> /x95/xf7     <CJK>
+ <U00024A78> /x95/xf8     <CJK>
+ <U00023FEE> /x95/xf9     <CJK>
+ <U7412>     /x95/xfa     <CJK>
+@@ -2011,11 +2319,11 @@ CHARMAP
+ <U000290B0> /x95/xfe     <CJK>
+ <U6847>     /x96/x40     <CJK>
+ <U4A1D>     /x96/x41     <CJK>
+-<UE7FB>     /x96/x42     <CJK>
+-<UE7FC>     /x96/x43     <CJK>
++<U00029093> /x96/x42     <CJK>
++<U000257DF> /x96/x43     <CJK>
+ <U9368>     /x96/x45     <CJK>
+ <U00028989> /x96/x46     <CJK>
+-<UE800>     /x96/x47     <CJK>
++<U00028C26> /x96/x47     <CJK>
+ <U00028B2F> /x96/x48     <CJK>
+ <U000263BE> /x96/x49     <CJK>
+ <U92BA>     /x96/x4a     <CJK>
+@@ -2027,14 +2335,14 @@ CHARMAP
+ <U979B>     /x96/x50     <CJK>
+ <U9771>     /x96/x51     <CJK>
+ <U9938>     /x96/x52     <CJK>
+-<UE80C>     /x96/x53     <CJK>
++<U00020F26> /x96/x53     <CJK>
+ <U5DC1>     /x96/x54     <CJK>
+ <U00028BC5> /x96/x55     <CJK>
+ <U00024AB2> /x96/x56     <CJK>
+ <U981F>     /x96/x57     <CJK>
+ <U000294DA> /x96/x58     <CJK>
+ <U92F6>     /x96/x59     <CJK>
+-<UE813>     /x96/x5a     <CJK>
++<U000295D7> /x96/x5a     <CJK>
+ <U91E5>     /x96/x5b     <CJK>
+ <U44C0>     /x96/x5c     <CJK>
+ <U00028B50> /x96/x5d     <CJK>
+@@ -2048,21 +2356,21 @@ CHARMAP
+ <U8414>     /x96/x65     <CJK>
+ <U993B>     /x96/x66     <CJK>
+ <U994D>     /x96/x67     <CJK>
+-<UE821>     /x96/x68     <CJK>
++<U00027B06> /x96/x68     <CJK>
+ <U3DFD>     /x96/x69     <CJK>
+ <U999B>     /x96/x6a     <CJK>
+ <U4B6F>     /x96/x6b     <CJK>
+ <U99AA>     /x96/x6c     <CJK>
+ <U9A5C>     /x96/x6d     <CJK>
+ <U00028B65> /x96/x6e     <CJK>
+-<UE828>     /x96/x6f     <CJK>
++<U000258C8> /x96/x6f     <CJK>
+ <U6A8F>     /x96/x70     <CJK>
+ <U9A21>     /x96/x71     <CJK>
+ <U5AFE>     /x96/x72     <CJK>
+ <U9A2F>     /x96/x73     <CJK>
+-<UE82D>     /x96/x74     <CJK>
++<U000298F1> /x96/x74     <CJK>
+ <U4B90>     /x96/x75     <CJK>
+-<UE82F>     /x96/x76     <CJK>
++<U00029948> /x96/x76     <CJK>
+ <U99BC>     /x96/x77     <CJK>
+ <U4BBD>     /x96/x78     <CJK>
+ <U4B97>     /x96/x79     <CJK>
+@@ -2092,7 +2400,7 @@ CHARMAP
+ <U9BCF>     /x96/xb3     <CJK>
+ <U00029E2D> /x96/xb4     <CJK>
+ <U9B9F>     /x96/xb5     <CJK>
+-<UE84D>     /x96/xb6     <CJK>
++<U0002A1F5> /x96/xb6     <CJK>
+ <U0002A0FE> /x96/xb7     <CJK>
+ <U9D21>     /x96/xb8     <CJK>
+ <U4CAE>     /x96/xb9     <CJK>
+@@ -2100,15 +2408,15 @@ CHARMAP
+ <U9E18>     /x96/xbb     <CJK>
+ <U4CB0>     /x96/xbc     <CJK>
+ <U9D0C>     /x96/xbd     <CJK>
+-<UE855>     /x96/xbe     <CJK>
+-<UE856>     /x96/xbf     <CJK>
++<U0002A1B4> /x96/xbe     <CJK>
++<U0002A0ED> /x96/xbf     <CJK>
+ <U0002A0F3> /x96/xc0     <CJK>
+ <U0002992F> /x96/xc1     <CJK>
+ <U9DA5>     /x96/xc2     <CJK>
+ <U84BD>     /x96/xc3     <CJK>
+-<UE85B>     /x96/xc4     <CJK>
++<U00026E12> /x96/xc4     <CJK>
+ <U00026FDF> /x96/xc5     <CJK>
+-<UE85D>     /x96/xc6     <CJK>
++<U00026B82> /x96/xc6     <CJK>
+ <U85FC>     /x96/xc7     <CJK>
+ <U4533>     /x96/xc8     <CJK>
+ <U00026DA4> /x96/xc9     <CJK>
+@@ -2116,7 +2424,7 @@ CHARMAP
+ <U00026DF0> /x96/xcb     <CJK>
+ <U8420>     /x96/xcc     <CJK>
+ <U85EE>     /x96/xcd     <CJK>
+-<UE865>     /x96/xce     <CJK>
++<U00026E00> /x96/xce     <CJK>
+ <U000237D7> /x96/xcf     <CJK>
+ <U00026064> /x96/xd0     <CJK>
+ <U79E2>     /x96/xd1     <CJK>
+@@ -2149,7 +2457,7 @@ CHARMAP
+ <U6FD9>     /x96/xec     <CJK>
+ <U701E>     /x96/xee     <CJK>
+ <U5414>     /x96/xef     <CJK>
+-<UE887>     /x96/xf0     <CJK>
++<U000241B5> /x96/xf0     <CJK>
+ <U57BB>     /x96/xf1     <CJK>
+ <U58F3>     /x96/xf2     <CJK>
+ <U578A>     /x96/xf3     <CJK>
+@@ -2157,9 +2465,9 @@ CHARMAP
+ <U57D7>     /x96/xf5     <CJK>
+ <U7134>     /x96/xf6     <CJK>
+ <U34AF>     /x96/xf7     <CJK>
+-<UE88F>     /x96/xf8     <CJK>
++<U000241AC> /x96/xf8     <CJK>
+ <U71EB>     /x96/xf9     <CJK>
+-<UE891>     /x96/xfa     <CJK>
++<U00026C40> /x96/xfa     <CJK>
+ <U00024F97> /x96/xfb     <CJK>
+ <U000217B5> /x96/xfd     <CJK>
+ <U00028A49> /x96/xfe     <CJK>
+@@ -2174,10 +2482,10 @@ CHARMAP
+ <U93BB>     /x97/x48     <CJK>
+ <U93B8>     /x97/x49     <CJK>
+ <U000218D6> /x97/x4a     <CJK>
+-<UE8A1>     /x97/x4b     <CJK>
++<U00020F1D> /x97/x4b     <CJK>
+ <U8472>     /x97/x4c     <CJK>
+ <U00026CC0> /x97/x4d     <CJK>
+-<UE8A4>     /x97/x4e     <CJK>
++<U00021413> /x97/x4e     <CJK>
+ <U000242FA> /x97/x4f     <CJK>
+ <U00022C26> /x97/x50     <CJK>
+ <U000243C1> /x97/x51     <CJK>
+@@ -2207,8 +2515,8 @@ CHARMAP
+ <U000217D9> /x97/x69     <CJK>
+ <U00024A66> /x97/x6a     <CJK>
+ <U000203A7> /x97/x6b     <CJK>
+-<UE8C2>     /x97/x6c     <CJK>
+-<UE8C3>     /x97/x6d     <CJK>
++<U00021424> /x97/x6c     <CJK>
++<U000249E5> /x97/x6d     <CJK>
+ <U7448>     /x97/x6e     <CJK>
+ <U00024916> /x97/x6f     <CJK>
+ <U70A5>     /x97/x70     <CJK>
+@@ -2218,7 +2526,7 @@ CHARMAP
+ <U935F>     /x97/x74     <CJK>
+ <U000204FE> /x97/x75     <CJK>
+ <U9331>     /x97/x76     <CJK>
+-<UE8CD>     /x97/x77     <CJK>
++<U00028ACE> /x97/x77     <CJK>
+ <U00028A16> /x97/x78     <CJK>
+ <U9386>     /x97/x79     <CJK>
+ <U00028BE7> /x97/x7a     <CJK>
+@@ -2226,23 +2534,23 @@ CHARMAP
+ <U4935>     /x97/x7c     <CJK>
+ <U00028A82> /x97/x7d     <CJK>
+ <U716B>     /x97/x7e     <CJK>
+-<UE8D5>     /x97/xa1     <CJK>
+-<UE8D6>     /x97/xa2     <CJK>
++<U00024943> /x97/xa1     <CJK>
++<U00020CFF> /x97/xa2     <CJK>
+ <U56A4>     /x97/xa3     <CJK>
+ <U0002061A> /x97/xa4     <CJK>
+-<UE8D9>     /x97/xa5     <CJK>
+-<UE8DA>     /x97/xa6     <CJK>
++<U00020BEB> /x97/xa5     <CJK>
++<U00020CB8> /x97/xa6     <CJK>
+ <U5502>     /x97/xa7     <CJK>
+ <U79C4>     /x97/xa8     <CJK>
+ <U000217FA> /x97/xa9     <CJK>
+ <U7DFE>     /x97/xaa     <CJK>
+ <U000216C2> /x97/xab     <CJK>
+ <U00024A50> /x97/xac     <CJK>
+-<UE8E1>     /x97/xad     <CJK>
++<U00021852> /x97/xad     <CJK>
+ <U452E>     /x97/xae     <CJK>
+ <U9401>     /x97/xaf     <CJK>
+ <U370A>     /x97/xb0     <CJK>
+-<UE8E5>     /x97/xb1     <CJK>
++<U00028AC0> /x97/xb1     <CJK>
+ <U000249AD> /x97/xb2     <CJK>
+ <U59B0>     /x97/xb3     <CJK>
+ <U000218BF> /x97/xb4     <CJK>
+@@ -2267,7 +2575,7 @@ CHARMAP
+ <U0002139C> /x97/xc7     <CJK>
+ <U7175>     /x97/xc8     <CJK>
+ <U42FB>     /x97/xc9     <CJK>
+-<UE8FE>     /x97/xca     <CJK>
++<U00028218> /x97/xca     <CJK>
+ <U6E0F>     /x97/xcb     <CJK>
+ <U000290E4> /x97/xcc     <CJK>
+ <U44EB>     /x97/xcd     <CJK>
+@@ -2292,27 +2600,27 @@ CHARMAP
+ <U926E>     /x97/xe0     <CJK>
+ <U493E>     /x97/xe1     <CJK>
+ <U8F41>     /x97/xe2     <CJK>
+-<UE917>     /x97/xe3     <CJK>
+-<UE918>     /x97/xe4     <CJK>
++<U00028C1C> /x97/xe3     <CJK>
++<U00026BC0> /x97/xe4     <CJK>
+ <U5812>     /x97/xe5     <CJK>
+ <U57C8>     /x97/xe6     <CJK>
+ <U36D6>     /x97/xe7     <CJK>
+ <U00021452> /x97/xe8     <CJK>
+ <U70FE>     /x97/xe9     <CJK>
+ <U00024362> /x97/xea     <CJK>
+-<UE91F>     /x97/xeb     <CJK>
++<U00024A71> /x97/xeb     <CJK>
+ <U00022FE3> /x97/xec     <CJK>
+ <U000212B0> /x97/xed     <CJK>
+ <U000223BD> /x97/xee     <CJK>
+ <U68B9>     /x97/xef     <CJK>
+ <U6967>     /x97/xf0     <CJK>
+-<UE925>     /x97/xf1     <CJK>
++<U00021398> /x97/xf1     <CJK>
+ <U000234E5> /x97/xf2     <CJK>
+ <U00027BF4> /x97/xf3     <CJK>
+ <U000236DF> /x97/xf4     <CJK>
+ <U00028A83> /x97/xf5     <CJK>
+ <U000237D6> /x97/xf6     <CJK>
+-<UE92B>     /x97/xf7     <CJK>
++<U000233FA> /x97/xf7     <CJK>
+ <U00024C9F> /x97/xf8     <CJK>
+ <U6A1A>     /x97/xf9     <CJK>
+ <U000236AD> /x97/xfa     <CJK>
+@@ -2321,7 +2629,7 @@ CHARMAP
+ <U44DF>     /x97/xfd     <CJK>
+ <U44CE>     /x97/xfe     <CJK>
+ <U00026D26> /x98/x40     <CJK>
+-<UE934>     /x98/x41     <CJK>
++<U00026D51> /x98/x41     <CJK>
+ <U00026C82> /x98/x42     <CJK>
+ <U00026FDE> /x98/x43     <CJK>
+ <U6F17>     /x98/x44     <CJK>
+@@ -2349,7 +2657,7 @@ CHARMAP
+ <U000242A5> /x98/x5a     <CJK>
+ <U5A6E>     /x98/x5b     <CJK>
+ <U5A2B>     /x98/x5c     <CJK>
+-<UE950>     /x98/x5d     <CJK>
++<U00024293> /x98/x5d     <CJK>
+ <U6A2B>     /x98/x5e     <CJK>
+ <U00023EF9> /x98/x5f     <CJK>
+ <U00027736> /x98/x60     <CJK>
+@@ -2372,34 +2680,34 @@ CHARMAP
+ <U000243E9> /x98/x71     <CJK>
+ <U3DA5>     /x98/x72     <CJK>
+ <U6CDF>     /x98/x73     <CJK>
+-<UE967>     /x98/x74     <CJK>
++<U0002F825> /x98/x74     <CJK>
+ <U00024A4F> /x98/x75     <CJK>
+ <U7E65>     /x98/x76     <CJK>
+ <U59EB>     /x98/x77     <CJK>
+ <U5D2F>     /x98/x78     <CJK>
+ <U3DF3>     /x98/x79     <CJK>
+ <U5F5C>     /x98/x7a     <CJK>
+-<UE96E>     /x98/x7b     <CJK>
+-<UE96F>     /x98/x7c     <CJK>
++<U00024A5D> /x98/x7b     <CJK>
++<U000217DF> /x98/x7c     <CJK>
+ <U7DA4>     /x98/x7d     <CJK>
+ <U8426>     /x98/x7e     <CJK>
+ <U5485>     /x98/xa1     <CJK>
+-<UE973>     /x98/xa2     <CJK>
++<U00023AFA> /x98/xa2     <CJK>
+ <U00023300> /x98/xa3     <CJK>
+ <U00020214> /x98/xa4     <CJK>
+ <U577E>     /x98/xa5     <CJK>
+-<UE977>     /x98/xa6     <CJK>
++<U000208D5> /x98/xa6     <CJK>
+ <U00020619> /x98/xa7     <CJK>
+ <U3FE5>     /x98/xa8     <CJK>
+-<UE97A>     /x98/xa9     <CJK>
+-<UE97B>     /x98/xaa     <CJK>
++<U00021F9E> /x98/xa9     <CJK>
++<U0002A2B6> /x98/xaa     <CJK>
+ <U7003>     /x98/xab     <CJK>
+-<UE97D>     /x98/xac     <CJK>
++<U0002915B> /x98/xac     <CJK>
+ <U5D70>     /x98/xad     <CJK>
+ <U738F>     /x98/xae     <CJK>
+ <U7CD3>     /x98/xaf     <CJK>
+ <U00028A59> /x98/xb0     <CJK>
+-<UE982>     /x98/xb1     <CJK>
++<U00029420> /x98/xb1     <CJK>
+ <U4FC8>     /x98/xb2     <CJK>
+ <U7FE7>     /x98/xb3     <CJK>
+ <U72CD>     /x98/xb4     <CJK>
+@@ -2414,7 +2722,7 @@ CHARMAP
+ <U00027B18> /x98/xbd     <CJK>
+ <U906C>     /x98/xbe     <CJK>
+ <U71F5>     /x98/xbf     <CJK>
+-<UE991>     /x98/xc0     <CJK>
++<U000248F2> /x98/xc0     <CJK>
+ <U73E1>     /x98/xc1     <CJK>
+ <U81F6>     /x98/xc2     <CJK>
+ <U3ECA>     /x98/xc3     <CJK>
+@@ -2472,7 +2780,7 @@ CHARMAP
+ <U7851>     /x98/xf7     <CJK>
+ <U7866>     /x98/xf8     <CJK>
+ <U8448>     /x98/xf9     <CJK>
+-<UE9CB>     /x98/xfa     <CJK>
++<U00025535> /x98/xfa     <CJK>
+ <U7933>     /x98/xfb     <CJK>
+ <U6803>     /x98/xfc     <CJK>
+ <U7932>     /x98/xfd     <CJK>
+@@ -2694,7 +3002,7 @@ CHARMAP
+ <U4C6D>     /x9a/x79     <CJK>
+ <U9C20>     /x9a/x7a     <CJK>
+ <U376F>     /x9a/x7b     <CJK>
+-<UEAA9>     /x9a/x7c     <CJK>
++<U00021BC2> /x9a/x7c     <CJK>
+ <U9D49>     /x9a/x7d     <CJK>
+ <U9C3A>     /x9a/x7e     <CJK>
+ <U9EFE>     /x9a/xa1     <CJK>
+@@ -2716,242 +3024,242 @@ CHARMAP
+ <U9EF8>     /x9a/xb1     <CJK>
+ <U7AC8>     /x9a/xb2     <CJK>
+ <U9F44>     /x9a/xb3     <CJK>
+-<UEABF>     /x9a/xb4     <CJK>
+-<UEAC0>     /x9a/xb5     <CJK>
+-<UEAC1>     /x9a/xb6     <CJK>
++<U00020094> /x9a/xb4     <CJK>
++<U000202B7> /x9a/xb5     <CJK>
++<U000203A0> /x9a/xb6     <CJK>
+ <U691A>     /x9a/xb7     <CJK>
+ <U94C3>     /x9a/xb8     <CJK>
+ <U59AC>     /x9a/xb9     <CJK>
+-<UEAC5>     /x9a/xba     <CJK>
++<U000204D7> /x9a/xba     <CJK>
+ <U5840>     /x9a/xbb     <CJK>
+ <U94C1>     /x9a/xbc     <CJK>
+ <U37B9>     /x9a/xbd     <CJK>
+-<UEAC9>     /x9a/xbe     <CJK>
+-<UEACA>     /x9a/xbf     <CJK>
+-<UEACB>     /x9a/xc0     <CJK>
+-<UEACC>     /x9a/xc1     <CJK>
++<U000205D5> /x9a/xbe     <CJK>
++<U00020615> /x9a/xbf     <CJK>
++<U00020676> /x9a/xc0     <CJK>
++<U000216BA> /x9a/xc1     <CJK>
+ <U5757>     /x9a/xc2     <CJK>
+ <U7173>     /x9a/xc3     <CJK>
+-<UEACF>     /x9a/xc4     <CJK>
+-<UEAD0>     /x9a/xc5     <CJK>
+-<UEAD1>     /x9a/xc6     <CJK>
++<U00020AC2> /x9a/xc4     <CJK>
++<U00020ACD> /x9a/xc5     <CJK>
++<U00020BBF> /x9a/xc6     <CJK>
+ <U546A>     /x9a/xc7     <CJK>
+-<UEAD3>     /x9a/xc8     <CJK>
+-<UEAD4>     /x9a/xc9     <CJK>
++<U0002F83B> /x9a/xc8     <CJK>
++<U00020BCB> /x9a/xc9     <CJK>
+ <U549E>     /x9a/xca     <CJK>
+-<UEAD6>     /x9a/xcb     <CJK>
+-<UEAD7>     /x9a/xcc     <CJK>
++<U00020BFB> /x9a/xcb     <CJK>
++<U00020C3B> /x9a/xcc     <CJK>
+ <U00020C53> /x9a/xcd     <CJK>
+-<UEAD9>     /x9a/xce     <CJK>
+-<UEADA>     /x9a/xcf     <CJK>
++<U00020C65> /x9a/xce     <CJK>
++<U00020C7C> /x9a/xcf     <CJK>
+ <U60E7>     /x9a/xd0     <CJK>
+-<UEADC>     /x9a/xd1     <CJK>
++<U00020C8D> /x9a/xd1     <CJK>
+ <U567A>     /x9a/xd2     <CJK>
+-<UEADE>     /x9a/xd3     <CJK>
+-<UEADF>     /x9a/xd4     <CJK>
+-<UEAE0>     /x9a/xd5     <CJK>
+-<UEAE1>     /x9a/xd6     <CJK>
+-<UEAE2>     /x9a/xd7     <CJK>
+-<UEAE3>     /x9a/xd8     <CJK>
++<U00020CB5> /x9a/xd3     <CJK>
++<U00020CDD> /x9a/xd4     <CJK>
++<U00020CED> /x9a/xd5     <CJK>
++<U00020D6F> /x9a/xd6     <CJK>
++<U00020DB2> /x9a/xd7     <CJK>
++<U00020DC8> /x9a/xd8     <CJK>
+ <U6955>     /x9a/xd9     <CJK>
+ <U9C2F>     /x9a/xda     <CJK>
+ <U87A5>     /x9a/xdb     <CJK>
+-<UEAE7>     /x9a/xdc     <CJK>
++<U00020E04> /x9a/xdc     <CJK>
+ <U00020E0E> /x9a/xdd     <CJK>
+-<UEAE9>     /x9a/xde     <CJK>
+-<UEAEA>     /x9a/xdf     <CJK>
++<U00020ED7> /x9a/xde     <CJK>
++<U00020F90> /x9a/xdf     <CJK>
+ <U00020F2D> /x9a/xe0     <CJK>
+-<UEAEC>     /x9a/xe1     <CJK>
++<U00020E73> /x9a/xe1     <CJK>
+ <U5C20>     /x9a/xe2     <CJK>
+-<UEAEE>     /x9a/xe3     <CJK>
++<U00020FBC> /x9a/xe3     <CJK>
+ <U5E0B>     /x9a/xe4     <CJK>
+-<UEAF0>     /x9a/xe5     <CJK>
+-<UEAF1>     /x9a/xe6     <CJK>
++<U0002105C> /x9a/xe5     <CJK>
++<U0002104F> /x9a/xe6     <CJK>
+ <U00021076> /x9a/xe7     <CJK>
+ <U671E>     /x9a/xe8     <CJK>
+ <U0002107B> /x9a/xe9     <CJK>
+-<UEAF5>     /x9a/xea     <CJK>
+-<UEAF6>     /x9a/xeb     <CJK>
++<U00021088> /x9a/xea     <CJK>
++<U00021096> /x9a/xeb     <CJK>
+ <U3647>     /x9a/xec     <CJK>
+-<UEAF8>     /x9a/xed     <CJK>
+-<UEAF9>     /x9a/xee     <CJK>
+-<UEAFA>     /x9a/xef     <CJK>
+-<UEAFB>     /x9a/xf0     <CJK>
++<U000210BF> /x9a/xed     <CJK>
++<U000210D3> /x9a/xee     <CJK>
++<U0002112F> /x9a/xef     <CJK>
++<U0002113B> /x9a/xf0     <CJK>
+ <U5364>     /x9a/xf1     <CJK>
+ <U84AD>     /x9a/xf2     <CJK>
+ <U000212E3> /x9a/xf3     <CJK>
+-<UEAFF>     /x9a/xf4     <CJK>
+-<UEB00>     /x9a/xf5     <CJK>
++<U00021375> /x9a/xf4     <CJK>
++<U00021336> /x9a/xf5     <CJK>
+ <U8B81>     /x9a/xf6     <CJK>
+-<UEB02>     /x9a/xf7     <CJK>
+-<UEB03>     /x9a/xf8     <CJK>
+-<UEB04>     /x9a/xf9     <CJK>
+-<UEB05>     /x9a/xfa     <CJK>
++<U00021577> /x9a/xf7     <CJK>
++<U00021619> /x9a/xf8     <CJK>
++<U000217C3> /x9a/xf9     <CJK>
++<U000217C7> /x9a/xfa     <CJK>
+ <U4E78>     /x9a/xfb     <CJK>
+ <U70BB>     /x9a/xfc     <CJK>
+-<UEB08>     /x9a/xfd     <CJK>
+-<UEB09>     /x9a/xfe     <CJK>
+-<UEB0A>     /x9b/x40     <CJK>
+-<UEB0B>     /x9b/x41     <CJK>
+-<UEB0C>     /x9b/x42     <CJK>
+-<UEB0D>     /x9b/x43     <CJK>
+-<UEB0E>     /x9b/x44     <CJK>
+-<UEB0F>     /x9b/x45     <CJK>
++<U0002182D> /x9a/xfd     <CJK>
++<U0002196A> /x9a/xfe     <CJK>
++<U00021A2D> /x9b/x40     <CJK>
++<U00021A45> /x9b/x41     <CJK>
++<U00021C2A> /x9b/x42     <CJK>
++<U00021C70> /x9b/x43     <CJK>
++<U00021CAC> /x9b/x44     <CJK>
++<U00021EC8> /x9b/x45     <CJK>
+ <U62C3>     /x9b/x46     <CJK>
+ <U00021ED5> /x9b/x47     <CJK>
+-<UEB12>     /x9b/x48     <CJK>
++<U00021F15> /x9b/x48     <CJK>
+ <U7198>     /x9b/x49     <CJK>
+ <U6855>     /x9b/x4a     <CJK>
+-<UEB15>     /x9b/x4b     <CJK>
++<U00022045> /x9b/x4b     <CJK>
+ <U69E9>     /x9b/x4c     <CJK>
+ <U36C8>     /x9b/x4d     <CJK>
+ <U0002227C> /x9b/x4e     <CJK>
+-<UEB19>     /x9b/x4f     <CJK>
+-<UEB1A>     /x9b/x50     <CJK>
+-<UEB1B>     /x9b/x51     <CJK>
+-<UEB1C>     /x9b/x52     <CJK>
+-<UEB1D>     /x9b/x53     <CJK>
++<U000223D7> /x9b/x4f     <CJK>
++<U000223FA> /x9b/x50     <CJK>
++<U0002272A> /x9b/x51     <CJK>
++<U00022871> /x9b/x52     <CJK>
++<U0002294F> /x9b/x53     <CJK>
+ <U82FD>     /x9b/x54     <CJK>
+-<UEB1F>     /x9b/x55     <CJK>
+-<UEB20>     /x9b/x56     <CJK>
++<U00022967> /x9b/x55     <CJK>
++<U00022993> /x9b/x56     <CJK>
+ <U00022AD5> /x9b/x57     <CJK>
+ <U89A5>     /x9b/x58     <CJK>
+-<UEB23>     /x9b/x59     <CJK>
++<U00022AE8> /x9b/x59     <CJK>
+ <U8FA0>     /x9b/x5a     <CJK>
+-<UEB25>     /x9b/x5b     <CJK>
++<U00022B0E> /x9b/x5b     <CJK>
+ <U97B8>     /x9b/x5c     <CJK>
+-<UEB27>     /x9b/x5d     <CJK>
++<U00022B3F> /x9b/x5d     <CJK>
+ <U9847>     /x9b/x5e     <CJK>
+ <U9ABD>     /x9b/x5f     <CJK>
+-<UEB2A>     /x9b/x60     <CJK>
+-<UEB2C>     /x9b/x62     <CJK>
+-<UEB2D>     /x9b/x63     <CJK>
+-<UEB2E>     /x9b/x64     <CJK>
++<U00022C4C> /x9b/x60     <CJK>
++<U00022C88> /x9b/x62     <CJK>
++<U00022CB7> /x9b/x63     <CJK>
++<U00025BE8> /x9b/x64     <CJK>
+ <U00022D08> /x9b/x65     <CJK>
+-<UEB30>     /x9b/x66     <CJK>
+-<UEB31>     /x9b/x67     <CJK>
+-<UEB32>     /x9b/x68     <CJK>
+-<UEB33>     /x9b/x69     <CJK>
+-<UEB34>     /x9b/x6a     <CJK>
+-<UEB35>     /x9b/x6b     <CJK>
+-<UEB36>     /x9b/x6c     <CJK>
+-<UEB37>     /x9b/x6d     <CJK>
+-<UEB38>     /x9b/x6e     <CJK>
+-<UEB39>     /x9b/x6f     <CJK>
++<U00022D12> /x9b/x66     <CJK>
++<U00022DB7> /x9b/x67     <CJK>
++<U00022D95> /x9b/x68     <CJK>
++<U00022E42> /x9b/x69     <CJK>
++<U00022F74> /x9b/x6a     <CJK>
++<U00022FCC> /x9b/x6b     <CJK>
++<U00023033> /x9b/x6c     <CJK>
++<U00023066> /x9b/x6d     <CJK>
++<U0002331F> /x9b/x6e     <CJK>
++<U000233DE> /x9b/x6f     <CJK>
+ <U5FB1>     /x9b/x70     <CJK>
+ <U6648>     /x9b/x71     <CJK>
+ <U66BF>     /x9b/x72     <CJK>
+-<UEB3D>     /x9b/x73     <CJK>
+-<UEB3E>     /x9b/x74     <CJK>
+-<UEB3F>     /x9b/x75     <CJK>
++<U00027A79> /x9b/x73     <CJK>
++<U00023567> /x9b/x74     <CJK>
++<U000235F3> /x9b/x75     <CJK>
+ <U000249BA> /x9b/x77     <CJK>
+-<UEB43>     /x9b/x79     <CJK>
+-<UEB44>     /x9b/x7a     <CJK>
++<U0002361A> /x9b/x79     <CJK>
++<U00023716> /x9b/x7a     <CJK>
+ <U00020346> /x9b/x7c     <CJK>
+ <U58B5>     /x9b/x7d     <CJK>
+ <U670E>     /x9b/x7e     <CJK>
+ <U6918>     /x9b/xa1     <CJK>
+-<UEB4A>     /x9b/xa2     <CJK>
++<U00023AA7> /x9b/xa2     <CJK>
+ <U00027657> /x9b/xa3     <CJK>
+ <U00025FE2> /x9b/xa4     <CJK>
+-<UEB4D>     /x9b/xa5     <CJK>
+-<UEB4E>     /x9b/xa6     <CJK>
++<U00023E11> /x9b/xa5     <CJK>
++<U00023EB9> /x9b/xa6     <CJK>
+ <U000275FE> /x9b/xa7     <CJK>
+ <U0002209A> /x9b/xa8     <CJK>
+ <U48D0>     /x9b/xa9     <CJK>
+ <U4AB8>     /x9b/xaa     <CJK>
+-<UEB53>     /x9b/xab     <CJK>
++<U00024119> /x9b/xab     <CJK>
+ <U00028A9A> /x9b/xac     <CJK>
+-<UEB55>     /x9b/xad     <CJK>
+-<UEB56>     /x9b/xae     <CJK>
++<U000242EE> /x9b/xad     <CJK>
++<U0002430D> /x9b/xae     <CJK>
+ <U0002403B> /x9b/xaf     <CJK>
+-<UEB58>     /x9b/xb0     <CJK>
++<U00024334> /x9b/xb0     <CJK>
+ <U00024396> /x9b/xb1     <CJK>
+-<UEB5A>     /x9b/xb2     <CJK>
+-<UEB5B>     /x9b/xb3     <CJK>
++<U00024A45> /x9b/xb2     <CJK>
++<U000205CA> /x9b/xb3     <CJK>
+ <U51D2>     /x9b/xb4     <CJK>
+ <U00020611> /x9b/xb5     <CJK>
+ <U599F>     /x9b/xb6     <CJK>
+ <U00021EA8> /x9b/xb7     <CJK>
+ <U3BBE>     /x9b/xb8     <CJK>
+ <U00023CFF> /x9b/xb9     <CJK>
+-<UEB62>     /x9b/xba     <CJK>
+-<UEB63>     /x9b/xbb     <CJK>
++<U00024404> /x9b/xba     <CJK>
++<U000244D6> /x9b/xbb     <CJK>
+ <U5788>     /x9b/xbc     <CJK>
+-<UEB65>     /x9b/xbd     <CJK>
++<U00024674> /x9b/xbd     <CJK>
+ <U399B>     /x9b/xbe     <CJK>
+-<UEB67>     /x9b/xbf     <CJK>
+-<UEB68>     /x9b/xc0     <CJK>
+-<UEB69>     /x9b/xc1     <CJK>
++<U0002472F> /x9b/xbf     <CJK>
++<U000285E8> /x9b/xc0     <CJK>
++<U000299C9> /x9b/xc1     <CJK>
+ <U3762>     /x9b/xc2     <CJK>
+ <U000221C3> /x9b/xc3     <CJK>
+ <U8B5E>     /x9b/xc4     <CJK>
+ <U00028B4E> /x9b/xc5     <CJK>
+-<UEB6F>     /x9b/xc7     <CJK>
+-<UEB70>     /x9b/xc8     <CJK>
+-<UEB71>     /x9b/xc9     <CJK>
++<U00024812> /x9b/xc7     <CJK>
++<U000248FB> /x9b/xc8     <CJK>
++<U00024A15> /x9b/xc9     <CJK>
+ <U7209>     /x9b/xca     <CJK>
+-<UEB73>     /x9b/xcb     <CJK>
++<U00024AC0> /x9b/xcb     <CJK>
+ <U00020C78> /x9b/xcc     <CJK>
+ <U5965>     /x9b/xcd     <CJK>
+-<UEB76>     /x9b/xce     <CJK>
+-<UEB77>     /x9b/xcf     <CJK>
++<U00024EA5> /x9b/xce     <CJK>
++<U00024F86> /x9b/xcf     <CJK>
+ <U00020779> /x9b/xd0     <CJK>
+ <U8EDA>     /x9b/xd1     <CJK>
+-<UEB7A>     /x9b/xd2     <CJK>
++<U0002502C> /x9b/xd2     <CJK>
+ <U528F>     /x9b/xd3     <CJK>
+ <U573F>     /x9b/xd4     <CJK>
+ <U7171>     /x9b/xd5     <CJK>
+-<UEB7E>     /x9b/xd6     <CJK>
+-<UEB7F>     /x9b/xd7     <CJK>
+-<UEB80>     /x9b/xd8     <CJK>
++<U00025299> /x9b/xd6     <CJK>
++<U00025419> /x9b/xd7     <CJK>
++<U00023F4A> /x9b/xd8     <CJK>
+ <U00024AA7> /x9b/xd9     <CJK>
+ <U55BC>     /x9b/xda     <CJK>
+-<UEB83>     /x9b/xdb     <CJK>
++<U00025446> /x9b/xdb     <CJK>
+ <U0002546E> /x9b/xdc     <CJK>
+ <U00026B52> /x9b/xdd     <CJK>
+ <U3473>     /x9b/xdf     <CJK>
+-<UEB88>     /x9b/xe0     <CJK>
++<U0002553F> /x9b/xe0     <CJK>
+ <U00027632> /x9b/xe1     <CJK>
+-<UEB8A>     /x9b/xe2     <CJK>
++<U0002555E> /x9b/xe2     <CJK>
+ <U4718>     /x9b/xe3     <CJK>
+-<UEB8C>     /x9b/xe4     <CJK>
++<U00025562> /x9b/xe4     <CJK>
+ <U00025566> /x9b/xe5     <CJK>
+ <U000257C7> /x9b/xe6     <CJK>
+ <U0002493F> /x9b/xe7     <CJK>
+-<UEB90>     /x9b/xe8     <CJK>
++<U0002585D> /x9b/xe8     <CJK>
+ <U5066>     /x9b/xe9     <CJK>
+ <U34FB>     /x9b/xea     <CJK>
+-<UEB93>     /x9b/xeb     <CJK>
+-<UEB95>     /x9b/xed     <CJK>
++<U000233CC> /x9b/xeb     <CJK>
++<U00025903> /x9b/xed     <CJK>
+ <U477C>     /x9b/xee     <CJK>
+ <U00028948> /x9b/xef     <CJK>
+ <U00025AAE> /x9b/xf0     <CJK>
+-<UEB99>     /x9b/xf1     <CJK>
++<U00025B89> /x9b/xf1     <CJK>
+ <U00025C06> /x9b/xf2     <CJK>
+-<UEB9B>     /x9b/xf3     <CJK>
++<U00021D90> /x9b/xf3     <CJK>
+ <U57A1>     /x9b/xf4     <CJK>
+ <U7151>     /x9b/xf5     <CJK>
+-<UEB9F>     /x9b/xf7     <CJK>
++<U00026102> /x9b/xf7     <CJK>
+ <U00027C12> /x9b/xf8     <CJK>
+ <U9056>     /x9b/xf9     <CJK>
+-<UEBA2>     /x9b/xfa     <CJK>
++<U000261B2> /x9b/xfa     <CJK>
+ <U00024F9A> /x9b/xfb     <CJK>
+ <U8B62>     /x9b/xfc     <CJK>
+-<UEBA5>     /x9b/xfd     <CJK>
+-<UEBA6>     /x9b/xfe     <CJK>
++<U00026402> /x9b/xfd     <CJK>
++<U0002644A> /x9b/xfe     <CJK>
+ <U5D5B>     /x9c/x40     <CJK>
+ <U00026BF7> /x9c/x41     <CJK>
+-<UEBAA>     /x9c/x43     <CJK>
+-<UEBAB>     /x9c/x44     <CJK>
++<U00026484> /x9c/x43     <CJK>
++<U0002191C> /x9c/x44     <CJK>
+ <U8AEA>     /x9c/x45     <CJK>
+ <U000249F6> /x9c/x46     <CJK>
+-<UEBAE>     /x9c/x47     <CJK>
++<U00026488> /x9c/x47     <CJK>
+ <U00023FEF> /x9c/x48     <CJK>
+ <U00026512> /x9c/x49     <CJK>
+ <U4BC0>     /x9c/x4a     <CJK>
+-<UEBB2>     /x9c/x4b     <CJK>
+-<UEBB3>     /x9c/x4c     <CJK>
++<U000265BF> /x9c/x4b     <CJK>
++<U000266B5> /x9c/x4c     <CJK>
+ <U0002271B> /x9c/x4d     <CJK>
+ <U9465>     /x9c/x4e     <CJK>
+ <U000257E1> /x9c/x4f     <CJK>
+@@ -2960,68 +3268,68 @@ CHARMAP
+ <U0002F8CD> /x9c/x52     <CJK>
+ <U56B9>     /x9c/x54     <CJK>
+ <U00024521> /x9c/x55     <CJK>
+-<UEBBD>     /x9c/x56     <CJK>
++<U000266FC> /x9c/x56     <CJK>
+ <U4E6A>     /x9c/x57     <CJK>
+-<UEBBF>     /x9c/x58     <CJK>
++<U00024934> /x9c/x58     <CJK>
+ <U9656>     /x9c/x59     <CJK>
+ <U6D8F>     /x9c/x5a     <CJK>
+ <U00026CBD> /x9c/x5b     <CJK>
+ <U3618>     /x9c/x5c     <CJK>
+ <U8977>     /x9c/x5d     <CJK>
+-<UEBC5>     /x9c/x5e     <CJK>
++<U00026799> /x9c/x5e     <CJK>
+ <U0002686E> /x9c/x5f     <CJK>
+ <U00026411> /x9c/x60     <CJK>
+ <U0002685E> /x9c/x61     <CJK>
+-<UEBCA>     /x9c/x63     <CJK>
++<U000268C7> /x9c/x63     <CJK>
+ <U7B42>     /x9c/x64     <CJK>
+-<UEBCC>     /x9c/x65     <CJK>
++<U000290C0> /x9c/x65     <CJK>
+ <U00020A11> /x9c/x66     <CJK>
+-<UEBCE>     /x9c/x67     <CJK>
+-<UEBD0>     /x9c/x69     <CJK>
++<U00026926> /x9c/x67     <CJK>
++<U00026939> /x9c/x69     <CJK>
+ <U7A45>     /x9c/x6a     <CJK>
+ <U000269FA> /x9c/x6c     <CJK>
+ <U9A26>     /x9c/x6d     <CJK>
+-<UEBD5>     /x9c/x6e     <CJK>
++<U00026A2D> /x9c/x6e     <CJK>
+ <U365F>     /x9c/x6f     <CJK>
+-<UEBD7>     /x9c/x70     <CJK>
+-<UEBD8>     /x9c/x71     <CJK>
++<U00026469> /x9c/x70     <CJK>
++<U00020021> /x9c/x71     <CJK>
+ <U7983>     /x9c/x72     <CJK>
+-<UEBDA>     /x9c/x73     <CJK>
+-<UEBDB>     /x9c/x74     <CJK>
++<U00026A34> /x9c/x73     <CJK>
++<U00026B5B> /x9c/x74     <CJK>
+ <U5D2C>     /x9c/x75     <CJK>
+-<UEBDD>     /x9c/x76     <CJK>
+-<UEBDF>     /x9c/x78     <CJK>
++<U00023519> /x9c/x76     <CJK>
++<U00026B9D> /x9c/x78     <CJK>
+ <U46D0>     /x9c/x79     <CJK>
+-<UEBE1>     /x9c/x7a     <CJK>
++<U00026CA4> /x9c/x7a     <CJK>
+ <U753B>     /x9c/x7b     <CJK>
+ <U8865>     /x9c/x7c     <CJK>
+-<UEBE4>     /x9c/x7d     <CJK>
++<U00026DAE> /x9c/x7d     <CJK>
+ <U58B6>     /x9c/x7e     <CJK>
+ <U371C>     /x9c/xa1     <CJK>
+ <U0002258D> /x9c/xa2     <CJK>
+-<UEBE8>     /x9c/xa3     <CJK>
+-<UEBE9>     /x9c/xa4     <CJK>
++<U0002704B> /x9c/xa3     <CJK>
++<U000271CD> /x9c/xa4     <CJK>
+ <U3C54>     /x9c/xa5     <CJK>
+-<UEBEB>     /x9c/xa6     <CJK>
+-<UEBEC>     /x9c/xa7     <CJK>
++<U00027280> /x9c/xa6     <CJK>
++<U00027285> /x9c/xa7     <CJK>
+ <U9281>     /x9c/xa8     <CJK>
+ <U0002217A> /x9c/xa9     <CJK>
+-<UEBEF>     /x9c/xaa     <CJK>
++<U0002728B> /x9c/xaa     <CJK>
+ <U9330>     /x9c/xab     <CJK>
+ <U000272E6> /x9c/xac     <CJK>
+-<UEBF2>     /x9c/xad     <CJK>
++<U000249D0> /x9c/xad     <CJK>
+ <U6C39>     /x9c/xae     <CJK>
+ <U949F>     /x9c/xaf     <CJK>
+-<UEBF5>     /x9c/xb0     <CJK>
++<U00027450> /x9c/xb0     <CJK>
+ <U00020EF8> /x9c/xb1     <CJK>
+ <U8827>     /x9c/xb2     <CJK>
+ <U88F5>     /x9c/xb3     <CJK>
+-<UEBF9>     /x9c/xb4     <CJK>
+-<UEBFA>     /x9c/xb5     <CJK>
++<U00022926> /x9c/xb4     <CJK>
++<U00028473> /x9c/xb5     <CJK>
+ <U000217B1> /x9c/xb6     <CJK>
+ <U6EB8>     /x9c/xb7     <CJK>
+ <U00024A2A> /x9c/xb8     <CJK>
+-<UEBFE>     /x9c/xb9     <CJK>
++<U00021820> /x9c/xb9     <CJK>
+ <U39A4>     /x9c/xba     <CJK>
+ <U36B9>     /x9c/xbb     <CJK>
+ <U453F>     /x9c/xbe     <CJK>
+@@ -3029,26 +3337,26 @@ CHARMAP
+ <U00029CAD> /x9c/xc0     <CJK>
+ <U000298A4> /x9c/xc1     <CJK>
+ <U8943>     /x9c/xc2     <CJK>
+-<UEC08>     /x9c/xc3     <CJK>
+-<UEC09>     /x9c/xc4     <CJK>
++<U000277CC> /x9c/xc3     <CJK>
++<U00027858> /x9c/xc4     <CJK>
+ <U56D6>     /x9c/xc5     <CJK>
+ <U40DF>     /x9c/xc6     <CJK>
+ <U0002160A> /x9c/xc7     <CJK>
+ <U39A1>     /x9c/xc8     <CJK>
+ <U0002372F> /x9c/xc9     <CJK>
+-<UEC0F>     /x9c/xca     <CJK>
++<U000280E8> /x9c/xca     <CJK>
+ <U000213C5> /x9c/xcb     <CJK>
+ <U71AD>     /x9c/xcc     <CJK>
+ <U8366>     /x9c/xcd     <CJK>
+-<UEC13>     /x9c/xce     <CJK>
++<U000279DD> /x9c/xce     <CJK>
+ <U000291A8> /x9c/xcf     <CJK>
+ <U4CB7>     /x9c/xd1     <CJK>
+ <U000270AF> /x9c/xd2     <CJK>
+ <U000289AB> /x9c/xd3     <CJK>
+-<UEC19>     /x9c/xd4     <CJK>
+-<UEC1A>     /x9c/xd5     <CJK>
+-<UEC1B>     /x9c/xd6     <CJK>
+-<UEC1C>     /x9c/xd7     <CJK>
++<U000279FD> /x9c/xd4     <CJK>
++<U00027A0A> /x9c/xd5     <CJK>
++<U00027B0B> /x9c/xd6     <CJK>
++<U00027D66> /x9c/xd7     <CJK>
+ <U0002417A> /x9c/xd8     <CJK>
+ <U7B43>     /x9c/xd9     <CJK>
+ <U797E>     /x9c/xda     <CJK>
+@@ -3056,21 +3364,21 @@ CHARMAP
+ <U6FB5>     /x9c/xdc     <CJK>
+ <U0002A2DF> /x9c/xdd     <CJK>
+ <U6A03>     /x9c/xde     <CJK>
+-<UEC24>     /x9c/xdf     <CJK>
++<U00028318> /x9c/xdf     <CJK>
+ <U53A2>     /x9c/xe0     <CJK>
+-<UEC26>     /x9c/xe1     <CJK>
++<U00026E07> /x9c/xe1     <CJK>
+ <U93BF>     /x9c/xe2     <CJK>
+ <U6836>     /x9c/xe3     <CJK>
+ <U975D>     /x9c/xe4     <CJK>
+ <U0002816F> /x9c/xe5     <CJK>
+-<UEC2B>     /x9c/xe6     <CJK>
++<U00028023> /x9c/xe6     <CJK>
+ <U000269B5> /x9c/xe7     <CJK>
+ <U000213ED> /x9c/xe8     <CJK>
+ <U0002322F> /x9c/xe9     <CJK>
+-<UEC2F>     /x9c/xea     <CJK>
++<U00028048> /x9c/xea     <CJK>
+ <U5D85>     /x9c/xeb     <CJK>
+ <U00028C30> /x9c/xec     <CJK>
+-<UEC32>     /x9c/xed     <CJK>
++<U00028083> /x9c/xed     <CJK>
+ <U5715>     /x9c/xee     <CJK>
+ <U9823>     /x9c/xef     <CJK>
+ <U00028949> /x9c/xf0     <CJK>
+@@ -3083,74 +3391,74 @@ CHARMAP
+ <U00023F81> /x9c/xf7     <CJK>
+ <U3C11>     /x9c/xf8     <CJK>
+ <U6736>     /x9c/xf9     <CJK>
+-<UEC3F>     /x9c/xfa     <CJK>
++<U00028090> /x9c/xfa     <CJK>
+ <U000280F4> /x9c/xfb     <CJK>
+ <U0002812E> /x9c/xfc     <CJK>
+ <U00021FA1> /x9c/xfd     <CJK>
+-<UEC43>     /x9c/xfe     <CJK>
+-<UEC44>     /x9d/x40     <CJK>
+-<UEC45>     /x9d/x41     <CJK>
+-<UEC46>     /x9d/x42     <CJK>
+-<UEC47>     /x9d/x43     <CJK>
+-<UEC48>     /x9d/x44     <CJK>
+-<UEC49>     /x9d/x45     <CJK>
++<U0002814F> /x9c/xfe     <CJK>
++<U00028189> /x9d/x40     <CJK>
++<U000281AF> /x9d/x41     <CJK>
++<U0002821A> /x9d/x42     <CJK>
++<U00028306> /x9d/x43     <CJK>
++<U0002832F> /x9d/x44     <CJK>
++<U0002838A> /x9d/x45     <CJK>
+ <U35CA>     /x9d/x46     <CJK>
+-<UEC4B>     /x9d/x47     <CJK>
++<U00028468> /x9d/x47     <CJK>
+ <U000286AA> /x9d/x48     <CJK>
+ <U48FA>     /x9d/x49     <CJK>
+ <U63E6>     /x9d/x4a     <CJK>
+-<UEC4F>     /x9d/x4b     <CJK>
++<U00028956> /x9d/x4b     <CJK>
+ <U7808>     /x9d/x4c     <CJK>
+ <U9255>     /x9d/x4d     <CJK>
+-<UEC52>     /x9d/x4e     <CJK>
++<U000289B8> /x9d/x4e     <CJK>
+ <U43F2>     /x9d/x4f     <CJK>
+-<UEC54>     /x9d/x50     <CJK>
++<U000289E7> /x9d/x50     <CJK>
+ <U43DF>     /x9d/x51     <CJK>
+-<UEC56>     /x9d/x52     <CJK>
+-<UEC57>     /x9d/x53     <CJK>
+-<UEC58>     /x9d/x54     <CJK>
++<U000289E8> /x9d/x52     <CJK>
++<U00028B46> /x9d/x53     <CJK>
++<U00028BD4> /x9d/x54     <CJK>
+ <U59F8>     /x9d/x55     <CJK>
+-<UEC5A>     /x9d/x56     <CJK>
+-<UEC5C>     /x9d/x58     <CJK>
+-<UEC5D>     /x9d/x59     <CJK>
++<U00028C09> /x9d/x56     <CJK>
++<U00028FC5> /x9d/x58     <CJK>
++<U000290EC> /x9d/x59     <CJK>
+ <U00029110> /x9d/x5b     <CJK>
+-<UEC60>     /x9d/x5c     <CJK>
++<U0002913C> /x9d/x5c     <CJK>
+ <U3DF7>     /x9d/x5d     <CJK>
+-<UEC62>     /x9d/x5e     <CJK>
+-<UEC63>     /x9d/x5f     <CJK>
++<U0002915E> /x9d/x5e     <CJK>
++<U00024ACA> /x9d/x5f     <CJK>
+ <U8FD0>     /x9d/x60     <CJK>
+ <U728F>     /x9d/x61     <CJK>
+ <U568B>     /x9d/x62     <CJK>
+-<UEC67>     /x9d/x63     <CJK>
++<U000294E7> /x9d/x63     <CJK>
+ <U000295E9> /x9d/x64     <CJK>
+-<UEC69>     /x9d/x65     <CJK>
+-<UEC6A>     /x9d/x66     <CJK>
+-<UEC6B>     /x9d/x67     <CJK>
+-<UEC6C>     /x9d/x68     <CJK>
+-<UEC6D>     /x9d/x69     <CJK>
++<U000295B0> /x9d/x65     <CJK>
++<U000295B8> /x9d/x66     <CJK>
++<U00029732> /x9d/x67     <CJK>
++<U000298D1> /x9d/x68     <CJK>
++<U00029949> /x9d/x69     <CJK>
+ <U0002996A> /x9d/x6a     <CJK>
+-<UEC6F>     /x9d/x6b     <CJK>
+-<UEC70>     /x9d/x6c     <CJK>
++<U000299C3> /x9d/x6b     <CJK>
++<U00029A28> /x9d/x6c     <CJK>
+ <U00029B0E> /x9d/x6d     <CJK>
+-<UEC72>     /x9d/x6e     <CJK>
+-<UEC73>     /x9d/x6f     <CJK>
++<U00029D5A> /x9d/x6e     <CJK>
++<U00029D9B> /x9d/x6f     <CJK>
+ <U7E9F>     /x9d/x70     <CJK>
+-<UEC75>     /x9d/x71     <CJK>
++<U00029EF8> /x9d/x71     <CJK>
+ <U00029F23> /x9d/x72     <CJK>
+ <U4CA4>     /x9d/x73     <CJK>
+ <U9547>     /x9d/x74     <CJK>
+-<UEC79>     /x9d/x75     <CJK>
++<U0002A293> /x9d/x75     <CJK>
+ <U71A2>     /x9d/x76     <CJK>
+-<UEC7B>     /x9d/x77     <CJK>
++<U0002A2FF> /x9d/x77     <CJK>
+ <U4D91>     /x9d/x78     <CJK>
+ <U9012>     /x9d/x79     <CJK>
+-<UEC7E>     /x9d/x7a     <CJK>
++<U0002A5CB> /x9d/x7a     <CJK>
+ <U4D9C>     /x9d/x7b     <CJK>
+ <U00020C9C> /x9d/x7c     <CJK>
+ <U8FBE>     /x9d/x7d     <CJK>
+ <U55C1>     /x9d/x7e     <CJK>
+ <U8FBA>     /x9d/xa1     <CJK>
+-<UEC84>     /x9d/xa2     <CJK>
++<U000224B0> /x9d/xa2     <CJK>
+ <U8FB9>     /x9d/xa3     <CJK>
+ <U00024A93> /x9d/xa4     <CJK>
+ <U4509>     /x9d/xa5     <CJK>
+@@ -3160,14 +3468,14 @@ CHARMAP
+ <U4EEA>     /x9d/xa9     <CJK>
+ <U34E4>     /x9d/xaa     <CJK>
+ <U00028B2C> /x9d/xab     <CJK>
+-<UEC8E>     /x9d/xac     <CJK>
++<U0002789D> /x9d/xac     <CJK>
+ <U373A>     /x9d/xad     <CJK>
+ <U8E80>     /x9d/xae     <CJK>
+ <U000217F5> /x9d/xaf     <CJK>
+-<UEC92>     /x9d/xb0     <CJK>
++<U00028024> /x9d/xb0     <CJK>
+ <U00028B6C> /x9d/xb1     <CJK>
+ <U00028B99> /x9d/xb2     <CJK>
+-<UEC95>     /x9d/xb3     <CJK>
++<U00027A3E> /x9d/xb3     <CJK>
+ <U000266AF> /x9d/xb4     <CJK>
+ <U3DEB>     /x9d/xb5     <CJK>
+ <U00027655> /x9d/xb6     <CJK>
+@@ -3192,14 +3500,14 @@ CHARMAP
+ <U541A>     /x9d/xca     <CJK>
+ <U00025311> /x9d/xcb     <CJK>
+ <U3DC6>     /x9d/xcc     <CJK>
+-<UECAF>     /x9d/xcd     <CJK>
++<U00029D98> /x9d/xcd     <CJK>
+ <U4C7D>     /x9d/xce     <CJK>
+ <U5622>     /x9d/xcf     <CJK>
+ <U561E>     /x9d/xd0     <CJK>
+ <U7F49>     /x9d/xd1     <CJK>
+ <U00025ED8> /x9d/xd2     <CJK>
+ <U5975>     /x9d/xd3     <CJK>
+-<UECB6>     /x9d/xd4     <CJK>
++<U00023D40> /x9d/xd4     <CJK>
+ <U8770>     /x9d/xd5     <CJK>
+ <U4E1C>     /x9d/xd6     <CJK>
+ <U00020FEA> /x9d/xd7     <CJK>
+@@ -3224,7 +3532,7 @@ CHARMAP
+ <U7962>     /x9d/xea     <CJK>
+ <U5643>     /x9d/xeb     <CJK>
+ <U5416>     /x9d/xec     <CJK>
+-<UECCF>     /x9d/xed     <CJK>
++<U00020E9D> /x9d/xed     <CJK>
+ <U35CE>     /x9d/xee     <CJK>
+ <U5605>     /x9d/xef     <CJK>
+ <U55F1>     /x9d/xf0     <CJK>
+@@ -3237,12 +3545,12 @@ CHARMAP
+ <U5497>     /x9d/xf7     <CJK>
+ <U5572>     /x9d/xf8     <CJK>
+ <U00020C41> /x9d/xf9     <CJK>
+-<UECDC>     /x9d/xfa     <CJK>
++<U00020C96> /x9d/xfa     <CJK>
+ <U5ED0>     /x9d/xfb     <CJK>
+ <U00025148> /x9d/xfc     <CJK>
+ <U00020E76> /x9d/xfd     <CJK>
+-<UECE0>     /x9d/xfe     <CJK>
+-<UECE1>     /x9e/x40     <CJK>
++<U00022C62> /x9d/xfe     <CJK>
++<U00020EA2> /x9e/x40     <CJK>
+ <U9EAB>     /x9e/x41     <CJK>
+ <U7D5A>     /x9e/x42     <CJK>
+ <U55DE>     /x9e/x43     <CJK>
+@@ -3257,9 +3565,9 @@ CHARMAP
+ <U63B9>     /x9e/x4c     <CJK>
+ <U63FE>     /x9e/x4d     <CJK>
+ <U5569>     /x9e/x4e     <CJK>
+-<UECF0>     /x9e/x4f     <CJK>
++<U00022B43> /x9e/x4f     <CJK>
+ <U9C72>     /x9e/x50     <CJK>
+-<UECF2>     /x9e/x51     <CJK>
++<U00022EB3> /x9e/x51     <CJK>
+ <U519A>     /x9e/x52     <CJK>
+ <U34DF>     /x9e/x53     <CJK>
+ <U00020DA7> /x9e/x54     <CJK>
+@@ -3269,7 +3577,7 @@ CHARMAP
+ <U5513>     /x9e/x58     <CJK>
+ <U7666>     /x9e/x59     <CJK>
+ <U8E2D>     /x9e/x5a     <CJK>
+-<UECFC>     /x9e/x5b     <CJK>
++<U0002688A> /x9e/x5b     <CJK>
+ <U75B1>     /x9e/x5c     <CJK>
+ <U80B6>     /x9e/x5d     <CJK>
+ <U8804>     /x9e/x5e     <CJK>
+@@ -3290,7 +3598,7 @@ CHARMAP
+ <U000241A3> /x9e/x6d     <CJK>
+ <U00027D73> /x9e/x6e     <CJK>
+ <U00026ED0> /x9e/x6f     <CJK>
+-<UED11>     /x9e/x70     <CJK>
++<U000272B6> /x9e/x70     <CJK>
+ <U9170>     /x9e/x71     <CJK>
+ <U000211D9> /x9e/x72     <CJK>
+ <U9208>     /x9e/x73     <CJK>
+@@ -3302,20 +3610,20 @@ CHARMAP
+ <U00021CA2> /x9e/x79     <CJK>
+ <U474E>     /x9e/x7a     <CJK>
+ <U00024FC2> /x9e/x7b     <CJK>
+-<UED1D>     /x9e/x7c     <CJK>
++<U00027FF9> /x9e/x7c     <CJK>
+ <U00020FEB> /x9e/x7d     <CJK>
+ <U40FA>     /x9e/x7e     <CJK>
+ <U9C5D>     /x9e/xa1     <CJK>
+ <U651F>     /x9e/xa2     <CJK>
+ <U00022DA0> /x9e/xa3     <CJK>
+ <U48F3>     /x9e/xa4     <CJK>
+-<UED24>     /x9e/xa5     <CJK>
++<U000247E0> /x9e/xa5     <CJK>
+ <U00029D7C> /x9e/xa6     <CJK>
+ <U00020FEC> /x9e/xa7     <CJK>
+ <U00020E0A> /x9e/xa8     <CJK>
+-<UED29>     /x9e/xaa     <CJK>
++<U000275A3> /x9e/xaa     <CJK>
+ <U00020FED> /x9e/xab     <CJK>
+-<UED2C>     /x9e/xad     <CJK>
++<U00026048> /x9e/xad     <CJK>
+ <U00021187> /x9e/xae     <CJK>
+ <U71A3>     /x9e/xaf     <CJK>
+ <U7E8E>     /x9e/xb0     <CJK>
+@@ -3330,13 +3638,13 @@ CHARMAP
+ <U39DC>     /x9e/xb9     <CJK>
+ <U537D>     /x9e/xba     <CJK>
+ <U36A5>     /x9e/xbb     <CJK>
+-<UED3B>     /x9e/xbc     <CJK>
++<U00024618> /x9e/xbc     <CJK>
+ <U589A>     /x9e/xbd     <CJK>
+ <U00024B6E> /x9e/xbe     <CJK>
+ <U822D>     /x9e/xbf     <CJK>
+ <U544B>     /x9e/xc0     <CJK>
+ <U57AA>     /x9e/xc1     <CJK>
+-<UED41>     /x9e/xc2     <CJK>
++<U00025A95> /x9e/xc2     <CJK>
+ <U00020979> /x9e/xc3     <CJK>
+ <U3A52>     /x9e/xc5     <CJK>
+ <U00022465> /x9e/xc6     <CJK>
+@@ -3349,10 +3657,10 @@ CHARMAP
+ <U4C5B>     /x9e/xcd     <CJK>
+ <U00024FA9> /x9e/xce     <CJK>
+ <U0002959E> /x9e/xcf     <CJK>
+-<UED4F>     /x9e/xd0     <CJK>
++<U00029FDE> /x9e/xd0     <CJK>
+ <U845C>     /x9e/xd1     <CJK>
+ <U00023DB6> /x9e/xd2     <CJK>
+-<UED52>     /x9e/xd3     <CJK>
++<U000272B2> /x9e/xd3     <CJK>
+ <U000267B3> /x9e/xd4     <CJK>
+ <U00023720> /x9e/xd5     <CJK>
+ <U632E>     /x9e/xd6     <CJK>
+@@ -3365,19 +3673,19 @@ CHARMAP
+ <U3E74>     /x9e/xdd     <CJK>
+ <U367A>     /x9e/xde     <CJK>
+ <U45E9>     /x9e/xdf     <CJK>
+-<UED5F>     /x9e/xe0     <CJK>
++<U0002048E> /x9e/xe0     <CJK>
+ <U7640>     /x9e/xe1     <CJK>
+ <U5AF0>     /x9e/xe2     <CJK>
+ <U00020EB6> /x9e/xe3     <CJK>
+ <U787A>     /x9e/xe4     <CJK>
+-<U47B6>     /x9e/xe5     <CJK>
++<U00027F2E> /x9e/xe5     <CJK>
+ <U58A7>     /x9e/xe6     <CJK>
+ <U40BF>     /x9e/xe7     <CJK>
+ <U567C>     /x9e/xe8     <CJK>
+ <U9B8B>     /x9e/xe9     <CJK>
+ <U5D74>     /x9e/xea     <CJK>
+ <U7654>     /x9e/xeb     <CJK>
+-<UED6B>     /x9e/xec     <CJK>
++<U0002A434> /x9e/xec     <CJK>
+ <U9E85>     /x9e/xed     <CJK>
+ <U4CE1>     /x9e/xee     <CJK>
+ <U37FB>     /x9e/xf0     <CJK>
+@@ -3388,7 +3696,7 @@ CHARMAP
+ <U000212A9> /x9e/xf6     <CJK>
+ <U57A7>     /x9e/xf7     <CJK>
+ <U00024963> /x9e/xf8     <CJK>
+-<UED78>     /x9e/xf9     <CJK>
++<U00029E06> /x9e/xf9     <CJK>
+ <U5234>     /x9e/xfa     <CJK>
+ <U000270AE> /x9e/xfb     <CJK>
+ <U35AD>     /x9e/xfc     <CJK>
+@@ -3399,16 +3707,16 @@ CHARMAP
+ <U0002176C> /x9f/x43     <CJK>
+ <U5C53>     /x9f/x44     <CJK>
+ <U64D3>     /x9f/x45     <CJK>
+-<UED84>     /x9f/x46     <CJK>
+-<UED85>     /x9f/x47     <CJK>
++<U000294D0> /x9f/x46     <CJK>
++<U00026335> /x9f/x47     <CJK>
+ <U00027164> /x9f/x48     <CJK>
+ <U86AD>     /x9f/x49     <CJK>
+-<UED88>     /x9f/x4a     <CJK>
++<U00020D28> /x9f/x4a     <CJK>
+ <U00026D22> /x9f/x4b     <CJK>
+ <U00024AE2> /x9f/x4c     <CJK>
+-<UED8B>     /x9f/x4d     <CJK>
++<U00020D71> /x9f/x4d     <CJK>
+ <U51FE>     /x9f/x4f     <CJK>
+-<UED8E>     /x9f/x50     <CJK>
++<U00021F0F> /x9f/x50     <CJK>
+ <U5D8E>     /x9f/x51     <CJK>
+ <U9703>     /x9f/x52     <CJK>
+ <U00021DD1> /x9f/x53     <CJK>
+@@ -3469,7 +3777,7 @@ CHARMAP
+ <U9681>     /x9f/xaf     <CJK>
+ <U915C>     /x9f/xb0     <CJK>
+ <U9151>     /x9f/xb2     <CJK>
+-<UEDCF>     /x9f/xb3     <CJK>
++<U00028E97> /x9f/xb3     <CJK>
+ <U637F>     /x9f/xb4     <CJK>
+ <U00026D23> /x9f/xb5     <CJK>
+ <U6ACA>     /x9f/xb6     <CJK>
+@@ -3480,7 +3788,7 @@ CHARMAP
+ <U000203FC> /x9f/xbb     <CJK>
+ <U734F>     /x9f/xbc     <CJK>
+ <U7C70>     /x9f/xbd     <CJK>
+-<UEDDA>     /x9f/xbe     <CJK>
++<U00025C21> /x9f/xbe     <CJK>
+ <U00023CFD> /x9f/xbf     <CJK>
+ <U00024919> /x9f/xc1     <CJK>
+ <U76D6>     /x9f/xc2     <CJK>
+@@ -3496,7 +3804,7 @@ CHARMAP
+ <U5DF5>     /x9f/xce     <CJK>
+ <U4ECE>     /x9f/xcf     <CJK>
+ <U6C31>     /x9f/xd0     <CJK>
+-<UEDED>     /x9f/xd1     <CJK>
++<U000201F2> /x9f/xd1     <CJK>
+ <U4F39>     /x9f/xd2     <CJK>
+ <U549C>     /x9f/xd3     <CJK>
+ <U54DA>     /x9f/xd4     <CJK>
+@@ -3519,7 +3827,7 @@ CHARMAP
+ <U8818>     /x9f/xe8     <CJK>
+ <U7F78>     /x9f/xe9     <CJK>
+ <U5620>     /x9f/xeb     <CJK>
+-<UEE08>     /x9f/xec     <CJK>
++<U0002A64A> /x9f/xec     <CJK>
+ <U8E77>     /x9f/xed     <CJK>
+ <U9F53>     /x9f/xee     <CJK>
+ <U8DD4>     /x9f/xf0     <CJK>
+@@ -3596,7 +3904,7 @@ CHARMAP
+ <U5D57>     /xa0/xa1     <CJK>
+ <U00028BC2> /xa0/xa2     <CJK>
+ <U8FDA>     /xa0/xa3     <CJK>
+-<UEE5D>     /xa0/xa4     <CJK>
++<U00028E39> /xa0/xa4     <CJK>
+ <U50D9>     /xa0/xa6     <CJK>
+ <U00021D46> /xa0/xa7     <CJK>
+ <U7906>     /xa0/xa8     <CJK>
+@@ -3606,7 +3914,7 @@ CHARMAP
+ <U4065>     /xa0/xac     <CJK>
+ <U77FE>     /xa0/xae     <CJK>
+ <U7CC2>     /xa0/xb0     <CJK>
+-<UEE6A>     /xa0/xb1     <CJK>
++<U00025F1A> /xa0/xb1     <CJK>
+ <U7CDA>     /xa0/xb2     <CJK>
+ <U7A2D>     /xa0/xb3     <CJK>
+ <U8066>     /xa0/xb4     <CJK>
+@@ -3660,7 +3968,7 @@ CHARMAP
+ <U00023CC7> /xa0/xe9     <CJK>
+ <U00025ED7> /xa0/xea     <CJK>
+ <U00027656> /xa0/xeb     <CJK>
+-<UEEA5>     /xa0/xec     <CJK>
++<U00025531> /xa0/xec     <CJK>
+ <U00021944> /xa0/xed     <CJK>
+ <U000212FE> /xa0/xee     <CJK>
+ <U00029903> /xa0/xef     <CJK>
+@@ -3671,14 +3979,14 @@ CHARMAP
+ <U00028A0F> /xa0/xf4     <CJK>
+ <U00023677> /xa0/xf5     <CJK>
+ <U000200EE> /xa0/xf6     <CJK>
+-<UEEB0>     /xa0/xf7     <CJK>
++<U00026846> /xa0/xf7     <CJK>
+ <U00024F0E> /xa0/xf8     <CJK>
+ <U4562>     /xa0/xf9     <CJK>
+ <U5B1F>     /xa0/xfa     <CJK>
+-<UEEB4>     /xa0/xfb     <CJK>
++<U0002634C> /xa0/xfb     <CJK>
+ <U9F50>     /xa0/xfc     <CJK>
+ <U9EA6>     /xa0/xfd     <CJK>
+-<UEEB7>     /xa0/xfe     <CJK>
++<U0002626B> /xa0/xfe     <CJK>
+ <U3000>     /xa1/x40     IDEOGRAPHIC SPACE
+ <UFF0C>     /xa1/x41     FULLWIDTH COMMA
+ <U3001>     /xa1/x42     IDEOGRAPHIC COMMA
+@@ -9783,16 +10091,16 @@ CHARMAP
+ <U21E7>     /xc8/x76     UPWARDS WHITE ARROW
+ <U21B8>     /xc8/x77     NORTH WEST ARROW TO LONG BAR
+ <U21B9>     /xc8/x78     LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+-<UF7E5>     /xc8/x79     <CJK>
+-<UF7E6>     /xc8/x7a     <CJK>
++<U31CF>     /xc8/x79     <CJK>
++<U000200CC> /xc8/x7a     <CJK>
+ <U4E5A>     /xc8/x7b     <CJK>
+-<UF7E8>     /xc8/x7c     <CJK>
++<U0002008A> /xc8/x7c     <CJK>
+ <U5202>     /xc8/x7d     <CJK>
+-<UF7EA>     /xc8/x7e     <CJK>
+-<UF7EB>     /xc8/xa1     <CJK>
++<U4491>     /xc8/x7e     <CJK>
++<U9FB0>     /xc8/xa1     <CJK>
+ <U5188>     /xc8/xa2     <CJK>
+-<UF7ED>     /xc8/xa3     <CJK>
+-<UF7EE>     /xc8/xa4     <CJK>
++<U9FB1>     /xc8/xa3     <CJK>
++<U00027607> /xc8/xa4     <CJK>
+ <UFFE2>     /xc8/xcd     FULLWIDTH NOT SIGN
+ <UFFE4>     /xc8/xce     FULLWIDTH BROKEN BAR
+ <UFF07>     /xc8/xcf     FULLWIDTH APOSTROPHE
+@@ -17536,7 +17844,7 @@ CHARMAP
+ <U00020547> /xfa/x40     <CJK>
+ <U92DB>     /xfa/x41     <CJK>
+ <U000205DF> /xfa/x42     <CJK>
+-<UE003>     /xfa/x43     <CJK>
++<U00023FC5> /xfa/x43     <CJK>
+ <U854C>     /xfa/x44     <CJK>
+ <U42B5>     /xfa/x45     <CJK>
+ <U73EF>     /xfa/x46     <CJK>
+@@ -17557,10 +17865,10 @@ CHARMAP
+ <U00026BB3> /xfa/x55     <CJK>
+ <U00021305> /xfa/x56     <CJK>
+ <U4FAB>     /xfa/x57     <CJK>
+-<UE018>     /xfa/x58     <CJK>
++<U000224ED> /xfa/x58     <CJK>
+ <U5008>     /xfa/x59     <CJK>
+ <U00026D29> /xfa/x5a     <CJK>
+-<UE01B>     /xfa/x5b     <CJK>
++<U00027A84> /xfa/x5b     <CJK>
+ <U00023600> /xfa/x5c     <CJK>
+ <U00024AB1> /xfa/x5d     <CJK>
+ <U00022513> /xfa/x5e     <CJK>
+@@ -17576,7 +17884,7 @@ CHARMAP
+ <U986C>     /xfa/x6a     <CJK>
+ <U3743>     /xfa/x6b     <CJK>
+ <U8416>     /xfa/x6c     <CJK>
+-<UE02D>     /xfa/x6d     <CJK>
++<U000249A4> /xfa/x6d     <CJK>
+ <U00020487> /xfa/x6e     <CJK>
+ <U5160>     /xfa/x6f     <CJK>
+ <U000233B4> /xfa/x70     <CJK>
+@@ -17587,7 +17895,7 @@ CHARMAP
+ <U00022530> /xfa/x75     <CJK>
+ <U0002058E> /xfa/x76     <CJK>
+ <U00023233> /xfa/x77     <CJK>
+-<UE038>     /xfa/x78     <CJK>
++<U00021983> /xfa/x78     <CJK>
+ <U5B82>     /xfa/x79     <CJK>
+ <U877D>     /xfa/x7a     <CJK>
+ <U000205B3> /xfa/x7b     <CJK>
+@@ -17607,7 +17915,7 @@ CHARMAP
+ <U51ED>     /xfa/xab     <CJK>
+ <U83CD>     /xfa/xac     <CJK>
+ <U693E>     /xfa/xad     <CJK>
+-<UE04C>     /xfa/xae     <CJK>
++<U0002372D> /xfa/xae     <CJK>
+ <U5F7B>     /xfa/xaf     <CJK>
+ <U520B>     /xfa/xb0     <CJK>
+ <U5226>     /xfa/xb1     <CJK>
+@@ -17621,7 +17929,7 @@ CHARMAP
+ <U8542>     /xfa/xb9     <CJK>
+ <U52E0>     /xfa/xba     <CJK>
+ <U860D>     /xfa/xbb     <CJK>
+-<UE05A>     /xfa/xbc     <CJK>
++<U00026B13> /xfa/xbc     <CJK>
+ <U00028ADE> /xfa/xbe     <CJK>
+ <U5549>     /xfa/xbf     <CJK>
+ <U6ED9>     /xfa/xc0     <CJK>
+@@ -17676,13 +17984,13 @@ CHARMAP
+ <U6D5B>     /xfa/xf3     <CJK>
+ <U546D>     /xfa/xf4     <CJK>
+ <U00026B53> /xfa/xf5     <CJK>
+-<UE094>     /xfa/xf6     <CJK>
++<U00020D74> /xfa/xf6     <CJK>
+ <U555D>     /xfa/xf7     <CJK>
+ <U548F>     /xfa/xf8     <CJK>
+ <U54A4>     /xfa/xf9     <CJK>
+ <U47A6>     /xfa/xfa     <CJK>
+-<UE099>     /xfa/xfb     <CJK>
+-<UE09A>     /xfa/xfc     <CJK>
++<U0002170D> /xfa/xfb     <CJK>
++<U00020EDD> /xfa/xfc     <CJK>
+ <U3DB4>     /xfa/xfd     <CJK>
+ <U00020D4D> /xfa/xfe     <CJK>
+ <U000289BC> /xfb/x40     <CJK>
+@@ -17724,7 +18032,7 @@ CHARMAP
+ <U36B1>     /xfb/x65     <CJK>
+ <U00026C7E> /xfb/x66     <CJK>
+ <U57E6>     /xfb/x67     <CJK>
+-<UE0C5>     /xfb/x68     <CJK>
++<U00021416> /xfb/x68     <CJK>
+ <U5803>     /xfb/x69     <CJK>
+ <U00021454> /xfb/x6a     <CJK>
+ <U00024363> /xfb/x6b     <CJK>
+@@ -17735,7 +18043,7 @@ CHARMAP
+ <U3561>     /xfb/x70     <CJK>
+ <U58E0>     /xfb/x71     <CJK>
+ <U58DC>     /xfb/x72     <CJK>
+-<UE0D0>     /xfb/x73     <CJK>
++<U0002123C> /xfb/x73     <CJK>
+ <U58FB>     /xfb/x74     <CJK>
+ <U5BFF>     /xfb/x75     <CJK>
+ <U5743>     /xfb/x76     <CJK>
+@@ -17769,17 +18077,17 @@ CHARMAP
+ <U5AAB>     /xfb/xb4     <CJK>
+ <U5A63>     /xfb/xb5     <CJK>
+ <U36E6>     /xfb/xb6     <CJK>
+-<UE0F2>     /xfb/xb7     <CJK>
++<U000249A9> /xfb/xb7     <CJK>
+ <U3708>     /xfb/xb9     <CJK>
+ <U5A96>     /xfb/xba     <CJK>
+ <U7465>     /xfb/xbb     <CJK>
+ <U5AD3>     /xfb/xbc     <CJK>
+ <U00026FA1> /xfb/xbd     <CJK>
+-<UE0F9>     /xfb/xbe     <CJK>
++<U00022554> /xfb/xbe     <CJK>
+ <U3D85>     /xfb/xbf     <CJK>
+ <U00021911> /xfb/xc0     <CJK>
+ <U3732>     /xfb/xc1     <CJK>
+-<UE0FD>     /xfb/xc2     <CJK>
++<U000216B8> /xfb/xc2     <CJK>
+ <U5E83>     /xfb/xc3     <CJK>
+ <U52D0>     /xfb/xc4     <CJK>
+ <U5B76>     /xfb/xc5     <CJK>
+@@ -17788,11 +18096,11 @@ CHARMAP
+ <U00027A0E> /xfb/xc8     <CJK>
+ <U4004>     /xfb/xc9     <CJK>
+ <U485D>     /xfb/xca     <CJK>
+-<UE106>     /xfb/xcb     <CJK>
++<U00020204> /xfb/xcb     <CJK>
+ <U5BD5>     /xfb/xcc     <CJK>
+ <U6160>     /xfb/xcd     <CJK>
+-<UE109>     /xfb/xce     <CJK>
+-<UE10A>     /xfb/xcf     <CJK>
++<U00021A34> /xfb/xce     <CJK>
++<U000259CC> /xfb/xcf     <CJK>
+ <U000205A5> /xfb/xd0     <CJK>
+ <U5BF3>     /xfb/xd1     <CJK>
+ <U5B9D>     /xfb/xd2     <CJK>
+@@ -17829,7 +18137,7 @@ CHARMAP
+ <U5E2E>     /xfb/xf1     <CJK>
+ <U6A8A>     /xfb/xf2     <CJK>
+ <U5E7A>     /xfb/xf4     <CJK>
+-<UE130>     /xfb/xf5     <CJK>
++<U000244BC> /xfb/xf5     <CJK>
+ <U00020CD3> /xfb/xf6     <CJK>
+ <U53A6>     /xfb/xf7     <CJK>
+ <U4EB7>     /xfb/xf8     <CJK>
+@@ -17859,11 +18167,11 @@ CHARMAP
+ <U00026E6E> /xfc/x53     <CJK>
+ <U5F72>     /xfc/x54     <CJK>
+ <U9340>     /xfc/x55     <CJK>
+-<UE150>     /xfc/x56     <CJK>
++<U00028A36> /xfc/x56     <CJK>
+ <U5FA7>     /xfc/x57     <CJK>
+ <U5DB6>     /xfc/x58     <CJK>
+ <U3D5F>     /xfc/x59     <CJK>
+-<UE154>     /xfc/x5a     <CJK>
++<U00025250> /xfc/x5a     <CJK>
+ <U00021F6A> /xfc/x5b     <CJK>
+ <U000270F8> /xfc/x5c     <CJK>
+ <U00022668> /xfc/x5d     <CJK>
+@@ -17872,7 +18180,7 @@ CHARMAP
+ <U00028A29> /xfc/x60     <CJK>
+ <U6031>     /xfc/x61     <CJK>
+ <U6685>     /xfc/x62     <CJK>
+-<UE15D>     /xfc/x63     <CJK>
++<U00021877> /xfc/x63     <CJK>
+ <U3963>     /xfc/x64     <CJK>
+ <U3DC7>     /xfc/x65     <CJK>
+ <U3639>     /xfc/x66     <CJK>
+@@ -17882,20 +18190,20 @@ CHARMAP
+ <U3E40>     /xfc/x6a     <CJK>
+ <U609E>     /xfc/x6b     <CJK>
+ <U60B3>     /xfc/x6d     <CJK>
+-<UE168>     /xfc/x6e     <CJK>
++<U00024982> /xfc/x6e     <CJK>
+ <U0002498F> /xfc/x6f     <CJK>
+-<UE16A>     /xfc/x70     <CJK>
++<U00027A53> /xfc/x70     <CJK>
+ <U74A4>     /xfc/x71     <CJK>
+ <U50E1>     /xfc/x72     <CJK>
+ <U5AA0>     /xfc/x73     <CJK>
+ <U6164>     /xfc/x74     <CJK>
+ <U8424>     /xfc/x75     <CJK>
+ <U6142>     /xfc/x76     <CJK>
+-<UE171>     /xfc/x77     <CJK>
++<U0002F8A6> /xfc/x77     <CJK>
+ <U00026ED2> /xfc/x78     <CJK>
+ <U6181>     /xfc/x79     <CJK>
+ <U51F4>     /xfc/x7a     <CJK>
+-<UE175>     /xfc/x7b     <CJK>
++<U00020656> /xfc/x7b     <CJK>
+ <U6187>     /xfc/x7c     <CJK>
+ <U5BAA>     /xfc/x7d     <CJK>
+ <U00023FB7> /xfc/x7e     <CJK>
+@@ -17921,7 +18229,7 @@ CHARMAP
+ <U3A17>     /xfc/xb4     <CJK>
+ <U6438>     /xfc/xb5     <CJK>
+ <U63F8>     /xfc/xb6     <CJK>
+-<UE18F>     /xfc/xb7     <CJK>
++<U0002138E> /xfc/xb7     <CJK>
+ <U000217FC> /xfc/xb8     <CJK>
+ <U6F8A>     /xfc/xba     <CJK>
+ <U00022E36> /xfc/xbb     <CJK>
+@@ -17963,7 +18271,7 @@ CHARMAP
+ <U6667>     /xfc/xdf     <CJK>
+ <U000251E6> /xfc/xe0     <CJK>
+ <U6673>     /xfc/xe1     <CJK>
+-<UE1BB>     /xfc/xe3     <CJK>
++<U00021E3D> /xfc/xe3     <CJK>
+ <U00023231> /xfc/xe4     <CJK>
+ <U000285F4> /xfc/xe5     <CJK>
+ <U000231C8> /xfc/xe6     <CJK>
+@@ -17979,8 +18287,8 @@ CHARMAP
+ <U000237C2> /xfc/xf0     <CJK>
+ <U6767>     /xfc/xf2     <CJK>
+ <U6762>     /xfc/xf3     <CJK>
+-<UE1CC>     /xfc/xf4     <CJK>
+-<UE1CD>     /xfc/xf5     <CJK>
++<U000241CD> /xfc/xf4     <CJK>
++<U000290ED> /xfc/xf5     <CJK>
+ <U67D7>     /xfc/xf6     <CJK>
+ <U44E9>     /xfc/xf7     <CJK>
+ <U6822>     /xfc/xf8     <CJK>
+@@ -17990,7 +18298,7 @@ CHARMAP
+ <U000233E6> /xfc/xfc     <CJK>
+ <U00026DA0> /xfc/xfd     <CJK>
+ <U685D>     /xfc/xfe     <CJK>
+-<UE1D7>     /xfd/x40     <CJK>
++<U0002346F> /xfd/x40     <CJK>
+ <U69E1>     /xfd/x41     <CJK>
+ <U6A0B>     /xfd/x42     <CJK>
+ <U00028ADF> /xfd/x43     <CJK>
+@@ -18014,10 +18322,10 @@ CHARMAP
+ <U8363>     /xfd/x55     <CJK>
+ <U5090>     /xfd/x56     <CJK>
+ <U69F9>     /xfd/x57     <CJK>
+-<UE1EF>     /xfd/x58     <CJK>
++<U00023659> /xfd/x58     <CJK>
+ <U0002212A> /xfd/x59     <CJK>
+ <U6A45>     /xfd/x5a     <CJK>
+-<UE1F2>     /xfd/x5b     <CJK>
++<U00023703> /xfd/x5b     <CJK>
+ <U6A9D>     /xfd/x5c     <CJK>
+ <U3BF3>     /xfd/x5d     <CJK>
+ <U67B1>     /xfd/x5e     <CJK>
+@@ -18025,15 +18333,15 @@ CHARMAP
+ <U0002919C> /xfd/x60     <CJK>
+ <U3C0D>     /xfd/x61     <CJK>
+ <U6B1D>     /xfd/x62     <CJK>
+-<UE1FA>     /xfd/x63     <CJK>
++<U00020923> /xfd/x63     <CJK>
+ <U60DE>     /xfd/x64     <CJK>
+ <U6B35>     /xfd/x65     <CJK>
+ <U6B74>     /xfd/x66     <CJK>
+-<UE1FE>     /xfd/x67     <CJK>
++<U000227CD> /xfd/x67     <CJK>
+ <U6EB5>     /xfd/x68     <CJK>
+ <U00023ADB> /xfd/x69     <CJK>
+ <U000203B5> /xfd/x6a     <CJK>
+-<UE202>     /xfd/x6b     <CJK>
++<U00021958> /xfd/x6b     <CJK>
+ <U3740>     /xfd/x6c     <CJK>
+ <U5421>     /xfd/x6d     <CJK>
+ <U00023B5A> /xfd/x6e     <CJK>
+@@ -18042,7 +18350,7 @@ CHARMAP
+ <U6BDC>     /xfd/x71     <CJK>
+ <U6C37>     /xfd/x72     <CJK>
+ <U0002248B> /xfd/x73     <CJK>
+-<UE20B>     /xfd/x74     <CJK>
++<U000248F1> /xfd/x74     <CJK>
+ <U00026B51> /xfd/x75     <CJK>
+ <U6C5A>     /xfd/x76     <CJK>
+ <U8226>     /xfd/x77     <CJK>
+@@ -18056,10 +18364,10 @@ CHARMAP
+ <U00023CC9> /xfd/xa1     <CJK>
+ <U36E5>     /xfd/xa2     <CJK>
+ <U3CEB>     /xfd/xa3     <CJK>
+-<UE219>     /xfd/xa4     <CJK>
++<U00020D32> /xfd/xa4     <CJK>
+ <U9B83>     /xfd/xa5     <CJK>
+ <U000231F9> /xfd/xa6     <CJK>
+-<UE21C>     /xfd/xa7     <CJK>
++<U00022491> /xfd/xa7     <CJK>
+ <U7F8F>     /xfd/xa8     <CJK>
+ <U6837>     /xfd/xa9     <CJK>
+ <U00026D25> /xfd/xaa     <CJK>
+@@ -18070,7 +18378,7 @@ CHARMAP
+ <U6E7C>     /xfd/xaf     <CJK>
+ <U6F04>     /xfd/xb0     <CJK>
+ <U0002497F> /xfd/xb1     <CJK>
+-<UE227>     /xfd/xb2     <CJK>
++<U00024085> /xfd/xb2     <CJK>
+ <U00026E72> /xfd/xb3     <CJK>
+ <U8533>     /xfd/xb4     <CJK>
+ <U00026F74> /xfd/xb5     <CJK>
+@@ -18097,16 +18405,16 @@ CHARMAP
+ <U6F5C>     /xfd/xcd     <CJK>
+ <U3D4E>     /xfd/xce     <CJK>
+ <U6F74>     /xfd/xcf     <CJK>
+-<UE245>     /xfd/xd0     <CJK>
++<U00029170> /xfd/xd0     <CJK>
+ <U3D3B>     /xfd/xd1     <CJK>
+ <U6F9F>     /xfd/xd2     <CJK>
+ <U00024144> /xfd/xd3     <CJK>
+ <U6FD3>     /xfd/xd4     <CJK>
+-<UE24A>     /xfd/xd5     <CJK>
++<U00024091> /xfd/xd5     <CJK>
+ <U00024155> /xfd/xd6     <CJK>
+ <U00024039> /xfd/xd7     <CJK>
+-<U00025D20> /xfd/xd8     <CJK>
+-<UE24E>     /xfd/xd9     <CJK>
++<U00023FF0> /xfd/xd8     <CJK>
++<U00023FB4> /xfd/xd9     <CJK>
+ <U0002413F> /xfd/xda     <CJK>
+ <U51DF>     /xfd/xdb     <CJK>
+ <U00024156> /xfd/xdc     <CJK>
+@@ -18134,7 +18442,7 @@ CHARMAP
+ <U00024365> /xfd/xf3     <CJK>
+ <U714F>     /xfd/xf4     <CJK>
+ <U9362>     /xfd/xf5     <CJK>
+-<UE26B>     /xfd/xf6     <CJK>
++<U000242C1> /xfd/xf6     <CJK>
+ <U712C>     /xfd/xf7     <CJK>
+ <U0002445A> /xfd/xf8     <CJK>
+ <U00024A27> /xfd/xf9     <CJK>
+@@ -18149,7 +18457,7 @@ CHARMAP
+ <U9443>     /xfe/x43     <CJK>
+ <U7224>     /xfe/x44     <CJK>
+ <U9341>     /xfe/x45     <CJK>
+-<UE27A>     /xfe/x46     <CJK>
++<U00025605> /xfe/x46     <CJK>
+ <U722E>     /xfe/x47     <CJK>
+ <U7240>     /xfe/x48     <CJK>
+ <U00024974> /xfe/x49     <CJK>
+@@ -18157,7 +18465,7 @@ CHARMAP
+ <U7255>     /xfe/x4b     <CJK>
+ <U7257>     /xfe/x4c     <CJK>
+ <U3E55>     /xfe/x4d     <CJK>
+-<UE282>     /xfe/x4e     <CJK>
++<U00023044> /xfe/x4e     <CJK>
+ <U680D>     /xfe/x4f     <CJK>
+ <U6F3D>     /xfe/x50     <CJK>
+ <U7282>     /xfe/x51     <CJK>
+@@ -18170,7 +18478,7 @@ CHARMAP
+ <U732E>     /xfe/x59     <CJK>
+ <U73CF>     /xfe/x5a     <CJK>
+ <U73AA>     /xfe/x5b     <CJK>
+-<UE290>     /xfe/x5c     <CJK>
++<U00020C3A> /xfe/x5c     <CJK>
+ <U00026A2E> /xfe/x5d     <CJK>
+ <U73C9>     /xfe/x5e     <CJK>
+ <U7449>     /xfe/x5f     <CJK>
+@@ -18181,13 +18489,13 @@ CHARMAP
+ <U36C5>     /xfe/x64     <CJK>
+ <U000249B7> /xfe/x65     <CJK>
+ <U0002498D> /xfe/x66     <CJK>
+-<UE29B>     /xfe/x67     <CJK>
++<U000249FB> /xfe/x67     <CJK>
+ <U73F7>     /xfe/x68     <CJK>
+ <U7415>     /xfe/x69     <CJK>
+ <U6903>     /xfe/x6a     <CJK>
+ <U00024A26> /xfe/x6b     <CJK>
+ <U7439>     /xfe/x6c     <CJK>
+-<UE2A1>     /xfe/x6d     <CJK>
++<U000205C3> /xfe/x6d     <CJK>
+ <U3ED7>     /xfe/x6e     <CJK>
+ <U000228AD> /xfe/x70     <CJK>
+ <U7460>     /xfe/x71     <CJK>
+@@ -18203,12 +18511,12 @@ CHARMAP
+ <U6A2C>     /xfe/x7b     <CJK>
+ <U7482>     /xfe/x7c     <CJK>
+ <U4953>     /xfe/x7d     <CJK>
+-<UE2B2>     /xfe/x7e     <CJK>
++<U00024A8C> /xfe/x7e     <CJK>
+ <U0002415F> /xfe/xa1     <CJK>
+ <U00024A79> /xfe/xa2     <CJK>
+ <U00028B8F> /xfe/xa3     <CJK>
+ <U5B46>     /xfe/xa4     <CJK>
+-<UE2B7>     /xfe/xa5     <CJK>
++<U00028C03> /xfe/xa5     <CJK>
+ <U0002189E> /xfe/xa6     <CJK>
+ <U74C8>     /xfe/xa7     <CJK>
+ <U00021988> /xfe/xa8     <CJK>
+@@ -18217,7 +18525,7 @@ CHARMAP
+ <U00028ED9> /xfe/xac     <CJK>
+ <U00021A4B> /xfe/xad     <CJK>
+ <U5BD7>     /xfe/xae     <CJK>
+-<UE2C1>     /xfe/xaf     <CJK>
++<U00028EAC> /xfe/xaf     <CJK>
+ <U9385>     /xfe/xb0     <CJK>
+ <U754D>     /xfe/xb1     <CJK>
+ <U754A>     /xfe/xb2     <CJK>
+@@ -18225,7 +18533,7 @@ CHARMAP
+ <U756E>     /xfe/xb4     <CJK>
+ <U00024F82> /xfe/xb5     <CJK>
+ <U3F04>     /xfe/xb6     <CJK>
+-<UE2C9>     /xfe/xb7     <CJK>
++<U00024D13> /xfe/xb7     <CJK>
+ <U758E>     /xfe/xb8     <CJK>
+ <U745D>     /xfe/xb9     <CJK>
+ <U759E>     /xfe/xba     <CJK>
+@@ -18236,7 +18544,7 @@ CHARMAP
+ <U764F>     /xfe/xbf     <CJK>
+ <U766F>     /xfe/xc0     <CJK>
+ <U7676>     /xfe/xc1     <CJK>
+-<UE2D4>     /xfe/xc2     <CJK>
++<U000263F5> /xfe/xc2     <CJK>
+ <U7690>     /xfe/xc3     <CJK>
+ <U81EF>     /xfe/xc4     <CJK>
+ <U37F8>     /xfe/xc5     <CJK>
+@@ -18250,7 +18558,7 @@ CHARMAP
+ <U8462>     /xfe/xcd     <CJK>
+ <U0002509D> /xfe/xce     <CJK>
+ <U0002517D> /xfe/xcf     <CJK>
+-<UE2E2>     /xfe/xd0     <CJK>
++<U00021E1C> /xfe/xd0     <CJK>
+ <U771E>     /xfe/xd1     <CJK>
+ <U7726>     /xfe/xd2     <CJK>
+ <U7740>     /xfe/xd3     <CJK>
+@@ -18259,12 +18567,12 @@ CHARMAP
+ <U7758>     /xfe/xd6     <CJK>
+ <U000232AC> /xfe/xd7     <CJK>
+ <U77AF>     /xfe/xd8     <CJK>
+-<UE2EB>     /xfe/xd9     <CJK>
+-<UE2EC>     /xfe/xda     <CJK>
++<U00028964> /xfe/xd9     <CJK>
++<U00028968> /xfe/xda     <CJK>
+ <U000216C1> /xfe/xdb     <CJK>
+ <U77F4>     /xfe/xdc     <CJK>
+-<UE2F0>     /xfe/xde     <CJK>
+-<UE2F1>     /xfe/xdf     <CJK>
++<U00021376> /xfe/xde     <CJK>
++<U00024A12> /xfe/xdf     <CJK>
+ <U68CA>     /xfe/xe0     <CJK>
+ <U78AF>     /xfe/xe1     <CJK>
+ <U78C7>     /xfe/xe2     <CJK>
+@@ -18279,7 +18587,7 @@ CHARMAP
+ <U8FB8>     /xfe/xeb     <CJK>
+ <U8884>     /xfe/xec     <CJK>
+ <U00028B2B> /xfe/xed     <CJK>
+-<UE300>     /xfe/xee     <CJK>
++<U00026083> /xfe/xee     <CJK>
+ <U0002261C> /xfe/xef     <CJK>
+ <U7986>     /xfe/xf0     <CJK>
+ <U8900>     /xfe/xf1     <CJK>
+@@ -18299,15 +18607,11 @@ CHARMAP
+ END CHARMAP
+ 
+ WIDTH
+-<UF303>...<UF318> 2
+-<UF325> 2
+-<UF327> 2
+-<UF344> 2
+-<UF346> 2
+-<UF34A>...<UFF5A> 2
++<U43F0>...<U31CE> 2
++<U0002A3A9>...<UFF5A> 2
+ <U4E00>...<U8FB5> 2
+ <U30FD>...<U30F6> 2
+-<UF7E5>...<U2EE3> 2
++<U31CF>...<U2EE3> 2
+ <U7881>...<U256F> 2
+-<UE003>...<U79D4> 2
++<U4E42>...<U79D4> 2
+ END WIDTH
diff --git a/SOURCES/glibc-rh1221046.patch b/SOURCES/glibc-rh1221046.patch
new file mode 100644
index 0000000..69f07d8
--- /dev/null
+++ b/SOURCES/glibc-rh1221046.patch
@@ -0,0 +1,44 @@
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/generic/bits/stat.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/generic/bits/stat.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/generic/bits/stat.h
+@@ -66,7 +66,7 @@ struct stat
+     __blksize_t st_blksize;	/* Optimal block size for I/O.  */
+     int __pad2;
+     __field64(__blkcnt_t, __blkcnt64_t, st_blocks);  /* 512-byte blocks */
+-#ifdef __USE_MISC
++#if defined __USE_MISC || defined __USE_XOPEN2K8
+     /* Nanosecond resolution timestamps are stored in a format
+        equivalent to 'struct timespec'.  This is the type used
+        whenever possible but the Unix namespace rules do not allow the
+@@ -107,7 +107,7 @@ struct stat64
+     __blksize_t st_blksize;	/* Optimal block size for I/O.  */
+     int __pad2;
+     __blkcnt64_t st_blocks;	/* Nr. 512-byte blocks allocated.  */
+-#ifdef __USE_MISC
++#if defined __USE_MISC || defined __USE_XOPEN2K8
+     /* Nanosecond resolution timestamps are stored in a format
+        equivalent to 'struct timespec'.  This is the type used
+        whenever possible but the Unix namespace rules do not allow the
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/bits/stat.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/bits/stat.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/bits/stat.h
+@@ -41,7 +41,7 @@ struct stat
+     int pad0;
+     __dev_t st_rdev;		/* Device number, if device.  */
+     __off_t st_size;		/* Size of file, in bytes.  */
+-#ifdef __USE_MISC
++#if defined __USE_MISC || defined __USE_XOPEN2K8
+     /* Nanosecond resolution timestamps are stored in a format
+        equivalent to 'struct timespec'.  This is the type used
+        whenever possible but the Unix namespace rules do not allow the
+@@ -80,7 +80,7 @@ struct stat64
+     int pad0;
+     __dev_t st_rdev;		/* Device number, if device.  */
+     __off_t st_size;		/* Size of file, in bytes.  */
+-#ifdef __USE_MISC
++#if defined __USE_MISC || defined __USE_XOPEN2K8
+     /* Nanosecond resolution timestamps are stored in a format
+        equivalent to 'struct timespec'.  This is the type used
+        whenever possible but the Unix namespace rules do not allow the
diff --git a/SOURCES/glibc-rh1234449-1.patch b/SOURCES/glibc-rh1234449-1.patch
new file mode 100644
index 0000000..4b4f9c4
--- /dev/null
+++ b/SOURCES/glibc-rh1234449-1.patch
@@ -0,0 +1,73 @@
+commit 45c30c61c9001867c1891f5862764f084e53f348
+Author: Ondřej Bílka <neleai@seznam.cz>
+Date:   Sun Oct 20 08:25:25 2013 +0200
+
+    Replace alloca in __tzfile_read by malloc. Fixes bug 15670
+
+diff --git a/time/tzfile.c b/time/tzfile.c
+index 9dd5130..3ea3051 100644
+--- a/time/tzfile.c
++++ b/time/tzfile.c
+@@ -114,6 +114,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
+   int was_using_tzfile = __use_tzfile;
+   int trans_width = 4;
+   size_t tzspec_len;
++  char *new = NULL;
+ 
+   if (sizeof (time_t) != 4 && sizeof (time_t) != 8)
+     abort ();
+@@ -145,22 +146,12 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
+   if (*file != '/')
+     {
+       const char *tzdir;
+-      unsigned int len, tzdir_len;
+-      char *new, *tmp;
+ 
+       tzdir = getenv ("TZDIR");
+       if (tzdir == NULL || *tzdir == '\0')
+-	{
+-	  tzdir = default_tzdir;
+-	  tzdir_len = sizeof (default_tzdir) - 1;
+-	}
+-      else
+-	tzdir_len = strlen (tzdir);
+-      len = strlen (file) + 1;
+-      new = (char *) __alloca (tzdir_len + 1 + len);
+-      tmp = __mempcpy (new, tzdir, tzdir_len);
+-      *tmp++ = '/';
+-      memcpy (tmp, file, len);
++	tzdir = default_tzdir;
++      if (__asprintf (&new, "%s/%s", tzdir, file) == -1)
++	goto ret_free_transitions;
+       file = new;
+     }
+ 
+@@ -170,11 +161,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
+       && stat64 (file, &st) == 0
+       && tzfile_ino == st.st_ino && tzfile_dev == st.st_dev
+       && tzfile_mtime == st.st_mtime)
+-    {
+-      /* Nothing to do.  */
+-      __use_tzfile = 1;
+-      return;
+-    }
++    goto done;  /* Nothing to do.  */
+ 
+   /* Note the file is opened with cancellation in the I/O functions
+      disabled and if available FD_CLOEXEC set.  */
+@@ -527,12 +514,15 @@ __tzfile_read (const char *file, size_t extra, char **extrap)
+   __daylight = rule_stdoff != rule_dstoff;
+   __timezone = -rule_stdoff;
+ 
++ done:
+   __use_tzfile = 1;
++  free (new);
+   return;
+ 
+  lose:
+   fclose (f);
+  ret_free_transitions:
++  free (new);
+   free ((void *) transitions);
+   transitions = NULL;
+ }
diff --git a/SOURCES/glibc-rh1234449-2.patch b/SOURCES/glibc-rh1234449-2.patch
new file mode 100644
index 0000000..67d8d4c
--- /dev/null
+++ b/SOURCES/glibc-rh1234449-2.patch
@@ -0,0 +1,874 @@
+commit 42261ad731991df345880b0b509d83b0b9a9b9d8
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Fri Apr 24 17:34:47 2015 +0200
+
+    Make time zone file parser more robust [BZ #17715]
+
+diff --git a/time/tzfile.c b/time/tzfile.c
+--- a/time/tzfile.c
++++ b/time/tzfile.c
+@@ -213,6 +213,9 @@
+   num_isstd = (size_t) decode (tzhead.tzh_ttisstdcnt);
+   num_isgmt = (size_t) decode (tzhead.tzh_ttisgmtcnt);
+ 
++  if (__glibc_unlikely (num_isstd > num_types || num_isgmt > num_types))
++    goto lose;
++
+   /* For platforms with 64-bit time_t we use the new format if available.  */
+   if (sizeof (time_t) == 8 && trans_width == 4
+       && tzhead.tzh_version[0] != '\0')
+@@ -445,12 +448,20 @@
+ 	goto lose;
+ 
+       tzspec_len = st.st_size - off - 1;
+-      char *tzstr = alloca (tzspec_len);
++      if (tzspec_len == 0)
++        goto lose;
++      char *tzstr = malloc (tzspec_len);
++      if (tzstr == NULL)
++        goto lose;
+       if (getc_unlocked (f) != '\n'
+ 	  || (fread_unlocked (tzstr, 1, tzspec_len - 1, f) != tzspec_len - 1))
+-	goto lose;
++        {
++          free (tzstr);
++          goto lose;
++        }
+       tzstr[tzspec_len - 1] = '\0';
+       tzspec = __tzstring (tzstr);
++      free (tzstr);
+     }
+ 
+   /* Don't use an empty TZ string.  */
+
+diff --git a/time/tzset.c b/time/tzset.c
+--- a/time/tzset.c
++++ b/time/tzset.c
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
++/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -18,6 +18,7 @@
+ #include <ctype.h>
+ #include <errno.h>
+ #include <bits/libc-lock.h>
++#include <stdbool.h>
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -54,7 +55,7 @@
+     /* When to change.  */
+     enum { J0, J1, M } type;	/* Interpretation of:  */
+     unsigned short int m, n, d;	/* Month, week, day.  */
+-    unsigned int secs;		/* Time of day.  */
++    int secs;			/* Time of day.  */
+ 
+     long int offset;		/* Seconds east of GMT (west if < 0).  */
+ 
+@@ -82,15 +83,14 @@
+ 
+ static struct tzstring_l *tzstring_list;
+ 
+-/* Allocate a permanent home for S.  It will never be moved or deallocated,
+-   but may share space with other strings.
+-   Don't modify the returned string. */
+-char *
+-__tzstring (const char *s)
++/* Allocate a permanent home for the first LEN characters of S.  It
++   will never be moved or deallocated, but may share space with other
++   strings.  Don't modify the returned string. */
++static char *
++__tzstring_len (const char *s, size_t len)
+ {
+   char *p;
+   struct tzstring_l *t, *u, *new;
+-  size_t len = strlen (s);
+ 
+   /* Walk the list and look for a match.  If this string is the same
+      as the end of an already-allocated string, it can share space. */
+@@ -98,7 +98,7 @@
+     if (len <= t->len)
+       {
+ 	p = &t->data[t->len - len];
+-	if (strcmp (s, p) == 0)
++	if (memcmp (s, p, len) == 0)
+ 	  return p;
+       }
+ 
+@@ -109,7 +109,8 @@
+ 
+   new->next = NULL;
+   new->len = len;
+-  strcpy (new->data, s);
++  memcpy (new->data, s, len);
++  new->data[len] = '\0';
+ 
+   if (u)
+     u->next = new;
+@@ -118,6 +119,15 @@
+ 
+   return new->data;
+ }
++
++/* Allocate a permanent home for S.  It will never be moved or
++   deallocated, but may share space with other strings.  Don't modify
++   the returned string. */
++char *
++__tzstring (const char *s)
++{
++  return __tzstring_len (s, strlen (s));
++}
+ 
+ /* Maximum length of a timezone name.  tzset_internal keeps this up to date
+    (never decreasing it) when ! __use_tzfile.
+@@ -125,7 +135,7 @@
+ size_t __tzname_cur_max;
+ 
+ long int
+-__tzname_max ()
++__tzname_max (void)
+ {
+   __libc_lock_lock (tzset_lock);
+ 
+@@ -164,243 +174,227 @@
+   return min (ss, 59) + min (mm, 59) * 60 + min (hh, 24) * 60 * 60;
+ }
+ 
+-
+-/* Parse the POSIX TZ-style string.  */
+-void
+-__tzset_parse_tz (tz)
+-     const char *tz;
+-{
+-  unsigned short int hh, mm, ss;
+-
+-  /* Clear out old state and reset to unnamed UTC.  */
+-  memset (tz_rules, '\0', sizeof tz_rules);
+-  tz_rules[0].name = tz_rules[1].name = "";
+-
+-  /* Get the standard timezone name.  */
+-  char *tzbuf = strdupa (tz);
+-
+-  int consumed;
+-  if (sscanf (tz, "%[A-Za-z]%n", tzbuf, &consumed) != 1)
+-    {
+-      /* Check for the quoted version.  */
+-      char *wp = tzbuf;
+-      if (__builtin_expect (*tz++ != '<', 0))
+-	goto out;
+-
+-      while (isalnum (*tz) || *tz == '+' || *tz == '-')
+-	*wp++ = *tz++;
+-      if (__builtin_expect (*tz++ != '>' || wp - tzbuf < 3, 0))
+-	goto out;
+-      *wp = '\0';
++/* Parses the time zone name at *TZP, and writes a pointer to an
++   interned string to tz_rules[WHICHRULE].name.  On success, advances
++   *TZP, and returns true.  Returns false otherwise.  */
++static bool
++parse_tzname (const char **tzp, int whichrule)
++{
++  const char *start = *tzp;
++  const char *p = start;
++  while (('a' <= *p && *p <= 'z')
++	 || ('A' <= *p && *p <= 'Z'))
++      ++p;
++  size_t len = p - start;
++  if (len < 3)
++    {
++      p = *tzp;
++      if (__glibc_unlikely (*p++ != '<'))
++	return false;
++      start = p;
++      while (('a' <= *p && *p <= 'z')
++	     || ('A' <= *p && *p <= 'Z')
++	     || ('0' <= *p && *p <= '9')
++	     || *p == '+' || *p == '-')
++	++p;
++      len = p - start;
++      if (*p++ != '>' || len < 3)
++	return false;
+     }
+-  else if (__builtin_expect (consumed < 3, 0))
+-    goto out;
+-  else
+-    tz += consumed;
+ 
+-  tz_rules[0].name = __tzstring (tzbuf);
++  tz_rules[whichrule].name = __tzstring_len (start, len);
++
++  *tzp = p;
++  return true;
++}
+ 
+-  /* Figure out the standard offset from UTC.  */
+-  if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit (*tz)))
+-    goto out;
++/* Parses the time zone offset at *TZP, and writes it to
++   tz_rules[WHICHRULE].offset.  Returns true if the parse was
++   successful.  */
++static bool
++parse_offset (const char **tzp, int whichrule)
++{
++  const char *tz = *tzp;
++  if (whichrule == 0
++      && (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit (*tz))))
++    return false;
+ 
++  long sign;
+   if (*tz == '-' || *tz == '+')
+-    tz_rules[0].offset = *tz++ == '-' ? 1L : -1L;
++    sign = *tz++ == '-' ? 1L : -1L;
+   else
+-    tz_rules[0].offset = -1L;
+-  switch (sscanf (tz, "%hu%n:%hu%n:%hu%n",
+-		  &hh, &consumed, &mm, &consumed, &ss, &consumed))
+-    {
+-    default:
+-      tz_rules[0].offset = 0;
+-      goto out;
+-    case 1:
+-      mm = 0;
+-    case 2:
+-      ss = 0;
+-    case 3:
+-      break;
+-    }
+-  tz_rules[0].offset *= compute_offset (ss, mm, hh);
+-  tz += consumed;
+-
+-  /* Get the DST timezone name (if any).  */
+-  if (*tz != '\0')
+-    {
+-      if (sscanf (tz, "%[A-Za-z]%n", tzbuf, &consumed) != 1)
+-	{
+-	  /* Check for the quoted version.  */
+-	  char *wp = tzbuf;
+-	  const char *rp = tz;
+-	  if (__builtin_expect (*rp++ != '<', 0))
+-	    /* Punt on name, set up the offsets.  */
+-	    goto done_names;
+-
+-	  while (isalnum (*rp) || *rp == '+' || *rp == '-')
+-	    *wp++ = *rp++;
+-	  if (__builtin_expect (*rp++ != '>' || wp - tzbuf < 3, 0))
+-	    /* Punt on name, set up the offsets.  */
+-	    goto done_names;
+-	  *wp = '\0';
+-	  tz = rp;
+-	}
+-      else if (__builtin_expect (consumed < 3, 0))
+-	/* Punt on name, set up the offsets.  */
+-	goto done_names;
+-      else
+-	tz += consumed;
++    sign = -1L;
++  *tzp = tz;
+ 
+-      tz_rules[1].name = __tzstring (tzbuf);
+-
+-      /* Figure out the DST offset from GMT.  */
+-      if (*tz == '-' || *tz == '+')
+-	tz_rules[1].offset = *tz++ == '-' ? 1L : -1L;
++  unsigned short int hh;
++  unsigned short mm = 0;
++  unsigned short ss = 0;
++  int consumed = 0;
++  if (sscanf (tz, "%hu%n:%hu%n:%hu%n",
++	      &hh, &consumed, &mm, &consumed, &ss, &consumed) > 0)
++    tz_rules[whichrule].offset = sign * compute_offset (ss, mm, hh);
++  else
++    /* Nothing could be parsed. */
++    if (whichrule == 0)
++      {
++	/* Standard time defaults to offset zero.  */
++	tz_rules[0].offset = 0;
++	return false;
++      }
+       else
+-	tz_rules[1].offset = -1L;
++	/* DST defaults to one hour later than standard time.  */
++	tz_rules[1].offset = tz_rules[0].offset + (60 * 60);
++  *tzp = tz + consumed;
++  return true;
++}
+ 
+-      switch (sscanf (tz, "%hu%n:%hu%n:%hu%n",
+-		      &hh, &consumed, &mm, &consumed, &ss, &consumed))
++/* Parses the standard <-> DST rules at *TZP.  Updates
++   tz_rule[WHICHRULE].  On success, advances *TZP and returns true.
++   Otherwise, returns false.  */
++static bool
++parse_rule (const char **tzp, int whichrule)
++{
++  const char *tz = *tzp;
++  tz_rule *tzr = &tz_rules[whichrule];
++
++  /* Ignore comma to support string following the incorrect
++     specification in early POSIX.1 printings.  */
++  tz += *tz == ',';
++
++  /* Get the date of the change.  */
++  if (*tz == 'J' || isdigit (*tz))
++    {
++      char *end;
++      tzr->type = *tz == 'J' ? J1 : J0;
++      if (tzr->type == J1 && !isdigit (*++tz))
++	return false;
++      unsigned long int d = strtoul (tz, &end, 10);
++      if (end == tz || d > 365)
++	return false;
++      if (tzr->type == J1 && d == 0)
++	return false;
++      tzr->d = d;
++      tz = end;
++    }
++  else if (*tz == 'M')
++    {
++      tzr->type = M;
++      int consumed;
++      if (sscanf (tz, "M%hu.%hu.%hu%n",
++		  &tzr->m, &tzr->n, &tzr->d, &consumed) != 3
++	  || tzr->m < 1 || tzr->m > 12
++	  || tzr->n < 1 || tzr->n > 5 || tzr->d > 6)
++	return false;
++      tz += consumed;
++    }
++  else if (*tz == '\0')
++    {
++      /* Daylight time rules in the U.S. are defined in the U.S. Code,
++	 Title 15, Chapter 6, Subchapter IX - Standard Time.  These
++	 dates were established by Congress in the Energy Policy Act
++	 of 2005 [Pub. L. no. 109-58, 119 Stat 594 (2005)].
++	 Below is the equivalent of "M3.2.0,M11.1.0" [/2 not needed
++	 since 2:00AM is the default].  */
++      tzr->type = M;
++      if (tzr == &tz_rules[0])
+ 	{
+-	default:
+-	  /* Default to one hour later than standard time.  */
+-	  tz_rules[1].offset = tz_rules[0].offset + (60 * 60);
+-	  break;
+-
+-	case 1:
+-	  mm = 0;
+-	case 2:
+-	  ss = 0;
+-	case 3:
+-	  tz_rules[1].offset *= compute_offset (ss, mm, hh);
+-	  tz += consumed;
+-	  break;
++	  tzr->m = 3;
++	  tzr->n = 2;
++	  tzr->d = 0;
+ 	}
+-      if (*tz == '\0' || (tz[0] == ',' && tz[1] == '\0'))
++      else
+ 	{
+-	  /* There is no rule.  See if there is a default rule file.  */
+-	  __tzfile_default (tz_rules[0].name, tz_rules[1].name,
+-			    tz_rules[0].offset, tz_rules[1].offset);
+-	  if (__use_tzfile)
+-	    {
+-	      free (old_tz);
+-	      old_tz = NULL;
+-	      return;
+-	    }
++	  tzr->m = 11;
++	  tzr->n = 1;
++	  tzr->d = 0;
+ 	}
+     }
+   else
+-    {
+-      /* There is no DST.  */
+-      tz_rules[1].name = tz_rules[0].name;
+-      tz_rules[1].offset = tz_rules[0].offset;
+-      goto out;
++    return false;
++
++  if (*tz != '\0' && *tz != '/' && *tz != ',')
++    return false;
++  else if (*tz == '/')
++    {
++      /* Get the time of day of the change.  */
++      int negative;
++      ++tz;
++      if (*tz == '\0')
++	return false;
++      negative = *tz == '-';
++      tz += negative;
++      /* Default to 2:00 AM.  */
++      unsigned short hh = 2;
++      unsigned short mm = 0;
++      unsigned short ss = 0;
++      int consumed = 0;
++      sscanf (tz, "%hu%n:%hu%n:%hu%n",
++	      &hh, &consumed, &mm, &consumed, &ss, &consumed);;
++      tz += consumed;
++      tzr->secs = (negative ? -1 : 1) * ((hh * 60 * 60) + (mm * 60) + ss);
+     }
++  else
++    /* Default to 2:00 AM.  */
++    tzr->secs = 2 * 60 * 60;
+ 
+- done_names:
+-  /* Figure out the standard <-> DST rules.  */
+-  for (unsigned int whichrule = 0; whichrule < 2; ++whichrule)
+-    {
+-      register tz_rule *tzr = &tz_rules[whichrule];
++  tzr->computed_for = -1;
++  *tzp = tz;
++  return true;
++}
+ 
+-      /* Ignore comma to support string following the incorrect
+-	 specification in early POSIX.1 printings.  */
+-      tz += *tz == ',';
++/* Parse the POSIX TZ-style string.  */
++void
++__tzset_parse_tz (const char *tz)
++{
++  /* Clear out old state and reset to unnamed UTC.  */
++  memset (tz_rules, '\0', sizeof tz_rules);
++  tz_rules[0].name = tz_rules[1].name = "";
+ 
+-      /* Get the date of the change.  */
+-      if (*tz == 'J' || isdigit (*tz))
+-	{
+-	  char *end;
+-	  tzr->type = *tz == 'J' ? J1 : J0;
+-	  if (tzr->type == J1 && !isdigit (*++tz))
+-	    goto out;
+-	  unsigned long int d = strtoul (tz, &end, 10);
+-	  if (end == tz || d > 365)
+-	    goto out;
+-	  if (tzr->type == J1 && d == 0)
+-	    goto out;
+-	  tzr->d = d;
+-	  tz = end;
+-	}
+-      else if (*tz == 'M')
+-	{
+-	  tzr->type = M;
+-	  if (sscanf (tz, "M%hu.%hu.%hu%n",
+-		      &tzr->m, &tzr->n, &tzr->d, &consumed) != 3
+-	      || tzr->m < 1 || tzr->m > 12
+-	      || tzr->n < 1 || tzr->n > 5 || tzr->d > 6)
+-	    goto out;
+-	  tz += consumed;
+-	}
+-      else if (*tz == '\0')
++  /* Get the standard timezone name.  */
++  if (parse_tzname (&tz, 0) && parse_offset (&tz, 0))
++    {
++      /* Get the DST timezone name (if any).  */
++      if (*tz != '\0')
+ 	{
+-         /* Daylight time rules in the U.S. are defined in the
+-            U.S. Code, Title 15, Chapter 6, Subchapter IX - Standard
+-            Time.  These dates were established by Congress in the
+-            Energy Policy Act of 2005 [Pub. L. no. 109-58, 119 Stat 594
+-            (2005)].
+-	    Below is the equivalent of "M3.2.0,M11.1.0" [/2 not needed
+-	    since 2:00AM is the default].  */
+-	  tzr->type = M;
+-	  if (tzr == &tz_rules[0])
++	  if (parse_tzname (&tz, 1))
+ 	    {
+-	      tzr->m = 3;
+-	      tzr->n = 2;
+-	      tzr->d = 0;
+-	    }
+-	  else
+-	    {
+-	      tzr->m = 11;
+-	      tzr->n = 1;
+-	      tzr->d = 0;
++	      parse_offset (&tz, 1);
++	      if (*tz == '\0' || (tz[0] == ',' && tz[1] == '\0'))
++		{
++		  /* There is no rule.  See if there is a default rule
++		     file.  */
++		  __tzfile_default (tz_rules[0].name, tz_rules[1].name,
++				    tz_rules[0].offset, tz_rules[1].offset);
++		  if (__use_tzfile)
++		    {
++		      free (old_tz);
++		      old_tz = NULL;
++		      return;
++		    }
++		}
+ 	    }
++	  /* Figure out the standard <-> DST rules.  */
++	  if (parse_rule (&tz, 0))
++	    parse_rule (&tz, 1);
+ 	}
+       else
+-	goto out;
+-
+-      if (*tz != '\0' && *tz != '/' && *tz != ',')
+-	goto out;
+-      else if (*tz == '/')
+ 	{
+-	  /* Get the time of day of the change.  */
+-	  ++tz;
+-	  if (*tz == '\0')
+-	    goto out;
+-	  consumed = 0;
+-	  switch (sscanf (tz, "%hu%n:%hu%n:%hu%n",
+-			  &hh, &consumed, &mm, &consumed, &ss, &consumed))
+-	    {
+-	    default:
+-	      hh = 2;		/* Default to 2:00 AM.  */
+-	    case 1:
+-	      mm = 0;
+-	    case 2:
+-	      ss = 0;
+-	    case 3:
+-	      break;
+-	    }
+-	  tz += consumed;
+-	  tzr->secs = (hh * 60 * 60) + (mm * 60) + ss;
++	  /* There is no DST.  */
++	  tz_rules[1].name = tz_rules[0].name;
++	  tz_rules[1].offset = tz_rules[0].offset;
+ 	}
+-      else
+-	/* Default to 2:00 AM.  */
+-	tzr->secs = 2 * 60 * 60;
+-
+-      tzr->computed_for = -1;
+     }
+ 
+- out:
+   update_vars ();
+ }
+ 
+ /* Interpret the TZ envariable.  */
+ static void
+ internal_function
+-tzset_internal (always, explicit)
+-     int always;
+-     int explicit;
++tzset_internal (int always, int explicit)
+ {
+   static int is_initialized;
+-  register const char *tz;
++  const char *tz;
+ 
+   if (is_initialized && !always)
+     return;
+@@ -467,11 +461,9 @@
+    put it in RULE->change, saving YEAR in RULE->computed_for.  */
+ static void
+ internal_function
+-compute_change (rule, year)
+-     tz_rule *rule;
+-     int year;
++compute_change (tz_rule *rule, int year)
+ {
+-  register time_t t;
++  time_t t;
+ 
+   if (year != -1 && rule->computed_for == year)
+     /* Operations on times in 2 BC will be slower.  Oh well.  */
+@@ -558,10 +550,7 @@
+    `__timezone', and `__daylight' accordingly.  */
+ void
+ internal_function
+-__tz_compute (timer, tm, use_localtime)
+-     time_t timer;
+-     struct tm *tm;
+-     int use_localtime;
++__tz_compute (time_t timer, struct tm *tm, int use_localtime)
+ {
+   compute_change (&tz_rules[0], 1900 + tm->tm_year);
+   compute_change (&tz_rules[1], 1900 + tm->tm_year);
+@@ -641,6 +630,8 @@
+       leap_extra_secs = 0;
+     }
+ 
++  __libc_lock_unlock (tzset_lock);
++
+   if (tp)
+     {
+       if (! use_localtime)
+@@ -656,8 +647,6 @@
+ 	tp = NULL;
+     }
+ 
+-  __libc_lock_unlock (tzset_lock);
+-
+   return tp;
+ }
+ 
+diff --git a/timezone/Makefile b/timezone/Makefile
+index 17424b8..5f18545 100644
+--- a/timezone/Makefile
++++ b/timezone/Makefile
+@@ -23,7 +23,7 @@
+ extra-objs := scheck.o ialloc.o
+ 
+ others	:= zdump zic
+-tests	:= test-tz tst-timezone
++tests	:= test-tz tst-timezone tst-tzset
+ 
+ # pacificnew doesn't compile; if it is to be used, it should be included in
+ # northamerica.
+@@ -87,9 +87,11 @@
+ 				       Australia/Melbourne \
+ 				       America/Sao_Paulo Asia/Tokyo \
+ 				       Europe/London)
++$(objpfx)tst-tzset.out: $(addprefix $(testdata)/XT, 1 2 3 4)
+ 
+ test-tz-ENV = TZDIR=$(testdata)
+ tst-timezone-ENV = TZDIR=$(testdata)
++tst-tzset-ENV = TZDIR=$(testdata)
+ 
+ # Note this must come second in the deps list for $(built-program-cmd) to work.
+ zic-deps = $(objpfx)zic $(leapseconds) yearistype
+@@ -111,6 +113,8 @@
+ $(testdata)/Asia/Tokyo: asia $(zic-deps)
+ 	$(build-testdata)
+ 
++$(testdata)/XT%: testdata/XT%
++	cp $< $@
+ 
+ $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
+ 	sed -e 's|/bin/bash|$(KSH)|g' \
+diff --git a/timezone/README b/timezone/README
+index 7a5e31c..2268f8e 100644
+--- a/timezone/README
++++ b/timezone/README
+@@ -15,3 +15,6 @@ version of the tzcode and tzdata packages.
+ 
+ These packages may be found at ftp://ftp.iana.org/tz/releases/.  Commentary
+ should be addressed to tz@iana.org.
++
++The subdirectory testdata contains manually edited data files for
++regression testing purposes.
+diff --git a/timezone/testdata/XT1 b/timezone/testdata/XT1
+new file mode 100644
+index 0000000..67d7ee0
+Binary files /dev/null and b/timezone/testdata/XT1 differ
+diff --git a/timezone/testdata/XT2 b/timezone/testdata/XT2
+new file mode 100644
+index 0000000..069189e
+Binary files /dev/null and b/timezone/testdata/XT2 differ
+diff --git a/timezone/testdata/XT3 b/timezone/testdata/XT3
+new file mode 100644
+index 0000000..fbf5eff
+Binary files /dev/null and b/timezone/testdata/XT3 differ
+diff --git a/timezone/testdata/XT4 b/timezone/testdata/XT4
+new file mode 100644
+index 0000000..990a976
+Binary files /dev/null and b/timezone/testdata/XT4 differ
+diff --git a/timezone/tst-tzset.c b/timezone/tst-tzset.c
+new file mode 100644
+index 0000000..aefcc76
+--- /dev/null
++++ b/timezone/tst-tzset.c
+@@ -0,0 +1,200 @@
++/* tzset tests with crafted time zone data.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define _GNU_SOURCE 1
++
++#include <errno.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <sys/resource.h>
++#include <time.h>
++#include <unistd.h>
++
++static int do_test (void);
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
++
++/* Returns the name of a large TZ file.  */
++static char *
++create_tz_file (off64_t size)
++{
++  char *path;
++  int fd = create_temp_file ("tst-tzset-", &path);
++  if (fd < 0)
++    exit (1);
++
++  // Reopen for large-file support.
++  close (fd);
++  fd = open64 (path, O_WRONLY);
++  if (fd < 0)
++    {
++      printf ("open64 (%s) failed: %m\n", path);
++      exit (1);
++    }
++
++  static const char data[] = {
++    0x54, 0x5a, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00,
++    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
++    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
++    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
++    0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
++    0x00, 0x00, 0x58, 0x54, 0x47, 0x00, 0x00, 0x00,
++    0x54, 0x5a, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00,
++    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
++    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
++    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
++    0x00, 0x00, 0x00, 0x04, 0xf8, 0x00, 0x00, 0x00,
++    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
++    0x00, 0x00, 0x00, 0x58, 0x54, 0x47, 0x00, 0x00,
++    0x00, 0x0a, 0x58, 0x54, 0x47, 0x30, 0x0a
++  };
++  ssize_t ret = write (fd, data, sizeof (data));
++  if (ret < 0)
++    {
++      printf ("write failed: %m\n");
++      exit (1);
++    }
++  if ((size_t) ret != sizeof (data))
++    {
++      printf ("Short write\n");
++      exit (1);
++    }
++  if (lseek64 (fd, size, SEEK_CUR) < 0)
++    {
++      printf ("lseek failed: %m\n");
++      close (fd);
++      return NULL;
++    }
++  if (write (fd, "", 1) != 1)
++    {
++      printf ("Single-byte write failed\n");
++      close (fd);
++      return NULL;
++    }
++  if (close (fd) != 0)
++    {
++      printf ("close failed: %m\n");
++      exit (1);
++    }
++  return path;
++}
++
++static void
++test_tz_file (off64_t size)
++{
++  char *path = create_tz_file (size);
++  if (setenv ("TZ", path, 1) < 0)
++    {
++      printf ("setenv failed: %m\n");
++      exit (1);
++    }
++  tzset ();
++  free (path);
++}
++
++static int
++do_test (void)
++{
++  /* Limit the size of the process.  Otherwise, some of the tests will
++     consume a lot of resources.  */
++  {
++    struct rlimit limit;
++    if (getrlimit (RLIMIT_AS, &limit) != 0)
++      {
++	printf ("getrlimit (RLIMIT_AS) failed: %m\n");
++	return 1;
++      }
++    long target = 512 * 1024 * 1024;
++    if (limit.rlim_cur == RLIM_INFINITY || limit.rlim_cur > target)
++      {
++	limit.rlim_cur = 512 * 1024 * 1024;
++	if (setrlimit (RLIMIT_AS, &limit) != 0)
++	  {
++	    printf ("setrlimit (RLIMIT_AS) failed: %m\n");
++	    return 1;
++	  }
++      }
++  }
++
++  int errors = 0;
++  for (int i = 1; i <= 4; ++i)
++    {
++      char tz[16];
++      snprintf (tz, sizeof (tz), "XT%d", i);
++      if (setenv ("TZ", tz, 1) < 0)
++	{
++	  printf ("setenv failed: %m\n");
++	  return 1;
++	}
++      tzset ();
++      if (strcmp (tzname[0], tz) == 0)
++	{
++	  printf ("Unexpected success for %s\n", tz);
++	  ++errors;
++	}
++    }
++
++  /* Large TZ files.  */
++
++  /* This will succeed on 64-bit architectures, and fail on 32-bit
++     architectures.  It used to crash on 32-bit.  */
++  test_tz_file (64 * 1024 * 1024);
++
++  /* This will fail on 64-bit and 32-bit architectures.  It used to
++     cause a test timeout on 64-bit and crash on 32-bit if the TZ file
++     open succeeded for some reason (it does not use O_LARGEFILE in
++     regular builds).  */
++  test_tz_file (4LL * 1024 * 1024 * 1024 - 6);
++
++  /* Large TZ variables.  */
++  {
++    size_t length = 64 * 1024 * 1024;
++    char *value = malloc (length + 1);
++    if (value == NULL)
++      {
++	puts ("malloc failed: %m");
++	return 1;
++      }
++    value[length] = '\0';
++
++    memset (value, ' ', length);
++    value[0] = 'U';
++    value[1] = 'T';
++    value[2] = 'C';
++    if (setenv ("TZ", value, 1) < 0)
++      {
++	printf ("setenv failed: %m\n");
++	return 1;
++      }
++    tzset ();
++
++    memset (value, '0', length);
++    value[0] = '<';
++    value[length - 1] = '>';
++    if (setenv ("TZ", value, 1) < 0)
++      {
++	printf ("setenv failed: %m\n");
++	return 1;
++      }
++    tzset ();
++  }
++
++  return errors > 0;
++}
diff --git a/SOURCES/glibc-rh1234449-3.patch b/SOURCES/glibc-rh1234449-3.patch
new file mode 100644
index 0000000..048c648
--- /dev/null
+++ b/SOURCES/glibc-rh1234449-3.patch
@@ -0,0 +1,93 @@
+commit cc8dcf96e71dd643f929e32150904cd6ad69efa8
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Mon Apr 27 15:41:03 2015 +0200
+
+    test-skeleton: Support temporary files without memory leaks [BZ#18333]
+    
+    add_temp_file now makes a copy which is freed by delete_temp_files.
+    Callers to create_temp_file can now free the returned file name to
+    avoid the memory leak.  These changes do not affect the leak behavior
+    of existing code.
+
+    Also address a NULL pointer derefence in tzset after a memory allocation
+    failure, found during testing.
+
+diff --git a/test-skeleton.c b/test-skeleton.c
+index 7a8ddfa..43fc236 100644
+--- a/test-skeleton.c
++++ b/test-skeleton.c
+@@ -73,7 +73,7 @@ static const char *test_dir;
+ struct temp_name_list
+ {
+   struct qelem q;
+-  const char *name;
++  char *name;
+ } *temp_name_list;
+ 
+ /* Add temporary files in list.  */
+@@ -83,14 +83,17 @@ add_temp_file (const char *name)
+ {
+   struct temp_name_list *newp
+     = (struct temp_name_list *) calloc (sizeof (*newp), 1);
+-  if (newp != NULL)
++  char *newname = strdup (name);
++  if (newp != NULL && newname != NULL)
+     {
+-      newp->name = name;
++      newp->name = newname;
+       if (temp_name_list == NULL)
+ 	temp_name_list = (struct temp_name_list *) &newp->q;
+       else
+ 	insque (newp, temp_name_list);
+     }
++  else
++    free (newp);
+ }
+ 
+ /* Delete all temporary files.  */
+@@ -100,11 +103,19 @@ delete_temp_files (void)
+   while (temp_name_list != NULL)
+     {
+       remove (temp_name_list->name);
+-      temp_name_list = (struct temp_name_list *) temp_name_list->q.q_forw;
++      free (temp_name_list->name);
++
++      struct temp_name_list *next
++	= (struct temp_name_list *) temp_name_list->q.q_forw;
++      free (temp_name_list);
++      temp_name_list = next;
+     }
+ }
+ 
+-/* Create a temporary file.  */
++/* Create a temporary file.  Return the opened file descriptor on
++   success, or -1 on failure.  Write the file name to *FILENAME if
++   FILENAME is not NULL.  In this case, the caller is expected to free
++   *FILENAME.  */
+ static int
+ __attribute__ ((unused))
+ create_temp_file (const char *base, char **filename)
+@@ -132,6 +143,8 @@ create_temp_file (const char *base, char **filename)
+   add_temp_file (fname);
+   if (filename != NULL)
+     *filename = fname;
++  else
++    free (fname);
+ 
+   return fd;
+ }
+diff --git a/time/tzset.c b/time/tzset.c
+--- a/time/tzset.c
++++ b/time/tzset.c
+@@ -202,7 +202,10 @@
+ 	return false;
+     }
+ 
+-  tz_rules[whichrule].name = __tzstring_len (start, len);
++  const char *name = __tzstring_len (start, len);
++  if (name == NULL)
++    return false;
++  tz_rules[whichrule].name = name;
+ 
+   *tzp = p;
+   return true;
diff --git a/SOURCES/glibc-rh1234449-4.patch b/SOURCES/glibc-rh1234449-4.patch
new file mode 100644
index 0000000..9b95a4e
--- /dev/null
+++ b/SOURCES/glibc-rh1234449-4.patch
@@ -0,0 +1,21 @@
+commit 5cffc05ed5c7fea312f2822d388afc025d03c08a
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Mon Apr 27 09:57:51 2015 -0700
+
+    Check tzspec_len == 0 in __tzfile_read
+    
+    	[BZ#18333]
+    	* time/tzset.c (__tzfile_read): Check tzspec_len == 0.
+
+--- a/time/tzfile.c
++++ b/time/tzfile.c
+@@ -283,7 +283,8 @@
+       if (__builtin_expect (tzspec_len == 0 || tzspec_len - 1 < num_isgmt, 0))
+ 	goto lose;
+       tzspec_len -= num_isgmt + 1;
+-      if (__builtin_expect (SIZE_MAX - total_size < tzspec_len, 0))
++      if (__builtin_expect (tzspec_len == 0
++                            || SIZE_MAX - total_size < tzspec_len, 0))
+ 	goto lose;
+     }
+   if (__builtin_expect (SIZE_MAX - total_size - tzspec_len < extra, 0))
diff --git a/SOURCES/glibc-rh1240351-1.patch b/SOURCES/glibc-rh1240351-1.patch
new file mode 100644
index 0000000..d51d67b
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-1.patch
@@ -0,0 +1,11 @@
+    Removed file as a prerequisite for bug 1213267 - [7.3 FEAT] Configure
+    glibc with --with-cpu=power8 --with-tune=power8 for RHEL7.3 ppc64le.
+
+diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies
+deleted file mode 100644
+index fad2505..0000000
+--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies
++++ /dev/null
+@@ -1,2 +0,0 @@
+-powerpc/powerpc64/power8/fpu
+-powerpc/powerpc64/power8
diff --git a/SOURCES/glibc-rh1240351-10.patch b/SOURCES/glibc-rh1240351-10.patch
new file mode 100644
index 0000000..8e4a54c
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-10.patch
@@ -0,0 +1,253 @@
+    Backport of
+    commit 72607db038df1a1a7987af814aad8d2ed466c45c
+    Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
+    Date:   Fri Jan 9 11:56:35 2015 -0500
+    
+        powerpc: Optimize POWER7 strcmp trailing checks
+    
+        This patch optimized the POWER7 trailing check by avoiding using byte
+        read operations and instead use the doubleword already readed with
+        bitwise operations.
+    
+        ChangeLog:
+    	2015-01-13  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
+    		    Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc64/power7/strcmp.S (strcmp): Optimize
+    	trailing byte check.
+
+diff --git a/sysdeps/powerpc/powerpc64/power7/strcmp.S b/sysdeps/powerpc/powerpc64/power7/strcmp.S
+index f16a9d8..ade2811 100644
+--- a/sysdeps/powerpc/powerpc64/power7/strcmp.S
++++ b/sysdeps/powerpc/powerpc64/power7/strcmp.S
+@@ -25,122 +25,96 @@
+ 
+ /* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
+ 
++	.machine	power7
+ EALIGN (strcmp, 4, 0)
+ 	CALL_MCOUNT 2
+ 
+ 	or r9, r3, r4
+ 	rldicl. r10, r9, 0, 61	/* are s1 and s2 8 byte aligned..?  */
+ 	bne cr0, L(process_unaligned_bytes)
++	li	r5, 0
+ 
++	.align 4
+ /* process input parameters on double word aligned boundary  */
+-	ld r9, 0(r4)		/* load s2 at offset=0  */
+-	li r10, 0		/* load mask=0  */
+-	cmpb r10, r9, r10	/* compare bytes at s2 with mask  */
+-	cmpdi cr7, r10, 0	/* is NULL found ..? is end of string HIT  */
+-	bne cr7, L(process_unaligned_bytes)	/* process byte by byte  */
+-
+-	ld r10, 0(r3)		/* load s1 at offset=0  */
+-	li r8, 0		/* load mask=0  */
+-	cmpb r8, r10, r8	/* compare bytes at s1 with mask  */
+-	cmpdi cr7, r8, 0	/* is NULL found ..? is end of string HIT  */
+-	bne cr7, L(process_unaligned_bytes)	/* process byte by byte  */
+-
+-/*s1 and s2 does not contain NULL now , so compare all 8 bytes in a GO  */
+-	cmpb r9, r10, r9	/* compare s1 and s2  */
+-	cmpdi cr7, r9, -1	/* compare result with 0xFFFFFFFFFFFFFFFF  */
+-	bne cr7, L(process_unaligned_bytes)	/* s1,s2 mismatch found  */
+-
+-	addi r5, r3, 8		/* save next offset of s2  */
+-	addi r11, r4, 8		/* save next offset of s1  */
+-	ld r8, 8(r4)		/* load s2 at offset=8  */
+-	li r9, 0		/* load mask=0  */
+-	cmpb r9, r8, r9		/* compare bytes at s2 with mask  */
+-	cmpdi cr7, r9, 0	/* NULL found ..?  */
+-	bne cr7, L(processBytes)/* update input and process bytes one by one  */
+-
+-	mr r9, r4		/* save s2  */
+-	li r10, 0		/* load mask=0  */
+-
+-	ld r7, 8(r3)		/* load s1 at offset=8  */
+-	cmpb r6, r7, r10	/* compare bytes at s1 with mask  */
+-	cmpdi cr7, r6, 0	/* is NULL found  */
+-	bne cr7, L(processBytes)/* mismatch, so process one by one  */
+-
+ L(unrollDword):
+-	cmpb r8, r7, r8		/* compare s1 and s2  */
+-	cmpdi cr7, r8, -1	/* compare result with 0xFFFFFFFFFFFFFFFF  */
+-	bne cr7, L(processBytes)/* mismatch with s1 and s2  */
+-
+-	addi r5, r3, 16		/* save offset=16 of s1  */
+-	addi r4, r9, 16		/* save offset=16 of s2  */
+-	ld r8, 16(r9)		/* load s2 at offset=16  */
+-	cmpb r7, r8, r10	/* compare bytes at s2 with mask  */
+-	cmpdi cr7, r7, 0	/* NULL found  ..?  */
+-	bne cr7, L(update2processBytes)
+-
+-	ld r7, 16(r3)		/* load s1 at offset=16  */
+-	cmpb r6, r7, r10	/* check s1 for end of string  */
+-	cmpdi cr7, r6, 0	/* end of s1 ?,then handle byte by byte  */
+-	bne 7,L(update2processBytes)
+-
+-	cmpb r8, r7, r8		/* compare s1 and s2 double words  */
+-	cmpdi cr7, r8, -1	/* compare results with 0xFFFFFFFFFFFFFFFF  */
+-	bne cr7,L(update2processBytes)
+-
+-	addi r5, r3, 24		/* update s1 to offset=24  */
+-	addi r4, r9, 24		/* update s2 to offset=24  */
+-
+-	ld r8, 24(r9)		/* load s2  */
+-	cmpb r7, r8, r10	/* compare s2 for NULL  */
+-	cmpdi cr7, r7, 0	/* verify if s2 is ending now  */
+-	bne cr7,L(update2processBytes)
+-
+-	ld r7, 24(r3)		/* load s1 at offset=24  */
+-	cmpb r6, r7, r10	/* verify for NULL  */
+-	cmpdi cr7, r6, 0	/* is NULL found  */
+-	bne cr7, L(update2processBytes)
+-
+-	cmpb r8, r7, r8		/* compare s1 and s2  */
+-	cmpdi cr7, r8, -1	/* are s1 and s2 same ..?  */
+-	bne cr7, L(update2processBytes)
+-
+-	addi r7, r9, 32		/* update s2 to next double word  */
+-	addi r3, r3, 32		/* update s1 to next double word  */
+-
+-	ld r8, 32(r9)		/* load s2  */
+-	mr r4, r7		/* save s2  */
+-	cmpb r6, r8, r10	/* compare s2 with NULL  */
+-	cmpdi cr7, r6, 0	/* end of s2 ..? */
+-	bne cr7, L(process_unaligned_bytes)
+-
+-	ld r6, 0(r3)		/* load and compare s1 for NULL  */
+-	cmpb r5, r6, r10
+-	cmpdi cr7, r5, 0
+-	bne cr7, L(process_unaligned_bytes)
+-
+-	cmpb r8, r6, r8		/* compare s1 and s2  */
+-	cmpdi cr7, r8, -1
+-	bne cr7, L(process_unaligned_bytes)
+-
+-	addi r5, r3, 8		/* increment s1 and d2 here  */
+-	addi r11, r9, 40
+-
+-	ld r8, 40(r9)		/* process s2 now  */
+-	cmpb r9, r8, r10
+-	cmpdi cr7, r9, 0
+-	bne cr7, L(processBytes)
+-
+-	mr r9, r7
+-	ld r7, 8(r3)		/* process s1 now  */
+-	cmpb r6, r7, r10
+-	cmpdi cr7, r6, 0
+-	beq cr7, L(unrollDword)	/* unroll to compare s1 and s2  */
+-
+-L(processBytes):
+-	mr r4, r11		/* update input params  */
+-	mr r3, r5
+-
+-	.p2align 4
++	ld	r8,0(r3)
++	ld	r10,0(r4)
++	cmpb	r7,r8,r5
++	cmpdi	cr7,r7,0
++	mr	r9,r7
++	bne 	cr7,L(null_found)
++	cmpld	cr7,r8,r10
++	bne	cr7,L(different)
++
++	ld	r8,8(r3)
++	ld	r10,8(r4)
++	cmpb	r7,r8,r5
++	cmpdi	cr7,r7,0
++	mr	r9,r7
++	bne 	cr7,L(null_found)
++	cmpld	cr7,r8,r10
++	bne	cr7,L(different)
++
++	ld	r8,16(r3)
++	ld	r10,16(r4)
++	cmpb	r7,r8,r5
++	cmpdi	cr7,r7,0
++	mr	r9,r7
++	bne 	cr7,L(null_found)
++	cmpld	cr7,r8,r10
++	bne	cr7,L(different)
++
++	ld	r8,24(r3)
++	ld	r10,24(r4)
++	cmpb	r7,r8,r5
++	cmpdi	cr7,r7,0
++	mr	r9,r7
++	bne 	cr7,L(null_found)
++	cmpld	cr7,r8,r10
++	bne	cr7,L(different)
++
++	addi r3, r3, 32
++	addi r4, r4, 32
++	beq cr7, L(unrollDword)
++
++	.align 4
++L(null_found):
++#ifdef __LITTLE_ENDIAN__
++	neg	r7,r9
++	and	r9,r9,r7
++	li	r7,-1
++	cntlzd	r9,r9
++	subfic	r9,r9,71
++	sld	r9,r7,r9
++#else
++	cntlzd	r9,r9
++	li	r7,-1
++	addi	r9,r9,8
++	srd	r9,r7,r9
++#endif
++	or	r8,r8,r9
++	or	r10,r10,r9
++
++L(different):
++	cmpb	r9,r8,r10
++#ifdef __LITTLE_ENDIAN__
++	addi	r7,r9,1
++	andc	r9,r7,r9
++	cntlzd	r9,r9
++	subfic	r9,r9,63
++#else
++	not	r9,r9
++	cntlzd	r9,r9
++	subfic	r9,r9,56
++#endif
++	srd	r3,r8,r9
++	srd	r10,r10,r9
++	rldicl	r10,r10,0,56
++	rldicl	r3,r3,0,56
++	subf	r3,r10,r3
++	blr
++
++	.align 4
+ L(process_unaligned_bytes):
+ 	lbz r9, 0(r3)		/* load byte from s1  */
+ 	lbz r10, 0(r4)		/* load byte from s2  */
+@@ -172,24 +146,19 @@ L(process_unaligned_bytes):
+ 	addi r4, r4, 4		/* increment s2 by unroll factor  */
+ 	beq cr6, L(process_unaligned_bytes)	/* unroll byte processing  */
+ 
+-	.p2align 4
++	.align 4
+ L(ComputeDiff):
+ 	extsw r9, r9
+ 	subf r10, r10, r9	/* compute s1 - s2  */
+ 	extsw r3, r10
+ 	blr			/* return  */
+ 
+-	.p2align 4
++	.align 4
+ L(diffOfNULL):
+ 	li r9, 0
+ 	subf r10, r10, r9	/* compute s1 - s2  */
+ 	extsw r3, r10		/* sign extend result  */
+ 	blr			/* return  */
+ 
+-	.p2align 4
+-L(update2processBytes):
+-	mr r3, r5		/* update and proceed  */
+-	b L(process_unaligned_bytes)
+-
+ END (strcmp)
+ libc_hidden_builtin_def (strcmp)
diff --git a/SOURCES/glibc-rh1240351-11.patch b/SOURCES/glibc-rh1240351-11.patch
new file mode 100644
index 0000000..8404295
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-11.patch
@@ -0,0 +1,450 @@
+    Backport of
+    commit d3b00f468bec441596877a685a19f43dee88657f
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Fri Jan 9 16:04:26 2015 -0500
+    
+        powerpc: Optimized strncmp for POWER8/PPC64
+    
+        This patch adds an optimized POWER8 strncmp.  The implementation focus
+        on speeding up unaligned cases follwing the ideas of power8 strcmp.
+    
+        The algorithm first check the initial 16 bytes, then align the first
+        function source and uses unaligned loads on second argument only.
+        Aditional checks for page boundaries are done for unaligned cases
+        (where sources alignment are different).
+    
+        ChangeLog:
+    	2015-01-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S: New file.
+    	* sysdeps/powerpc/powerpc64/power8/strncmp.S: New file.
+    	* sysdeps/powerpc/powerpc64/multiarch/Makefile [sysdep_routines]: Add
+
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+index 27c8b65..677d8ce 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile
++++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+@@ -14,8 +14,9 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
+                   strncat-power7 \
+                   rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \
+                   strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \
+-                  strncase-power7 strncase_l-power7 strncmp-power7 \
+-                  strncmp-power4 strncmp-ppc64 strchr-power7 strchr-ppc64 \
++                  strncase-power7 strncase_l-power7 \
++                  strncmp-power8 strncmp-power7 strncmp-power4 strncmp-ppc64 \
++                  strchr-power7 strchr-ppc64 \
+                   strchrnul-power7 strchrnul-ppc64 wcschr-power7 \
+                   wcschr-power6 wcschr-ppc64 wcsrchr-power7 wcsrchr-power6 \
+                   wcsrchr-ppc64 wcscpy-power7 wcscpy-power6 wcscpy-ppc64 \
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+index 2b38c71..a540abf 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
++++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+@@ -100,6 +100,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+ 
+   /* Support sysdeps/powerpc/powerpc64/multiarch/strncmp.c.  */
+   IFUNC_IMPL (i, name, strncmp,
++              IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_2_07,
++                              __strncmp_power8)
+              IFUNC_IMPL_ADD (array, i, strncmp, hwcap & PPC_FEATURE_HAS_VSX,
+                              __strncmp_power7)
+              IFUNC_IMPL_ADD (array, i, strncmp, hwcap & PPC_FEATURE_POWER4,
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
+new file mode 100644
+index 0000000..8d7223d
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
+@@ -0,0 +1,40 @@
++/* Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#undef EALIGN
++#define EALIGN(name,alignt,words)				\
++  .section ".text";						\
++  ENTRY_2(__strncmp_power8)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__strncmp_power8):					\
++  cfi_startproc;						\
++  LOCALENTRY(__strncmp_power8)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__strncmp_power8)					\
++  END_2(__strncmp_power8)
++
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#include <sysdeps/powerpc/powerpc64/power8/strncmp.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c
+index 9829d69..5e76783 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c
++++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c
+@@ -25,13 +25,16 @@
+ extern __typeof (strncmp) __strncmp_ppc attribute_hidden;
+ extern __typeof (strncmp) __strncmp_power4 attribute_hidden;
+ extern __typeof (strncmp) __strncmp_power7 attribute_hidden;
++extern __typeof (strncmp) __strncmp_power8 attribute_hidden;
+ 
+ /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
+    ifunc symbol properly.  */
+ libc_ifunc (strncmp,
+-            (hwcap & PPC_FEATURE_HAS_VSX)
+-            ? __strncmp_power7 :
+-	      (hwcap & PPC_FEATURE_POWER4)
++            (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++            ? __strncmp_power8 :
++              (hwcap & PPC_FEATURE_HAS_VSX)
++              ? __strncmp_power7 :
++		(hwcap & PPC_FEATURE_POWER4)
+ 		? __strncmp_power4
+             : __strncmp_ppc);
+ #endif
+diff --git a/sysdeps/powerpc/powerpc64/power8/strncmp.S b/sysdeps/powerpc/powerpc64/power8/strncmp.S
+new file mode 100644
+index 0000000..56c814b
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/strncmp.S
+@@ -0,0 +1,323 @@
++/* Optimized strncmp implementation for PowerPC64/POWER8.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++/* Implements the function
++
++   int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t [r5] n)
++
++   The implementation uses unaligned doubleword access to avoid specialized
++   code paths depending of data alignment.  Although recent powerpc64 uses
++   64K as default, the page cross handling assumes minimum page size of
++   4k.  */
++
++	.machine  power7
++EALIGN (strncmp, 4, 0)
++	/* Check if size is 0.  */
++	mr.	r10,r5
++	beq	cr0,L(ret0)
++
++	/* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
++	   the code:
++
++	    (((size_t) s1) % PAGE_SIZE > (PAGE_SIZE - ITER_SIZE))
++
++	   with PAGE_SIZE being 4096 and ITER_SIZE begin 16.  */
++	rldicl	r8,r3,0,52
++	cmpldi	cr7,r8,4096-16
++	bgt	cr7,L(pagecross)
++	rldicl	r9,r4,0,52
++	cmpldi	cr7,r9,4096-16
++	bgt	cr7,L(pagecross)
++
++	/* For short string up to 16 bytes, load both s1 and s2 using
++	   unaligned dwords and compare.  */
++	ld	r7,0(r3)
++	ld	r9,0(r4)
++	li	r8,0
++	cmpb	r8,r7,r8
++	cmpb	r6,r7,r9
++	orc.	r8,r8,r6
++	bne	cr0,L(different1)
++
++	/* If the string compared are equal, but size is less or equal
++	   to 8, return 0.  */
++	cmpldi	cr7,r10,8
++	li	r9,0
++	ble	cr7,L(ret1)
++	addi	r5,r10,-8
++
++	ld	r7,8(r3)
++	ld	r9,8(r4)
++	cmpb	r8,r7,r8
++	cmpb	r6,r7,r9
++	orc.	r8,r8,r6
++	bne	cr0,L(different0)
++
++	cmpldi	cr7,r5,8
++	mr	r9,r8
++	ble	cr7,L(ret1)
++
++	/* Update pointers and size.  */
++	addi	r10,r10,-16
++	addi	r3,r3,16
++	addi	r4,r4,16
++
++	/* Now it has checked for first 16 bytes, align source1 to doubleword
++	   and adjust source2 address.  */
++L(align_8b):
++	rldicl	r5,r3,0,61
++	rldicr	r3,r3,0,60
++	subf	r4,r5,r4
++	add	r10,r10,r5
++
++	/* At this point, source1 alignment is 0 and source2 alignment is
++	   between 0 and 7.  Check is source2 alignment is 0, meaning both
++	   sources have the same alignment.  */
++	andi.	r8,r4,0x7
++	beq	cr0,L(loop_eq_align_0)
++
++	li	r5,0
++	b	L(loop_ne_align_1)
++
++	/* If source2 is unaligned to doubleword, the code needs to check
++	   on each interation if the unaligned doubleword access will cross
++	   a 4k page boundary.  */
++	.align 4
++L(loop_ne_align_0):
++	ld	r7,0(r3)
++	ld	r9,0(r4)
++	cmpb	r8,r7,r5
++	cmpb	r6,r7,r9
++	orc.	r8,r8,r6
++	bne	cr0,L(different1)
++
++	cmpldi	cr7,r10,8
++	ble	cr7,L(ret0)
++	addi	r10,r10,-8
++	addi	r3,r3,8
++	addi	r4,r4,8
++L(loop_ne_align_1):
++	rldicl	r9,r4,0,52
++	cmpldi	r7,r9,4088
++	ble	cr7,L(loop_ne_align_0)
++	cmpdi	cr7,r10,0
++	beq	cr7,L(ret0)
++
++	lbz	r9,0(r3)
++	lbz	r8,0(r4)
++	cmplw	cr7,r9,r8
++	bne	cr7,L(byte_ne_4)
++	cmpdi	cr7,r9,0
++	beq	cr7,L(size_reached_0)
++
++	li	r9,r7
++	addi	r8,r3,1
++	mtctr	r9
++	addi	r4,r4,1
++	addi	r10,r10,-1
++	addi	r3,r3,8
++
++	/* The unaligned read of source2 will cross a 4K page boundary,
++	   and the different byte or NULL maybe be in the remaining page
++	   bytes.  Since it can not use the unaligned load the algorithm
++	   reads and compares 8 bytes to keep source1 doubleword aligned.  */
++	.align 4
++L(loop_ne_align_byte):
++	cmpdi	cr7,r10,0
++	addi	r10,r10,-1
++	beq	cr7,L(ret0)
++	lbz	r9,0(r8)
++	lbz	r7,0(r4)
++	addi	r8,r8,1
++	addi	r4,r4,1
++	cmplw	cr7,r9,r7
++	cmpdi	cr5,r9,0
++	bne	cr7,L(size_reached_2)
++	beq	cr5,L(size_reached_0)
++	bdnz	L(loop_ne_align_byte)
++
++	cmpdi	cr7,r10,0
++	bne+	cr7,L(loop_ne_align_0)
++
++	.align 4
++L(ret0):
++	li	r9,0
++L(ret1):
++	mr	r3,r9
++	blr
++
++	/* The code now check if r8 and r10 are different by issuing a
++	   cmpb and shift the result based on its output:
++
++	#ifdef __LITTLE_ENDIAN__
++	  leadzero = (__builtin_ffsl (z1) - 1);
++	  leadzero = leadzero > (n-1)*8 ? (n-1)*8 : leadzero;
++	  r1 = (r1 >> leadzero) & 0xFFUL;
++	  r2 = (r2 >> leadzero) & 0xFFUL;
++	#else
++	  leadzero = __builtin_clzl (z1);
++	  leadzero = leadzero > (n-1)*8 ? (n-1)*8 : leadzero;
++	  r1 = (r1 >> (56 - leadzero)) & 0xFFUL;
++	  r2 = (r2 >> (56 - leadzero)) & 0xFFUL;
++	#endif
++	  return r1 - r2;  */
++
++	.align 4
++L(different0):
++	mr	r10,r5
++#ifdef __LITTLE_ENDIAN__
++L(different1):
++        neg	r11,r8
++        sldi	r10,r10,3
++        and	r8,r11,r8
++        addi	r10,r10,-8
++        cntlzd	r8,r8
++        subfic	r8,r8,63
++        extsw 	r8,r8
++        cmpld	cr7,r8,r10
++        ble	cr7,L(different2)
++        mr	r8,r10
++L(different2):
++        extsw	r8,r8
++#else
++L(different1):
++	addi	r10,r10,-1
++	cntlzd	r8,r8
++	sldi	r10,r10,3
++	cmpld	cr7,r8,r10
++	blt	cr7,L(different2)
++	mr	r8,r10
++L(different2):
++	subfic	r8,r8,56
++#endif
++	srd	r7,r7,r8
++	srd	r9,r9,r8
++	rldicl	r3,r7,0,56
++	rldicl	r9,r9,0,56
++	subf	r9,r9,3
++	extsw	r9,r9
++	mr	r3,r9
++	blr
++
++	/* If unaligned 16 bytes reads across a 4K page boundary, it uses
++	   a simple byte a byte comparison until the page alignment for s1
++	   is reached.  */
++	.align 4
++L(pagecross):
++	lbz	r7,0(r3)
++	lbz	r9,0(r4)
++	subfic	r8,r8,4095
++	cmplw	cr7,r9,r7
++	bne	cr7,L(byte_ne_3)
++	cmpdi	cr7,r9,0
++	beq	cr7,L(byte_ne_0)
++	addi	r10,r10,-1
++	subf	r7,r8,r10
++	subf	r9,r7,r10
++	addi	r9,r9,1
++	mtctr	r9
++	b	L(pagecross_loop1)
++
++	.align 4
++L(pagecross_loop0):
++	beq	cr7,L(ret0)
++	lbz	r9,0(r3)
++	lbz	r8,0(r4)
++	addi	r10,r10,-1
++	cmplw	cr7,r9,r8
++	cmpdi	cr5,r9,0
++	bne	r7,L(byte_ne_2)
++	beq	r5,L(byte_ne_0)
++L(pagecross_loop1):
++	cmpdi	cr7,r10,0
++	addi	r3,r3,1
++	addi	r4,r4,1
++	bdnz	L(pagecross_loop0)
++	cmpdi	cr7,r7,0
++	li	r9,0
++	bne+	cr7,L(align_8b)
++	b	L(ret1)
++
++	/* If both source1 and source2 are doubleword aligned, there is no
++	   need for page boundary cross checks.  */
++	.align 4
++L(loop_eq_align_0):
++	ld	r7,0(r3)
++	ld	r9,0(r4)
++	cmpb	r8,r7,r8
++	cmpb	r6,r7,r9
++	orc.	r8,r8,r6
++	bne	cr0,L(different1)
++
++	cmpldi	cr7,r10,8
++	ble	cr7,L(ret0)
++	addi	r9,r10,-9
++
++	li	r5,0
++	srdi	r9,r9,3
++	addi	r9,r9,1
++	mtctr	r9
++	b	L(loop_eq_align_2)
++
++	.align 4
++L(loop_eq_align_1):
++	bdz	L(ret0)
++L(loop_eq_align_2):
++	ldu	r7,8(r3)
++	addi	r10,r10,-8
++	ldu	r9,8(r4)
++	cmpb	r8,r7,r5
++	cmpb	r6,r7,r9
++	orc.	r8,r8,r6
++	beq	cr0,L(loop_eq_align_1)
++	b	L(different1)
++
++	.align 4
++L(byte_ne_0):
++	li	r7,0
++L(byte_ne_1):
++	subf	r9,r9,r7
++	extsw	r9,r9
++	b	L(ret1)
++
++	.align 4
++L(byte_ne_2):
++	extsw	r7,r9
++	mr	r9,r8
++	b	L(byte_ne_1)
++L(size_reached_0):
++	li	r10,0
++L(size_reached_1):
++	subf	r9,r9,r10
++	extsw	r9,r9
++	b	L(ret1)
++L(size_reached_2):
++	extsw	r10,r9
++	mr	r9,r7
++	b	L(size_reached_1)
++L(byte_ne_3):
++	extsw	r7,r7
++	b	L(byte_ne_1)
++L(byte_ne_4):
++	extsw	r10,r9
++	mr	r9,r8
++	b	L(size_reached_1)
++END(strncmp)
++libc_hidden_builtin_def(strncmp)
diff --git a/SOURCES/glibc-rh1240351-12.patch b/SOURCES/glibc-rh1240351-12.patch
new file mode 100644
index 0000000..de55a65
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-12.patch
@@ -0,0 +1,1375 @@
+    Backport of
+    commit ce6615c9c686acd34672a9f4eba9bcf5553496f6
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Sun Jan 11 19:33:17 2015 -0600
+    
+        powerpc: Fix POWER7/PPC64 performance regression on LE
+    
+        This patch fixes a performance regression on the POWER7/PPC64 memcmp
+        porting for Little Endian.  The LE code uses 'ldbrx' instruction to read
+        the memory on byte reversed form, however ISA 2.06 just provide the indexed
+        form which uses a register value as additional index, instead of a fixed value
+        enconded in the instruction.
+    
+        And the port strategy for LE uses r0 index value and update the address
+        value on each compare loop interation.  For large compare size values,
+        it adds 8 more instructions plus some more depending of trailing
+        size.  This patch fixes it by adding pre-calculate indexes to remove the
+        address update on loops and tailing sizes.
+    
+        For large sizes it shows a considerable gain, with double performance
+        pairing with BE.
+    
+        ChangeLog:
+    	2015-01-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc64/power7/memcmp.S (memcmp): Fix performance
+    	regression on LE.
+
+diff --git a/sysdeps/powerpc/powerpc64/power7/memcmp.S b/sysdeps/powerpc/powerpc64/power7/memcmp.S
+index 09bff69..98b9e54 100644
+--- a/sysdeps/powerpc/powerpc64/power7/memcmp.S
++++ b/sysdeps/powerpc/powerpc64/power7/memcmp.S
+@@ -26,18 +26,48 @@
+ EALIGN (memcmp, 4, 0)
+ 	CALL_MCOUNT 3
+ 
+-#define rRTN	r3
+-#define rSTR1	r3	/* first string arg */
+-#define rSTR2	r4	/* second string arg */
+-#define rN	r5	/* max string length */
+-#define rWORD1	r6	/* current word in s1 */
+-#define rWORD2	r7	/* current word in s2 */
+-#define rWORD3	r8	/* next word in s1 */
+-#define rWORD4	r9	/* next word in s2 */
+-#define rWORD5	r10	/* next word in s1 */
+-#define rWORD6	r11	/* next word in s2 */
+-#define rWORD7	r30	/* next word in s1 */
+-#define rWORD8	r31	/* next word in s2 */
++#define rRTN		r3
++#define rSTR1		r3	/* first string arg */
++#define rSTR2		r4	/* second string arg */
++#define rN		r5	/* max string length */
++#define rWORD1		r6	/* current word in s1 */
++#define rWORD2		r7	/* current word in s2 */
++#define rWORD3		r8	/* next word in s1 */
++#define rWORD4		r9	/* next word in s2 */
++#define rWORD5		r10	/* next word in s1 */
++#define rWORD6		r11	/* next word in s2 */
++
++#define rOFF8		r20	/* 8 bytes offset.  */
++#define rOFF16  	r21	/* 16 bytes offset.  */
++#define rOFF24		r22	/* 24 bytes offset.  */
++#define rOFF32		r23	/* 24 bytes offset.  */
++#define rWORD6_SHIFT	r24	/* Left rotation temp for rWORD8.  */
++#define rWORD4_SHIFT	r25	/* Left rotation temp for rWORD6.  */
++#define rWORD2_SHIFT	r26	/* Left rotation temp for rWORD4.  */
++#define rWORD8_SHIFT	r27	/* Left rotation temp for rWORD2.  */
++#define rSHR		r28	/* Unaligned shift right count.  */
++#define rSHL		r29	/* Unaligned shift left count.  */
++#define rWORD7		r30	/* next word in s1 */
++#define rWORD8		r31	/* next word in s2 */
++
++#define rWORD8SAVE	(-8)
++#define rWORD7SAVE	(-16)
++#define rOFF8SAVE	(-24)
++#define rOFF16SAVE	(-32)
++#define rOFF24SAVE	(-40)
++#define rOFF32SAVE	(-48)
++#define rSHRSAVE	(-56)
++#define rSHLSAVE	(-64)
++#define rWORD8SHIFTSAVE	(-72)
++#define rWORD2SHIFTSAVE	(-80)
++#define rWORD4SHIFTSAVE	(-88)
++#define rWORD6SHIFTSAVE	(-96)
++
++#ifdef __LITTLE_ENDIAN__
++# define LD	ldbrx
++#else
++# define LD	ldx
++#endif
+ 
+ 	xor	r0, rSTR2, rSTR1
+ 	cmpldi	cr6, rN, 0
+@@ -51,10 +81,24 @@ EALIGN (memcmp, 4, 0)
+ /* If less than 8 bytes or not aligned, use the unaligned
+    byte loop.  */
+ 	blt	cr1, L(bytealigned)
+-	std	rWORD8, -8(r1)
+-	cfi_offset(rWORD8, -8)
+-	std	rWORD7, -16(r1)
+-	cfi_offset(rWORD7, -16)
++	std	rWORD8, rWORD8SAVE(r1)
++	cfi_offset(rWORD8, rWORD8SAVE)
++	std	rWORD7, rWORD7SAVE(r1)
++	cfi_offset(rWORD7, rWORD7SAVE)
++	std	rOFF8, rOFF8SAVE(r1)
++	cfi_offset(rWORD7, rOFF8SAVE)
++	std	rOFF16, rOFF16SAVE(r1)
++	cfi_offset(rWORD7, rOFF16SAVE)
++	std	rOFF24, rOFF24SAVE(r1)
++	cfi_offset(rWORD7, rOFF24SAVE)
++	std	rOFF32, rOFF32SAVE(r1)
++	cfi_offset(rWORD7, rOFF32SAVE)
++
++	li	rOFF8,8
++	li	rOFF16,16
++	li	rOFF24,24
++	li	rOFF32,32
++
+ 	bne	L(unaligned)
+ /* At this point we know both strings have the same alignment and the
+    compare length is at least 8 bytes.  r12 contains the low order
+@@ -79,15 +123,8 @@ L(samealignment):
+ 	sldi	rWORD6, r12, 3
+ 	srdi	r0, rN, 5	/* Divide by 32 */
+ 	andi.	r12, rN, 24	/* Get the DW remainder */
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 0(rSTR1)
+-	ld	rWORD2, 0(rSTR2)
+-#endif
++	LD	rWORD1, 0, rSTR1
++	LD	rWORD2, 0, rSTR2
+ 	cmpldi	cr1, r12, 16
+ 	cmpldi	cr7, rN, 32
+ 	clrldi	rN, rN, 61
+@@ -104,15 +141,8 @@ L(dsP1):
+ 	cmpld	cr5, rWORD5, rWORD6
+ 	blt	cr7, L(dP1x)
+ /* Do something useful in this cycle since we have to branch anyway.  */
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 8(rSTR1)
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD1, rOFF8, rSTR1
++	LD	rWORD2, rOFF8, rSTR2
+ 	cmpld	cr7, rWORD1, rWORD2
+ 	b	L(dP1e)
+ /* Remainder is 16 */
+@@ -123,15 +153,8 @@ L(dPs2):
+ 	cmpld	cr6, rWORD5, rWORD6
+ 	blt	cr7, L(dP2x)
+ /* Do something useful in this cycle since we have to branch anyway.  */
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD7, 8(rSTR1)
+-	ld	rWORD8, 8(rSTR2)
+-#endif
++	LD	rWORD7, rOFF8, rSTR1
++	LD	rWORD8, rOFF8, rSTR2
+ 	cmpld	cr5, rWORD7, rWORD8
+ 	b	L(dP2e)
+ /* Remainder is 24 */
+@@ -173,72 +196,43 @@ L(dP1):
+    change any on the early exit path.  The key here is the non-early
+    exit path only cares about the condition code (cr5), not about which
+    register pair was used.  */
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 0(rSTR1)
+-	ld	rWORD6, 0(rSTR2)
+-#endif
++	LD	rWORD5, 0, rSTR1
++	LD	rWORD6, 0, rSTR2
+ 	cmpld	cr5, rWORD5, rWORD6
+ 	blt	cr7, L(dP1x)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 8(rSTR1)
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD1, rOFF8, rSTR1
++	LD	rWORD2, rOFF8, rSTR2
+ 	cmpld	cr7, rWORD1, rWORD2
+ L(dP1e):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 16(rSTR1)
+-	ld	rWORD4, 16(rSTR2)
+-#endif
++	LD	rWORD3, rOFF16, rSTR1
++	LD	rWORD4, rOFF16, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 24(rSTR1)
+-	ld	rWORD6, 24(rSTR2)
+-#endif
++	LD	rWORD5, rOFF24, rSTR1
++	LD	rWORD6, rOFF24, rSTR2
+ 	cmpld	cr6, rWORD5, rWORD6
+ 	bne	cr5, L(dLcr5x)
+ 	bne	cr7, L(dLcr7x)
+ 
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ldu	rWORD7, 32(rSTR1)
+-	ldu	rWORD8, 32(rSTR2)
+-#endif
++	LD	rWORD7, rOFF32, rSTR1
++	LD	rWORD8, rOFF32, rSTR2
++	addi	rSTR1, rSTR1, 32
++	addi	rSTR2, rSTR2, 32
+ 	bne	cr1, L(dLcr1)
+ 	cmpld	cr5, rWORD7, rWORD8
+ 	bdnz	L(dLoop)
+ 	bne	cr6, L(dLcr6)
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ 	.align	3
+ L(dP1x):
+ 	sldi.	r12, rN, 3
+ 	bne	cr5, L(dLcr5x)
+ 	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
+ 	bne	L(d00)
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	li	rRTN, 0
+ 	blr
+ 
+@@ -246,79 +240,41 @@ L(dP1x):
+ 	.align	4
+ L(dP2):
+ 	mtctr	r0
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 0(rSTR1)
+-	ld	rWORD6, 0(rSTR2)
+-#endif
++	LD	rWORD5, 0, rSTR1
++	LD	rWORD6, 0, rSTR2
+ 	cmpld	cr6, rWORD5, rWORD6
+ 	blt	cr7, L(dP2x)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD7, 8(rSTR1)
+-	ld	rWORD8, 8(rSTR2)
+-#endif
++	LD	rWORD7, rOFF8, rSTR1
++	LD	rWORD8, rOFF8, rSTR2
+ 	cmpld	cr5, rWORD7, rWORD8
+ L(dP2e):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 16(rSTR1)
+-	ld	rWORD2, 16(rSTR2)
+-#endif
++	LD	rWORD1, rOFF16, rSTR1
++	LD	rWORD2, rOFF16, rSTR2
+ 	cmpld	cr7, rWORD1, rWORD2
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 24(rSTR1)
+-	ld	rWORD4, 24(rSTR2)
+-#endif
++	LD	rWORD3, rOFF24, rSTR1
++	LD	rWORD4, rOFF24, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+-#ifndef __LITTLE_ENDIAN__
+ 	addi	rSTR1, rSTR1, 8
+ 	addi	rSTR2, rSTR2, 8
+-#endif
+ 	bne	cr6, L(dLcr6)
+ 	bne	cr5, L(dLcr5)
+ 	b	L(dLoop2)
+-/* Again we are on a early exit path (16-23 byte compare), we want to
+-   only use volatile registers and avoid restoring non-volatile
+-   registers.  */
+ 	.align	4
+ L(dP2x):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 8(rSTR1)
+-	ld	rWORD4, 8(rSTR2)
+-#endif
++	LD	rWORD3, rOFF8, rSTR1
++	LD	rWORD4, rOFF8, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+ 	sldi.	r12, rN, 3
+ 	bne	cr6, L(dLcr6x)
+-#ifndef __LITTLE_ENDIAN__
+ 	addi	rSTR1, rSTR1, 8
+ 	addi	rSTR2, rSTR2, 8
+-#endif
+ 	bne	cr1, L(dLcr1x)
+ 	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
+ 	bne	L(d00)
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	li	rRTN, 0
+ 	blr
+ 
+@@ -326,52 +282,22 @@ L(dP2x):
+ 	.align	4
+ L(dP3):
+ 	mtctr	r0
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 0(rSTR1)
+-	ld	rWORD4, 0(rSTR2)
+-#endif
++	LD	rWORD3, 0, rSTR1
++	LD	rWORD4, 0, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+ L(dP3e):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 8(rSTR1)
+-	ld	rWORD6, 8(rSTR2)
+-#endif
++	LD	rWORD5, rOFF8, rSTR1
++	LD	rWORD6, rOFF8, rSTR2
+ 	cmpld	cr6, rWORD5, rWORD6
+ 	blt	cr7, L(dP3x)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD7, 16(rSTR1)
+-	ld	rWORD8, 16(rSTR2)
+-#endif
++	LD	rWORD7, rOFF16, rSTR1
++	LD	rWORD8, rOFF16, rSTR2
+ 	cmpld	cr5, rWORD7, rWORD8
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 24(rSTR1)
+-	ld	rWORD2, 24(rSTR2)
+-#endif
++	LD	rWORD1, rOFF24, rSTR1
++	LD	rWORD2, rOFF24, rSTR2
+ 	cmpld	cr7, rWORD1, rWORD2
+-#ifndef __LITTLE_ENDIAN__
+ 	addi	rSTR1, rSTR1, 16
+ 	addi	rSTR2, rSTR2, 16
+-#endif
+ 	bne	cr1, L(dLcr1)
+ 	bne	cr6, L(dLcr6)
+ 	b	L(dLoop1)
+@@ -380,26 +306,21 @@ L(dP3e):
+    registers.  */
+ 	.align	4
+ L(dP3x):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 16(rSTR1)
+-	ld	rWORD2, 16(rSTR2)
+-#endif
++	LD	rWORD1, rOFF16, rSTR1
++	LD	rWORD2, rOFF16, rSTR2
+ 	cmpld	cr7, rWORD1, rWORD2
+ 	sldi.	r12, rN, 3
+ 	bne	cr1, L(dLcr1x)
+-#ifndef __LITTLE_ENDIAN__
+ 	addi	rSTR1, rSTR1, 16
+ 	addi	rSTR2, rSTR2, 16
+-#endif
+ 	bne	cr6, L(dLcr6x)
+ 	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
+ 	bne	cr7, L(dLcr7x)
+ 	bne	L(d00)
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	li	rRTN, 0
+ 	blr
+ 
+@@ -407,46 +328,20 @@ L(dP3x):
+ 	.align	4
+ L(dP4):
+ 	mtctr	r0
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 0(rSTR1)
+-	ld	rWORD2, 0(rSTR2)
+-#endif
++	LD	rWORD1, 0, rSTR1
++	LD	rWORD2, 0, rSTR2
+ 	cmpld	cr7, rWORD1, rWORD2
+ L(dP4e):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 8(rSTR1)
+-	ld	rWORD4, 8(rSTR2)
+-#endif
++	LD	rWORD3, rOFF8, rSTR1
++	LD	rWORD4, rOFF8, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 16(rSTR1)
+-	ld	rWORD6, 16(rSTR2)
+-#endif
++	LD	rWORD5, rOFF16, rSTR1
++	LD	rWORD6, rOFF16, rSTR2
+ 	cmpld	cr6, rWORD5, rWORD6
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ldu	rWORD7, 24(rSTR1)
+-	ldu	rWORD8, 24(rSTR2)
+-#endif
++	LD	rWORD7, rOFF24, rSTR1
++	LD	rWORD8, rOFF24, rSTR2
++	addi	rSTR1, rSTR1, 24
++	addi	rSTR2, rSTR2, 24
+ 	cmpld	cr5, rWORD7, rWORD8
+ 	bne	cr7, L(dLcr7)
+ 	bne	cr1, L(dLcr1)
+@@ -454,51 +349,25 @@ L(dP4e):
+ /* This is the primary loop */
+ 	.align	4
+ L(dLoop):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 8(rSTR1)
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD1, rOFF8, rSTR1
++	LD	rWORD2, rOFF8, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+ 	bne	cr6, L(dLcr6)
+ L(dLoop1):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 16(rSTR1)
+-	ld	rWORD4, 16(rSTR2)
+-#endif
++	LD	rWORD3, rOFF16, rSTR1
++	LD	rWORD4, rOFF16, rSTR2
+ 	cmpld	cr6, rWORD5, rWORD6
+ 	bne	cr5, L(dLcr5)
+ L(dLoop2):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 24(rSTR1)
+-	ld	rWORD6, 24(rSTR2)
+-#endif
++	LD	rWORD5, rOFF24, rSTR1
++	LD	rWORD6, rOFF24, rSTR2
+ 	cmpld	cr5, rWORD7, rWORD8
+ 	bne	cr7, L(dLcr7)
+ L(dLoop3):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ldu	rWORD7, 32(rSTR1)
+-	ldu	rWORD8, 32(rSTR2)
+-#endif
++	LD	rWORD7, rOFF32, rSTR1
++	LD	rWORD8, rOFF32, rSTR2
++	addi	rSTR1, rSTR1, 32
++	addi	rSTR2, rSTR2, 32
+ 	bne	cr1, L(dLcr1)
+ 	cmpld	cr7, rWORD1, rWORD2
+ 	bdnz	L(dLoop)
+@@ -519,62 +388,75 @@ L(d14):
+ 	sldi.	r12, rN, 3
+ 	bne	cr5, L(dLcr5)
+ L(d04):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ 	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
+-	beq	L(zeroLength)
++	beq	L(duzeroLength)
+ /* At this point we have a remainder of 1 to 7 bytes to compare.  Since
+    we are aligned it is safe to load the whole double word, and use
+    shift right double to eliminate bits beyond the compare length.  */
+ L(d00):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 8(rSTR1)
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD1, rOFF8, rSTR1
++	LD	rWORD2, rOFF8, rSTR2
+ 	srd	rWORD1, rWORD1, rN
+ 	srd	rWORD2, rWORD2, rN
+ 	cmpld	cr7, rWORD1, rWORD2
+ 	bne	cr7, L(dLcr7x)
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	li	rRTN, 0
+ 	blr
+ 
+ 	.align	4
+ L(dLcr7):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ L(dLcr7x):
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	li	rRTN, 1
+ 	bgtlr	cr7
+ 	li	rRTN, -1
+ 	blr
+ 	.align	4
+ L(dLcr1):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ L(dLcr1x):
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	li	rRTN, 1
+ 	bgtlr	cr1
+ 	li	rRTN, -1
+ 	blr
+ 	.align	4
+ L(dLcr6):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ L(dLcr6x):
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	li	rRTN, 1
+ 	bgtlr	cr6
+ 	li	rRTN, -1
+ 	blr
+ 	.align	4
+ L(dLcr5):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ L(dLcr5x):
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	li	rRTN, 1
+ 	bgtlr	cr5
+ 	li	rRTN, -1
+@@ -583,10 +465,6 @@ L(dLcr5x):
+ 	.align	4
+ L(bytealigned):
+ 	mtctr	rN
+-#if 0
+-/* Huh?  We've already branched on cr6!  */
+-	beq	cr6, L(zeroLength)
+-#endif
+ 
+ /* We need to prime this loop.  This loop is swing modulo scheduled
+    to avoid pipe delays.  The dependent instruction latencies (load to
+@@ -685,6 +563,7 @@ L(b11):
+ L(bx12):
+ 	sub	rRTN, rWORD1, rWORD2
+ 	blr
++
+ 	.align	4
+ L(zeroLength):
+ 	li	rRTN, 0
+@@ -705,42 +584,36 @@ L(zeroLength):
+    we need to adjust the length (rN) and special case the loop
+    versioning for the first DW. This ensures that the loop count is
+    correct and the first DW (shifted) is in the expected resister pair.  */
+-#define rSHL		r29	/* Unaligned shift left count.  */
+-#define rSHR		r28	/* Unaligned shift right count.  */
+-#define rWORD8_SHIFT	r27	/* Left rotation temp for rWORD2.  */
+-#define rWORD2_SHIFT	r26	/* Left rotation temp for rWORD4.  */
+-#define rWORD4_SHIFT	r25	/* Left rotation temp for rWORD6.  */
+-#define rWORD6_SHIFT	r24	/* Left rotation temp for rWORD8.  */
+ L(unaligned):
+-	std	rSHL, -24(r1)
+-	cfi_offset(rSHL, -24)
++	std	rSHL, rSHLSAVE(r1)
++	cfi_offset(rSHL, rSHLSAVE)
+ 	clrldi	rSHL, rSTR2, 61
+ 	beq	cr6, L(duzeroLength)
+-	std	rSHR, -32(r1)
+-	cfi_offset(rSHR, -32)
++	std	rSHR, rSHRSAVE(r1)
++	cfi_offset(rSHR, rSHRSAVE)
+ 	beq	cr5, L(DWunaligned)
+-	std	rWORD8_SHIFT, -40(r1)
+-	cfi_offset(rWORD8_SHIFT, -40)
++	std	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
++	cfi_offset(rWORD8_SHIFT, rWORD8SHIFTSAVE)
+ /* Adjust the logical start of rSTR2 to compensate for the extra bits
+    in the 1st rSTR1 DW.  */
+ 	sub	rWORD8_SHIFT, rSTR2, r12
+ /* But do not attempt to address the DW before that DW that contains
+    the actual start of rSTR2.  */
+ 	clrrdi	rSTR2, rSTR2, 3
+-	std	rWORD2_SHIFT, -48(r1)
+-	cfi_offset(rWORD2_SHIFT, -48)
++	std	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
++	cfi_offset(rWORD2_SHIFT, rWORD2SHIFTSAVE)
+ /* Compute the left/right shift counts for the unaligned rSTR2,
+    compensating for the logical (DW aligned) start of rSTR1.  */
+ 	clrldi	rSHL, rWORD8_SHIFT, 61
+ 	clrrdi	rSTR1, rSTR1, 3
+-	std	rWORD4_SHIFT, -56(r1)
+-	cfi_offset(rWORD4_SHIFT, -56)
++	std	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
++	cfi_offset(rWORD4_SHIFT, rWORD4SHIFTSAVE)
+ 	sldi	rSHL, rSHL, 3
+ 	cmpld	cr5, rWORD8_SHIFT, rSTR2
+ 	add	rN, rN, r12
+ 	sldi	rWORD6, r12, 3
+-	std	rWORD6_SHIFT, -64(r1)
+-	cfi_offset(rWORD6_SHIFT, -64)
++	std	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
++	cfi_offset(rWORD6_SHIFT, rWORD6SHIFTSAVE)
+ 	subfic	rSHR, rSHL, 64
+ 	srdi	r0, rN, 5	/* Divide by 32 */
+ 	andi.	r12, rN, 24	/* Get the DW remainder */
+@@ -750,25 +623,13 @@ L(unaligned):
+    this may cross a page boundary and cause a page fault.  */
+ 	li	rWORD8, 0
+ 	blt	cr5, L(dus0)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD8, 0, rSTR2
++	LD	rWORD8, 0, rSTR2
+ 	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD8, 0(rSTR2)
+-	addi	rSTR2, rSTR2, 8
+-#endif
+ 	sld	rWORD8, rWORD8, rSHL
+ 
+ L(dus0):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 0(rSTR1)
+-	ld	rWORD2, 0(rSTR2)
+-#endif
++	LD	rWORD1, 0, rSTR1
++	LD	rWORD2, 0, rSTR2
+ 	cmpldi	cr1, r12, 16
+ 	cmpldi	cr7, rN, 32
+ 	srd	r12, rWORD2, rSHR
+@@ -796,12 +657,7 @@ L(dusP1):
+ 	beq	L(duZeroReturn)
+ 	li	r0, 0
+ 	ble	cr7, L(dutrim)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD2, rOFF8, rSTR2
+ 	srd	r0, rWORD2, rSHR
+ 	b	L(dutrim)
+ /* Remainder is 16 */
+@@ -832,27 +688,21 @@ L(duPs4):
+    compare length is at least 8 bytes.  */
+ 	.align	4
+ L(DWunaligned):
+-	std	rWORD8_SHIFT, -40(r1)
+-	cfi_offset(rWORD8_SHIFT, -40)
++	std	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
++	cfi_offset(rWORD8_SHIFT, rWORD8SHIFTSAVE)
+ 	clrrdi	rSTR2, rSTR2, 3
+-	std	rWORD2_SHIFT, -48(r1)
+-	cfi_offset(rWORD2_SHIFT, -48)
++	std	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
++	cfi_offset(rWORD2_SHIFT, rWORD2SHIFTSAVE)
+ 	srdi	r0, rN, 5	/* Divide by 32 */
+-	std	rWORD4_SHIFT, -56(r1)
+-	cfi_offset(rWORD4_SHIFT, -56)
++	std	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
++	cfi_offset(rWORD4_SHIFT, rWORD4SHIFTSAVE)
+ 	andi.	r12, rN, 24	/* Get the DW remainder */
+-	std	rWORD6_SHIFT, -64(r1)
+-	cfi_offset(rWORD6_SHIFT, -64)
++	std	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
++	cfi_offset(rWORD6_SHIFT, rWORD6SHIFTSAVE)
+ 	sldi	rSHL, rSHL, 3
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD6, 0, rSTR2
++	LD	rWORD6, 0, rSTR2
++	LD	rWORD8, rOFF8, rSTR2
+ 	addi	rSTR2, rSTR2, 8
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD6, 0(rSTR2)
+-	ldu	rWORD8, 8(rSTR2)
+-#endif
+ 	cmpldi	cr1, r12, 16
+ 	cmpldi	cr7, rN, 32
+ 	clrldi	rN, rN, 61
+@@ -867,52 +717,26 @@ L(DWunaligned):
+ 	.align	4
+ L(duP1):
+ 	srd	r12, rWORD8, rSHR
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	addi	rSTR1, rSTR1, 8
+-#else
+-	ld	rWORD7, 0(rSTR1)
+-#endif
++	LD	rWORD7, 0, rSTR1
+ 	sld	rWORD8_SHIFT, rWORD8, rSHL
+ 	or	rWORD8, r12, rWORD6_SHIFT
+ 	blt	cr7, L(duP1x)
+ L(duP1e):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 8(rSTR1)
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD1, rOFF8, rSTR1
++	LD	rWORD2, rOFF8, rSTR2
+ 	cmpld	cr5, rWORD7, rWORD8
+ 	srd	r0, rWORD2, rSHR
+ 	sld	rWORD2_SHIFT, rWORD2, rSHL
+ 	or	rWORD2, r0, rWORD8_SHIFT
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 16(rSTR1)
+-	ld	rWORD4, 16(rSTR2)
+-#endif
++	LD	rWORD3, rOFF16, rSTR1
++	LD	rWORD4, rOFF16, rSTR2
+ 	cmpld	cr7, rWORD1, rWORD2
+ 	srd	r12, rWORD4, rSHR
+ 	sld	rWORD4_SHIFT, rWORD4, rSHL
+ 	bne	cr5, L(duLcr5)
+ 	or	rWORD4, r12, rWORD2_SHIFT
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 24(rSTR1)
+-	ld	rWORD6, 24(rSTR2)
+-#endif
++	LD	rWORD5, rOFF24, rSTR1
++	LD	rWORD6, rOFF24, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+ 	srd	r0, rWORD6, rSHR
+ 	sld	rWORD6_SHIFT, rWORD6, rSHL
+@@ -932,82 +756,47 @@ L(duP1x):
+ 	beq	L(duZeroReturn)
+ 	li	r0, 0
+ 	ble	cr7, L(dutrim)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD2, rOFF8, rSTR2
+ 	srd	r0, rWORD2, rSHR
+ 	b	L(dutrim)
+ /* Remainder is 16 */
+ 	.align	4
+ L(duP2):
+ 	srd	r0, rWORD8, rSHR
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	addi	rSTR1, rSTR1, 8
+-#else
+-	ld	rWORD5, 0(rSTR1)
+-#endif
++	LD	rWORD5, 0, rSTR1
+ 	or	rWORD6, r0, rWORD6_SHIFT
+ 	sld	rWORD6_SHIFT, rWORD8, rSHL
+ L(duP2e):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD7, 8(rSTR1)
+-	ld	rWORD8, 8(rSTR2)
+-#endif
++	LD	rWORD7, rOFF8, rSTR1
++	LD	rWORD8, rOFF8, rSTR2
+ 	cmpld	cr6, rWORD5, rWORD6
+ 	srd	r12, rWORD8, rSHR
+ 	sld	rWORD8_SHIFT, rWORD8, rSHL
+ 	or	rWORD8, r12, rWORD6_SHIFT
+ 	blt	cr7, L(duP2x)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 16(rSTR1)
+-	ld	rWORD2, 16(rSTR2)
+-#endif
++	LD	rWORD1, rOFF16, rSTR1
++	LD	rWORD2, rOFF16, rSTR2
+ 	cmpld	cr5, rWORD7, rWORD8
+ 	bne	cr6, L(duLcr6)
+ 	srd	r0, rWORD2, rSHR
+ 	sld	rWORD2_SHIFT, rWORD2, rSHL
+ 	or	rWORD2, r0, rWORD8_SHIFT
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 24(rSTR1)
+-	ld	rWORD4, 24(rSTR2)
+-#endif
++	LD	rWORD3, rOFF24, rSTR1
++	LD	rWORD4, rOFF24, rSTR2
+ 	cmpld	cr7, rWORD1, rWORD2
+ 	bne	cr5, L(duLcr5)
+ 	srd	r12, rWORD4, rSHR
+ 	sld	rWORD4_SHIFT, rWORD4, rSHL
+ 	or	rWORD4, r12, rWORD2_SHIFT
+-#ifndef __LITTLE_ENDIAN__
+ 	addi	rSTR1, rSTR1, 8
+ 	addi	rSTR2, rSTR2, 8
+-#endif
+ 	cmpld	cr1, rWORD3, rWORD4
+ 	b	L(duLoop2)
+ 	.align	4
+ L(duP2x):
+ 	cmpld	cr5, rWORD7, rWORD8
+-#ifndef __LITTLE_ENDIAN__
+ 	addi	rSTR1, rSTR1, 8
+ 	addi	rSTR2, rSTR2, 8
+-#endif
+ 	bne	cr6, L(duLcr6)
+ 	sldi.	rN, rN, 3
+ 	bne	cr5, L(duLcr5)
+@@ -1015,12 +804,7 @@ L(duP2x):
+ 	beq	L(duZeroReturn)
+ 	li	r0, 0
+ 	ble	cr7, L(dutrim)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD2, rOFF8, rSTR2
+ 	srd	r0, rWORD2, rSHR
+ 	b	L(dutrim)
+ 
+@@ -1028,73 +812,39 @@ L(duP2x):
+ 	.align	4
+ L(duP3):
+ 	srd	r12, rWORD8, rSHR
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	addi	rSTR1, rSTR1, 8
+-#else
+-	ld	rWORD3, 0(rSTR1)
+-#endif
++	LD	rWORD3, 0, rSTR1
+ 	sld	rWORD4_SHIFT, rWORD8, rSHL
+ 	or	rWORD4, r12, rWORD6_SHIFT
+ L(duP3e):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 8(rSTR1)
+-	ld	rWORD6, 8(rSTR2)
+-#endif
++	LD	rWORD5, rOFF8, rSTR1
++	LD	rWORD6, rOFF8, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+ 	srd	r0, rWORD6, rSHR
+ 	sld	rWORD6_SHIFT, rWORD6, rSHL
+ 	or	rWORD6, r0, rWORD4_SHIFT
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD7, 16(rSTR1)
+-	ld	rWORD8, 16(rSTR2)
+-#endif
++	LD	rWORD7, rOFF16, rSTR1
++	LD	rWORD8, rOFF16, rSTR2
+ 	cmpld	cr6, rWORD5, rWORD6
+ 	bne	cr1, L(duLcr1)
+ 	srd	r12, rWORD8, rSHR
+ 	sld	rWORD8_SHIFT, rWORD8, rSHL
+ 	or	rWORD8, r12, rWORD6_SHIFT
+ 	blt	cr7, L(duP3x)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 24(rSTR1)
+-	ld	rWORD2, 24(rSTR2)
+-#endif
++	LD	rWORD1, rOFF24, rSTR1
++	LD	rWORD2, rOFF24, rSTR2
+ 	cmpld	cr5, rWORD7, rWORD8
+ 	bne	cr6, L(duLcr6)
+ 	srd	r0, rWORD2, rSHR
+ 	sld	rWORD2_SHIFT, rWORD2, rSHL
+ 	or	rWORD2, r0, rWORD8_SHIFT
+-#ifndef __LITTLE_ENDIAN__
+ 	addi	rSTR1, rSTR1, 16
+ 	addi	rSTR2, rSTR2, 16
+-#endif
+ 	cmpld	cr7, rWORD1, rWORD2
+ 	b	L(duLoop1)
+ 	.align	4
+ L(duP3x):
+-#ifndef __LITTLE_ENDIAN__
+ 	addi	rSTR1, rSTR1, 16
+ 	addi	rSTR2, rSTR2, 16
+-#endif
+-#if 0
+-/* Huh?  We've already branched on cr1!  */
+-	bne	cr1, L(duLcr1)
+-#endif
+ 	cmpld	cr5, rWORD7, rWORD8
+ 	bne	cr6, L(duLcr6)
+ 	sldi.	rN, rN, 3
+@@ -1103,12 +853,7 @@ L(duP3x):
+ 	beq	L(duZeroReturn)
+ 	li	r0, 0
+ 	ble	cr7, L(dutrim)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD2, rOFF8, rSTR2
+ 	srd	r0, rWORD2, rSHR
+ 	b	L(dutrim)
+ 
+@@ -1117,51 +862,27 @@ L(duP3x):
+ L(duP4):
+ 	mtctr	r0
+ 	srd	r0, rWORD8, rSHR
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	addi	rSTR1, rSTR1, 8
+-#else
+-	ld	rWORD1, 0(rSTR1)
+-#endif
++	LD	rWORD1, 0, rSTR1
+ 	sld	rWORD2_SHIFT, rWORD8, rSHL
+ 	or	rWORD2, r0, rWORD6_SHIFT
+ L(duP4e):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 8(rSTR1)
+-	ld	rWORD4, 8(rSTR2)
+-#endif
++	LD	rWORD3, rOFF8, rSTR1
++	LD	rWORD4, rOFF8, rSTR2
+ 	cmpld	cr7, rWORD1, rWORD2
+ 	srd	r12, rWORD4, rSHR
+ 	sld	rWORD4_SHIFT, rWORD4, rSHL
+ 	or	rWORD4, r12, rWORD2_SHIFT
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 16(rSTR1)
+-	ld	rWORD6, 16(rSTR2)
+-#endif
++	LD	rWORD5, rOFF16, rSTR1
++	LD	rWORD6, rOFF16, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+ 	bne	cr7, L(duLcr7)
+ 	srd	r0, rWORD6, rSHR
+ 	sld	rWORD6_SHIFT, rWORD6, rSHL
+ 	or	rWORD6, r0, rWORD4_SHIFT
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ldu	rWORD7, 24(rSTR1)
+-	ldu	rWORD8, 24(rSTR2)
+-#endif
++	LD	rWORD7, rOFF24, rSTR1
++	LD	rWORD8, rOFF24, rSTR2
++	addi	rSTR1, rSTR1, 24
++	addi	rSTR2, rSTR2, 24
+ 	cmpld	cr6, rWORD5, rWORD6
+ 	bne	cr1, L(duLcr1)
+ 	srd	r12, rWORD8, rSHR
+@@ -1172,60 +893,34 @@ L(duP4e):
+ /* This is the primary loop */
+ 	.align	4
+ L(duLoop):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD1, 8(rSTR1)
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD1, rOFF8, rSTR1
++	LD	rWORD2, rOFF8, rSTR2
+ 	cmpld	cr1, rWORD3, rWORD4
+ 	bne	cr6, L(duLcr6)
+ 	srd	r0, rWORD2, rSHR
+ 	sld	rWORD2_SHIFT, rWORD2, rSHL
+ 	or	rWORD2, r0, rWORD8_SHIFT
+ L(duLoop1):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD3, 0, rSTR1
+-	ldbrx	rWORD4, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD3, 16(rSTR1)
+-	ld	rWORD4, 16(rSTR2)
+-#endif
++	LD	rWORD3, rOFF16, rSTR1
++	LD	rWORD4, rOFF16, rSTR2
+ 	cmpld	cr6, rWORD5, rWORD6
+ 	bne	cr5, L(duLcr5)
+ 	srd	r12, rWORD4, rSHR
+ 	sld	rWORD4_SHIFT, rWORD4, rSHL
+ 	or	rWORD4, r12, rWORD2_SHIFT
+ L(duLoop2):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD5, 0, rSTR1
+-	ldbrx	rWORD6, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD5, 24(rSTR1)
+-	ld	rWORD6, 24(rSTR2)
+-#endif
++	LD	rWORD5, rOFF24, rSTR1
++	LD	rWORD6, rOFF24, rSTR2
+ 	cmpld	cr5, rWORD7, rWORD8
+ 	bne	cr7, L(duLcr7)
+ 	srd	r0, rWORD6, rSHR
+ 	sld	rWORD6_SHIFT, rWORD6, rSHL
+ 	or	rWORD6, r0, rWORD4_SHIFT
+ L(duLoop3):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD7, 0, rSTR1
+-	ldbrx	rWORD8, 0, rSTR2
+-	addi	rSTR1, rSTR1, 8
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ldu	rWORD7, 32(rSTR1)
+-	ldu	rWORD8, 32(rSTR2)
+-#endif
++	LD	rWORD7, rOFF32, rSTR1
++	LD	rWORD8, rOFF32, rSTR2
++	addi	rSTR1, rSTR1, 32
++	addi	rSTR2, rSTR2, 32
+ 	cmpld	cr7, rWORD1, rWORD2
+ 	bne	cr1, L(duLcr1)
+ 	srd	r12, rWORD8, rSHR
+@@ -1234,10 +929,6 @@ L(duLoop3):
+ 	bdnz	L(duLoop)
+ 
+ L(duL4):
+-#if 0
+-/* Huh?  We've already branched on cr1!  */
+-	bne	cr1, L(duLcr1)
+-#endif
+ 	cmpld	cr1, rWORD3, rWORD4
+ 	bne	cr6, L(duLcr6)
+ 	cmpld	cr6, rWORD5, rWORD6
+@@ -1264,99 +955,102 @@ L(du14):
+ 	beq	L(duZeroReturn)
+ 	li	r0, 0
+ 	ble	cr7, L(dutrim)
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD2, 0, rSTR2
+-	addi	rSTR2, rSTR2, 8
+-#else
+-	ld	rWORD2, 8(rSTR2)
+-#endif
++	LD	rWORD2, rOFF8, rSTR2
+ 	srd	r0, rWORD2, rSHR
+ 	.align	4
+ L(dutrim):
+-#ifdef __LITTLE_ENDIAN__
+-	ldbrx	rWORD1, 0, rSTR1
+-#else
+-	ld	rWORD1, 8(rSTR1)
+-#endif
++	LD	rWORD1, rOFF8, rSTR1
+ 	ld	rWORD8, -8(r1)
+ 	subfic	rN, rN, 64	/* Shift count is 64 - (rN * 8).  */
+ 	or	rWORD2, r0, rWORD8_SHIFT
+-	ld	rWORD7, -16(r1)
+-	ld	rSHL, -24(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
++	ld	rSHL, rSHLSAVE(r1)
+ 	srd	rWORD1, rWORD1, rN
+ 	srd	rWORD2, rWORD2, rN
+-	ld	rSHR, -32(r1)
+-	ld	rWORD8_SHIFT, -40(r1)
++	ld	rSHR, rSHRSAVE(r1)
++	ld	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
+ 	li	rRTN, 0
+ 	cmpld	cr7, rWORD1, rWORD2
+-	ld	rWORD2_SHIFT, -48(r1)
+-	ld	rWORD4_SHIFT, -56(r1)
++	ld	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
++	ld	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
+ 	beq	cr7, L(dureturn24)
+ 	li	rRTN, 1
+-	ld	rWORD6_SHIFT, -64(r1)
++	ld	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	bgtlr	cr7
+ 	li	rRTN, -1
+ 	blr
+ 	.align	4
+ L(duLcr7):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ 	li	rRTN, 1
+ 	bgt	cr7, L(dureturn29)
+-	ld	rSHL, -24(r1)
+-	ld	rSHR, -32(r1)
++	ld	rSHL, rSHLSAVE(r1)
++	ld	rSHR, rSHRSAVE(r1)
+ 	li	rRTN, -1
+ 	b	L(dureturn27)
+ 	.align	4
+ L(duLcr1):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ 	li	rRTN, 1
+ 	bgt	cr1, L(dureturn29)
+-	ld	rSHL, -24(r1)
+-	ld	rSHR, -32(r1)
++	ld	rSHL, rSHLSAVE(r1)
++	ld	rSHR, rSHRSAVE(r1)
+ 	li	rRTN, -1
+ 	b	L(dureturn27)
+ 	.align	4
+ L(duLcr6):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ 	li	rRTN, 1
+ 	bgt	cr6, L(dureturn29)
+-	ld	rSHL, -24(r1)
+-	ld	rSHR, -32(r1)
++	ld	rSHL, rSHLSAVE(r1)
++	ld	rSHR, rSHRSAVE(r1)
+ 	li	rRTN, -1
+ 	b	L(dureturn27)
+ 	.align	4
+ L(duLcr5):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ 	li	rRTN, 1
+ 	bgt	cr5, L(dureturn29)
+-	ld	rSHL, -24(r1)
+-	ld	rSHR, -32(r1)
++	ld	rSHL, rSHLSAVE(r1)
++	ld	rSHR, rSHRSAVE(r1)
+ 	li	rRTN, -1
+ 	b	L(dureturn27)
++
+ 	.align	3
+ L(duZeroReturn):
+ 	li	rRTN, 0
+ 	.align	4
+ L(dureturn):
+-	ld	rWORD8, -8(r1)
+-	ld	rWORD7, -16(r1)
++	ld	rWORD8, rWORD8SAVE(r1)
++	ld	rWORD7, rWORD7SAVE(r1)
+ L(dureturn29):
+-	ld	rSHL, -24(r1)
+-	ld	rSHR, -32(r1)
++	ld	rSHL, rSHLSAVE(r1)
++	ld	rSHR, rSHRSAVE(r1)
+ L(dureturn27):
+-	ld	rWORD8_SHIFT, -40(r1)
+-L(dureturn26):
+-	ld	rWORD2_SHIFT, -48(r1)
+-L(dureturn25):
+-	ld	rWORD4_SHIFT, -56(r1)
++	ld	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
++	ld	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
++	ld	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
+ L(dureturn24):
+-	ld	rWORD6_SHIFT, -64(r1)
++	ld	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	blr
++
+ L(duzeroLength):
++	ld	rOFF8,  rOFF8SAVE(r1)
++	ld	rOFF16, rOFF16SAVE(r1)
++	ld	rOFF24, rOFF24SAVE(r1)
++	ld	rOFF32, rOFF32SAVE(r1)
+ 	li	rRTN, 0
+ 	blr
+ 
diff --git a/SOURCES/glibc-rh1240351-2.patch b/SOURCES/glibc-rh1240351-2.patch
new file mode 100644
index 0000000..0d47968
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-2.patch
@@ -0,0 +1,231 @@
+    Backport of:
+    commit 487972aea52004f604c2878c8c9d3e77670f2c32
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Thu Feb 27 09:43:51 2014 -0600
+    
+        PowerPC: Optimized isnan/isnanf for POWER8
+    
+        This patch add a optimized isnan/isnanf implementation for POWER8
+        using the new Move From VSR Doubleword instruction to gains some
+        cycles from FP to GRP register move.
+    
+        ChangeLog:
+    	2014-02-27  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h (INIT_ARCH):
+    	Add hwcap2 initialization.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile: Add isnan power8
+    	implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S: New file:
+    	POWER8 isnan ifunc implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c (__isnan): Add
+    	POWER8 implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c (__isnanf):
+    	Likewise.
+    	* sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S: New file:
+    	POWER8 isnan implementation.
+    	* sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S: New file.
+
+diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h b/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
+index 51a34f2..72d720d 100644
+--- a/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
++++ b/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
+@@ -36,6 +36,7 @@
+    and fills the previous ones.  */
+ #define INIT_ARCH() \
+   unsigned long int hwcap = __GLRO(dl_hwcap); 			\
++  unsigned long int __attribute__((unused)) hwcap2 = __GLRO(dl_hwcap2); \
+   if (hwcap & PPC_FEATURE_ARCH_2_06)				\
+     hwcap |= PPC_FEATURE_ARCH_2_05 |				\
+ 	     PPC_FEATURE_POWER5_PLUS |				\
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
+index 1e04f21..4cd1c5d 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
+@@ -4,7 +4,7 @@ sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
+                   s_copysign-ppc64 s_finite-power7 s_finite-ppc64 \
+                   s_finitef-ppc64 s_isinff-ppc64 s_isinf-power7 \
+                   s_isinf-ppc64 s_modf-power5+ s_modf-ppc64 \
+-                  s_modff-power5+ s_modff-ppc64
++                  s_modff-power5+ s_modff-ppc64 s_isnan-power8
+ 
+ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
+                        s_isnan-power5 s_isnan-ppc64 s_llround-power6x \
+@@ -21,7 +21,8 @@ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
+                        s_logbl-power7 s_logb-ppc64 s_logbf-ppc64 \
+                        s_logbl-ppc64 s_modf-power5+ s_modf-ppc64 \
+                        s_modff-power5+ s_modff-ppc64 e_hypot-ppc64 \
+-                       e_hypot-power7 e_hypotf-ppc64 e_hypotf-power7
++                       e_hypot-power7 e_hypotf-ppc64 e_hypotf-power7 \
++                       s_isnan-power8
+ 
+ CFLAGS-s_logbf-power7.c = -mcpu=power7
+ CFLAGS-s_logbl-power7.c = -mcpu=power7
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S
+new file mode 100644
+index 0000000..c176d5a
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S
+@@ -0,0 +1,33 @@
++/* isnan().  PowerPC64/POWER7 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#undef hidden_def
++#define hidden_def(name)
++#undef weak_alias
++#define weak_alias(name, alias)
++#undef strong_alias
++#define strong_alias(name, alias)
++#undef compat_symbol
++#define compat_symbol(lib, name, symbol, ver)
++
++#define __isnan __isnan_power8
++
++#include <sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S>
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
+index 0de833e..65a5ca0 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
+@@ -26,16 +26,19 @@ extern __typeof (__isnan) __isnan_power5 attribute_hidden;
+ extern __typeof (__isnan) __isnan_power6 attribute_hidden;
+ extern __typeof (__isnan) __isnan_power6x attribute_hidden;
+ extern __typeof (__isnan) __isnan_power7 attribute_hidden;
++extern __typeof (__isnan) __isnan_power8 attribute_hidden;
+ 
+ libc_ifunc (__isnan,
+-	    (hwcap & PPC_FEATURE_ARCH_2_06)
+-	    ? __isnan_power7 :
+-	      (hwcap & PPC_FEATURE_POWER6_EXT)
++	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++	    ? __isnan_power8 :
++	      (hwcap & PPC_FEATURE_ARCH_2_06)
++	      ? __isnan_power7 :
++		(hwcap & PPC_FEATURE_POWER6_EXT)
+ 		? __isnan_power6x :
+-		(hwcap & PPC_FEATURE_ARCH_2_05)
+-		  ? __isnan_power6 :
+-		  (hwcap & PPC_FEATURE_POWER5)
+-		    ? __isnan_power5
++		  (hwcap & PPC_FEATURE_ARCH_2_05)
++		    ? __isnan_power6 :
++		    (hwcap & PPC_FEATURE_POWER5)
++		      ? __isnan_power5
+             : __isnan_ppc64);
+ 
+ weak_alias (__isnan, isnan)
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c
+index b237455..eb68a50 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c
+@@ -25,16 +25,19 @@ extern __typeof (__isnanf) __isnan_power5 attribute_hidden;
+ extern __typeof (__isnanf) __isnan_power6 attribute_hidden;
+ extern __typeof (__isnanf) __isnan_power6x attribute_hidden;
+ extern __typeof (__isnanf) __isnan_power7 attribute_hidden;
++extern __typeof (__isnanf) __isnan_power8 attribute_hidden;
+ 
+ libc_ifunc (__isnanf,
+-	    (hwcap & PPC_FEATURE_ARCH_2_06)
+-	    ? __isnan_power7 :
+-	      (hwcap & PPC_FEATURE_POWER6_EXT)
+-		? __isnan_power6x :
+-		(hwcap & PPC_FEATURE_ARCH_2_05)
+-		  ? __isnan_power6 :
+-		  (hwcap & PPC_FEATURE_POWER5)
+-		    ? __isnan_power5
++	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++	    ? __isnan_power8 :
++	      (hwcap & PPC_FEATURE_ARCH_2_06)
++	      ? __isnan_power7 :
++		(hwcap & PPC_FEATURE_POWER6_EXT)
++		  ? __isnan_power6x :
++		  (hwcap & PPC_FEATURE_ARCH_2_05)
++		    ? __isnan_power6 :
++		    (hwcap & PPC_FEATURE_POWER5)
++		      ? __isnan_power5
+             : __isnan_ppc64);
+ 
+ weak_alias (__isnanf, isnanf)
+diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
+new file mode 100644
+index 0000000..c1ca9a5
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
+@@ -0,0 +1,53 @@
++/* isnan().  PowerPC64/POWER8 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#define MFVSRD_R3_V1  .byte 0x7c,0x23,0x00,0x66     /* mfvsrd  r3,vs1  */
++
++/* int [r3] __isnan([f1] x)  */
++
++EALIGN (__isnan, 4, 0)
++	CALL_MCOUNT 0
++	MFVSRD_R3_V1
++	lis     r9,0x7ff0
++	clrldi  r3,r3,1       /* r3 = r3 & 0x8000000000000000  */
++	rldicr  r9,r9,32,31   /* r9 = (r9 << 32) & 0xffffffff  */
++	subf    r3,r3,r9
++	rldicl  r3,r3,1,63
++	blr
++END (__isnan)
++
++/* It turns out that the 'double' version will also always work for
++   single-precision.  */
++strong_alias (__isnan, __isnanf)
++hidden_def (__isnanf)
++weak_alias (__isnanf, isnanf)
++
++#ifdef NO_LONG_DOUBLE
++strong_alias (__isnan, __isnanl)
++weak_alias (__isnan, isnanl)
++#endif
++
++#ifndef IS_IN_libm
++# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
++compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
++compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
++# endif
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S
+new file mode 100644
+index 0000000..b48c85e
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S
+@@ -0,0 +1 @@
++/* This function uses the same code as s_isnan.S.  */
diff --git a/SOURCES/glibc-rh1240351-3.patch b/SOURCES/glibc-rh1240351-3.patch
new file mode 100644
index 0000000..2a09502
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-3.patch
@@ -0,0 +1,667 @@
+    Backport of the following patches:
+    
+    commit 4393fc119c34e97519b9b7a4fc94066b283be452
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Thu Feb 27 09:45:41 2014 -0600
+    
+        PowerPC: Optimized isinf/isinff for POWER8
+    
+        This patch add a optimized isinf/isinff implementation for POWER8
+        using the new Move From VSR Doubleword instruction to gains some
+        cycles from FP to GRP register move.
+    
+        ChangeLog:
+    	2014-02-27  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile: Add isinf power8
+    	implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S: New file:
+    	POWER8 isinf ifunc implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c (__isinf): Add
+    	POWER8 implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c (__isinff):
+    	Likewise.
+    	* sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S: New file:
+    	POWER8 isinf implementation.
+    	* sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S: New file.
+    
+    commit cac626d60a863e48ab75417064984769e58c5719
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Thu Feb 27 09:46:46 2014 -0600
+    
+        PowerPC: Optimized finite/finitef for POWER8
+    
+        This patch add a optimized finite/finitef implementation for POWER8
+        using the new Move From VSR Doubleword instruction to gains some
+        cycles from FP to GRP register move.
+    
+        ChangeLog:
+    	2014-02-27  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile: Add finite power8
+    	implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S: New file:
+    	POWER8 finite ifunc implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c (__finite): Add
+    	POWER8 implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c (__finitef):
+    	Likewise.
+    	* sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S: New file:
+    	POWER8 finite implementation.
+    	* sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S: New file.
+    
+    commit 1ad8950a3ea4056ed343d681b5146f4b4aa27e10
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Tue Feb 18 09:29:29 2014 -0500
+    
+        PowerPC: llrint/llrintf POWER8 optimization
+    
+        This patch add a optimized llrint/llrintf implementation for POWER8
+        using the new Move From VSR Doubleword instruction to gains some
+        cycles from FP to GRP register move.
+    
+        ChangeLog:
+    	2014-02-27  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile: Add llrint power8
+    	implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S: New file:
+    	POWER8 llrint ifunc implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c (__lllrint): Add
+    	POWER8 implementation.
+    	* sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S: New file:
+    	POWER8 llrint implementation.
+    
+    commit fe13a20c37578f08ce393ccaeb45caeb48815ca5
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Mon Feb 17 10:44:08 2014 -0600
+    
+        PowerPC: llround/llroundf POWER8 optimization
+    
+        This patch add a optimized llround/llroundf implementation for POWER8
+        using the new Move From VSR Doubleword instruction to gains some
+        cycles from FP to GRP register move.
+    
+        ChangeLog:
+    	2014-02-27  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile: Add llround power8
+    	implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S: New file:
+    	POWER8 llround ifunc implementation.
+    	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c (__lllround): Add
+    	POWER8 implementation.
+    	* sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S: New file:
+    	POWER8 llround implementation.
+    
+    commit 757d9dd5c3efa56fac75965abc014faaae7b7895
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Mon Mar 31 08:00:38 2014 -0500
+    
+        PowerPC: Fix little endian enconding for mfvsrd
+    
+        This patch fixes the MFVSRD_R3_V1 macro that encodes 'mfvsrd  r3,vs1'
+        (to support old binutils) for little endian.
+
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
+index 4cd1c5d..3e2127b 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
+@@ -4,7 +4,8 @@ sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
+                   s_copysign-ppc64 s_finite-power7 s_finite-ppc64 \
+                   s_finitef-ppc64 s_isinff-ppc64 s_isinf-power7 \
+                   s_isinf-ppc64 s_modf-power5+ s_modf-ppc64 \
+-                  s_modff-power5+ s_modff-ppc64 s_isnan-power8
++                  s_modff-power5+ s_modff-ppc64 s_isnan-power8 \
++                  s_isinf-power8 s_finite-power8
+ 
+ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
+                        s_isnan-power5 s_isnan-ppc64 s_llround-power6x \
+@@ -22,7 +23,8 @@ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
+                        s_logbl-ppc64 s_modf-power5+ s_modf-ppc64 \
+                        s_modff-power5+ s_modff-ppc64 e_hypot-ppc64 \
+                        e_hypot-power7 e_hypotf-ppc64 e_hypotf-power7 \
+-                       s_isnan-power8
++                       s_isnan-power8 s_isinf-power8 s_finite-power8 \
++                       s_llrint-power8 s_llround-power8
+ 
+ CFLAGS-s_logbf-power7.c = -mcpu=power7
+ CFLAGS-s_logbl-power7.c = -mcpu=power7
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S
+new file mode 100644
+index 0000000..3b9071f
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S
+@@ -0,0 +1,33 @@
++/* isnan().  PowerPC64/POWER7 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#undef hidden_def
++#define hidden_def(name)
++#undef weak_alias
++#define weak_alias(name, alias)
++#undef strong_alias
++#define strong_alias(name, alias)
++#undef compat_symbol
++#define compat_symbol(lib, name, symbol, ver)
++
++#define __finite __finite_power8
++
++#include <sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S>
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
+index f79a93e..b9e908d 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
+@@ -23,10 +23,13 @@
+ 
+ extern __typeof (__finite) __finite_ppc64 attribute_hidden;
+ extern __typeof (__finite) __finite_power7 attribute_hidden;
++extern __typeof (__finite) __finite_power8 attribute_hidden;
+ 
+ libc_ifunc (__finite,
+-	    (hwcap & PPC_FEATURE_ARCH_2_06)
+-	    ? __finite_power7
++	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++	    ? __finite_power8 :
++	      (hwcap & PPC_FEATURE_ARCH_2_06)
++	      ? __finite_power7
+             : __finite_ppc64);
+ 
+ weak_alias (__finite, finite)
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c
+index a7243b5..30b34bc 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c
+@@ -23,10 +23,13 @@
+ extern __typeof (__finitef) __finitef_ppc64 attribute_hidden;
+ /* The double-precision version also works for single-precision.  */
+ extern __typeof (__finitef) __finite_power7 attribute_hidden;
++extern __typeof (__finitef) __finite_power8 attribute_hidden;
+ 
+ libc_ifunc (__finitef,
+-	    (hwcap & PPC_FEATURE_ARCH_2_06)
+-	    ? __finite_power7
++	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++	    ? __finite_power8 :
++	      (hwcap & PPC_FEATURE_ARCH_2_06)
++	      ? __finite_power7
+             : __finitef_ppc64);
+ 
+ weak_alias (__finitef, finitef)
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S
+new file mode 100644
+index 0000000..979816e
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S
+@@ -0,0 +1,33 @@
++/* isinf().  PowerPC64/POWER8 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#undef hidden_def
++#define hidden_def(name)
++#undef weak_alias
++#define weak_alias(name, alias)
++#undef strong_alias
++#define strong_alias(name, alias)
++#undef compat_symbol
++#define compat_symbol(lib, name, alias, ver)
++
++#define __isinf __isinf_power8
++
++#include <sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S>
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
+index 1ee230b..e349a06 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
+@@ -23,10 +23,13 @@
+ 
+ extern __typeof (__isinf) __isinf_ppc64 attribute_hidden;
+ extern __typeof (__isinf) __isinf_power7 attribute_hidden;
++extern __typeof (__isinf) __isinf_power8 attribute_hidden;
+ 
+ libc_ifunc (__isinf,
+-	    (hwcap & PPC_FEATURE_ARCH_2_06)
+-	    ? __isinf_power7
++	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++	    ? __isinf_power8 :
++	      (hwcap & PPC_FEATURE_ARCH_2_06)
++	      ? __isinf_power7
+             : __isinf_ppc64);
+ 
+ weak_alias (__isinf, isinf)
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c
+index 1336feb..71da7a3 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c
+@@ -24,10 +24,13 @@
+ extern __typeof (__isinff) __isinff_ppc64 attribute_hidden;
+ /* The double-precision version also works for single-precision.  */
+ extern __typeof (__isinff) __isinf_power7 attribute_hidden;
++extern __typeof (__isinff) __isinf_power8 attribute_hidden;
+ 
+ libc_ifunc (__isinff,
+-	    (hwcap & PPC_FEATURE_ARCH_2_06)
+-	    ? __isinf_power7
++	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++	    ? __isinf_power8 :
++	      (hwcap & PPC_FEATURE_ARCH_2_06)
++	      ? __isinf_power7
+             : __isinff_ppc64);
+ 
+ weak_alias (__isinff, isinff)
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S
+new file mode 100644
+index 0000000..3962b7d
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S
+@@ -0,0 +1,31 @@
++/* Round double to long int.  PowerPC64/POWER6X default version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#undef weak_alias
++#define weak_alias(a,b)
++#undef strong_alias
++#define strong_alias(a,b)
++#undef compat_symbol
++#define compat_symbol(a,b,c,d)
++
++#define __llrint __llrint_power8
++
++#include <sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S>
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c
+index 5818b53..cf1b2e4 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c
+@@ -30,10 +30,13 @@
+ 
+ extern __typeof (__llrint) __llrint_ppc64 attribute_hidden;
+ extern __typeof (__llrint) __llrint_power6x attribute_hidden;
++extern __typeof (__llrint) __llrint_power8 attribute_hidden;
+ 
+ libc_ifunc (__llrint,
+-	    (hwcap & PPC_FEATURE_POWER6_EXT)
+-	    ? __llrint_power6x
++	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++	    ? __llrint_power8 :
++	      (hwcap & PPC_FEATURE_POWER6_EXT)
++	      ? __llrint_power6x
+             : __llrint_ppc64);
+ 
+ weak_alias (__llrint, llrint)
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S
+new file mode 100644
+index 0000000..41c61a1
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S
+@@ -0,0 +1,31 @@
++/* llround().  PowerPC64 default version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#undef weak_alias
++#define weak_alias(name, alias)
++#undef strong_alias
++#define strong_alias(name, alias)
++#undef compat_symbol
++#define compat_symbol(lib, name, alias, ver)
++
++#define __llround __llround_power8
++
++#include <sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S>
+diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
+index a4d1bf3..7dba17e 100644
+--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
++++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
+@@ -27,12 +27,15 @@
+ extern __typeof (__llround) __llround_ppc64 attribute_hidden;
+ extern __typeof (__llround) __llround_power5plus attribute_hidden;
+ extern __typeof (__llround) __llround_power6x attribute_hidden;
++extern __typeof (__llround) __llround_power8 attribute_hidden;
+ 
+ libc_ifunc (__llround,
+-	    (hwcap & PPC_FEATURE_POWER6_EXT)
+-	    ? __llround_power6x :
+-	      (hwcap & PPC_FEATURE_POWER5_PLUS)
+-	      ? __llround_power5plus
++	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++	    ? __llround_power8 :
++	      (hwcap & PPC_FEATURE_POWER6_EXT)
++	      ? __llround_power6x :
++		(hwcap & PPC_FEATURE_POWER5_PLUS)
++		? __llround_power5plus
+             : __llround_ppc64);
+ 
+ weak_alias (__llround, llround)
+diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
+new file mode 100644
+index 0000000..3e98126
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
+@@ -0,0 +1,56 @@
++/* isfinite().  PowerPC64/POWER8 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
++
++/* int [r3] __finite ([fp1] x)  */
++
++EALIGN (__finite, 4, 0)
++	CALL_MCOUNT 0
++	MFVSRD_R3_V1
++	lis     r9,0x8010
++	clrldi  r3,r3,1       /* r3 = r3 & 0x8000000000000000  */
++	rldicr  r9,r9,32,31   /* r9 = (r9 << 32) & 0xffffffff  */
++	add     r3,r3,r9
++	rldicl  r3,r3,1,63
++	blr
++END (__finite)
++
++hidden_def (__finite)
++weak_alias (__finite, finite)
++
++/* It turns out that the 'double' version will also always work for
++   single-precision.  */
++strong_alias (__finite, __finitef)
++hidden_def (__finitef)
++weak_alias (__finitef, finitef)
++
++#ifdef IS_IN_libm
++# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
++compat_symbol (libm, __finite, __finitel, GLIBC_2_0)
++compat_symbol (libm, finite, finitel, GLIBC_2_0)
++# endif
++#else
++# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
++compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
++compat_symbol (libc, finite, finitel, GLIBC_2_0);
++# endif
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S
+new file mode 100644
+index 0000000..54bd941
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S
+@@ -0,0 +1 @@
++/* This function uses the same code as s_finite.S.  */
+diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S
+new file mode 100644
+index 0000000..125de39
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S
+@@ -0,0 +1,61 @@
++/* isinf().  PowerPC64/POWER8 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
++
++/* int [r3] __isinf([fp1] x)  */
++
++EALIGN (__isinf, 4, 0)
++	CALL_MCOUNT 0
++	MFVSRD_R3_V1
++	lis     r9,0x7ff0     /* r9 = 0x7ff0  */
++	rldicl  r10,r3,0,1    /* r10 = r3 & (0x8000000000000000)  */
++	sldi    r9,r9,32      /* r9 = r9 << 52  */
++	cmpd    cr7,r10,r9    /* fp1 & 0x7ff0000000000000 ?  */
++	beq     cr7,L(inf)
++	li      r3,0          /* Not inf  */
++	blr
++L(inf):
++	sradi   r3,r3,63      /* r3 = r3 >> 63  */
++	ori     r3,r3,1       /* r3 = r3 | 0x1  */
++	blr
++END (__isinf)
++
++hidden_def (__isinf)
++weak_alias (__isinf, isinf)
++
++/* It turns out that the 'double' version will also always work for
++   single-precision.  */
++strong_alias (__isinf, __isinff)
++hidden_def (__isinff)
++weak_alias (__isinff, isinff)
++
++#ifdef NO_LONG_DOUBLE
++strong_alias (__isinf, __isinfl)
++weak_alias (__isinf, isinfl)
++#endif
++
++#ifndef IS_IN_libm
++# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
++compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
++compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
++# endif
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S
+new file mode 100644
+index 0000000..be759e0
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S
+@@ -0,0 +1 @@
++/* This function uses the same code as s_isinf.S.  */
+diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
+index c1ca9a5..cb96d03 100644
+--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
++++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
+@@ -19,8 +19,8 @@
+ #include <sysdep.h>
+ #include <math_ldbl_opt.h>
+ 
+-#define MFVSRD_R3_V1  .byte 0x7c,0x23,0x00,0x66     /* mfvsrd  r3,vs1  */
+-
++#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
++        
+ /* int [r3] __isnan([f1] x)  */
+ 
+ EALIGN (__isnan, 4, 0)
+diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
+new file mode 100644
+index 0000000..ce48d4e
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
+@@ -0,0 +1,45 @@
++/* Round double to long int.  POWER8 PowerPC64 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
++
++/* long long int[r3] __llrint (double x[fp1])  */
++ENTRY (__llrint)
++	CALL_MCOUNT 0
++	fctid	fp1,fp1
++	MFVSRD_R3_V1
++	blr
++END (__llrint)
++
++strong_alias (__llrint, __lrint)
++weak_alias (__llrint, llrint)
++weak_alias (__lrint, lrint)
++
++#ifdef NO_LONG_DOUBLE
++strong_alias (__llrint, __llrintl)
++weak_alias (__llrint, llrintl)
++strong_alias (__lrint, __lrintl)
++weak_alias (__lrint, lrintl)
++#endif
++#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
++compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
++compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
+new file mode 100644
+index 0000000..2aea234
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
+@@ -0,0 +1,47 @@
++/* llround function.  POWER8 PowerPC64 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <math_ldbl_opt.h>
++
++#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
++
++/* long long [r3] llround (float x [fp1])  */
++
++ENTRY (__llround)
++	CALL_MCOUNT 0
++	frin	fp1,fp1	/* Round to nearest +-0.5.  */
++	fctidz	fp1,fp1	/* Convert To Integer DW round toward 0.  */
++	MFVSRD_R3_V1
++	blr
++END (__llround)
++
++strong_alias (__llround, __lround)
++weak_alias (__llround, llround)
++weak_alias (__lround, lround)
++
++#ifdef NO_LONG_DOUBLE
++weak_alias (__llround, llroundl)
++strong_alias (__llround, __llroundl)
++weak_alias (__lround, lroundl)
++strong_alias (__lround, __lroundl)
++#endif
++#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
++compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
++compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
++#endif
diff --git a/SOURCES/glibc-rh1240351-4.patch b/SOURCES/glibc-rh1240351-4.patch
new file mode 100644
index 0000000..7b570d4
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-4.patch
@@ -0,0 +1,741 @@
+    Backport of the following patch as a prerequistite for
+    96d6fd6c4060d739abb1822e7ad633af749532b2:
+    commit 69f13dbf06c6195de0ada8632271d58ca3cf55da
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Thu Sep 26 09:29:19 2013 -0500
+    
+        PowerPC: strcpy/stpcpy optimization for PPC64/POWER7
+    
+        This patch intends to unify both strcpy and stpcpy implementationsi
+        for PPC64 and PPC64/POWER7. The idead default powerpc64 implementation
+        is to provide both doubleword and word aligned memory access.
+    
+        For PPC64/POWER7 is also provide doubleword and word memory access,
+        remove the branch hints, use the cmpb instruction for compare
+        doubleword/words, and add an optimization for inputs of same alignment.
+    
+        ChangeLog:
+    
+            2013-10-04  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+            * sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Add word load/store
+            to provide a boost for large inputs with word alignment.
+            * sysdeps/powerpc/powerpc64/stpcpy.S (__stpcpy): Rewrite
+            implementation based on optimized PPC64 strcpy.
+            * sysdeps/powerpc/powerpc64/power7/strcpy.S: New file: optimized
+            strcpy for PPC64/POWER7 based on both doubleword and word load/store.
+            * sysdeps/powerpc/powerpc64/power7/stpcpy.S: New file: optimized
+            stpcpy for PPC64/POWER7 based on PPC64/POWER7 strcpy.
+
+diff --git a/sysdeps/powerpc/powerpc64/power7/stpcpy.S b/sysdeps/powerpc/powerpc64/power7/stpcpy.S
+new file mode 100644
+index 0000000..727dd06
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power7/stpcpy.S
+@@ -0,0 +1,24 @@
++/* Optimized stpcpy implementation for PowerPC64/POWER7.
++   Copyright (C) 2013 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define USE_AS_STPCPY
++#include <sysdeps/powerpc/powerpc64/power7/strcpy.S>
++
++weak_alias (__stpcpy, stpcpy)
++libc_hidden_def (__stpcpy)
++libc_hidden_builtin_def (stpcpy)
+diff --git a/sysdeps/powerpc/powerpc64/power7/strcpy.S b/sysdeps/powerpc/powerpc64/power7/strcpy.S
+new file mode 100644
+index 0000000..5c341a1
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power7/strcpy.S
+@@ -0,0 +1,274 @@
++/* Optimized strcpy/stpcpy implementation for PowerPC64/POWER7.
++   Copyright (C) 2013 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++/* Implements the function
++
++   char * [r3] strcpy (char *dest [r3], const char *src [r4])
++
++   or
++
++   char * [r3] strcpy (char *dest [r3], const char *src [r4])
++
++   if USE_AS_STPCPY is defined. It tries to use aligned memory accesses
++   when possible using the following algorithm:
++
++   if (((((uintptr_t)dst & 0x7UL) == 0) && ((uintptr_t)src & 0x7UL) == 0))
++     goto aligned_doubleword_copy;
++   if (((((uintptr_t)dst & 0x3UL) == 0) && ((uintptr_t)src & 0x3UL) == 0))
++     goto aligned_word_copy;
++   if (((uintptr_t)dst & 0x7UL) == ((uintptr_t)src & 0x7UL))
++     goto same_alignment;
++   goto unaligned;
++
++   The aligned comparison are made using cmpb instructions.  */
++
++#ifdef USE_AS_STPCPY
++# define FUNC_NAME __stpcpy
++#else
++# define FUNC_NAME strcpy
++#endif
++
++	.machine  power7
++EALIGN (FUNC_NAME, 4, 0)
++	CALL_MCOUNT 2
++
++#define rTMP	r0
++#ifdef USE_AS_STPCPY
++#define rRTN	r3	/* pointer to previous word/doubleword in dest */
++#else
++#define rRTN	r12	/* pointer to previous word/doubleword in dest */
++#endif
++#define rSRC	r4	/* pointer to previous word/doubleword in src */
++#define rMASK	r5	/* mask 0xffffffff | 0xffffffffffffffff */
++#define rWORD	r6	/* current word from src */
++#define rALT	r7	/* alternate word from src */
++#define rRTNAL	r8	/* alignment of return pointer */
++#define rSRCAL	r9	/* alignment of source pointer */
++#define rALCNT	r10	/* bytes to read to reach 8 bytes alignment */
++#define rSUBAL	r11	/* doubleword minus unaligned displacement */
++
++#ifndef USE_AS_STPCPY
++/* Save the dst pointer to use as return value.  */
++	mr	rRTN, r3
++#endif
++	or	rTMP, rSRC, rRTN
++	clrldi.	rTMP, rTMP, 61
++	bne	L(check_word_alignment)
++	b	L(aligned_doubleword_copy)
++
++L(same_alignment):
++/* Src and dst with same alignment: align both to doubleword.  */
++	mr	rALCNT, rRTN
++	lbz	rWORD, 0(rSRC)
++	subfic	rSUBAL, rRTNAL, 8
++	addi	rRTN, rRTN, 1
++	addi	rSRC, rSRC, 1
++	cmpdi	cr7, rWORD, 0
++	stb	rWORD, 0(rALCNT)
++	beq	cr7, L(s2)
++
++	add	rALCNT, rALCNT, rSUBAL
++	subf	rALCNT, rRTN, rALCNT
++	addi	rALCNT, rALCNT, 1
++	mtctr	rALCNT
++	b	L(s1)
++
++	.align 4
++L(s0):
++	addi	rSRC, rSRC, 1
++	lbz	rWORD, -1(rSRC)
++	cmpdi	cr7, rWORD, 0
++	stb	rWORD, -1(rALCNT)
++	beqlr	cr7
++	mr	rRTN, rALCNT
++L(s1):
++	addi	rALCNT, rRTN,1
++	bdnz	L(s0)
++	b L(aligned_doubleword_copy)
++	.align 4
++L(s2):
++	mr	rRTN, rALCNT
++	blr
++
++/* For doubleword aligned memory, operate using doubleword load and stores.  */
++	.align 4
++L(aligned_doubleword_copy):
++	li	rMASK, 0
++	addi	rRTN, rRTN, -8
++	ld	rWORD, 0(rSRC)
++	b	L(g2)
++
++	.align 4
++L(g0):	ldu	rALT, 8(rSRC)
++	stdu	rWORD, 8(rRTN)
++	cmpb	rTMP, rALT, rMASK
++	cmpdi	rTMP, 0
++	bne	L(g1)
++	ldu	rWORD, 8(rSRC)
++	stdu	rALT, 8(rRTN)
++L(g2):	cmpb	rTMP, rWORD, rMASK
++	cmpdi	rTMP, 0		/* If rTMP is 0, no null's have been found.  */
++	beq	L(g0)
++
++	mr	rALT, rWORD
++/* We've hit the end of the string.  Do the rest byte-by-byte.  */
++L(g1):
++#ifdef __LITTLE_ENDIAN__
++	extrdi.	rTMP, rALT, 8, 56
++	stbu	rALT, 8(rRTN)
++	beqlr-
++	extrdi.	rTMP, rALT, 8, 48
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	extrdi.	rTMP, rALT, 8, 40
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	extrdi.	rTMP, rALT, 8, 32
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	extrdi.	rTMP, rALT, 8, 24
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	extrdi.	rTMP, rALT, 8, 16
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	extrdi.	rTMP, rALT, 8, 8
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	extrdi	rTMP, rALT, 8, 0
++	stbu	rTMP, 1(rRTN)
++#else
++	extrdi.	rTMP, rALT, 8, 0
++	stbu	rTMP, 8(rRTN)
++	beqlr
++	extrdi.	rTMP, rALT, 8, 8
++	stbu	rTMP, 1(rRTN)
++	beqlr
++	extrdi.	rTMP, rALT, 8, 16
++	stbu	rTMP, 1(rRTN)
++	beqlr
++	extrdi.	rTMP, rALT, 8, 24
++	stbu	rTMP, 1(rRTN)
++	beqlr
++	extrdi.	rTMP, rALT, 8, 32
++	stbu	rTMP, 1(rRTN)
++	beqlr
++	extrdi.	rTMP, rALT, 8, 40
++	stbu	rTMP, 1(rRTN)
++	beqlr
++	extrdi.	rTMP, rALT, 8, 48
++	stbu	rTMP, 1(rRTN)
++	beqlr
++	stbu	rALT, 1(rRTN)
++#endif
++	blr
++
++L(check_word_alignment):
++	clrldi. rTMP, rTMP, 62
++	beq	L(aligned_word_copy)
++	rldicl	rRTNAL, rRTN, 0, 61
++	rldicl	rSRCAL, rSRC, 0, 61
++	cmpld	cr7, rSRCAL, rRTNAL
++	beq	cr7, L(same_alignment)
++	b	L(unaligned)
++
++/* For word aligned memory, operate using word load and stores.  */
++	.align	4
++L(aligned_word_copy):
++	li	rMASK, 0
++	addi	rRTN, rRTN, -4
++	lwz	rWORD, 0(rSRC)
++	b	L(g5)
++
++	.align	4
++L(g3):	lwzu	rALT, 4(rSRC)
++	stwu	rWORD, 4(rRTN)
++	cmpb	rTMP, rALT, rMASK
++	cmpwi	rTMP, 0
++	bne	L(g4)
++	lwzu	rWORD, 4(rSRC)
++	stwu	rALT, 4(rRTN)
++L(g5):	cmpb	rTMP, rWORD, rMASK
++	cmpwi	rTMP, 0		/* If rTMP is 0, no null in word.  */
++	beq	L(g3)
++
++	mr      rALT, rWORD
++/* We've hit the end of the string.  Do the rest byte-by-byte.  */
++L(g4):
++#ifdef __LITTLE_ENDIAN__
++	rlwinm.	rTMP, rALT, 0, 24, 31
++	stbu	rALT, 4(rRTN)
++	beqlr-
++	rlwinm.	rTMP, rALT, 24, 24, 31
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	rlwinm.	rTMP, rALT, 16, 24, 31
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	rlwinm	rTMP, rALT, 8, 24, 31
++	stbu	rTMP, 1(rRTN)
++#else
++	rlwinm. rTMP, rALT, 8, 24, 31
++	stbu    rTMP, 4(rRTN)
++	beqlr
++	rlwinm. rTMP, rALT, 16, 24, 31
++	stbu    rTMP, 1(rRTN)
++	beqlr
++	rlwinm. rTMP, rALT, 24, 24, 31
++	stbu    rTMP, 1(rRTN)
++	beqlr
++	stbu    rALT, 1(rRTN)
++#endif
++	blr
++
++/* Oh well.  In this case, we just do a byte-by-byte copy.  */
++	.align	4
++L(unaligned):
++	lbz	rWORD, 0(rSRC)
++	addi	rRTN, rRTN, -1
++	cmpdi	rWORD, 0
++	beq	L(u2)
++
++	.align 	5
++L(u0):	lbzu	rALT, 1(rSRC)
++	stbu	rWORD, 1(rRTN)
++	cmpdi	rALT, 0
++	beq	L(u1)
++	lbzu	rWORD, 1(rSRC)
++	stbu	rALT, 1(rRTN)
++	cmpdi	rWORD, 0
++	beq	L(u2)
++	lbzu	rALT, 1(rSRC)
++	stbu	rWORD, 1(rRTN)
++	cmpdi	rALT, 0
++	beq	L(u1)
++	lbzu	rWORD, 1(rSRC)
++	stbu	rALT, 1(rRTN)
++	cmpdi	rWORD, 0
++	bne	L(u0)
++L(u2):	stbu	rWORD, 1(rRTN)
++	blr
++L(u1):	stbu	rALT, 1(rRTN)
++	blr
++END (FUNC_NAME)
++
++#ifndef USE_AS_STPCPY
++libc_hidden_builtin_def (strcpy)
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/stpcpy.S b/sysdeps/powerpc/powerpc64/stpcpy.S
+index d795b61..09aa3be 100644
+--- a/sysdeps/powerpc/powerpc64/stpcpy.S
++++ b/sysdeps/powerpc/powerpc64/stpcpy.S
+@@ -1,5 +1,5 @@
+ /* Optimized stpcpy implementation for PowerPC64.
+-   Copyright (C) 1997, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
++   Copyright (C) 1997-2013 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -16,123 +16,9 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#include <sysdep.h>
+-#include <bp-sym.h>
+-#include <bp-asm.h>
++#define USE_AS_STPCPY
++#include <sysdeps/powerpc/powerpc64/strcpy.S>
+ 
+-/* See strlen.s for comments on how the end-of-string testing works.  */
+-
+-/* char * [r3] stpcpy (char *dest [r3], const char *src [r4])  */
+-
+-EALIGN (BP_SYM (__stpcpy), 4, 0)
+-	CALL_MCOUNT 2
+-
+-#define rTMP	r0
+-#define rRTN	r3
+-#if __BOUNDED_POINTERS__
+-# define rDEST	r4		/* pointer to previous word in dest */
+-# define rSRC	r5		/* pointer to previous word in src */
+-# define rLOW	r11
+-# define rHIGH	r12
+-#else
+-# define rDEST	r3		/* pointer to previous word in dest */
+-# define rSRC	r4		/* pointer to previous word in src */
+-#endif
+-#define rWORD	r6		/* current word from src */
+-#define rFEFE	r7		/* 0xfefefeff */
+-#define r7F7F	r8		/* 0x7f7f7f7f */
+-#define rNEG	r9		/* ~(word in src | 0x7f7f7f7f) */
+-#define rALT	r10		/* alternate word from src */
+-
+-	CHECK_BOUNDS_LOW (rSRC, rLOW, rHIGH)
+-	CHECK_BOUNDS_LOW (rDEST, rLOW, rHIGH)
+-	STORE_RETURN_BOUNDS (rLOW, rHIGH)
+-
+-	or	rTMP, rSRC, rDEST
+-	clrldi.	rTMP, rTMP, 62
+-	addi	rDEST, rDEST, -4
+-	bne	L(unaligned)
+-
+-	lis	rFEFE, -0x101
+-	lis	r7F7F, 0x7f7f
+-	lwz	rWORD, 0(rSRC)
+-	addi	rFEFE, rFEFE, -0x101
+-	addi	r7F7F, r7F7F, 0x7f7f
+-	b	L(g2)
+-
+-L(g0):	lwzu	rALT, 4(rSRC)
+-	stwu	rWORD, 4(rDEST)
+-	add	rTMP, rFEFE, rALT
+-	nor	rNEG, r7F7F, rALT
+-	and.	rTMP, rTMP, rNEG
+-	bne-	L(g1)
+-	lwzu	rWORD, 4(rSRC)
+-	stwu	rALT, 4(rDEST)
+-L(g2):	add	rTMP, rFEFE, rWORD
+-	nor	rNEG, r7F7F, rWORD
+-	and.	rTMP, rTMP, rNEG
+-	beq+	L(g0)
+-
+-	mr	rALT, rWORD
+-/* We've hit the end of the string.  Do the rest byte-by-byte.  */
+-L(g1):
+-#ifdef __LITTLE_ENDIAN__
+-	rlwinm.	rTMP, rALT, 0, 24, 31
+-	stbu	rALT, 4(rDEST)
+-	beqlr-
+-	rlwinm.	rTMP, rALT, 24, 24, 31
+-	stbu	rTMP, 1(rDEST)
+-	beqlr-
+-	rlwinm.	rTMP, rALT, 16, 24, 31
+-	stbu	rTMP, 1(rDEST)
+-	beqlr-
+-	rlwinm	rTMP, rALT, 8, 24, 31
+-	stbu	rTMP, 1(rDEST)
+-	blr
+-#else
+-	rlwinm.	rTMP, rALT, 8, 24, 31
+-	stbu	rTMP, 4(rDEST)
+-	beqlr-
+-	rlwinm.	rTMP, rALT, 16, 24, 31
+-	stbu	rTMP, 1(rDEST)
+-	beqlr-
+-	rlwinm.	rTMP, rALT, 24, 24, 31
+-	stbu	rTMP, 1(rDEST)
+-	beqlr-
+-	stbu	rALT, 1(rDEST)
+-	CHECK_BOUNDS_HIGH (rDEST, rHIGH, twlgt)
+-	STORE_RETURN_VALUE (rDEST)
+-	blr
+-#endif
+-
+-/* Oh well.  In this case, we just do a byte-by-byte copy.  */
+-	.align 4
+-	nop
+-L(unaligned):
+-	lbz	rWORD, 0(rSRC)
+-	addi	rDEST, rDEST, 3
+-	cmpwi	rWORD, 0
+-	beq-	L(u2)
+-
+-L(u0):	lbzu	rALT, 1(rSRC)
+-	stbu	rWORD, 1(rDEST)
+-	cmpwi	rALT, 0
+-	beq-	L(u1)
+-	nop		/* Let 601 load start of loop.  */
+-	lbzu	rWORD, 1(rSRC)
+-	stbu	rALT, 1(rDEST)
+-	cmpwi	rWORD, 0
+-	bne+	L(u0)
+-L(u2):	stbu	rWORD, 1(rDEST)
+-	CHECK_BOUNDS_HIGH (rDEST, rHIGH, twlgt)
+-	STORE_RETURN_VALUE (rDEST)
+-	blr
+-L(u1):	stbu	rALT, 1(rDEST)
+-	CHECK_BOUNDS_HIGH (rDEST, rHIGH, twlgt)
+-	STORE_RETURN_VALUE (rDEST)
+-	blr
+-END (BP_SYM (__stpcpy))
+-
+-weak_alias (BP_SYM (__stpcpy), BP_SYM (stpcpy))
++weak_alias (__stpcpy, stpcpy)
+ libc_hidden_def (__stpcpy)
+ libc_hidden_builtin_def (stpcpy)
+diff --git a/sysdeps/powerpc/powerpc64/strcpy.S b/sysdeps/powerpc/powerpc64/strcpy.S
+index 9434c27..793325d 100644
+--- a/sysdeps/powerpc/powerpc64/strcpy.S
++++ b/sysdeps/powerpc/powerpc64/strcpy.S
+@@ -1,5 +1,5 @@
+ /* Optimized strcpy implementation for PowerPC64.
+-   Copyright (C) 1997, 1999, 2000, 2002, 2003, 2011 Free Software Foundation, Inc.
++   Copyright (C) 1997-2013 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -17,52 +17,43 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #include <sysdep.h>
+-#include <bp-sym.h>
+-#include <bp-asm.h>
+ 
+ /* See strlen.s for comments on how the end-of-string testing works.  */
+ 
+ /* char * [r3] strcpy (char *dest [r3], const char *src [r4])  */
+ 
+-EALIGN (BP_SYM (strcpy), 4, 0)
++#ifdef USE_AS_STPCPY
++# define FUNC_NAME __stpcpy
++#else
++# define FUNC_NAME strcpy
++#endif
++
++EALIGN (FUNC_NAME, 4, 0)
+ 	CALL_MCOUNT 2
+ 
+ #define rTMP	r0
+-#define rRTN	r3	/* incoming DEST arg preserved as result */
+-/* Note.  The Bounded pointer support in this code is broken.  This code
+-   was inherited from PPC32 and that support was never completed.
+-   Current PPC gcc does not support -fbounds-check or -fbounded-pointers.
+-   These artifacts are left in the code as a reminder in case we need
+-   bounded pointer support in the future.  */
+-#if __BOUNDED_POINTERS__
+-# define rDEST	r4	/* pointer to previous word in dest */
+-# define rSRC	r5	/* pointer to previous word in src */
+-# define rLOW	r11
+-# define rHIGH	r12
++#ifdef USE_AS_STPCPY
++#define rRTN    r3      /* pointer to previous word/doubleword in dest */
+ #else
+-# define rSRC	r4	/* pointer to previous word in src */
+-# define rDEST	r5	/* pointer to previous word in dest */
++#define rRTN    r12     /* pointer to previous word/doubleword in dest */
+ #endif
++#define rSRC	r4	/* pointer to previous word/doubleword in src */
+ #define rWORD	r6	/* current word from src */
+-#define rFEFE	r7	/* constant 0xfefefefefefefeff (-0x0101010101010101) */
+-#define r7F7F	r8	/* constant 0x7f7f7f7f7f7f7f7f */
+-#define rNEG	r9	/* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */
++#define rFEFE	r7	/* constant 0xfefefeff | 0xfefefefefefefeff */
++#define r7F7F	r8	/* constant 0x7f7f7f7f | 0x7f7f7f7f7f7f7f7f */
++#define rNEG	r9	/* ~(word in s1 | r7F7F) */
+ #define rALT	r10	/* alternate word from src */
+ 
+-	CHECK_BOUNDS_LOW (rSRC, rLOW, rHIGH)
+-	CHECK_BOUNDS_LOW (rDEST, rLOW, rHIGH)
+-	STORE_RETURN_BOUNDS (rLOW, rHIGH)
+-
+-	dcbt	0,rSRC
++#ifndef USE_AS_STPCPY
++/* Save the dst pointer to use as return value.  */
++	mr      rRTN, r3
++#endif
+ 	or	rTMP, rSRC, rRTN
+ 	clrldi.	rTMP, rTMP, 61
+-#if __BOUNDED_POINTERS__
+-	addi	rDEST, rDEST, -8
+-#else
+-	addi	rDEST, rRTN, -8
+-#endif
+-	dcbtst	0,rRTN
+-	bne	L(unaligned)
++	bne	L(check_word_alignment)
++
++/* For doubleword aligned memory, operate using doubleword load and stores.  */
++	addi	rRTN, rRTN, -8
+ 
+ 	lis	rFEFE, -0x101
+ 	lis	r7F7F, 0x7f7f
+@@ -75,13 +66,13 @@ EALIGN (BP_SYM (strcpy), 4, 0)
+ 	b	L(g2)
+ 
+ L(g0):	ldu	rALT, 8(rSRC)
+-	stdu	rWORD, 8(rDEST)
++	stdu	rWORD, 8(rRTN)
+ 	add	rTMP, rFEFE, rALT
+ 	nor	rNEG, r7F7F, rALT
+ 	and.	rTMP, rTMP, rNEG
+ 	bne-	L(g1)
+ 	ldu	rWORD, 8(rSRC)
+-	stdu	rALT, 8(rDEST)
++	stdu	rALT, 8(rRTN)
+ L(g2):	add	rTMP, rFEFE, rWORD
+ 	nor	rNEG, r7F7F, rWORD
+ 	and.	rTMP, rTMP, rNEG
+@@ -92,80 +83,134 @@ L(g2):	add	rTMP, rFEFE, rWORD
+ L(g1):
+ #ifdef __LITTLE_ENDIAN__
+ 	extrdi.	rTMP, rALT, 8, 56
+-	stb	rALT, 8(rDEST)
++	stbu	rALT, 8(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 48
+-	stb	rTMP, 9(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 40
+-	stb	rTMP, 10(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 32
+-	stb	rTMP, 11(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 24
+-	stb	rTMP, 12(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 16
+-	stb	rTMP, 13(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 8
+-	stb	rTMP, 14(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi	rTMP, rALT, 8, 0
+-	stb	rTMP, 15(rDEST)
+-	blr
++	stbu	rTMP, 1(rRTN)
+ #else
+ 	extrdi.	rTMP, rALT, 8, 0
+-	stb	rTMP, 8(rDEST)
++	stbu	rTMP, 8(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 8
+-	stb	rTMP, 9(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 16
+-	stb	rTMP, 10(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 24
+-	stb	rTMP, 11(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 32
+-	stb	rTMP, 12(rDEST)
+-	beqlr-
++	stbu	rTMP, 1(rRTN)
++	beqlr
+ 	extrdi.	rTMP, rALT, 8, 40
+-	stb	rTMP, 13(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+ 	extrdi.	rTMP, rALT, 8, 48
+-	stb	rTMP, 14(rDEST)
++	stbu	rTMP, 1(rRTN)
+ 	beqlr-
+-	stb	rALT, 15(rDEST)
+-	/* GKM FIXME: check high bound.  */
++	stbu	rALT, 1(rRTN)
++#endif
+ 	blr
++
++L(check_word_alignment):
++	clrldi. rTMP, rTMP, 62
++	bne     L(unaligned)
++
++/* For word aligned memory, operate using word load and stores.  */
++	addi	rRTN, rRTN, -4
++
++	lis	rFEFE, -0x101
++	lis	r7F7F, 0x7f7f
++	lwz	rWORD, 0(rSRC)
++	addi	rFEFE, rFEFE, -0x101
++	addi	r7F7F, r7F7F, 0x7f7f
++	b	L(g5)
++
++L(g3):	lwzu	rALT, 4(rSRC)
++	stwu	rWORD, 4(rRTN)
++	add	rTMP, rFEFE, rALT
++	nor	rNEG, r7F7F, rALT
++	and.	rTMP, rTMP, rNEG
++	bne-	L(g4)
++	lwzu	rWORD, 4(rSRC)
++	stwu	rALT, 4(rRTN)
++L(g5):	add	rTMP, rFEFE, rWORD
++	nor	rNEG, r7F7F, rWORD
++	and.	rTMP, rTMP, rNEG
++	beq+	L(g3)
++
++	mr	rALT, rWORD
++/* We've hit the end of the string.  Do the rest byte-by-byte.  */
++L(g4):
++#ifdef __LITTLE_ENDIAN__
++	rlwinm.	rTMP, rALT, 0, 24, 31
++	stbu	rALT, 4(rRTN)
++	beqlr-
++	rlwinm.	rTMP, rALT, 24, 24, 31
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	rlwinm.	rTMP, rALT, 16, 24, 31
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	rlwinm	rTMP, rALT, 8, 24, 31
++	stbu	rTMP, 1(rRTN)
++#else
++	rlwinm.	rTMP, rALT, 8, 24, 31
++	stbu	rTMP, 4(rRTN)
++	beqlr-
++	rlwinm.	rTMP, rALT, 16, 24, 31
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	rlwinm.	rTMP, rALT, 24, 24, 31
++	stbu	rTMP, 1(rRTN)
++	beqlr-
++	stbu	rALT, 1(rRTN)
+ #endif
++	blr
+ 
+ /* Oh well.  In this case, we just do a byte-by-byte copy.  */
+ 	.align 4
+ 	nop
+ L(unaligned):
+ 	lbz	rWORD, 0(rSRC)
+-	addi	rDEST, rRTN, -1
++	addi	rRTN, rRTN, -1
+ 	cmpwi	rWORD, 0
+ 	beq-	L(u2)
+ 
+ L(u0):	lbzu	rALT, 1(rSRC)
+-	stbu	rWORD, 1(rDEST)
++	stbu	rWORD, 1(rRTN)
+ 	cmpwi	rALT, 0
+ 	beq-	L(u1)
+ 	nop		/* Let 601 load start of loop.  */
+ 	lbzu	rWORD, 1(rSRC)
+-	stbu	rALT, 1(rDEST)
++	stbu	rALT, 1(rRTN)
+ 	cmpwi	rWORD, 0
+ 	bne+	L(u0)
+-L(u2):	stb	rWORD, 1(rDEST)
+-	/* GKM FIXME: check high bound.  */
++L(u2):	stbu	rWORD, 1(rRTN)
+ 	blr
+-L(u1):	stb	rALT, 1(rDEST)
+-	/* GKM FIXME: check high bound.  */
++L(u1):	stbu	rALT, 1(rRTN)
+ 	blr
++END (FUNC_NAME)
+ 
+-END (BP_SYM (strcpy))
++#ifndef USE_AS_STPCPY
+ libc_hidden_builtin_def (strcpy)
++#endif
diff --git a/SOURCES/glibc-rh1240351-5.patch b/SOURCES/glibc-rh1240351-5.patch
new file mode 100644
index 0000000..3665fc6
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-5.patch
@@ -0,0 +1,793 @@
+    Backport of the following commit:
+    
+    commit 96d6fd6c4060d739abb1822e7ad633af749532b2
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Tue Dec 23 05:59:44 2014 -0600
+    
+        powerpc: Optimized st{r,p}cpy for POWER8/PPC64
+    
+        This patch adds an optimized POWER8 strcpy using unaligned accesses.
+        For strings up to 16 bytes the implementation first calculate the
+        string size, like strlen, and issues a memcpy.  For larger strings,
+        source is first aligned to 16 bytes and then tested over a loop that
+        reads 16 bytes am combine the cmpb results for speedup.  Special case is
+        added for page cross reads.
+    
+        It shows 30%-60% improvement over the optimized POWER7 one that uses
+        only aligned accesses.
+    
+        ChangeLog:
+    	2015-01-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc64/multiarch/Makefile [sysdep_routines]: Add
+    	strcpy-power8 and stpcpy-power8 objects.
+    	* sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+    	(__libc_ifunc_impl_list): Add __strcpy_power8 and __stpcpy_power8
+    	implementations.
+    	* sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S: New file:
+    	multiarch stpcpy implementation for POWER8.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S: New file;
+    	multiarch strcpy implementation for POWER8.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcpy.c (strcpy): Add
+    	__strcpy_power8 function.
+    	* sysdeps/powerpc/powerpc64/power8/stpcpy.S: New file: optimized
+    	stpcpy for POWER8.
+    	* sysdeps/powerpc/powerpc64/power8/strcpy.S: New file: optimized
+    	strcpy for POWER8.
+    	* NEWS: Update.
+    
+    and the commits it depends on:
+    
+    commit a52374e82b90a6039c720f7b9b7dfa9db24ff4f0
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Fri Dec 13 14:55:22 2013 -0500
+    
+        PowerPC: multiarch stpcpy for PowerPC64
+    
+        ChangeLog:
+           2013-12-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+           * sysdeps/powerpc/powerpc64/multiarch/Makefile: Add stpcpy
+           multiarch implementations.
+           * sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+           (__libc_ifunc_impl_list): Likewise.
+           * sysdeps/powerpc/powerpc64/multiarch/stpcpy-power7.c: New file.
+           * sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.c: New file.
+           * sysdeps/powerpc/powerpc64/multiarch/stpcpy.c : New file:
+           multiarch stpcpy for PPC64.
+    
+    commit 7f5ec11336e46d0449a6b5a8e5a0604c3c78ecbf
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Fri Dec 13 14:54:41 2013 -0500
+    
+        PowerPC: multiarch strcpy for PowerPC64
+    
+        ChangeLog:
+            2013-12-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+           * sysdeps/powerpc/powerpc64/multiarch/Makefile: Add strcpy
+           multiarch implementations.
+           * sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+           (__libc_ifunc_impl_list): Likewise.
+           * sysdeps/powerpc/powerpc64/multiarch/strcpy-power7.c: New file.
+           * sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.c: New file.
+           * sysdeps/powerpc/powerpc64/multiarch/strcpy.c : New file:
+           multiarch strcpy for PPC64.
+
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+index 8dceb09..1cdd5d6 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile
++++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+@@ -5,6 +5,8 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
+                   memset-ppc64 bzero-power4 bzero-power6 bzero-power7 \
+                   mempcpy-power7 mempcpy-ppc64 memchr-power7 memchr-ppc64 \
+                   memrchr-power7 memrchr-ppc64 rawmemchr-power7 \
++                  stpcpy-power8 stpcpy-power7 stpcpy-ppc64 \
++                  strcpy-power8 strcpy-power7 strcpy-ppc64 \
+                   rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \
+                   strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \
+                   strncase-power7 strncase_l-power7 strncmp-power7 \
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+index 2d21ce1..e89fd3e 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
++++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+@@ -34,6 +34,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   size_t i = 0;
+ 
+   unsigned long int hwcap = GLRO(dl_hwcap);
++  unsigned long int hwcap2 = GLRO(dl_hwcap2);
++
+   /* hwcap contains only the latest supported ISA, the code checks which is
+      and fills the previous supported ones.  */
+   if (hwcap & PPC_FEATURE_ARCH_2_06)
+@@ -71,6 +73,24 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+                              __memset_power4)
+              IFUNC_IMPL_ADD (array, i, memset, 1, __memset_ppc))
+ 
++  /* Support sysdeps/powerpc/powerpc64/multiarch/strcpy.c.  */
++  IFUNC_IMPL (i, name, strcpy,
++              IFUNC_IMPL_ADD (array, i, strcpy, hwcap2 & PPC_FEATURE2_ARCH_2_07,
++                              __strcpy_power8)
++              IFUNC_IMPL_ADD (array, i, strcpy, hwcap & PPC_FEATURE_HAS_VSX,
++                              __strcpy_power7)
++              IFUNC_IMPL_ADD (array, i, strcpy, 1,
++                              __strcpy_ppc))
++
++  /* Support sysdeps/powerpc/powerpc64/multiarch/stpcpy.c.  */
++  IFUNC_IMPL (i, name, stpcpy,
++              IFUNC_IMPL_ADD (array, i, stpcpy, hwcap2 & PPC_FEATURE2_ARCH_2_07,
++                              __stpcpy_power8)
++              IFUNC_IMPL_ADD (array, i, stpcpy, hwcap & PPC_FEATURE_HAS_VSX,
++                              __stpcpy_power7)
++              IFUNC_IMPL_ADD (array, i, stpcpy, 1,
++                              __stpcpy_ppc))
++
+   /* Support sysdeps/powerpc/powerpc64/multiarch/strlen.c.  */
+   IFUNC_IMPL (i, name, strlen,
+              IFUNC_IMPL_ADD (array, i, strlen, hwcap & PPC_FEATURE_HAS_VSX,
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power7.S
+new file mode 100644
+index 0000000..0943611
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power7.S
+@@ -0,0 +1,40 @@
++/* Optimized stpcpy implementation for POWER7.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__stpcpy_power7)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__stpcpy_power7):					\
++  cfi_startproc;						\
++  LOCALENTRY(__stpcpy_power7)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__stpcpy_power7)					\
++  END_2(__stpcpy_power7)
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#include <sysdeps/powerpc/powerpc64/power7/stpcpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S
+new file mode 100644
+index 0000000..66e6f70
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S
+@@ -0,0 +1,40 @@
++/* Optimized stpcpy implementation for POWER8/PPC64.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__stpcpy_power8)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__stpcpy_power8):					\
++  cfi_startproc;						\
++  LOCALENTRY(__stpcpy_power8)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__stpcpy_power8)					\
++  END_2(__stpcpy_power8)
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#include <sysdeps/powerpc/powerpc64/power8/stpcpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.S
+new file mode 100644
+index 0000000..ac70c1b
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.S
+@@ -0,0 +1,48 @@
++/* Default stpcpy implementation for PowerPC64.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#if defined SHARED && !defined NOT_IN_libc
++# undef EALIGN
++# define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__stpcpy_ppc)						\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__stpcpy_ppc):					\
++  cfi_startproc;						\
++  LOCALENTRY(__stpcpy_ppc)
++
++# undef END
++# define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__stpcpy_ppc)					\
++  END_2(__stpcpy_ppc)
++
++# undef weak_alias
++# define weak_alias(name, alias)
++# undef libc_hidden_def
++# define libc_hidden_def(name)
++
++# undef libc_hidden_builtin_def
++# define libc_hidden_builtin_def(name)				\
++    .globl __GI___stpcpy; __GI___stpcpy = __stpcpy_ppc
++#endif
++
++#include <sysdeps/powerpc/powerpc64/stpcpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c b/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
+new file mode 100644
+index 0000000..2ab62bf
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
+@@ -0,0 +1,35 @@
++/* Multiple versions of stpcpy. PowerPC64 version.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined SHARED && !defined NOT_IN_libc
++# define NO_MEMPCPY_STPCPY_REDIRECT
++# include <string.h>
++# include <shlib-compat.h>
++# include "init-arch.h"
++
++extern __typeof (__stpcpy) __stpcpy_ppc attribute_hidden;
++extern __typeof (__stpcpy) __stpcpy_power7 attribute_hidden;
++
++libc_ifunc (__stpcpy,
++            (hwcap & PPC_FEATURE_HAS_VSX)
++            ? __stpcpy_power7
++            : __stpcpy_ppc);
++
++weak_alias (__stpcpy, stpcpy)
++libc_hidden_def (stpcpy)
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power7.S
+new file mode 100644
+index 0000000..69851bb
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power7.S
+@@ -0,0 +1,40 @@
++/* Optimized strcpy implementation for POWER7.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__strcpy_power7)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__strcpy_power7):					\
++  cfi_startproc;						\
++  LOCALENTRY(__strcpy_power7)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__strcpy_power7)					\
++  END_2(__strcpy_power7)
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#include <sysdeps/powerpc/powerpc64/power7/strcpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S
+new file mode 100644
+index 0000000..64cbc16
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S
+@@ -0,0 +1,40 @@
++/* Optimized strcpy implementation for POWER8/PPC64.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__strcpy_power8)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__strcpy_power8):					\
++  cfi_startproc;						\
++  LOCALENTRY(__strcpy_power8)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__strcpy_power8)					\
++  END_2(__strcpy_power8)
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#include <sysdeps/powerpc/powerpc64/power8/strcpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.S
+new file mode 100644
+index 0000000..e5452b1
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.S
+@@ -0,0 +1,43 @@
++/* Default strcpy implementation for PowerPC64.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#if defined SHARED && !defined NOT_IN_libc
++# undef EALIGN
++# define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__strcpy_ppc)						\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__strcpy_ppc):					\
++  cfi_startproc;						\
++  LOCALENTRY(__strcpy_ppc)
++
++# undef END
++# define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__strcpy_ppc)					\
++  END_2(__strcpy_ppc)
++
++# undef libc_hidden_builtin_def
++# define libc_hidden_builtin_def(name)				\
++    .globl __GI_strcpy; __GI_strcpy = __strcpy_ppc
++#endif
++
++#include <sysdeps/powerpc/powerpc64/strcpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy.c b/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
+new file mode 100644
+index 0000000..5a86f26
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
+@@ -0,0 +1,34 @@
++/* Multiple versions of strcpy. PowerPC64 version.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined SHARED && !defined NOT_IN_libc
++# include <string.h>
++# include <shlib-compat.h>
++# include "init-arch.h"
++
++extern __typeof (strcpy) __strcpy_ppc attribute_hidden;
++extern __typeof (strcpy) __strcpy_power7 attribute_hidden;
++extern __typeof (strcpy) __strcpy_power8 attribute_hidden;
++
++libc_ifunc (strcpy,
++            (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++            ? __strcpy_power8 :
++              (hwcap & PPC_FEATURE_HAS_VSX)
++              ? __strcpy_power7
++            : __strcpy_ppc);
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/power8/stpcpy.S b/sysdeps/powerpc/powerpc64/power8/stpcpy.S
+new file mode 100644
+index 0000000..bf72065
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/stpcpy.S
+@@ -0,0 +1,24 @@
++/* Optimized stpcpy implementation for PowerPC64/POWER8.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define USE_AS_STPCPY
++#include <sysdeps/powerpc/powerpc64/power8/strcpy.S>
++
++weak_alias (__stpcpy, stpcpy)
++libc_hidden_def (__stpcpy)
++libc_hidden_builtin_def (stpcpy)
+diff --git a/sysdeps/powerpc/powerpc64/power8/strcpy.S b/sysdeps/powerpc/powerpc64/power8/strcpy.S
+new file mode 100644
+index 0000000..d3e9a10
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/strcpy.S
+@@ -0,0 +1,262 @@
++/* Optimized strcpy/stpcpy implementation for PowerPC64/POWER8.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#ifdef USE_AS_STPCPY
++# define FUNC_NAME __stpcpy
++#else
++# define FUNC_NAME strcpy
++#endif
++
++/* Implements the function
++
++   char * [r3] strcpy (char *dest [r3], const char *src [r4])
++
++   or
++
++   char * [r3] stpcpy (char *dest [r3], const char *src [r4])
++
++   if USE_AS_STPCPY is defined.
++
++   The implementation uses unaligned doubleword access to avoid specialized
++   code paths depending of data alignment.  Although recent powerpc64 uses
++   64K as default, the page cross handling assumes minimum page size of
++   4k.  */
++
++	.machine  power7
++EALIGN (FUNC_NAME, 4, 0)
++        li      r0,0          /* Doubleword with null chars to use
++                                 with cmpb.  */
++
++	/* Check if the [src]+15 will cross a 4K page by checking if the bit
++	   indicating the page size changes.  Basically:
++
++	   uint64_t srcin = (uint64_t)src;
++	   uint64_t ob = srcin & 4096UL;
++	   uint64_t nb = (srcin+15UL) & 4096UL;
++	   if (ob ^ nb)
++	     goto pagecross;  */
++
++	addi	r9,r4,15
++	xor	r9,r9,r4
++	rlwinm.	r9,r9,0,19,19
++	bne	L(pagecross)
++
++	/* For short string (less than 16 bytes), just calculate its size as
++	   strlen and issues a memcpy if null is found.  */
++	mr	r7,r4
++        ld      r12,0(r7)     /* Load doubleword from memory.  */
++        cmpb    r10,r12,r0    /* Check for null bytes in DWORD1.  */
++        cmpdi   cr7,r10,0     /* If r10 == 0, no null's have been found.  */
++        bne     cr7,L(done)
++
++        ldu     r8,8(r7)
++        cmpb    r10,r8,r0
++        cmpdi   cr7,r10,0
++        bne     cr7,L(done)
++
++	b	L(loop_before)
++
++	.align	4
++L(pagecross):
++	clrrdi  r7,r4,3       /* Align the address to doubleword boundary.  */
++	rlwinm  r6,r4,3,26,28 /* Calculate padding.  */
++	li      r5,-1         /* MASK = 0xffffffffffffffff.  */
++        ld      r12,0(r7)     /* Load doubleword from memory.  */
++#ifdef __LITTLE_ENDIAN__
++        sld     r5,r5,r6
++#else
++        srd     r5,r5,r6      /* MASK = MASK >> padding.  */
++#endif
++        orc     r9,r12,r5     /* Mask bits that are not part of the string.  */
++        cmpb    r10,r9,r0     /* Check for null bytes in DWORD1.  */
++        cmpdi   cr7,r10,0     /* If r10 == 0, no null's have been found.  */
++        bne     cr7,L(done)
++
++        ldu     r6,8(r7)
++        cmpb    r10,r6,r0
++        cmpdi   cr7,r10,0
++        bne     cr7,L(done)
++
++        ld      r12,0(r7)
++        cmpb    r10,r12,r0
++        cmpdi   cr7,r10,0
++        bne     cr7,L(done)
++
++        ldu     r6,8(r7)
++        cmpb    r10,r6,r0
++        cmpdi   cr7,r10,0
++        bne     cr7,L(done)
++
++	/* We checked for 24 - x bytes, with x being the source alignment
++	   (0 <= x <= 16), and no zero has been found.  Start the loop
++	   copy with doubleword aligned address.  */
++	mr	r7,r4
++	ld	r12, 0(r7)
++	ldu	r8, 8(r7)
++
++L(loop_before):
++	/* Save the two doublewords readed from source and align the source
++	   to 16 bytes for the loop.  */
++	mr	r11,r3
++	std	r12,0(r11)
++	std	r8,8(r11)
++	addi	r11,r11,16
++	rldicl	r9,r4,0,60
++	subf	r7,r9,r7
++	subf	r11,r9,r11
++	b	L(loop_start)
++
++        .align  5
++L(loop):
++        std     r12, 0(r11)
++        std     r6, 8(r11)
++	addi	r11,r11,16
++L(loop_start):
++        /* Load two doublewords, compare and merge in a
++           single register for speed.  This is an attempt
++           to speed up the null-checking process for bigger strings.  */
++
++        ld      r12, 8(r7)
++        ldu     r6, 16(r7)
++        cmpb    r10,r12,r0
++        cmpb    r9,r6,r0
++        or      r8,r9,r10     /* Merge everything in one doubleword.  */
++        cmpdi   cr7,r8,0
++        beq     cr7,L(loop)
++
++
++        /* OK, one (or both) of the doublewords contains a null byte.  Check
++           the first doubleword and decrement the address in case the first
++           doubleword really contains a null byte.  */
++
++	addi	r4,r7,-8
++        cmpdi   cr6,r10,0
++        addi    r7,r7,-8
++        bne     cr6,L(done2)
++
++        /* The null byte must be in the second doubleword.  Adjust the address
++           again and move the result of cmpb to r10 so we can calculate the
++           length.  */
++
++        mr      r10,r9
++        addi    r7,r7,8
++	b	L(done2)
++
++        /* r10 has the output of the cmpb instruction, that is, it contains
++           0xff in the same position as the null byte in the original
++           doubleword from the string.  Use that to calculate the length.  */
++L(done):
++	mr	r11,r3
++L(done2):
++#ifdef __LITTLE_ENDIAN__
++        addi    r9, r10, -1   /* Form a mask from trailing zeros.  */
++        andc    r9, r9, r10
++        popcntd r6, r9        /* Count the bits in the mask.  */
++#else
++        cntlzd  r6,r10        /* Count leading zeros before the match.  */
++#endif
++        subf    r5,r4,r7
++        srdi    r6,r6,3       /* Convert leading/trailing zeros to bytes.  */
++        add     r8,r5,r6      /* Compute final length.  */
++#ifdef USE_AS_STPCPY
++	/* stpcpy returns the dest address plus the size not counting the
++	   final '\0'.  */
++	add	r3,r11,r8
++#endif
++	addi	r8,r8,1       /* Final '/0'.  */
++
++	cmpldi	cr6,r8,8
++	mtocrf	0x01,r8
++	ble	cr6,L(copy_LE_8)
++
++	cmpldi	cr1,r8,16
++	blt	cr1,8f
++
++	/* Handle copies of 0~31 bytes.  */
++	.align	4
++L(copy_LT_32):
++	/* At least 6 bytes to go.  */
++	blt	cr1,8f
++
++	/* Copy 16 bytes.  */
++	ld	r6,0(r4)
++	ld	r8,8(r4)
++	addi	r4,r4,16
++	std	r6,0(r11)
++	std	r8,8(r11)
++	addi	r11,r11,16
++8:	/* Copy 8 bytes.  */
++	bf	28,L(tail4)
++	ld	r6,0(r4)
++	addi	r4,r4,8
++	std	r6,0(r11)
++	addi	r11,r11,8
++
++	.align	4
++/* Copies 4~7 bytes.  */
++L(tail4):
++	bf	29,L(tail2)
++	lwz	r6,0(r4)
++	stw	r6,0(r11)
++	bf	30,L(tail5)
++	lhz	r7,4(r4)
++	sth	r7,4(r11)
++	bflr	31
++	lbz	r8,6(r4)
++	stb	r8,6(r11)
++	blr
++
++	.align	4
++/* Copies 2~3 bytes.  */
++L(tail2):
++	bf	30,1f
++	lhz	r6,0(r4)
++	sth	r6,0(r11)
++	bflr	31
++	lbz	r7,2(r4)
++	stb	r7,2(r11)
++	blr
++
++	.align	4
++L(tail5):
++	bf	31,1f
++	lbz	r6,4(r4)
++	stb	r6,4(r11)
++	blr
++
++	.align	4
++1:
++	bflr	31
++	lbz	r6,0(r4)
++	stb	r6,0(r11)
++	blr
++
++/* Handles copies of 0~8 bytes.  */
++	.align	4
++L(copy_LE_8):
++	bne	cr6,L(tail4)
++	ld	r6,0(r4)
++	std	r6,0(r11)
++	blr
++END (FUNC_NAME)
++
++#ifndef USE_AS_STPCPY
++libc_hidden_builtin_def (strcpy)
++#endif
diff --git a/SOURCES/glibc-rh1240351-6.patch b/SOURCES/glibc-rh1240351-6.patch
new file mode 100644
index 0000000..bc39f54
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-6.patch
@@ -0,0 +1,252 @@
+    Backport of:
+    commit 94c9680945369d63ef9ed266a29f28ebaaaeb5ce
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Tue Dec 23 13:36:34 2014 -0500
+    
+        powerpc: Optimized strcat for POWER8/PPC64
+    
+        With new optimized strcpy for POWER8, this patch adds an optimized
+        strcat which uses it along with default implementation at strings/.
+    
+        ChangeLog:
+            2015-01-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+     	* sysdeps/powerpc/powerpc64/multiarch/Makefile [sysdep_routines]: Add
+    	strncat-power8 object.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcat.c (strcat): Add
+    	__strcat_power8 implementation.
+    	* sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+    	(__libc_ifunc_impl_list): Add __strcat_power8 implementation.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c: New file:
+    	optimized strcat for power8.
+    
+    and its dependency:
+    
+    commit bc8ea38590070604006399e42469087e943fc8ec
+    Author: Vidya Ranganathan <vidya@linux.vnet.ibm.com>
+    Date:   Wed Jun 11 22:21:20 2014 -0500
+    
+        PowerPC: strcat optimization for PPC64/POWER7
+    
+        This patch adds an ifunc power7 strcat symbol that uses the logic on
+        sysdeps/powerpc/strcat.c but call power7 strlen/strcpy symbols instead
+        of default ones.
+    
+        ChangeLog:
+    
+            2014-07-02  Vidya Ranganathan  <vidya@linux.vnet.ibm.com>
+                Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+            * sysdeps/powerpc/strcat.c: Using macro to redefine symbol name.
+            * sysdeps/powerpc/powerpc64/multiarch/Makefile: Add strcat multiarch
+            optimizations.
+            * sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c:
+            (__libc_ifunc_impl_list): Likewise.
+            * sysdeps/powerpc/powerpc64/multiarch/strcat.c: New file:
+            multiarch strcat for PPC64.
+            * sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c: New file/
+            * sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c: New file.
+
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+index 1cdd5d6..7ebfc7e 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile
++++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+@@ -6,6 +6,7 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
+                   mempcpy-power7 mempcpy-ppc64 memchr-power7 memchr-ppc64 \
+                   memrchr-power7 memrchr-ppc64 rawmemchr-power7 \
+                   stpcpy-power8 stpcpy-power7 stpcpy-ppc64 \
++                  strcat-power8 strcat-power7 strcat-ppc64 \
+                   strcpy-power8 strcpy-power7 strcpy-ppc64 \
+                   rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \
+                   strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+index e89fd3e..4e5bb17 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
++++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+@@ -211,6 +211,17 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+              IFUNC_IMPL_ADD (array, i, strncasecmp_l, 1,
+                              __strncasecmp_l_ppc))
+ 
++    /* Support sysdeps/powerpc/powerpc64/multiarch/strcat.c.  */
++    IFUNC_IMPL (i, name, strcat,
++                IFUNC_IMPL_ADD (array, i, strcat,
++                                hwcap2 & PPC_FEATURE2_ARCH_2_07,
++                                __strcat_power8)
++                IFUNC_IMPL_ADD (array, i, strcat,
++                                hwcap & PPC_FEATURE_HAS_VSX,
++                                __strcat_power7)
++                IFUNC_IMPL_ADD (array, i, strcat, 1,
++                                __strcat_ppc))
++
+   /* Support sysdeps/powerpc/powerpc64/multiarch/wcschr.c.  */
+   IFUNC_IMPL (i, name, wcschr,
+              IFUNC_IMPL_ADD (array, i, wcschr,
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c
+new file mode 100644
+index 0000000..291a720
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c
+@@ -0,0 +1,31 @@
++/* Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/ >.  */
++
++#include <string.h>
++
++#define STRCAT __strcat_power7
++
++#undef libc_hidden_def
++#define libc_hidden_def(name)
++
++extern typeof (strcpy) __strcpy_power7;
++extern typeof (strlen) __strlen_power7;
++
++#define strcpy __strcpy_power7
++#define strlen __strlen_power7
++
++#include <sysdeps/powerpc/strcat.c>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c
+new file mode 100644
+index 0000000..6c7544c
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c
+@@ -0,0 +1,30 @@
++/* Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/ >.  */
++
++#include <string.h>
++
++#define STRCAT __strcat_power8
++
++#undef libc_hidden_def
++#define libc_hidden_def(name)
++
++extern typeof (strcpy) __strcpy_power8;
++extern typeof (strlen) __strlen_power7;
++
++#define strcpy __strcpy_power8
++#define strlen __strlen_power7
++#include <sysdeps/powerpc/strcat.c>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c
+new file mode 100644
+index 0000000..1245764
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c
+@@ -0,0 +1,29 @@
++/* Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/ >.  */
++
++#include <string.h>
++
++#define STRCAT __strcat_ppc
++#ifdef SHARED
++# undef libc_hidden_builtin_def
++# define libc_hidden_builtin_def(name) \
++  __hidden_ver1 (__strcat_ppc, __GI_strcat, __strcat_ppc);
++#endif
++
++extern __typeof (strcat) __strcat_ppc attribute_hidden;
++
++#include <sysdeps/powerpc/strcat.c>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat.c b/sysdeps/powerpc/powerpc64/multiarch/strcat.c
+new file mode 100644
+index 0000000..847a62d
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcat.c
+@@ -0,0 +1,31 @@
++/* Multiple versions of strcat. PowerPC64 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef NOT_IN_libc
++# include <string.h>
++# include <shlib-compat.h>
++# include "init-arch.h"
++
++extern __typeof (strcat) __strcat_ppc attribute_hidden;
++extern __typeof (strcat) __strcat_power7 attribute_hidden;
++
++libc_ifunc (strcat,
++            (hwcap & PPC_FEATURE_HAS_VSX)
++            ? __strcat_power7
++            : __strcat_ppc);
++#endif
+diff --git a/sysdeps/powerpc/strcat.c b/sysdeps/powerpc/strcat.c
+index 28575d0..393bee6 100644
+--- a/sysdeps/powerpc/strcat.c
++++ b/sysdeps/powerpc/strcat.c
+@@ -18,13 +18,16 @@
+ 
+ #include <string.h>
+ 
+-#undef strcat
++#ifndef STRCAT
++# undef strcat
++# define STRCAT  strcat
++#endif
+ 
+ /* Append SRC on the end of DEST.  */
+ char *
+-strcat (char *dest, const char *src)
++STRCAT(char *dest, const char *src)
+ {
+   strcpy (dest + strlen (dest), src);
+   return dest;
+ }
+-libc_hidden_builtin_def (strcat)
++libc_hidden_builtin_def (STRCAT)
diff --git a/SOURCES/glibc-rh1240351-7.patch b/SOURCES/glibc-rh1240351-7.patch
new file mode 100644
index 0000000..87feb4a
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-7.patch
@@ -0,0 +1,78 @@
+    Backport of the addition of
+      sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
+    from the following:
+    
+    commit 9f2f36e5a91c2ce6edba5415e176155eb1008ae1
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Tue Dec 23 13:39:23 2014 -0500
+    
+        powerpc: Optimized strncat for POWER7/PPC64
+    
+        With 3eb38795dbbbd816 (Simplify strncat) the generic algorithms uses
+        strlen, strnlen, and memcpy.  This is faster than POWER7 current
+        implementation, especially for unaligned strings (where POWER7 code
+        uses byte-byte operations).
+    
+        This patch removes the assembly implementation and uses a multiarch
+        specialization based on default algorithm calling optimized POWER7
+        symbols.
+    
+        ChangeLog:
+            2015-01-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+            * sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c: New file.
+            * sysdeps/powerpc/powerpc64/multiarch/strncat-power7.S: Remove file.
+            * sysdeps/powerpc/powerpc64/power7/strncat.S: Likewise.
+    
+    plus the addition of strncat-power7 to
+      sysdeps/powerpc/powerpc64/multiarch/Makefile
+
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+index 7ebfc7e..74ae710 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile
++++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+@@ -8,6 +8,7 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
+                   stpcpy-power8 stpcpy-power7 stpcpy-ppc64 \
+                   strcat-power8 strcat-power7 strcat-ppc64 \
+                   strcpy-power8 strcpy-power7 strcpy-ppc64 \
++                  strncat-power7 \
+                   rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \
+                   strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \
+                   strncase-power7 strncase_l-power7 strncmp-power7 \
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
+new file mode 100644
+index 0000000..39b1aeb
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
+@@ -0,0 +1,31 @@
++/* Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/ >.  */
++
++#include <string.h>
++
++#define STRNCAT __strncat_power7
++
++extern __typeof (strncat) __strncat_power7 attribute_hidden;
++extern __typeof (strlen) __strlen_power7 attribute_hidden;
++extern __typeof (strnlen) __strnlen_power7 attribute_hidden;
++extern __typeof (memcpy) __memcpy_power7 attribute_hidden;
++
++#define strlen    __strlen_power7
++#define __strnlen __strnlen_power7
++#define memcpy    __memcpy_power7
++
++#include <string/strncat.c>
diff --git a/SOURCES/glibc-rh1240351-8.patch b/SOURCES/glibc-rh1240351-8.patch
new file mode 100644
index 0000000..c0207ee
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-8.patch
@@ -0,0 +1,1272 @@
+    Backport of:
+    
+    commit f06a4faf8a2b4d046eb40e94b47948cc47d79902
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Wed Dec 31 11:47:41 2014 -0500
+    
+        powerpc: Optimized st{r,p}ncpy for POWER8/PPC64
+    
+        This patch adds an optimized POWER8 st{r,p}ncpy using unaligned accesses.
+        It shows 10%-80% improvement over the optimized POWER7 one that uses
+        only aligned accesses, specially on unaligned inputs.
+    
+        The algorithm first read and check 16 bytes (if inputs do not cross a 4K
+        page size).  The it realign source to 16-bytes and issue a 16 bytes read
+        and compare loop to speedup null byte checks for large strings.  Also,
+        different from POWER7 optimization, the null pad is done inline in the
+        implementation using possible unaligned accesses, instead of realying on
+        a memset call.  Special case is added for page cross reads.
+    
+        ChangeLog:
+    	2015-01-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+    	* sysdeps/powerpc/powerpc64/multiarch/Makefile [sysdep_routines]:
+    	Add strncpy-power8 and stpncpy-power8 objects.
+    	* sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+    	(__libc_ifunc_impl_list): Add __strncpy_power8 and stpncpy_power8
+    	implementations.
+    	* sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S: New file.
+    	* sysdeps/powerpc/powerpc64/multiarch/stpncpy.c (__stpncpy): Add
+    	__stpncpy_power8 implementation.
+    	* sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S: New file.
+    	* sysdeps/powerpc/powerpc64/multiarch/strncpy.c (strncpy): Add
+    	__strncpy_power8 implementation.
+    	* sysdeps/powerpc/powerpc64/power8/stpncpy.S: New file.
+    	* sysdeps/powerpc/powerpc64/power8/strncpy.S: New file.
+    	* NEWS: Update.
+    
+    and its dependency:
+    
+    commit f360f94a05570045be615649e9a411cefba2e210
+    Author: Vidya Ranganathan <vidya@linux.vnet.ibm.com>
+    Date:   Mon May 5 19:10:45 2014 -0500
+    
+        PowerPC: strncpy/stpncpy optimization for PPC64/POWER7
+    
+        The optimization is achieved by following techniques:
+          > data alignment [gain from aligned memory access on read/write]
+          > POWER7 gains performance with loop unrolling/unwinding
+            [gain by reduction of branch penalty].
+          > zero padding done by calling optimized memset
+
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+index 74ae710..ef39917 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile
++++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+@@ -8,6 +8,8 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
+                   stpcpy-power8 stpcpy-power7 stpcpy-ppc64 \
+                   strcat-power8 strcat-power7 strcat-ppc64 \
+                   strcpy-power8 strcpy-power7 strcpy-ppc64 \
++                  stpncpy-power8 stpncpy-power7 stpncpy-ppc64 \
++                  strncpy-power8 strncpy-power7 strncpy-ppc64 
+                   strncat-power7 \
+                   rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \
+                   strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+index 4e5bb17..23bf5dc 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
++++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+@@ -255,5 +255,27 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+              IFUNC_IMPL_ADD (array, i, wcscpy, 1,
+                              __wcscpy_ppc))
+ 
++  /* Support sysdeps/powerpc/powerpc64/multiarch/strncpy.c.  */
++  IFUNC_IMPL (i, name, strncpy,
++	      IFUNC_IMPL_ADD (array, i, strncpy,
++			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
++			      __strncpy_power8)
++	      IFUNC_IMPL_ADD (array, i, strncpy,
++			      hwcap & PPC_FEATURE_HAS_VSX,
++			      __strncpy_power7)
++	      IFUNC_IMPL_ADD (array, i, strncpy, 1,
++			     __strncpy_ppc))
++
++  /* Support sysdeps/powerpc/powerpc64/multiarch/stpncpy.c.  */
++  IFUNC_IMPL (i, name, stpncpy,
++	      IFUNC_IMPL_ADD (array, i, stpncpy,
++			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
++			      __stpncpy_power8)
++	      IFUNC_IMPL_ADD (array, i, stpncpy,
++			      hwcap & PPC_FEATURE_HAS_VSX,
++			      __stpncpy_power7)
++	      IFUNC_IMPL_ADD (array, i, stpncpy, 1,
++			     __stpncpy_ppc))
++
+   return i;
+ }
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S
+new file mode 100644
+index 0000000..e29674f
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S
+@@ -0,0 +1,44 @@
++/* Optimized stpncpy implementation for POWER7.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#define USE_AS_STPNCPY
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__stpncpy_power7)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__stpncpy_power7):					\
++  cfi_startproc;						\
++  LOCALENTRY(__stpncpy_power7)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__stpncpy_power7)					\
++  END_2(__stpncpy_power7)
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#define MEMSET __memset_power7
++
++#include <sysdeps/powerpc/powerpc64/power7/stpncpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S
+new file mode 100644
+index 0000000..d5d835d
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S
+@@ -0,0 +1,39 @@
++/* Optimized stpncpy implementation for POWER8.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#define USE_AS_STPNCPY
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__stpncpy_power8)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__stpncpy_power8):					\
++  cfi_startproc;						\
++  LOCALENTRY(__stpncpy_power8)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__stpncpy_power8)					\
++  END_2(__stpncpy_power8)
++
++#include <sysdeps/powerpc/powerpc64/power8/stpncpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-ppc64.c
+new file mode 100644
+index 0000000..74f47a7
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-ppc64.c
+@@ -0,0 +1,26 @@
++/* Default stpncpy implementation for PowerPC64.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define STPNCPY __stpncpy_ppc
++#ifdef SHARED
++#undef libc_hidden_def
++#define libc_hidden_def(name) \
++  __hidden_ver1 (__stpncpy_ppc, __GI___stpncpy, __stpncpy_ppc);
++#endif
++
++#include <string/stpncpy.c>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c b/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c
+new file mode 100644
+index 0000000..3ee50e5
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c
+@@ -0,0 +1,36 @@
++/* Multiple versions of stpncpy. PowerPC64 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef NOT_IN_libc
++# include <string.h>
++# include <shlib-compat.h>
++# include "init-arch.h"
++
++extern __typeof (__stpncpy) __stpncpy_ppc attribute_hidden;
++extern __typeof (__stpncpy) __stpncpy_power7 attribute_hidden;
++extern __typeof (__stpncpy) __stpncpy_power8 attribute_hidden;
++
++libc_ifunc (__stpncpy,
++            (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++            ? __stpncpy_power8 :
++              (hwcap & PPC_FEATURE_HAS_VSX)
++              ? __stpncpy_power7
++            : __stpncpy_ppc);
++
++weak_alias (__stpncpy, stpncpy)
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S
+new file mode 100644
+index 0000000..be349f9
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S
+@@ -0,0 +1,42 @@
++/* Optimized strncpy implementation for POWER7.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__strncpy_power7)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__strncpy_power7):					\
++  cfi_startproc;						\
++  LOCALENTRY(__strncpy_power7)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__strncpy_power7)					\
++  END_2(__strncpy_power7)
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#define MEMSET __memset_power7
++
++#include <sysdeps/powerpc/powerpc64/power7/strncpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S
+new file mode 100644
+index 0000000..ed906a4
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S
+@@ -0,0 +1,40 @@
++/* Optimized strncpy implementation for POWER8.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__strncpy_power8)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__strncpy_power8):					\
++  cfi_startproc;						\
++  LOCALENTRY(__strncpy_power8)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__strncpy_power8)					\
++  END_2(__strncpy_power8)
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#include <sysdeps/powerpc/powerpc64/power8/strncpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c
+new file mode 100644
+index 0000000..e3111d2
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c
+@@ -0,0 +1,33 @@
++/* Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <string.h>
++
++#define STRNCPY __strncpy_ppc
++#undef weak_alias
++#define weak_alias(name, aliasname) \
++  extern __typeof (__strncpy_ppc) aliasname \
++    __attribute__ ((weak, alias ("__strncpy_ppc")));
++#if !defined(NOT_IN_libc) && defined(SHARED)
++# undef libc_hidden_builtin_def
++# define libc_hidden_builtin_def(name) \
++  __hidden_ver1(__strncpy_ppc, __GI_strncpy, __strncpy_ppc);
++#endif
++
++extern __typeof (strncpy) __strncpy_ppc attribute_hidden;
++
++#include <string/strncpy.c>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy.c b/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
+new file mode 100644
+index 0000000..19927bc
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
+@@ -0,0 +1,38 @@
++/* Multiple versions of strncpy.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/ >.  */
++
++/* Define multiple versions only for definition in libc. */
++#ifndef NOT_IN_libc
++# include <string.h>
++# include <shlib-compat.h>
++# include "init-arch.h"
++
++extern __typeof (strncpy) __strncpy_ppc attribute_hidden;
++extern __typeof (strncpy) __strncpy_power7 attribute_hidden;
++extern __typeof (strncpy) __strncpy_power8 attribute_hidden;
++
++/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
++ ifunc symbol properly. */
++libc_ifunc (strncpy,
++            (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++            ? __strncpy_power8 :
++              (hwcap & PPC_FEATURE_HAS_VSX)
++              ? __strncpy_power7
++            : __strncpy_ppc);
++
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/power7/stpncpy.S b/sysdeps/powerpc/powerpc64/power7/stpncpy.S
+new file mode 100644
+index 0000000..a539093
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power7/stpncpy.S
+@@ -0,0 +1,24 @@
++/* Optimized stpncpy implementation for PowerPC64/POWER7.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define USE_AS_STPNCPY
++#include <sysdeps/powerpc/powerpc64/power7/strncpy.S>
++
++weak_alias (__stpncpy, stpncpy)
++libc_hidden_def (__stpncpy)
++libc_hidden_builtin_def (stpncpy)
+diff --git a/sysdeps/powerpc/powerpc64/power7/strncpy.S b/sysdeps/powerpc/powerpc64/power7/strncpy.S
+new file mode 100644
+index 0000000..51860df
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power7/strncpy.S
+@@ -0,0 +1,338 @@
++/* Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++/* Implements the functions
++
++   char * [r3] strncpy (char *dst [r3], const char *src [r4], size_t n [r5])
++
++   AND
++
++   char * [r3] stpncpy (char *dst [r3], const char *src [r4], size_t n [r5])
++
++   The algorithm is as follows:
++   > if src and dest are 8 byte aligned, perform double word copy
++     else
++   > copy byte by byte on unaligned addresses.
++
++   The aligned comparison are made using cmpb instructions.  */
++
++/* The focus on optimization for performance improvements are as follows:
++   1. data alignment [gain from aligned memory access on read/write]
++   2. POWER7 gains performance with loop unrolling/unwinding
++      [gain by reduction of branch penalty].
++   3. The final pad with null bytes is done by calling an optimized
++      memset.  */
++
++#ifdef USE_AS_STPNCPY
++# define FUNC_NAME __stpncpy
++#else
++# define FUNC_NAME strncpy
++#endif
++
++#define		FRAMESIZE	(FRAME_MIN_SIZE+32)
++
++#ifndef MEMSET
++/* For builds with no IFUNC support, local calls should be made to internal
++   GLIBC symbol (created by libc_hidden_builtin_def).  */
++# ifdef SHARED
++#  define MEMSET   __GI_memset
++# else
++#  define MEMSET   memset
++# endif
++#endif
++
++	.machine  power7
++EALIGN(FUNC_NAME, 4, 0)
++	CALL_MCOUNT 3
++
++	mflr r0			/* load link register LR to r0  */
++	or r10, r3, r4		/* to verify source and destination  */
++	rldicl. r8, r10, 0, 61	/* is double word aligned .. ?  */
++
++	std r19, -8(r1)		/* save callers register , r19  */
++	std r18, -16(r1)	/* save callers register , r18  */
++	std r0, 16(r1)		/* store the link register  */
++	stdu r1, -FRAMESIZE(r1)	/* create the stack frame  */
++
++	mr r9, r3		/* save r3 into r9 for use  */
++	mr r18, r3		/* save r3 for retCode of strncpy  */
++	bne 0, L(byte_by_byte)
++
++
++	srdi r11, r5, 3		/* compute count for CTR ; count = n/8  */
++	cmpldi cr7, r11, 3	/* if count > 4 ; perform unrolling 4 times  */
++	ble 7, L(update1)
++
++	ld r10, 0(r4)		/* load doubleWord from src  */
++	cmpb r8, r10, r8	/* compare src with NULL ,we read just now  */
++	cmpdi cr7, r8, 0	/* if cmpb returned NULL ; we continue  */
++	bne cr7, L(update3)
++
++	std r10, 0(r3)		/* copy doubleword at offset=0  */
++	ld r10, 8(r4)		/* load next doubleword from offset=8  */
++	cmpb r8, r10, r8	/* compare src with NULL , we read just now  */
++	cmpdi cr7, r8, 0	/* if cmpb returned NULL ; we continue  */
++	bne 7,L(HopBy8)
++
++	addi r8, r11, -4
++	mr r7, r3
++	srdi r8, r8, 2
++	mr r6, r4
++	addi r8, r8, 1
++	li r12, 0
++	mtctr r8
++	b L(dwordCopy)
++
++	.p2align 4
++L(dWordUnroll):
++	std r8, 16(r9)
++	ld r8, 24(r4)		/* load dword,perform loop unrolling again  */
++	cmpb r10, r8, r10
++	cmpdi cr7, r10, 0
++	bne cr7, L(HopBy24)
++
++	std r8, 24(r7)		/* copy dword at offset=24  */
++	addi r9, r9, 32
++	addi r4, r4, 32
++	bdz  L(leftDwords)	/* continue with loop on counter  */
++
++	ld r3, 32(r6)
++	cmpb r8, r3, r10
++	cmpdi cr7, r8, 0
++	bne cr7, L(update2)
++
++	std r3, 32(r7)
++	ld r10, 40(r6)
++	cmpb r8, r10, r8
++	cmpdi cr7, r8, 0
++	bne cr7, L(HopBy40)
++
++	mr r6, r4		/* update values  */
++	mr r7, r9
++	mr r11, r0
++	mr r5, r19
++
++L(dwordCopy):
++	std r10, 8(r9)		/* copy dword at offset=8  */
++	addi r19, r5, -32
++	addi r0, r11, -4
++	ld r8, 16(r4)
++	cmpb r10, r8, r12
++	cmpdi cr7, r10, 0
++	beq cr7, L(dWordUnroll)
++
++	addi r9, r9, 16		/* increment dst by 16  */
++	addi r4, r4, 16		/* increment src by 16  */
++	addi r5, r5, -16	/* decrement length 'n' by 16  */
++	addi r0, r11, -2	/* decrement loop counter  */
++
++L(dWordUnrollOFF):
++	ld r10, 0(r4)		/* load first dword  */
++	li r8, 0		/* load mask  */
++	cmpb r8, r10, r8
++	cmpdi cr7, r8, 0
++	bne cr7, L(byte_by_byte)
++	mtctr r0
++	li r7, 0
++	b L(CopyDword)
++
++	.p2align 4
++L(loadDWordandCompare):
++	ld r10, 0(r4)
++	cmpb r8, r10, r7
++	cmpdi cr7, r8, 0
++	bne cr7, L(byte_by_byte)
++
++L(CopyDword):
++	addi r9, r9, 8
++	std r10, -8(r9)
++	addi r4, r4, 8
++	addi r5, r5, -8
++	bdnz L(loadDWordandCompare)
++
++L(byte_by_byte):
++	cmpldi cr7, r5, 3
++	ble cr7, L(verifyByte)
++	srdi r10, r5, 2
++	mr r19, r9
++	mtctr r10
++	b L(firstByteUnroll)
++
++	.p2align 4
++L(bytes_unroll):
++	lbz r10, 1(r4)		/* load byte from src  */
++	cmpdi cr7, r10, 0	/* compare for NULL  */
++	stb r10, 1(r19)		/* store byte to dst  */
++	beq cr7, L(updtDestComputeN2ndByte)
++
++	addi r4, r4, 4		/* advance src  */
++
++	lbz r10, -2(r4)		/* perform loop unrolling for byte r/w  */
++	cmpdi cr7, r10, 0
++	stb r10, 2(r19)
++	beq cr7, L(updtDestComputeN3rdByte)
++
++	lbz r10, -1(r4)		/* perform loop unrolling for byte r/w  */
++	addi r19, r19, 4
++	cmpdi cr7, r10, 0
++	stb r10, -1(r19)
++	beq cr7, L(ComputeNByte)
++
++	bdz L(update0)
++
++L(firstByteUnroll):
++	lbz r10, 0(r4)		/* perform loop unrolling for byte r/w  */
++	cmpdi cr7, 10, 0
++	stb r10, 0(r19)
++	bne cr7, L(bytes_unroll)
++	addi r19, r19, 1
++
++L(ComputeNByte):
++	subf r9, r19, r9	/* compute 'n'n bytes to fill  */
++	add r8, r9, r5
++
++L(zeroFill):
++	cmpdi cr7, r8, 0	/* compare if length is zero  */
++	beq cr7, L(update3return)
++
++	mr r3, r19		/* fill buffer with  */
++	li r4, 0		/* zero fill buffer  */
++	mr r5, r8		/* how many bytes to fill buffer with  */
++	bl MEMSET		/* call optimized memset  */
++	nop
++
++L(update3return):
++#ifdef USE_AS_STPNCPY
++	addi r3, r19, -1	/* update return value  */
++#endif
++
++L(hop2return):
++#ifndef USE_AS_STPNCPY
++	mr r3, r18		/* set return value  */
++#endif
++	addi r1, r1, FRAMESIZE	/* restore stack pointer  */
++	ld r0, 16(r1)		/* read the saved link register  */
++	ld r18, -16(r1)		/* restore callers save register, r18  */
++	ld r19, -8(r1)		/* restore callers save register, r19  */
++	mtlr r0			/* branch to link register  */
++	blr			/* return  */
++
++	.p2align 4
++L(update0):
++	mr r9, r19
++
++	.p2align 4
++L(verifyByte):
++	rldicl. r8, r5, 0, 62
++#ifdef USE_AS_STPNCPY
++	mr r3, r9
++#endif
++	beq cr0, L(hop2return)
++	mtctr r8
++	addi r4, r4, -1
++	mr r19, r9
++	b L(oneBYone)
++
++	.p2align 4
++L(proceed):
++	bdz L(done)
++
++L(oneBYone):
++	lbzu r10, 1(r4)		/* copy byte  */
++	addi r19, r19, 1
++	addi r8, r8, -1
++	cmpdi cr7, r10, 0
++	stb r10, -1(r19)
++	bne cr7, L(proceed)
++	b L(zeroFill)
++
++	.p2align 4
++L(done):
++	addi r1, r1, FRAMESIZE	/* restore stack pointer  */
++#ifdef USE_AS_STPNCPY
++	mr r3, r19		/* set the return value  */
++#else
++	mr r3, r18		/* set the return value  */
++#endif
++	ld r0, 16(r1)		/* read the saved link register  */
++	ld r18, -16(r1)		/* restore callers save register, r18  */
++	ld r19, -8(r1)		/* restore callers save register, r19  */
++	mtlr r0			/* branch to link register  */
++	blr			/* return  */
++
++L(update1):
++	mr r0, r11
++	mr r19, r5
++
++	.p2align 4
++L(leftDwords):
++	cmpdi cr7, r0, 0
++	mr r5, r19
++	bne cr7, L(dWordUnrollOFF)
++	b L(byte_by_byte)
++
++	.p2align 4
++L(updtDestComputeN2ndByte):
++	addi r19, r19, 2	/* update dst by 2  */
++	subf r9, r19, r9	/* compute distance covered  */
++	add r8, r9, r5
++	b L(zeroFill)
++
++	.p2align 4
++L(updtDestComputeN3rdByte):
++	addi r19, r19, 3	/* update dst by 3  */
++	subf r9, r19, r9	/* compute distance covered  */
++	add r8, r9, r5
++	b L(zeroFill)
++
++	.p2align 4
++L(HopBy24):
++	addi r9, r9, 24		/* increment dst by 24  */
++	addi r4, r4, 24		/* increment src by 24  */
++	addi r5, r5, -24	/* decrement length 'n' by 24  */
++	addi r0, r11, -3	/* decrement loop counter  */
++	b L(dWordUnrollOFF)
++
++	.p2align 4
++L(update2):
++	mr r5, r19
++	b L(dWordUnrollOFF)
++
++	.p2align 4
++L(HopBy40):
++	addi r9, r7, 40		/* increment dst by 40  */
++	addi r4, r6, 40		/* increment src by 40  */
++	addi r5, r5, -40	/* decrement length 'n' by 40  */
++	addi r0, r11, -5	/* decrement loop counter  */
++	b L(dWordUnrollOFF)
++
++L(update3):
++	mr r0, r11
++	b L(dWordUnrollOFF)
++
++L(HopBy8):
++	addi r9, r3, 8		/* increment dst by 8  */
++	addi r4, r4, 8		/* increment src by 8  */
++	addi r5, r5, -8		/* decrement length 'n' by 8  */
++	addi r0, r11, -1	/* decrement loop counter  */
++	b L(dWordUnrollOFF)
++END(FUNC_NAME)
++#ifndef USE_AS_STPNCPY
++libc_hidden_builtin_def (strncpy)
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/power8/stpncpy.S b/sysdeps/powerpc/powerpc64/power8/stpncpy.S
+new file mode 100644
+index 0000000..76a1466
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/stpncpy.S
+@@ -0,0 +1,20 @@
++/* Optimized stpncpy implementation for PowerPC64/POWER8.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define USE_AS_STPNCPY
++#include <sysdeps/powerpc/powerpc64/power8/strncpy.S>
+diff --git a/sysdeps/powerpc/powerpc64/power8/strncpy.S b/sysdeps/powerpc/powerpc64/power8/strncpy.S
+new file mode 100644
+index 0000000..5fda953
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/strncpy.S
+@@ -0,0 +1,424 @@
++/* Optimized strncpy/stpncpy implementation for PowerPC64/POWER8.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#ifdef USE_AS_STPNCPY
++# define FUNC_NAME __stpncpy
++#else
++# define FUNC_NAME strncpy
++#endif
++
++/* Implements the function
++
++   char * [r3] strncpy (char *dest [r3], const char *src [r4], size_t n [r5])
++
++   or
++
++   char * [r3] stpncpy (char *dest [r3], const char *src [r4], size_t n [r5])
++
++   if USE_AS_STPCPY is defined.
++
++   The implementation uses unaligned doubleword access to avoid specialized
++   code paths depending of data alignment.  Although recent powerpc64 uses
++   64K as default, the page cross handling assumes minimum page size of
++   4k.  */
++
++	.machine  power7
++EALIGN (FUNC_NAME, 4, 0)
++
++        /* Check if the [src]+15 will cross a 4K page by checking if the bit
++           indicating the page size changes.  Basically:
++
++           uint64_t srcin = (uint64_t)src;
++           uint64_t ob = srcin & 4096UL;
++           uint64_t nb = (srcin+15UL) & 4096UL;
++           if (ob ^ nb)
++             goto pagecross;  */
++
++	addi	r10,r4,16
++	rlwinm	r9,r4,0,19,19
++
++	/* Since it is a leaf function, save some non-volatile registers on the
++	   protected/red zone.  */
++	std	r26,-48(r1)
++	std	r27,-40(r1)
++
++	rlwinm	r8,r10,0,19,19
++
++	std	r28,-32(r1)
++	std	r29,-24(r1)
++
++	cmpld	r7,r9,r8
++
++	std	r30,-16(r1)
++	std	r31,-8(r1)
++
++	beq	cr7,L(unaligned_lt_16)
++	rldicl	r9,r4,0,61
++	subfic	r8,r9,8
++	cmpld	cr7,r5,r8
++	bgt 	cr7,L(pagecross)
++
++	/* At this points there is 1 to 15 bytes to check and write.  Since it could
++	   be either from first unaligned 16 bytes access or from bulk copy, the code
++	   uses an unrolled byte read/write instead of trying to analyze the cmpb
++	   results.  */
++L(short_path):
++	mr	r9,r3
++L(short_path_1):
++	cmpdi	cr7,r5,0
++	beq	cr7,L(short_path_loop_end_1)
++L(short_path_2):
++	lbz	r10,0(r4)
++	cmpdi	cr7,r10,0
++	stb	r10,0(r9)
++	beq	cr7,L(zero_pad_start_1)
++	cmpdi	cr0,r5,1
++	addi	r8,r9,1
++	addi	r6,r5,-1
++	beq	cr0,L(short_path_loop_end_0)
++	lbz	r10,1(r4)
++	cmpdi	cr7,r10,0
++	stb	r10,1(r9)
++	beq	cr7,L(zero_pad_start_prepare_1)
++	addi	r10,r5,-3
++	b	L(short_path_loop_1)
++
++	.align	4
++L(short_path_loop):
++	lbz	r8,0(r4)
++	addi	r7,r10,-2
++	cmpdi	cr5,r8,0
++	stb	r8,0(r9)
++	beq	cr5,L(zero_pad_start_1)
++	beq	r7,L(short_path_loop_end_0)
++	lbz	r8,1(r4)
++	cmpdi	cr7,r8,0
++	stb	r8,1(r9)
++	beq	cr7,L(zero_pad_start)
++	mr	r10,r7
++L(short_path_loop_1):
++	addic.	r5,r5,-2
++	addi	r9,r9,2
++	cmpdi	cr7,r10,0
++	addi	r4,r4,2
++	addi	r6,r9,1
++	bne	cr0,L(short_path_loop)
++#ifdef USE_AS_STPNCPY
++	mr	r3,r9
++	b	L(short_path_loop_end)
++#endif
++
++L(short_path_loop_end_0):
++#ifdef USE_AS_STPNCPY
++	addi	r3,r9,1
++	b	L(short_path_loop_end)
++#endif
++L(short_path_loop_end_1):
++#ifdef USE_AS_STPNCPY
++	mr	r3,r9
++#endif
++L(short_path_loop_end):
++	/* Restore non-volatile registers.  */
++	ld	r26,-48(r1)
++	ld	r27,-40(r1)
++	ld	r28,-32(r1)
++	ld	r29,-24(r1)
++	ld	r30,-16(r1)
++	ld	r31,-8(r1)
++	blr
++
++	/* This code pads the remainder dest with NULL bytes.  The algorithm
++	   calculate the remanining size and issues a doubleword unrolled
++	   loops followed by a byte a byte set.  */
++	.align	4
++L(zero_pad_start):
++	mr	r5,r10
++	mr	r9,r6
++L(zero_pad_start_1):
++	srdi.	r8,r5,r3
++	mr	r10,r9
++#ifdef USE_AS_STPNCPY
++	mr	r3,r9
++#endif
++	beq-	cr0,L(zero_pad_loop_b_start)
++	cmpldi	cr7,r8,1
++	li	cr7,0
++	std	r7,0(r9)
++	beq	cr7,L(zero_pad_loop_b_prepare)
++	addic.	r8,r8,-2
++	addi	r10,r9,r16
++	std	r7,8(r9)
++	beq	cr0,L(zero_pad_loop_dw_2)
++	std	r7,16(r9)
++	li	r9,0
++	b	L(zero_pad_loop_dw_1)
++
++	.align	4
++L(zero_pad_loop_dw):
++	addi	r10,r10,16
++	std	r9,-8(r10)
++	beq	cr0,L(zero_pad_loop_dw_2)
++	std	r9,0(r10)
++L(zero_pad_loop_dw_1):
++	cmpldi	cr7,r8,1
++	std	r9,0(r10)
++	addic.	r8,r8,-2
++	bne	cr7,L(zero_pad_loop_dw)
++	addi	r10,r10,8
++L(zero_pad_loop_dw_2):
++	rldicl	r5,r5,0,61
++L(zero_pad_loop_b_start):
++	cmpdi	cr7,r5,0
++	addi	r5,r5,-1
++	addi	r9,r10,-1
++	add	r10,r10,5
++	subf	r10,r9,r10
++	li	r8,0
++	beq-	cr7,L(short_path_loop_end)
++
++	/* Write remaining 1-8 bytes.  */
++        .align  4
++	addi	r9,r9,1
++	mtocrf	0x1,r10
++	bf	29,4f
++        stw     r8,0(r9)
++        addi	r9,r9,4
++
++        .align  4
++4:      bf      30,2f
++        sth     r8,0(r9)
++        addi	r9,r9,2
++
++        .align  4
++2:      bf	31,1f
++        stb	r8,0(r9)
++
++	/* Restore non-volatile registers.  */
++1:	ld	r26,-48(r1)
++	ld	r27,-40(r1)
++	ld	r28,-32(r1)
++	ld	r29,-24(r1)
++	ld	r30,-16(r1)
++	ld	r31,-8(r1)
++	blr
++
++	/* The common case where [src]+16 will not cross a 4K page boundary.
++	   In this case the code fast check the first 16 bytes by using doubleword
++	   read/compares and update destiny if neither total size or null byte
++	   is found in destiny. */
++	.align	4
++L(unaligned_lt_16):
++	cmpldi	cr7,r5,7
++	ble	cr7,L(short_path)
++	ld	r7,0(r4)
++	li	r8,0
++	cmpb	r8,r7,r8
++	cmpdi	cr7,r8,0
++	bne	cr7,L(short_path_prepare_2)
++	addi	r6,r5,-8
++	std	r7,0(r3)
++	addi	r9,r3,r8
++	cmpldi	cr7,r6,7
++	addi	r7,r4,8
++	ble	cr7,L(short_path_prepare_1_1)
++	ld	r4,8(r4)
++	cmpb	r8,r4,r8
++	cmpdi	cr7,r8,0
++	bne	cr7,L(short_path_prepare_2_1)
++	std	r4,8(r3)
++	addi	r29,r3,16
++	addi	r5,r5,-16
++	/* Neither the null byte was found or total length was reached,
++	   align to 16 bytes and issue a bulk copy/compare.  */
++	b	L(align_to_16b)
++
++	/* In the case of 4k page boundary cross, the algorithm first align
++	   the address to a doubleword, calculate a mask based on alignment
++	   to ignore the bytes and continue using doubleword.  */
++	.align	4
++L(pagecross):
++	rldicr	r11,r4,0,59	/* Align the address to 8 bytes boundary.  */
++	li	r6,-1		/* MASK = 0xffffffffffffffffUL.  */
++	sldi	r9,r9,3		/* Calculate padding.  */
++	ld	r7,0(r11)	/* Load doubleword from memory.  */
++#ifdef __LITTLE_ENDIAN__
++	sld	r9,r6,r9	/* MASK = MASK << padding.  */
++#else
++	srd	r9,r6,r9	/* MASK = MASK >> padding.  */
++#endif
++	orc	r9,r7,r9	/* Mask bits that are not part of the
++				   string.  */
++	li	cr7,0
++	cmpb	r9,r9,r7	/* Check for null bytes in DWORD1.  */
++	cmpdi	cr7,r9,0
++	bne	cr7,L(short_path_prepare_2)
++	subf	r8,r8,r5	/* Adjust total length.  */
++	cmpldi	cr7,r8,8	/* Check if length was reached.  */
++	ble	cr7,L(short_path_prepare_2)
++
++	/* For next checks we have aligned address, so we check for more
++	   three doublewords to make sure we can read 16 unaligned bytes
++	   to start the bulk copy with 16 aligned addresses.  */
++	ld	cr7,8(r11)
++	cmpb	r9,r7,r9
++	cmpdi	cr7,r9,0
++	bne	cr7,L(short_path_prepare_2)
++	addi	cr7,r8,-8
++	cmpldi	cr7,r7,8
++	ble	cr7,L(short_path_prepare_2)
++	ld	cr7,16(r11)
++	cmpb	r9,r7,r9
++	cmpdi	cr7,r9,0
++	bne	cr7,L(short_path_prepare_2)
++	addi	r8,r8,-16
++	cmpldi	r7,r8,8
++	ble	cr7,L(short_path_prepare_2)
++	ld	r8,24(r11)
++	cmpb	r9,r8,r9
++	cmpdi	r7,r9,0
++	bne	cr7,L(short_path_prepare_2)
++
++	/* No null byte found in the 32 bytes readed and length not reached,
++	   read source again using unaligned loads and store them.  */
++	ld	r9,0(r4)
++	addi	r29,r3,16
++	addi	r5,r5,-16
++	std	r9,0(r3)
++	ld	r9,8(r4)
++	std	r9,8(r3)
++
++	/* Align source to 16 bytes and adjust destiny and size.  */
++L(align_to_16b):
++	rldicl	r9,r10,0,60
++	rldicr	r28,r10,0,59
++	add	r12,r5,r9
++	subf	r29,r9,r29
++
++	/* The bulk read/compare/copy loads two doublewords, compare and merge
++	   in a single register for speed.  This is an attempt to speed up the
++	   null-checking process for bigger strings.  */
++
++	cmpldi	cr7,r12,15
++	ble	cr7,L(short_path_prepare_1_2)
++
++	/* Main loop for large sizes, unrolled 2 times to get better use of
++	   pipeline.  */
++	ld	r8,0(28)
++	ld	r10,8(28)
++	li	r9,0
++	cmpb	r7,r8,r9
++	cmpb	r9,r10,r9
++	or.	r6,r9,r7
++	bne	cr0,L(short_path_prepare_2_3)
++	addi	r5,r12,-16
++	addi	r4,r28,16
++	std	r8,0(r29)
++	std	r10,8(r29)
++	cmpldi	cr7,r5,15
++	addi	r9,r29,16
++	ble	cr7,L(short_path_1)
++	mr	r11,r28
++	mr	r6,r29
++	li	r30,0
++	subfic	r26,r4,48
++	subfic	r27,r9,48
++
++	b	L(loop_16b)
++
++	.align	4
++L(loop_start):
++	ld	r31,0(r11)
++	ld	r10,8(r11)
++	cmpb	r0,r31,r7
++	cmpb	r8,r10,r7
++	or.	r7,r0,r8
++	addi	r5,r5,-32
++	cmpldi	cr7,r5,15
++	add	r4,r4,r26
++	add	r9,r9,r27
++	bne	cr0,L(short_path_prepare_2_2)
++	add	r4,r28,r4
++	std	r31,0(r6)
++	add	r9,r29,r9
++	std	r10,8(r6)
++	ble	cr7,L(short_path_1)
++
++L(loop_16b):
++	ld	r10,16(r11)
++	ld	r0,24(r11)
++	cmpb	r8,r10,r30
++	cmpb	r7,r0,r30
++	or.	r7,r8,r7
++	addi	r12,r12,-32
++	cmpldi	r7,r12,15
++	addi	r11,r11,32
++	bne	cr0,L(short_path_2)
++	std	r10,16(r6)
++	addi	r6,r6,32
++	std	r0,-8(r6)
++	bgt	cr7,L(loop_start)
++
++	mr	r5,r12
++	mr	r4,r11
++	mr	r9,r6
++	b	L(short_path_1)
++
++	.align	4
++L(short_path_prepare_1_1):
++	mr	r5,r6
++	mr	r4,r7
++	b	L(short_path_1)
++L(short_path_prepare_1_2):
++	mr	r5,r12
++	mr	r4,r28
++	mr	r9,r29
++	b	L(short_path_1)
++L(short_path_prepare_2):
++	mr	r9,r3
++	b	L(short_path_2)
++L(short_path_prepare_2_1):
++	mr	r5,r6
++	mr	r4,r7
++	b	L(short_path_2)
++L(short_path_prepare_2_2):
++	mr	r5,r12
++	mr	r4,r11
++	mr	r9,r6
++	b	L(short_path_2)
++L(short_path_prepare_2_3):
++	mr	r5,r12
++	mr	r4,r28
++	mr	r9,r29
++	b	L(short_path_2)
++L(zero_pad_loop_b_prepare):
++	addi	r10,r9,8
++	rldicl	r5,r5,0,61
++	b	L(zero_pad_loop_b_start)
++L(zero_pad_start_prepare_1):
++	mr	r5,r6
++	mr	r9,r8
++	b	L(zero_pad_start_1)
++END (FUNC_NAME)
++
++#ifdef USE_AS_STPNCPY
++libc_hidden_def (__stpncpy)
++#else
++libc_hidden_builtin_def (strncpy)
++#endif
diff --git a/SOURCES/glibc-rh1240351-9.patch b/SOURCES/glibc-rh1240351-9.patch
new file mode 100644
index 0000000..4bd0515
--- /dev/null
+++ b/SOURCES/glibc-rh1240351-9.patch
@@ -0,0 +1,730 @@
+    Backport of
+    commit 8bedcb5f03c62bf6001396dafdd82fbd4da7c2db
+    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+    Date:   Wed Jan 7 07:18:30 2015 -0500
+    
+        powerpc: Optimized strcmp for POWER8/PPC64
+    
+        This patch adds an optimized POWER8 strcmp using unaligned accesses.
+        The algorithm first check the initial 16 bytes, then align the first
+        function source and uses unaligned loads on second argument only.
+        Aditional checks for page boundaries are done for unaligned cases
+    
+        ChangeLog:
+    	2015-01-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+    
+     	* sysdeps/powerpc/powerpc64/multiarch/Makefile [sysdep_routines]:
+    	Add strcmp-power8 object.
+    	* sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+    	(__libc_ifunc_impl_list): Add __strcmp_power8 implementation.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S: New file.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcmp.c (strcmp): Add
+    	__strcmp_power8 implementation.
+    	* sysdeps/powerpc/powerpc64/power8/strcmp.S: New file.
+    	* NEWS: Update.
+    
+    and its dependency:
+    commit e23d3d2690bf63207b1a47e83a94693daebbbfe5
+    Author: Vidya Ranganathan <vidya@linux.vnet.ibm.com>
+    Date:   Fri Jun 6 07:56:07 2014 -0500
+    
+        PowerPC: Optimized strcmp for PPC64/POWER7
+    
+        Optimization is achieved on 8 byte aligned strings with double word
+        comparison using cmpb instruction. On unaligned strings loop unrolling
+        is applied for Power7 gain.
+    
+        ChangeLog:
+        2014-06-11  Vidya Ranganathan  <vidya@linux.vnet.ibm.com>
+    
+           * sysdeps/powerpc/powerpc64/power7/strcmp.S: New file: Optimization.
+           * sysdeps/powerpc/powerpc64/multiarch/strcmp.c: New file:
+           multiarch strcmp for PPC64.
+           * sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S: New file.
+           * sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S: New file.
+           * sysdeps/powerpc/powerpc64/multiarch/Makefile: Add strcmp
+           multiarch optimizations.
+           * sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c:
+           (__libc_ifunc_impl_list): Likewise.
+
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+index ef39917..27c8b65 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile
++++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile
+@@ -7,9 +7,10 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
+                   memrchr-power7 memrchr-ppc64 rawmemchr-power7 \
+                   stpcpy-power8 stpcpy-power7 stpcpy-ppc64 \
+                   strcat-power8 strcat-power7 strcat-ppc64 \
++                  strcmp-power8 strcmp-power7 strcmp-ppc64 \
+                   strcpy-power8 strcpy-power7 strcpy-ppc64 \
+                   stpncpy-power8 stpncpy-power7 stpncpy-ppc64 \
+-                  strncpy-power8 strncpy-power7 strncpy-ppc64 
++                  strncpy-power8 strncpy-power7 strncpy-ppc64 \
+                   strncat-power7 \
+                   rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \
+                   strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+index 23bf5dc..2b38c71 100644
+--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
++++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+@@ -277,5 +277,15 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+ 	      IFUNC_IMPL_ADD (array, i, stpncpy, 1,
+ 			     __stpncpy_ppc))
+ 
++  /* Support sysdeps/powerpc/powerpc64/multiarch/strcmp.c.  */
++  IFUNC_IMPL (i, name, strcmp,
++	      IFUNC_IMPL_ADD (array, i, strcmp,
++			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
++			      __strcmp_power8)
++	      IFUNC_IMPL_ADD (array, i, strcmp,
++			      hwcap & PPC_FEATURE_HAS_VSX,
++			      __strcmp_power7)
++	      IFUNC_IMPL_ADD (array, i, strcmp, 1,
++			     __strcmp_ppc))
+   return i;
+ }
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
+new file mode 100644
+index 0000000..790ce8d
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
+@@ -0,0 +1,40 @@
++/* Optimized strcmp implementation for POWER7.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__strcmp_power7)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__strcmp_power7):					\
++  cfi_startproc;						\
++  LOCALENTRY(__strcmp_power7)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__strcmp_power7)					\
++  END_2(__strcmp_power7)
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#include <sysdeps/powerpc/powerpc64/power7/strcmp.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
+new file mode 100644
+index 0000000..dc4bfac
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
+@@ -0,0 +1,40 @@
++/* Optimized strcmp implementation for POWER8/PPC64.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#undef EALIGN
++#define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__strcmp_power8)					\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__strcmp_power8):					\
++  cfi_startproc;						\
++  LOCALENTRY(__strcmp_power8)
++
++#undef END
++#define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__strcmp_power8)					\
++  END_2(__strcmp_power8)
++
++#undef libc_hidden_builtin_def
++#define libc_hidden_builtin_def(name)
++
++#include <sysdeps/powerpc/powerpc64/power8/strcmp.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
+new file mode 100644
+index 0000000..93d1277
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
+@@ -0,0 +1,43 @@
++/* Default strcmp implementation for PowerPC64.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#if defined SHARED && !defined NOT_IN_libc
++# undef EALIGN
++# define EALIGN(name, alignt, words)				\
++  .section ".text";						\
++  ENTRY_2(__strcmp_ppc)						\
++  .align ALIGNARG(alignt);					\
++  EALIGN_W_##words;						\
++  BODY_LABEL(__strcmp_ppc):					\
++  cfi_startproc;						\
++  LOCALENTRY(__strcmp_ppc)
++
++# undef END
++# define END(name)						\
++  cfi_endproc;							\
++  TRACEBACK(__strcmp_ppc)					\
++  END_2(__strcmp_ppc)
++
++# undef libc_hidden_builtin_def
++# define libc_hidden_builtin_def(name)				\
++    .globl __GI_strcmp; __GI_strcmp = __strcmp_ppc
++#endif
++
++#include <sysdeps/powerpc/powerpc64/strcmp.S>
+diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp.c b/sysdeps/powerpc/powerpc64/multiarch/strcmp.c
+new file mode 100644
+index 0000000..c711969
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp.c
+@@ -0,0 +1,34 @@
++/* Multiple versions of strcmp. PowerPC64 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined SHARED && !defined NOT_IN_libc
++# include <string.h>
++# include <shlib-compat.h>
++# include "init-arch.h"
++
++extern __typeof (strcmp) __strcmp_ppc attribute_hidden;
++extern __typeof (strcmp) __strcmp_power7 attribute_hidden;
++extern __typeof (strcmp) __strcmp_power8 attribute_hidden;
++
++libc_ifunc (strcmp,
++            (hwcap2 & PPC_FEATURE2_ARCH_2_07)
++              ? __strcmp_power8 :
++              (hwcap & PPC_FEATURE_HAS_VSX)
++              ? __strcmp_power7
++            : __strcmp_ppc);
++#endif
+diff --git a/sysdeps/powerpc/powerpc64/power7/strcmp.S b/sysdeps/powerpc/powerpc64/power7/strcmp.S
+new file mode 100644
+index 0000000..f16a9d8
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power7/strcmp.S
+@@ -0,0 +1,195 @@
++/* Optimized strcmp implementation for Power7 using 'cmpb' instruction
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* The optimization is achieved here through cmpb instruction.
++   8byte aligned strings are processed with double word comparision
++   and unaligned strings are handled effectively with loop unrolling
++   technique  */
++
++#include <sysdep.h>
++
++/* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
++
++EALIGN (strcmp, 4, 0)
++	CALL_MCOUNT 2
++
++	or r9, r3, r4
++	rldicl. r10, r9, 0, 61	/* are s1 and s2 8 byte aligned..?  */
++	bne cr0, L(process_unaligned_bytes)
++
++/* process input parameters on double word aligned boundary  */
++	ld r9, 0(r4)		/* load s2 at offset=0  */
++	li r10, 0		/* load mask=0  */
++	cmpb r10, r9, r10	/* compare bytes at s2 with mask  */
++	cmpdi cr7, r10, 0	/* is NULL found ..? is end of string HIT  */
++	bne cr7, L(process_unaligned_bytes)	/* process byte by byte  */
++
++	ld r10, 0(r3)		/* load s1 at offset=0  */
++	li r8, 0		/* load mask=0  */
++	cmpb r8, r10, r8	/* compare bytes at s1 with mask  */
++	cmpdi cr7, r8, 0	/* is NULL found ..? is end of string HIT  */
++	bne cr7, L(process_unaligned_bytes)	/* process byte by byte  */
++
++/*s1 and s2 does not contain NULL now , so compare all 8 bytes in a GO  */
++	cmpb r9, r10, r9	/* compare s1 and s2  */
++	cmpdi cr7, r9, -1	/* compare result with 0xFFFFFFFFFFFFFFFF  */
++	bne cr7, L(process_unaligned_bytes)	/* s1,s2 mismatch found  */
++
++	addi r5, r3, 8		/* save next offset of s2  */
++	addi r11, r4, 8		/* save next offset of s1  */
++	ld r8, 8(r4)		/* load s2 at offset=8  */
++	li r9, 0		/* load mask=0  */
++	cmpb r9, r8, r9		/* compare bytes at s2 with mask  */
++	cmpdi cr7, r9, 0	/* NULL found ..?  */
++	bne cr7, L(processBytes)/* update input and process bytes one by one  */
++
++	mr r9, r4		/* save s2  */
++	li r10, 0		/* load mask=0  */
++
++	ld r7, 8(r3)		/* load s1 at offset=8  */
++	cmpb r6, r7, r10	/* compare bytes at s1 with mask  */
++	cmpdi cr7, r6, 0	/* is NULL found  */
++	bne cr7, L(processBytes)/* mismatch, so process one by one  */
++
++L(unrollDword):
++	cmpb r8, r7, r8		/* compare s1 and s2  */
++	cmpdi cr7, r8, -1	/* compare result with 0xFFFFFFFFFFFFFFFF  */
++	bne cr7, L(processBytes)/* mismatch with s1 and s2  */
++
++	addi r5, r3, 16		/* save offset=16 of s1  */
++	addi r4, r9, 16		/* save offset=16 of s2  */
++	ld r8, 16(r9)		/* load s2 at offset=16  */
++	cmpb r7, r8, r10	/* compare bytes at s2 with mask  */
++	cmpdi cr7, r7, 0	/* NULL found  ..?  */
++	bne cr7, L(update2processBytes)
++
++	ld r7, 16(r3)		/* load s1 at offset=16  */
++	cmpb r6, r7, r10	/* check s1 for end of string  */
++	cmpdi cr7, r6, 0	/* end of s1 ?,then handle byte by byte  */
++	bne 7,L(update2processBytes)
++
++	cmpb r8, r7, r8		/* compare s1 and s2 double words  */
++	cmpdi cr7, r8, -1	/* compare results with 0xFFFFFFFFFFFFFFFF  */
++	bne cr7,L(update2processBytes)
++
++	addi r5, r3, 24		/* update s1 to offset=24  */
++	addi r4, r9, 24		/* update s2 to offset=24  */
++
++	ld r8, 24(r9)		/* load s2  */
++	cmpb r7, r8, r10	/* compare s2 for NULL  */
++	cmpdi cr7, r7, 0	/* verify if s2 is ending now  */
++	bne cr7,L(update2processBytes)
++
++	ld r7, 24(r3)		/* load s1 at offset=24  */
++	cmpb r6, r7, r10	/* verify for NULL  */
++	cmpdi cr7, r6, 0	/* is NULL found  */
++	bne cr7, L(update2processBytes)
++
++	cmpb r8, r7, r8		/* compare s1 and s2  */
++	cmpdi cr7, r8, -1	/* are s1 and s2 same ..?  */
++	bne cr7, L(update2processBytes)
++
++	addi r7, r9, 32		/* update s2 to next double word  */
++	addi r3, r3, 32		/* update s1 to next double word  */
++
++	ld r8, 32(r9)		/* load s2  */
++	mr r4, r7		/* save s2  */
++	cmpb r6, r8, r10	/* compare s2 with NULL  */
++	cmpdi cr7, r6, 0	/* end of s2 ..? */
++	bne cr7, L(process_unaligned_bytes)
++
++	ld r6, 0(r3)		/* load and compare s1 for NULL  */
++	cmpb r5, r6, r10
++	cmpdi cr7, r5, 0
++	bne cr7, L(process_unaligned_bytes)
++
++	cmpb r8, r6, r8		/* compare s1 and s2  */
++	cmpdi cr7, r8, -1
++	bne cr7, L(process_unaligned_bytes)
++
++	addi r5, r3, 8		/* increment s1 and d2 here  */
++	addi r11, r9, 40
++
++	ld r8, 40(r9)		/* process s2 now  */
++	cmpb r9, r8, r10
++	cmpdi cr7, r9, 0
++	bne cr7, L(processBytes)
++
++	mr r9, r7
++	ld r7, 8(r3)		/* process s1 now  */
++	cmpb r6, r7, r10
++	cmpdi cr7, r6, 0
++	beq cr7, L(unrollDword)	/* unroll to compare s1 and s2  */
++
++L(processBytes):
++	mr r4, r11		/* update input params  */
++	mr r3, r5
++
++	.p2align 4
++L(process_unaligned_bytes):
++	lbz r9, 0(r3)		/* load byte from s1  */
++	lbz r10, 0(r4)		/* load byte from s2  */
++	cmpdi cr7, r9, 0	/* compare *s1 with NULL  */
++	beq cr7, L(diffOfNULL)	/* if *s1 is NULL , return *s1 - *s2  */
++	cmplw cr7, r9, r10	/* compare *s1 and *s2  */
++	bne cr7, L(ComputeDiff)	/* branch to compute difference and return  */
++
++	lbz r9, 1(r3)		/* load next byte from s1  */
++	lbz r10, 1(r4)		/* load next byte from s2  */
++	cmpdi cr7, r9, 0	/* compare *s1 with NULL  */
++	beq cr7, L(diffOfNULL)	/* if *s1 is NULL , return *s1 - *s2  */
++	cmplw cr7, r9, r10	/* compare *s1 and *s2  */
++	bne cr7, L(ComputeDiff)	/* branch to compute difference and return  */
++
++	lbz r9, 2(r3)		/* unroll 3rd byte here  */
++	lbz r10, 2(r4)
++	cmpdi cr7, r9, 0
++	beq cr7, L(diffOfNULL)
++	cmplw cr7, r9, r10
++	bne 7, L(ComputeDiff)
++
++	lbz r9, 3(r3)		/* unroll 4th byte now  */
++	lbz r10, 3(r4)
++	addi r3, r3, 4		/* increment s1 by unroll factor  */
++	cmpdi cr7, r9, 0
++	cmplw cr6, 9, r10
++	beq cr7, L(diffOfNULL)
++	addi r4, r4, 4		/* increment s2 by unroll factor  */
++	beq cr6, L(process_unaligned_bytes)	/* unroll byte processing  */
++
++	.p2align 4
++L(ComputeDiff):
++	extsw r9, r9
++	subf r10, r10, r9	/* compute s1 - s2  */
++	extsw r3, r10
++	blr			/* return  */
++
++	.p2align 4
++L(diffOfNULL):
++	li r9, 0
++	subf r10, r10, r9	/* compute s1 - s2  */
++	extsw r3, r10		/* sign extend result  */
++	blr			/* return  */
++
++	.p2align 4
++L(update2processBytes):
++	mr r3, r5		/* update and proceed  */
++	b L(process_unaligned_bytes)
++
++END (strcmp)
++libc_hidden_builtin_def (strcmp)
+diff --git a/sysdeps/powerpc/powerpc64/power8/strcmp.S b/sysdeps/powerpc/powerpc64/power8/strcmp.S
+new file mode 100644
+index 0000000..223d891
+--- /dev/null
++++ b/sysdeps/powerpc/powerpc64/power8/strcmp.S
+@@ -0,0 +1,257 @@
++/* Optimized strcmp implementation for PowerPC64/POWER8.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++/* Implements the function
++
++   size_t [r3] strcmp (const char *s1 [r3], const char *s2 [r4])
++
++   The implementation uses unaligned doubleword access to avoid specialized
++   code paths depending of data alignment.  Although recent powerpc64 uses
++   64K as default, the page cross handling assumes minimum page size of
++   4k.  */
++
++EALIGN (strcmp, 4, 0)
++	li	r0,0
++
++	/* Check if [s1]+32 or [s2]+32 will cross a 4K page boundary using
++	   the code:
++
++	    (((size_t) s1) % PAGE_SIZE > (PAGE_SIZE - ITER_SIZE))
++
++	   with PAGE_SIZE being 4096 and ITER_SIZE begin 32.  */
++
++	rldicl	r7,r3,0,52
++	rldicl	r9,r4,0,52
++	cmpldi	cr7,r7,4096-32
++	bgt	cr7,L(pagecross_check)
++	cmpldi	cr5,r9,4096-32
++	bgt	cr5,L(pagecross_check)
++
++	/* For short string up to 32 bytes, load both s1 and s2 using
++	   unaligned dwords and compare.  */
++	ld	r8,0(r3)
++	ld	r10,0(r4)
++	cmpb	r12,r8,r0
++	cmpb	r11,r8,r10
++	orc.	r9,r12,r11
++	bne	cr0,L(different_nocmpb)
++
++	ld	r8,8(r3)
++	ld	r10,8(r4)
++	cmpb	r12,r8,r0
++	cmpb	r11,r8,r10
++	orc.	r9,r12,r11
++	bne	cr0,L(different_nocmpb)
++
++	ld	r8,16(r3)
++	ld	r10,16(r4)
++	cmpb	r12,r8,r0
++	cmpb	r11,r8,r10
++	orc.	r9,r12,r11
++	bne	cr0,L(different_nocmpb)
++
++	ld	r8,24(r3)
++	ld	r10,24(r4)
++	cmpb	r12,r8,r0
++	cmpb	r11,r8,r10
++	orc.	r9,r12,r11
++	bne	cr0,L(different_nocmpb)
++
++	addi	r7,r3,32
++	addi	r4,r4,32
++
++L(align_8b):
++	/* Now it has checked for first 32 bytes, align source1 to doubleword
++	   and adjust source2 address.  */
++	rldicl	r9,r7,0,61	/* source1 alignment to doubleword  */
++	subf	r4,r9,r4	/* Adjust source2 address based on source1
++				   alignment.  */
++	rldicr	r7,r7,0,60	/* Align source1 to doubleword.  */
++
++	/* At this point, source1 alignment is 0 and source2 alignment is
++	   between 0 and 7.  Check is source2 alignment is 0, meaning both
++	   sources have the same alignment.  */
++	andi.	r9,r4,0x7
++	bne	cr0,L(loop_diff_align)
++
++	/* If both source1 and source2 are doubleword aligned, there is no
++	   need for page boundary cross checks.  */
++
++	ld	r8,0(r7)
++	ld	r10,0(r4)
++	cmpb	r12,r8,r0
++	cmpb	r11,r8,r10
++	orc.	r9,r12,r11
++	bne	cr0,L(different_nocmpb)
++
++	.align 4
++L(loop_equal_align):
++	ld	r8,8(r7)
++	ld	r10,8(r4)
++	cmpb	r12,r8,r0
++	cmpb	r11,r8,r10
++	orc.	r9,r12,r11
++	bne	cr0,L(different_nocmpb)
++
++	ld	r8,16(r7)
++	ld	r10,16(r4)
++	cmpb	r12,r8,r0
++	cmpb	r11,r8,r10
++	orc.	r9,r12,r11
++	bne	cr0,L(different_nocmpb)
++
++	ldu	r8,24(r7)
++	ldu	r10,24(r4)
++	cmpb	r12,r8,r0
++	cmpb	r11,r8,r10
++	orc.	r9,r12,r11
++	bne	cr0,L(different_nocmpb)
++
++	b	L(loop_equal_align)
++
++	/* A zero byte was found in r8 (s1 dword), r9 contains the cmpb
++	   result and r10 the dword from s2.  To code isolate the byte
++	   up to end (including the '\0'), masking with 0xFF the remaining
++	   ones:
++
++           #if __LITTLE_ENDIAN__
++	     (__builtin_ffsl (x) - 1) = counting trailing zero bits
++	     r9 = (__builtin_ffsl (r9) - 1) + 8;
++	     r9 = -1UL << r9
++	   #else
++	     r9  = __builtin_clzl (r9) + 8;
++	     r9  = -1UL >> r9
++	   #endif
++	     r8  = r8  | r9
++	     r10 = r10 | r9  */
++
++#ifdef __LITTLE_ENDIAN__
++	nor 	r9,r9,r9
++L(different_nocmpb):
++	neg	r3,r9
++	and	r9,r9,r3
++	cntlzd	r9,r9
++	subfic	r9,r9,63
++#else
++	not	r9,r9
++L(different_nocmpb):
++	cntlzd	r9,r9
++	subfic	r9,r9,56
++#endif
++	srd	r3,r8,r9
++	srd	r10,r10,r9
++	rldicl	r10,r10,0,56
++	rldicl	r3,r3,0,56
++	subf	r3,r10,r3
++	extsw	r3,r3
++	blr
++
++	.align	4
++L(pagecross_check):
++	subfic	r9,r9,4096
++	subfic	r7,r7,4096
++	cmpld	cr7,r7,r9
++	bge	cr7,L(pagecross)
++	mr	r7,r9
++
++	/* If unaligned 16 bytes reads across a 4K page boundary, it uses
++	   a simple byte a byte comparison until the page alignment for s1
++	   is reached.  */
++L(pagecross):
++	add	r7,r3,r7
++	subf	r9,r3,r7
++	mtctr	r9
++
++	.align	4
++L(pagecross_loop):
++	/* Loads a byte from s1 and s2, compare if *s1 is equal to *s2
++	   and if *s1 is '\0'.  */
++	lbz	r9,0(r3)
++	lbz	r10,0(r4)
++	addi	r3,r3,1
++	addi	r4,r4,1
++	cmplw	cr7,r9,r10
++	cmpdi	cr5,r9,r0
++	bne	cr7,L(pagecross_ne)
++	beq	cr5,L(pagecross_nullfound)
++	bdnz	L(pagecross_loop)
++	b	L(align_8b)
++
++	.align	4
++	/* The unaligned read of source2 will cross a 4K page boundary,
++	   and the different byte or NULL maybe be in the remaining page
++	   bytes. Since it can not use the unaligned load, the algorithm
++	   reads and compares 8 bytes to keep source1 doubleword aligned.  */
++L(check_source2_byte):
++	li	r9,8
++	mtctr	r9
++
++	.align	4
++L(check_source2_byte_loop):
++	lbz	r9,0(r7)
++	lbz	r10,0(r4)
++	addi	r7,r7,1
++	addi	r4,r4,1
++	cmplw	cr7,r9,10
++	cmpdi	r5,r9,0
++	bne	cr7,L(pagecross_ne)
++	beq	cr5,L(pagecross_nullfound)
++	bdnz	L(check_source2_byte_loop)
++
++	/* If source2 is unaligned to doubleword, the code needs to check
++	   on each interation if the unaligned doubleword access will cross
++	   a 4k page boundary.  */
++	.align	5
++L(loop_unaligned):
++	ld	r8,0(r7)
++	ld	r10,0(r4)
++	cmpb	r12,r8,r0
++	cmpb	r11,r8,r10
++	orc.	r9,r12,r11
++	bne	cr0,L(different_nocmpb)
++	addi	r7,r7,8
++	addi	r4,r4,8
++
++L(loop_diff_align):
++	/* Check if [src2]+8 cross a 4k page boundary:
++
++	     srcin2 % PAGE_SIZE > (PAGE_SIZE - 8)
++
++	     with PAGE_SIZE being 4096.  */
++	rldicl	r9,r4,0,52
++	cmpldi	cr7,r9,4088
++	ble	cr7,L(loop_unaligned)
++	b	L(check_source2_byte)
++
++	.align	4
++L(pagecross_ne):
++	extsw	r3,r9
++	mr	r9,r10
++L(pagecross_retdiff):
++	subf	r9,r9,r3
++	extsw	r3,r9
++	blr
++
++	.align	4
++L(pagecross_nullfound):
++	li	r3,0
++	b	L(pagecross_retdiff)
++END (strcmp)
++libc_hidden_builtin_def (strcmp)
diff --git a/SOURCES/glibc-rh1249114.patch b/SOURCES/glibc-rh1249114.patch
new file mode 100644
index 0000000..e489a37
--- /dev/null
+++ b/SOURCES/glibc-rh1249114.patch
@@ -0,0 +1,390 @@
+commit c283946eb7d25a856563cc5cd7d09a151b6801d0
+Author: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date:   Fri Jul 31 13:23:12 2015 +0200
+
+    S/390: Fix setcontext/swapcontext which are not restoring sigmask.
+    
+         2015-03-12  Stefan Liebler  <stli@linux.vnet.ibm.com>
+    
+        	[BZ #18080]
+        	* sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
+        	(__setcontext): Use SIG_SETMASK instead of SIG_BLOCK.
+        	* sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S
+        	(__setcontext): Likewise.
+        	* sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
+        	(__swapcontext): Use SIG_SETMASK instead of SIG_BLOCK.
+        	Call rt_sigprocmask syscall one time to set new signal mask
+        	and retrieve the current signal mask instead of two calls.
+        	* sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
+        	(__swapcontext): Likewise.
+        	* stdlib/Makefile (tests): Add new testcase tst-setcontext2.
+        	* stdlib/tst-setcontext2.c: New file.
+
+diff --git a/stdlib/Makefile b/stdlib/Makefile
+index 5e99d7f..8f22c8d 100644
+--- a/stdlib/Makefile
++++ b/stdlib/Makefile
+@@ -64,10 +64,10 @@ tests		:= tst-strtol tst-strtod testmb testrand testsort testdiv   \
+ 		   test-canon test-canon2 tst-strtoll tst-environ	    \
+ 		   tst-xpg-basename tst-random tst-random2 tst-bsearch	    \
+ 		   tst-limits tst-rand48 bug-strtod tst-setcontext	    \
+-		   test-a64l tst-qsort tst-system testmb2 bug-strtod2	    \
+-		   tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \
+-		   tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2	    \
+-		   tst-makecontext2 tst-strtod6 tst-unsetenv1		    \
++		   tst-setcontext2 test-a64l tst-qsort tst-system testmb2   \
++		   bug-strtod2 tst-atof1 tst-atof2 tst-strtod2 tst-strtod3  \
++		   tst-rand48-2 tst-makecontext tst-strtod4 tst-strtod5     \
++		   tst-qsort2 tst-makecontext2 tst-strtod6 tst-unsetenv1    \
+ 		   tst-makecontext3 bug-getcontext bug-fmtmsg1		    \
+ 		   tst-secure-getenv tst-strtod-overflow tst-strtod-round   \
+ 		   tst-tininess tst-strtod-underflow
+diff --git a/stdlib/tst-setcontext2.c b/stdlib/tst-setcontext2.c
+new file mode 100644
+index 0000000..8582cc0
+--- /dev/null
++++ b/stdlib/tst-setcontext2.c
+@@ -0,0 +1,230 @@
++/* Testcase checks, if setcontext(), swapcontext() restores signal-mask
++   and if pending signals are delivered after those calls.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <sys/types.h>
++#include <signal.h>
++#include <ucontext.h>
++#include <unistd.h>
++
++volatile int global;
++volatile sig_atomic_t handlerCalled;
++
++static void
++check (const char *funcName)
++{
++  sigset_t set;
++
++  /* check if SIGUSR2 is unblocked after setcontext-call.  */
++  sigprocmask (SIG_BLOCK, NULL, &set);
++
++  if (sigismember (&set, SIGUSR2) != 0)
++    {
++      printf ("FAIL: SIGUSR2 is blocked after %s.\n", funcName);
++      exit (1);
++    }
++
++  if (sigismember (&set, SIGUSR1) != 1)
++    {
++      printf ("FAIL: SIGUSR1 is not blocked after %s.\n", funcName);
++      exit (1);
++    }
++}
++
++static void
++signalmask (int how, int signum)
++{
++  sigset_t set;
++  sigemptyset (&set);
++  sigaddset (&set, signum);
++  if (sigprocmask (how, &set, NULL) != 0)
++    {
++      printf ("FAIL: sigprocmaks (%d, %d, NULL): %m\n", how, signum);
++      exit (1);
++    }
++}
++
++static void
++signalpending (int signum, const char *msg)
++{
++  sigset_t set;
++  sigemptyset (&set);
++  if (sigpending (&set) != 0)
++    {
++      printf ("FAIL: sigpending: %m\n");
++      exit (1);
++    }
++  if (sigismember (&set, SIGUSR2) != 1)
++    {
++      printf ("FAIL: Signal %d is not pending %s\n", signum, msg);
++      exit (1);
++    }
++}
++
++static void
++handler (int __attribute__ ((unused)) signum)
++{
++  handlerCalled ++;
++}
++
++static int
++do_test (void)
++{
++  ucontext_t ctx, oldctx;
++  struct sigaction action;
++  pid_t pid;
++
++  pid = getpid ();
++
++  /* unblock SIGUSR2 */
++  signalmask (SIG_UNBLOCK, SIGUSR2);
++
++  /* block SIGUSR1 */
++  signalmask (SIG_BLOCK, SIGUSR1);
++
++  /* register handler for SIGUSR2  */
++  action.sa_flags = 0;
++  action.sa_handler = handler;
++  sigemptyset (&action.sa_mask);
++  sigaction (SIGUSR2, &action, NULL);
++
++  if (getcontext (&ctx) != 0)
++    {
++      printf ("FAIL: getcontext: %m\n");
++      exit (1);
++    }
++
++  global++;
++
++  if (global == 1)
++    {
++      puts ("after getcontext");
++
++      /* block SIGUSR2  */
++      signalmask (SIG_BLOCK, SIGUSR2);
++
++      /* send SIGUSR2 to me  */
++      handlerCalled = 0;
++      kill (pid, SIGUSR2);
++
++      /* was SIGUSR2 handler called?  */
++      if (handlerCalled != 0)
++	{
++	  puts ("FAIL: signal handler was called, but signal was blocked.");
++	  exit (1);
++	}
++
++      /* is SIGUSR2 pending?  */
++      signalpending (SIGUSR2, "before setcontext");
++
++      /* SIGUSR2 will be unblocked by setcontext-call.  */
++      if (setcontext (&ctx) != 0)
++	{
++	  printf ("FAIL: setcontext: %m\n");
++	  exit (1);
++	}
++    }
++  else if (global == 2)
++    {
++      puts ("after setcontext");
++
++      /* check SIGUSR1/2  */
++      check ("setcontext");
++
++      /* was SIGUSR2 handler called? */
++      if (handlerCalled != 1)
++	{
++	  puts ("FAIL: signal handler was not called after setcontext.");
++	  exit (1);
++	}
++
++      /* block SIGUSR2 */
++      signalmask (SIG_BLOCK, SIGUSR2);
++
++      /* send SIGUSR2 to me  */
++      handlerCalled = 0;
++      kill (pid, SIGUSR2);
++
++      /* was SIGUSR2 handler called?  */
++      if (handlerCalled != 0)
++	{
++	  puts ("FAIL: signal handler was called, but signal was blocked.");
++	  exit (1);
++	}
++
++      /* is SIGUSR2 pending?  */
++      signalpending (SIGUSR2, "before swapcontext");
++
++      if (swapcontext (&oldctx, &ctx) != 0)
++	{
++	  printf ("FAIL: swapcontext: %m\n");
++	  exit (1);
++	}
++
++      puts ("after returned from swapcontext");
++
++      if (global != 3)
++	{
++	  puts ("FAIL: returned from swapcontext without ctx-context called.");
++	  exit (1);
++	}
++
++      puts ("test succeeded");
++      return 0;
++    }
++  else if ( global != 3 )
++    {
++      puts ("FAIL: 'global' not incremented three times");
++      exit (1);
++    }
++
++  puts ("after swapcontext");
++  /* check SIGUSR1/2  */
++  check ("swapcontext");
++
++  /* was SIGUSR2 handler called? */
++  if (handlerCalled != 1)
++    {
++      puts ("FAIL: signal handler was not called after swapcontext.");
++      exit (1);
++    }
++
++  /* check sigmask in old context of swapcontext-call  */
++  if (sigismember (&oldctx.uc_sigmask, SIGUSR2) != 1)
++    {
++      puts ("FAIL: SIGUSR2 is not blocked in oldctx.uc_sigmask.");
++      exit (1);
++    }
++
++  if (sigismember (&oldctx.uc_sigmask, SIGUSR1) != 1)
++    {
++      puts ("FAIL: SIGUSR1 is not blocked in oldctx.uc_sigmaks.");
++      exit (1);
++    }
++
++  /* change to old context, which was gathered by swapcontext() call.  */
++  setcontext (&oldctx);
++
++  puts ("FAIL: returned from setcontext (&oldctx)");
++  exit (1);
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
+index b19fd8d..5f60f49 100644
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
+@@ -34,7 +34,7 @@ ENTRY(__setcontext)
+ 	lr	%r1,%r2
+ 
+ 	/* sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL).  */
+-	la      %r2,SIG_BLOCK
++	la      %r2,SIG_SETMASK
+ 	la	%r3,SC_MASK(%r1)
+ 	slr	%r4,%r4
+ 	lhi	%r5,_NSIG8
+diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
+index 092f2bc..dc21b44 100644
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
+@@ -24,7 +24,7 @@
+ /*  __swapcontext (ucontext_t *oucp, const ucontext_t *ucp)
+ 
+   Saves the machine context in oucp such that when it is activated,
+-  it appears as if __swapcontextt() returned again, restores the
++  it appears as if __swapcontext() returned again, restores the
+   machine context in ucp and thereby resumes execution in that
+   context.
+ 
+@@ -36,13 +36,6 @@ ENTRY(__swapcontext)
+ 	lr	%r1,%r2
+ 	lr      %r0,%r3
+ 
+-	/* sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask).  */
+-	la      %r2,SIG_BLOCK
+-	slr	%r3,%r3
+-	la	%r4,SC_MASK(%r1)
+-	lhi	%r5,_NSIG8
+-	svc	SYS_ify(rt_sigprocmask)
+-
+ 	/* Store fpu context.  */
+ 	stfpc   SC_FPC(%r1)
+ 	std     %f0,SC_FPRS(%r1)
+@@ -71,11 +64,12 @@ ENTRY(__swapcontext)
+ 	/* Store general purpose registers.  */
+ 	stm     %r0,%r15,SC_GPRS(%r1)
+ 	
+-	/* sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL).  */
+-	la      %r2,SIG_BLOCK
++	/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask,
++	   sigsetsize).  */
++	la      %r2,SIG_SETMASK
+ 	lr	%r5,%r0
+ 	la	%r3,SC_MASK(%r5)
+-	slr	%r4,%r4
++	la	%r4,SC_MASK(%r1)
+ 	lhi	%r5,_NSIG8
+ 	svc	SYS_ify(rt_sigprocmask)
+ 
+diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S b/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S
+index b9a55ed..004eafc 100644
+--- a/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S
+@@ -34,7 +34,7 @@ ENTRY(__setcontext)
+ 	lgr	%r1,%r2
+ 
+ 	/* sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL).  */
+-	la      %r2,SIG_BLOCK
++	la      %r2,SIG_SETMASK
+ 	la	%r3,SC_MASK(%r1)
+ 	slgr	%r4,%r4
+ 	lghi	%r5,_NSIG8
+diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S b/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
+index 6e2630c..2688762 100644
+--- a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
+@@ -24,7 +24,7 @@
+ /*  __swapcontext (ucontext_t *oucp, const ucontext_t *ucp)
+ 
+   Saves the machine context in oucp such that when it is activated,
+-  it appears as if __swapcontextt() returned again, restores the
++  it appears as if __swapcontext() returned again, restores the
+   machine context in ucp and thereby resumes execution in that
+   context.
+ 
+@@ -36,13 +36,6 @@ ENTRY(__swapcontext)
+ 	lgr	%r1,%r2
+ 	lgr     %r0,%r3
+ 
+-	/* sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask).  */
+-	la      %r2,SIG_BLOCK
+-	slgr	%r3,%r3
+-	la	%r4,SC_MASK(%r1)
+-	lghi	%r5,_NSIG8
+-	svc	SYS_ify(rt_sigprocmask)
+-
+ 	/* Store fpu context.  */
+ 	stfpc   SC_FPC(%r1)
+ 	std     %f0,SC_FPRS(%r1)
+@@ -71,12 +64,13 @@ ENTRY(__swapcontext)
+ 	/* Store general purpose registers.  */
+ 	stmg    %r0,%r15,SC_GPRS(%r1)
+ 
+-	/* sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL).  */
+-	la      %r2,SIG_BLOCK
++	/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask,
++	   sigsetsize).  */
++	la      %r2,SIG_SETMASK
+ 	lgr	%r5,%r0
+ 	la	%r3,SC_MASK(%r5)
++	la	%r4,SC_MASK(%r1)
+ 	lghi	%r5,_NSIG8
+-	slgr	%r4,%r4
+ 	svc	SYS_ify(rt_sigprocmask)
+ 
+ 	/* Load fpu context.  */
diff --git a/SOURCES/glibc-rh1249115.patch b/SOURCES/glibc-rh1249115.patch
new file mode 100644
index 0000000..166b038
--- /dev/null
+++ b/SOURCES/glibc-rh1249115.patch
@@ -0,0 +1,151 @@
+commit 7cdd140cbccc8eb62a20d12a03bed83765cbc066
+Author: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date:   Fri Jul 31 13:42:52 2015 +0200
+
+    S390: Fix "backtrace() returns infinitely deep stack frames with makecontext()" [BZ #18508].
+    
+        On s390/s390x backtrace(buffer, size) returns the series of called functions until
+        "makecontext_ret" and additional entries (up to "size") with "makecontext_ret".
+        GDB-backtrace is also warning:
+        "Backtrace stopped: previous frame identical to this frame (corrupt stack?)"
+    
+        To reproduce this scenario you have to setup a new context with makecontext()
+        and activate it with setcontext(). See e.g. cf() function in testcase stdlib/tst-makecontext.c.
+        Or see bug in libgo "Bug 66303 - runtime.Caller() returns infinitely deep stack frames
+        on s390x " (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66303).
+    
+        This patch omits the cfi_startproc/cfi_endproc directives in ENTRY/END macro of
+        __makecontext_ret. Thus no frame information is generated in .eh_frame and backtrace
+        stops after __makecontext_ret. There is also no .eh_frame info for _start or
+        thread_start functions.
+    
+        ChangeLog:
+    
+        	[BZ #18508]
+        	* stdlib/Makefile ($(objpfx)tst-makecontext3):
+        	Depend on $(libdl).
+        	* stdlib/tst-makecontext.c (cf): Test if _Unwind_Backtrace
+        	is not called infinitely times.
+        	(backtrace_helper): New function.
+        	(trace_arg): New struct.
+        	(st1): Enlarge stack size.
+        	* sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S:
+        	(__makecontext_ret): Omit cfi_startproc and cfi_endproc.
+        	* sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S:
+        	Likewise.
+
+diff --git a/stdlib/Makefile b/stdlib/Makefile
+index 8f22c8d..c1e80d7 100644
+--- a/stdlib/Makefile
++++ b/stdlib/Makefile
+@@ -154,3 +154,4 @@ $(objpfx)bug-getcontext: $(link-libm)
+ $(objpfx)tst-strtod-round: $(link-libm)
+ $(objpfx)tst-tininess: $(link-libm)
+ $(objpfx)tst-strtod-underflow: $(link-libm)
++$(objpfx)tst-makecontext: $(libdl)
+diff --git a/stdlib/tst-makecontext.c b/stdlib/tst-makecontext.c
+index eb6e89b..1420857 100644
+--- a/stdlib/tst-makecontext.c
++++ b/stdlib/tst-makecontext.c
+@@ -19,23 +19,62 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <ucontext.h>
++#include <assert.h>
++#include <unwind.h>
++#include <dlfcn.h>
++#include <gnu/lib-names.h>
+ 
+ ucontext_t ucp;
+-char st1[8192];
++char st1[16384];
+ __thread int thr;
+ 
+ int somevar = -76;
+ long othervar = -78L;
+ 
++struct trace_arg
++{
++  int cnt, size;
++};
++
++static _Unwind_Reason_Code
++backtrace_helper (struct _Unwind_Context *ctx, void *a)
++{
++  struct trace_arg *arg = a;
++  if (++arg->cnt == arg->size)
++    return _URC_END_OF_STACK;
++  return _URC_NO_REASON;
++}
++
+ void
+ cf (int i)
+ {
++  struct trace_arg arg = { .size = 100, .cnt = -1 };
++  void *handle;
++  _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *);
++
+   if (i != othervar || thr != 94)
+     {
+       printf ("i %d thr %d\n", i, thr);
+       exit (1);
+     }
+ 
++  /* Test if callback function of _Unwind_Backtrace is not called infinitely
++     times. See Bug 18508 or gcc bug "Bug 66303 - runtime.Caller() returns
++     infinitely deep stack frames on s390x.".
++     The go runtime calls backtrace_full() in
++     <gcc-src>/libbacktrace/backtrace.c, which uses _Unwind_Backtrace().  */
++  handle = dlopen (LIBGCC_S_SO, RTLD_LAZY);
++  if (handle != NULL)
++    {
++      unwind_backtrace = dlsym (handle, "_Unwind_Backtrace");
++      if (unwind_backtrace != NULL)
++	{
++	  unwind_backtrace (backtrace_helper, &arg);
++	  assert (arg.cnt != -1 && arg.cnt < 100);
++	}
++      dlclose (handle);
++    }
++
+   /* Since uc_link below has been set to NULL, setcontext is supposed to
+      terminate the process normally after this function returns.  */
+ }
+diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S b/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S
+index ab172bb..365c2b0 100644
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S
+@@ -17,6 +17,14 @@
+ 
+ #include <sysdep.h>
+ 
++/* We do not want .eh_frame info so that __makecontext_ret stops unwinding
++   if backtrace was called within a context created by makecontext. (There
++   is also no .eh_frame info for _start or thread_start.)  */
++#undef cfi_startproc
++#define cfi_startproc
++#undef cfi_endproc
++#define cfi_endproc
++
+ ENTRY(__makecontext_ret)
+ 	basr  %r14,%r7
+ 	ltr   %r8,%r8			/* Check whether uc_link is 0.  */
+diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S b/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S
+index cbd88e1..c4a43bd 100644
+--- a/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S
+@@ -17,6 +17,14 @@
+ 
+ #include <sysdep.h>
+ 
++/* We do not want .eh_frame info so that __makecontext_ret stops unwinding
++   if backtrace was called within a context created by makecontext. (There
++   is also no .eh_frame info for _start or thread_start.)  */
++#undef cfi_startproc
++#define cfi_startproc
++#undef cfi_endproc
++#define cfi_endproc
++
+ ENTRY(__makecontext_ret)
+ 	basr	%r14,%r7
+ 	ltgr	%r8,%r8			/* Check whether uc_link is 0.  */
diff --git a/SOURCES/glibc-rh1255822.patch b/SOURCES/glibc-rh1255822.patch
new file mode 100644
index 0000000..d14f700
--- /dev/null
+++ b/SOURCES/glibc-rh1255822.patch
@@ -0,0 +1,34 @@
+commit a3b473373ee43a292f5ec68a7fda6b9cfb26a9b0
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Tue Jun 21 21:29:21 2016 +0200
+
+    malloc: Avoid premature fallback to mmap [BZ #20284]
+    
+    Before this change, the while loop in reused_arena which avoids
+    returning a corrupt arena would never execute its body if the selected
+    arena were not corrupt.  As a result, result == begin after the loop,
+    and the function returns NULL, triggering fallback to mmap.
+
+Index: glibc-2.17-c758a686/malloc/arena.c
+===================================================================
+--- glibc-2.17-c758a686.orig/malloc/arena.c
++++ glibc-2.17-c758a686/malloc/arena.c
+@@ -907,14 +907,12 @@ reused_arena (mstate avoid_arena)
+     {
+       result = result->next;
+       if (result == begin)
+-	break;
++	/* We looped around the arena list.  We could not find any
++	   arena that was either not corrupted or not the one we
++	   wanted to avoid.  */
++	return NULL;
+     }
+ 
+-  /* We could not find any arena that was either not corrupted or not the one
+-     we wanted to avoid.  */
+-  if (result == begin || result == avoid_arena)
+-    return NULL;
+-
+   /* No arena available without contention.  Wait for the next in line.  */
+   LIBC_PROBE (memory_arena_reuse_wait, 3, &result->mutex, result, avoid_arena);
+   (void)mutex_lock(&result->mutex);
diff --git a/SOURCES/glibc-rh1256317-0.patch b/SOURCES/glibc-rh1256317-0.patch
new file mode 100644
index 0000000..232d76b
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-0.patch
@@ -0,0 +1,162 @@
+commit ac63a0783cdee8454c84fc45f37330d98b6039e7
+Author: Dmitry V. Levin <ldv@altlinux.org>
+Date:   Fri Jun 5 22:20:13 2015 +0000
+
+    Prepare for restoration of .interp section in libpthread.so
+    
+    Make runtime-linker.h available outside $(elf-objpfx) by moving
+    the file to $(common-objpfx) and the rules for it to Makerules.
+    
+    Tested for x86_64 and x86 (testsuite, and that no compiled code
+    changed by the patch).
+    
+    * Makeconfig (+interp): Remove unused variable.
+    * elf/Makefile ($(objpfx)interp.os): Define for [$(build-shared) = yes]
+    only.  Depend on $(common-objpfx)runtime-linker.h instead of
+    $(elf-objpfx)runtime-linker.h.
+    ($(elf-objpfx)runtime-linker.h): Rename to
+    $(common-objpfx)runtime-linker.h and move ...
+    * Makerules [$(build-shared) = yes]: ... here.
+    * elf/interp.c: Include <runtime-linker.h> instead of
+    <elf/runtime-linker.h>.
+
+commit 78ad175b3060aae058ed5d05ced2bc58714901cd
+Author: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
+Date:   Tue Jun 2 21:04:06 2015 +0300
+
+    nptl: restore .interp section in libpthread.so
+    
+    In commit 02657da2cf4457804ed938ee08b8316249126444, .interp section
+    was removed from libpthread.so.  This led to an error:
+    
+      $ /lib64/libpthread.so.0
+      Native POSIX Threads Library by Ulrich Drepper et al
+      Copyright (C) 2015 Free Software Foundation, Inc.
+      This is free software; see the source for copying conditions.
+      There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
+      PARTICULAR PURPOSE.
+      Forced unwind support included.
+      Segmentation fault
+    
+      (gdb) bt
+      #0  0x00000000000055a6 in _exit@plt ()
+    
+    Unfortunately, there is no way to add a regression test for the bug
+    because .interp specifies the path to dynamic linker of the target
+    system.
+    
+    [BZ #18479]
+    * nptl/pt-interp.c: New file.
+    * nptl/Makefile (libpthread-routines, libpthread-shared-only-routines):
+    Add pt-interp.
+    [$(build-shared) = yes] ($(objpfx)pt-interp.os): Depend on
+    $(common-objpfx)runtime-linker.h.
+
+Index: glibc-2.17-c758a686/nptl/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/Makefile
++++ glibc-2.17-c758a686/nptl/Makefile
+@@ -30,7 +30,7 @@ routines = alloca_cutoff forward libc-lo
+ 	   libc-cleanup
+ shared-only-routines = forward
+ 
+-libpthread-routines = nptl-init vars events version \
++libpthread-routines = nptl-init vars events version pt-interp \
+ 		      pthread_create pthread_exit pthread_detach \
+ 		      pthread_join pthread_tryjoin pthread_timedjoin \
+ 		      pthread_self pthread_equal pthread_yield \
+@@ -131,7 +131,8 @@ libpthread-routines = nptl-init vars eve
+ #		      pthread_setgid pthread_setegid pthread_setregid \
+ #		      pthread_setresgid
+ 
+-libpthread-shared-only-routines = version pt-allocrtsig unwind-forcedunwind
++libpthread-shared-only-routines = version pt-interp pt-allocrtsig \
++				  unwind-forcedunwind
+ libpthread-static-only-routines = pthread_atfork
+ 
+ # Since cancellation handling is in large parts handled using exceptions
+@@ -591,6 +592,8 @@ $(objpfx)banner.h: Banner
+ generated += banner.h
+ # Give libpthread.so an entry point and make it directly runnable itself.
+ LDFLAGS-pthread.so += -e __nptl_main
++# pt-interp.c exists just to get the runtime linker path into libpthread.so.
++$(objpfx)pt-interp.os: $(common-objpfx)runtime-linker.h
+ endif
+ 
+ ifeq ($(run-built-tests),yes)
+Index: glibc-2.17-c758a686/nptl/pt-interp.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/nptl/pt-interp.c
+@@ -0,0 +1 @@
++#include <elf/interp.c>
+Index: glibc-2.17-c758a686/Makeconfig
+===================================================================
+--- glibc-2.17-c758a686.orig/Makeconfig
++++ glibc-2.17-c758a686/Makeconfig
+@@ -566,7 +566,6 @@ endif
+ # Variants of the two previous definitions for statically linking programs.
+ +prectorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o`
+ +postctorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
+-+interp = $(addprefix $(elf-objpfx),interp.os)
+ csu-objpfx = $(common-objpfx)csu/
+ elf-objpfx = $(common-objpfx)elf/
+ 
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -344,16 +344,10 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
+ 	$(READELF) -s $@ \
+ 	  | $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
+ 
++ifeq (yes,$(build-shared))
+ # interp.c exists just to get the runtime linker path into libc.so.
+-$(objpfx)interp.os: $(elf-objpfx)runtime-linker.h
+-
+-$(elf-objpfx)runtime-linker.h: $(elf-objpfx)runtime-linker.st; @:
+-$(elf-objpfx)runtime-linker.st: $(common-objpfx)config.make
+-	$(name-target-directory)
+-	echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
+-		> ${@:st=T}
+-	$(move-if-change) ${@:st=T} ${@:st=h}
+-	touch $@
++$(objpfx)interp.os: $(common-objpfx)runtime-linker.h
++endif
+ 
+ ifneq (ld.so,$(rtld-installed-name))
+ # Make sure ld.so.1 exists in the build directory so we can link
+Index: glibc-2.17-c758a686/elf/interp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/interp.c
++++ glibc-2.17-c758a686/elf/interp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#include <elf/runtime-linker.h>
++#include <runtime-linker.h>
+ 
+ const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
+   = RUNTIME_LINKER;
+Index: glibc-2.17-c758a686/Makerules
+===================================================================
+--- glibc-2.17-c758a686.orig/Makerules
++++ glibc-2.17-c758a686/Makerules
+@@ -123,6 +123,16 @@ $(common-objpfx)libc-abis.stamp: $(..)sc
+ common-generated += $(common-objpfx)libc-abis.h
+ endif # avoid-generated
+ 
++ifeq (yes,$(build-shared))
++$(common-objpfx)runtime-linker.h: $(common-objpfx)runtime-linker.stamp; @:
++$(common-objpfx)runtime-linker.stamp: $(common-objpfx)config.make
++	$(make-target-directory)
++	echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
++		> ${@:stamp=T}
++	$(move-if-change) ${@:stamp=T} ${@:stamp=h}
++	touch $@
++endif
++
+ # Make sure the subdirectory for object files gets created.
+ ifdef objpfx
+ ifeq (,$(wildcard $(objpfx).))
diff --git a/SOURCES/glibc-rh1256317-1.patch b/SOURCES/glibc-rh1256317-1.patch
new file mode 100644
index 0000000..a12d571
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-1.patch
@@ -0,0 +1,46 @@
+commit 7a9ebfa159f392fcf1c3aa172fc5bd6bd1eeea63
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Mon Nov 24 15:24:34 2014 +0530
+
+    Use IS_IN internally only
+    
+    This change is only useful for the conformance tests since the headers
+    changed are not installed.  The conformance tests fail due to IS_IN
+    not being defined, so wrap it with a check to make sure that _ISOMAC
+    is defined.
+    
+    	* include/bits/stdlib-float.h: Use IS_IN only if _ISOMAC is
+    	defined.
+    	* include/mqueue.h: Likewise.
+    	* include/stdlib.h: Likewise.
+
+Index: glibc-2.17-c758a686/include/bits/stdlib-float.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/bits/stdlib-float.h
++++ glibc-2.17-c758a686/include/bits/stdlib-float.h
+@@ -1,4 +1,8 @@
+-/* No floating-point inline functions in rtld.  */
+-#if !IS_IN (rtld)
++/* No floating-point inline functions in rtld and for the conform tests.  */
++#ifdef _ISOMAC
+ # include <stdlib/bits/stdlib-float.h>
++#else
++# if !IS_IN (rtld)
++#  include <stdlib/bits/stdlib-float.h>
++# endif
+ #endif
+Index: glibc-2.17-c758a686/include/mqueue.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/mqueue.h
++++ glibc-2.17-c758a686/include/mqueue.h
+@@ -1,7 +1,9 @@
+ #include <rt/mqueue.h>
+ 
+-#if IS_IN (librt)
++#ifndef _ISOMAC
++# if IS_IN (librt)
+ hidden_proto (mq_timedsend)
+ hidden_proto (mq_timedreceive)
+ hidden_proto (mq_setattr)
++# endif
+ #endif
diff --git a/SOURCES/glibc-rh1256317-10.patch b/SOURCES/glibc-rh1256317-10.patch
new file mode 100644
index 0000000..44f609d
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-10.patch
@@ -0,0 +1,46 @@
+commit fb6784e3068a747ead34e6dee6a9a1978668a955
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 12:33:44 2014 +0530
+
+    Remove IS_IN_ldconfig
+    
+    Replace with IS_IN (ldconfig).  No change in generated code.
+    
+    	* elf/Makefile (CFLAGS-ldconfig.c): Remove definition of
+    	IS_IN_ldconfig.
+    	* sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Use IS_IN.
+    	* sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h: Likewise.
+
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -437,7 +437,7 @@ $(objpfx)pldd: $(pldd-modules:%=$(objpfx
+ 
+ SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
+ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
+-		    -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1 -DNOT_IN_libc=1
++		    -D'SLIBDIR="$(slibdir)"' -DNOT_IN_libc
+ libof-ldconfig = ldconfig
+ CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
+ CFLAGS-cache.c = $(SYSCONF-FLAGS)
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c
+@@ -1,4 +1,4 @@
+-#ifdef IS_IN_ldconfig
++#if IS_IN (ldconfig)
+ # include <sysdeps/i386/dl-procinfo.c>
+ #else
+ # include <sysdeps/generic/dl-procinfo.c>
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h
+@@ -1,4 +1,4 @@
+-#ifdef IS_IN_ldconfig
++#if IS_IN (ldconfig)
+ # include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
+ #else
+ # include <sysdeps/generic/dl-procinfo.h>
diff --git a/SOURCES/glibc-rh1256317-11.patch b/SOURCES/glibc-rh1256317-11.patch
new file mode 100644
index 0000000..26430d8
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-11.patch
@@ -0,0 +1,41 @@
+commit 2886d2d14dd7de6339b04505c5d2f9fc5c844751
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 12:21:01 2014 +0530
+
+    Remove IS_IN_libc
+    
+    Replace it with IS_IN (libc) and remove the one place that it
+    is defined in.  The generated code remains unchanged on x86_64.
+    
+    	* include/shlib-compat.h [!NOT_IN_libc]: Remove.
+    	* nss/nss_files/files-parse.c (IS_IN_libc): Replace with
+    	IS_IN (libc).
+
+Index: glibc-2.17-c758a686/include/shlib-compat.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/shlib-compat.h
++++ glibc-2.17-c758a686/include/shlib-compat.h
+@@ -49,10 +49,6 @@
+    && (!(ABI_##lib##_##obsoleted - 0)					      \
+        || ((ABI_##lib##_##introduced - 0) < (ABI_##lib##_##obsoleted - 0))))
+ 
+-# ifndef NOT_IN_libc
+-#  define IS_IN_libc 1
+-# endif
+-
+ /* That header also defines symbols like `VERSION_libm_GLIBC_2_1' to
+    the version set name to use for e.g. symbols first introduced into
+    libm in the GLIBC_2.1 version.  Definitions of symbols with explicit
+Index: glibc-2.17-c758a686/nss/nss_files/files-parse.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nss/nss_files/files-parse.c
++++ glibc-2.17-c758a686/nss/nss_files/files-parse.c
+@@ -72,7 +72,7 @@ struct parser_data
+ /* Export the line parser function so it can be used in nss_db.  */
+ # define parser_stclass /* Global */
+ # define parse_line CONCAT(_nss_files_parse_,ENTNAME)
+-# ifdef IS_IN_libc
++# if IS_IN (libc)
+ /* We are defining one of the functions that actually lives in libc
+    because it is used to implement fget*ent and suchlike.  */
+ #  define nss_files_parse_hidden_def(name) libc_hidden_def (name)
diff --git a/SOURCES/glibc-rh1256317-12.patch b/SOURCES/glibc-rh1256317-12.patch
new file mode 100644
index 0000000..c16d689
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-12.patch
@@ -0,0 +1,25 @@
+commit 9a4848572bec992781311995e9e5e46eb226ce97
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 12:04:26 2014 +0530
+
+    Define IN_MODULE for translation units that define NOT_IN_libc
+    
+    Make sure that all instances where NOT_IN_libc is defined also defines
+    IN_MODULE to facilitate removal NOT_IN_libc in future passes.
+    
+    Verified that the generated code is unchanged on x86_64.
+    
+    	* elf/Makefile (libof-sotruss-lib): Set as extramodules.
+
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -98,6 +98,7 @@ extra-objs += sotruss-lib.os sotruss-lib
+ install-others += $(inst_auditdir)/sotruss-lib.so
+ install-bin-script += sotruss
+ generated += sotruss
++libof-sotruss-lib = extramodules
+ CPPFLAGS-sotruss-lib = -DNOT_IN_libc
+ $(objpfx)sotruss-lib.so: $(objpfx)sotruss-lib.os
+ 	$(build-module-asneeded)
diff --git a/SOURCES/glibc-rh1256317-13.patch b/SOURCES/glibc-rh1256317-13.patch
new file mode 100644
index 0000000..427e8a3
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-13.patch
@@ -0,0 +1,154 @@
+commit a10178bda190a62e7e3f56773f55f23cf06848a7
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 12:03:11 2014 +0530
+
+    Remove IN_LIB
+    
+    Replace with IS_IN and IS_IN_LIB macros instead.  This change results
+    in a change in generated code, because it fixes a subtle bug.  The bug
+    was introduced when systemtap probes were added to lowlevellock.h,
+    which resulted in stap-probe.h being included in a number of places.
+    stap-probe.h always defines IN_LIB, which breaks a check in errno.h
+    and netdb.h since they rely on that macro to decide whether to
+    implement an internal version of a declaration or an external one.
+    
+    The components that see a code change due to this are:
+    
+    iconv_prog
+    libmemusage.so
+    libpcprofile.so
+    libSegFault.so
+    libutil.so.1
+    locale
+    localedef
+    nscd
+    
+    All other built components (i.e. libc, libpthread, etc.) remain
+    unchanged by this on x86_64.
+    
+    	* elf/Makefile (CPPFLAGS-.os): Remove IN_LIB.
+    	* elf/rtld-Rules (rtld-CPPFLAGS): Likewise.
+    	* extra-lib.mk (CPPFLAGS-$(lib)): Likewise.
+    	* include/libc-symbols.h (IS_IN_LIB): New macro.
+    	* include/errno.h: Use IS_IN_LIB instead of IN_LIB.
+    	* include/netdb.h: Likewise.
+    	* include/stap-probe.h: Remove all uses of IN_LIB.
+
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -443,7 +443,7 @@ CFLAGS-cache.c = $(SYSCONF-FLAGS)
+ CFLAGS-rtld.c = $(SYSCONF-FLAGS)
+ 
+ CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
+-		     -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld)
++		     -DNOT_IN_libc=1 -DIS_IN_rtld=1)
+ 
+ # Disable any optimization which might result in function calls during early
+ # dynamic loader startup. We disable -ftree-loop-distribute-patterns which
+Index: glibc-2.17-c758a686/elf/rtld-Rules
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/rtld-Rules
++++ glibc-2.17-c758a686/elf/rtld-Rules
+@@ -134,6 +134,6 @@ lib := rtld
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ 
+ # This here is the whole point of all the shenanigans.
+-rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld
++rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1
+ 
+ endif
+Index: glibc-2.17-c758a686/extra-lib.mk
+===================================================================
+--- glibc-2.17-c758a686.orig/extra-lib.mk
++++ glibc-2.17-c758a686/extra-lib.mk
+@@ -101,4 +101,4 @@ ifneq (,$(cpp-srcs-left))
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ endif
+ 
+-CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -DIN_LIB=$(lib)
++CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1
+Index: glibc-2.17-c758a686/include/errno.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/errno.h
++++ glibc-2.17-c758a686/include/errno.h
+@@ -17,7 +17,7 @@
+ #  define errno rtld_errno
+ extern int rtld_errno attribute_hidden;
+ 
+-# elif !defined NOT_IN_libc || defined IN_LIB
++# elif !defined NOT_IN_libc || IS_IN_LIB
+ 
+ #  include <tls.h>
+ 
+@@ -29,7 +29,7 @@ extern int rtld_errno attribute_hidden;
+ #  endif
+ extern __thread int errno attribute_tls_model_ie;
+ 
+-# endif	/* !NOT_IN_libc || IN_LIB */
++# endif	/* !NOT_IN_libc || IS_IN_LIB */
+ 
+ # define __set_errno(val) (errno = (val))
+ 
+Index: glibc-2.17-c758a686/include/libc-symbols.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/libc-symbols.h
++++ glibc-2.17-c758a686/include/libc-symbols.h
+@@ -23,6 +23,11 @@
+ #define IN_MODULE PASTE_NAME (MODULE_, MODULE_NAME)
+ #define IS_IN(lib) (IN_MODULE == MODULE_##lib)
+ 
++/* Returns true if the current module is a versioned library.  Versioned
++   library names culled from shlib-versions files are assigned a MODULE_*
++   value lower than MODULE_LIBS_BEGIN.  */
++#define IS_IN_LIB (IN_MODULE > MODULE_LIBS_BEGIN)
++
+ #define PASTE_NAME(a,b)      PASTE_NAME1 (a,b)
+ #define PASTE_NAME1(a,b)     a##b
+ 
+Index: glibc-2.17-c758a686/include/netdb.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/netdb.h
++++ glibc-2.17-c758a686/include/netdb.h
+@@ -3,7 +3,7 @@
+ 
+ #ifndef _ISOMAC
+ /* Macros for accessing h_errno from inside libc.  */
+-# if !defined NOT_IN_libc || defined IN_LIB
++# if !defined NOT_IN_libc || IS_IN_LIB
+ #  undef  h_errno
+ #  ifdef _LIBC_REENTRANT
+ #   include <tls.h>
+@@ -16,7 +16,7 @@ extern __thread int h_errno attribute_tl
+ #  else
+ extern int h_errno;
+ #  endif	/* _LIBC_REENTRANT */
+-# endif /* !NOT_IN_libc || IN_LIB */
++# endif /* !NOT_IN_libc || IS_IN_LIB */
+ # define __set_h_errno(x) (h_errno = (x))
+ 
+ libc_hidden_proto (hstrerror)
+Index: glibc-2.17-c758a686/include/stap-probe.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/stap-probe.h
++++ glibc-2.17-c758a686/include/stap-probe.h
+@@ -32,18 +32,6 @@
+    STAP_PROBEn (provider, name, arg1, ..., argn).  For "provider" we paste
+    in MODULE_NAME (libc, libpthread, etc.) automagically.  */
+ 
+-# ifndef NOT_IN_libc
+-#  define IN_LIB	libc
+-# elif !defined IN_LIB
+-/* This is intentionally defined with extra unquoted commas in it so
+-   that macro substitution will bomb out when it is used.  We don't
+-   just use #error here, so that this header can be included by
+-   other headers that use LIBC_PROBE inside their own macros.  We
+-   only want such headers to fail to compile if those macros are
+-   actually used in a context where IN_LIB has not been defined.  */
+-#  define IN_LIB	,,,missing -DIN_LIB=... -- not extra-lib.mk?,,,
+-# endif
+-
+ # define LIBC_PROBE(name, n, ...)	\
+   LIBC_PROBE_1 (MODULE_NAME, name, n, ## __VA_ARGS__)
+ 
diff --git a/SOURCES/glibc-rh1256317-14.patch b/SOURCES/glibc-rh1256317-14.patch
new file mode 100644
index 0000000..8baf8fb
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-14.patch
@@ -0,0 +1,106 @@
+Again we have to fix librtkaio to use MODULE_NAME definitions to
+work around the changes we are making and preserve ABI/API.
+
+commit 279bc5b3c384c09746fbadb2b68c6db9e833c064
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 11:42:00 2014 +0530
+
+    Use MODULE_NAME in stap-probe instead of IN_LIB
+    
+    Define MODULE_NAME in the build command and define IN_MODULE using
+    MODULE_NAME.  Verified that the generated code is unchanged on x86_64.
+    
+    	* Makeconfig (module-cppflags-real): Define MODULE_NAME
+    	instead of IN_MODULE.
+    	* include/libc-symbols.h (IN_MODULE): Define using
+    	MODULE_NAME.
+    	(PASTE_NAME, PASTE_NAME1): New macros.
+    	* include/stap-probe.h (LIBC_PROBE_1): Use MODULE_NAME instead
+    	of IN_LIB.
+    	(STAP_PROBE_ASM): Likewise.
+
+Index: glibc-2.17-c758a686/Makeconfig
+===================================================================
+--- glibc-2.17-c758a686.orig/Makeconfig
++++ glibc-2.17-c758a686/Makeconfig
+@@ -741,7 +741,7 @@ in-module = $(subst -,_,$(firstword $(li
+ 				    libc))
+ 
+ module-cppflags-real = -include $(common-objpfx)libc-modules.h \
+-		       -DIN_MODULE=MODULE_$(in-module)
++		       -DMODULE_NAME=$(in-module)
+ 
+ # We don't need libc-modules.h and the MODULE_NAME definition for .v.i
+ # files.  These targets don't (and will likely never need to) use the IS_IN
+@@ -940,7 +940,7 @@ postclean-generated += soversions.mk sov
+ before-compile += $(common-objpfx)libc-modules.h
+ ifeq ($(soversions.mk-done),t)
+ # Generate a header with macro definitions for use with the IS_IN macro.
+-# These are the possible values for the IN_MODULE macro defined when building
++# These are the possible values for the MODULE_NAME macro defined when building
+ # sources, to identify which module the translation unit is going to be built
+ # into.
+ $(common-objpfx)libc-modules.h: $(common-objpfx)libc-modules.stmp; @:
+Index: glibc-2.17-c758a686/include/libc-symbols.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/libc-symbols.h
++++ glibc-2.17-c758a686/include/libc-symbols.h
+@@ -20,8 +20,12 @@
+ #ifndef _LIBC_SYMBOLS_H
+ #define _LIBC_SYMBOLS_H	1
+ 
++#define IN_MODULE PASTE_NAME (MODULE_, MODULE_NAME)
+ #define IS_IN(lib) (IN_MODULE == MODULE_##lib)
+ 
++#define PASTE_NAME(a,b)      PASTE_NAME1 (a,b)
++#define PASTE_NAME1(a,b)     a##b
++
+ /* This file's macros are included implicitly in the compilation of every
+    file in the C library by -imacros.
+ 
+Index: glibc-2.17-c758a686/include/stap-probe.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/stap-probe.h
++++ glibc-2.17-c758a686/include/stap-probe.h
+@@ -30,7 +30,7 @@
+ 
+    Systemtap's header defines the macros STAP_PROBE (provider, name) and
+    STAP_PROBEn (provider, name, arg1, ..., argn).  For "provider" we paste
+-   in the IN_LIB name (libc, libpthread, etc.) automagically.  */
++   in MODULE_NAME (libc, libpthread, etc.) automagically.  */
+ 
+ # ifndef NOT_IN_libc
+ #  define IN_LIB	libc
+@@ -45,7 +45,7 @@
+ # endif
+ 
+ # define LIBC_PROBE(name, n, ...)	\
+-  LIBC_PROBE_1 (IN_LIB, name, n, ## __VA_ARGS__)
++  LIBC_PROBE_1 (MODULE_NAME, name, n, ## __VA_ARGS__)
+ 
+ # define LIBC_PROBE_1(lib, name, n, ...) \
+   STAP_PROBE##n (lib, name, ## __VA_ARGS__)
+@@ -53,7 +53,7 @@
+ # define STAP_PROBE0		STAP_PROBE
+ 
+ # define LIBC_PROBE_ASM(name, template) \
+-  STAP_PROBE_ASM (IN_LIB, name, template)
++  STAP_PROBE_ASM (MODULE_NAME, name, template)
+ 
+ # define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS
+ 
+Index: glibc-2.17-c758a686/rtkaio/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/rtkaio/Makefile
++++ glibc-2.17-c758a686/rtkaio/Makefile
+@@ -70,7 +70,9 @@ CFLAGS-kaio_librt-cancellation.c = -fasy
+ LDFLAGS-rtkaio.so = -Wl,-soname=lib$(libprefix)rt.so$(librt.so-version) \
+ 		    -Wl,--enable-new-dtags,-z,nodelete
+ CPPFLAGS-librtkaio += -UIN_MODULE -DIN_MODULE=MODULE_librt \
+-		      -UIS_IN_librt -DIS_IN_librt=1 -I$(..)rt
++		      -UMODULE_NAME -DMODULE_NAME=librt \
++		      -UIS_IN_librt -DIS_IN_librt=1 \
++		      -I$(..)rt
+ 
+ rpath-dirs := $(patsubst rt,rtkaio,$(rpath-dirs))
+ 
diff --git a/SOURCES/glibc-rh1256317-15.patch b/SOURCES/glibc-rh1256317-15.patch
new file mode 100644
index 0000000..a481ce0
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-15.patch
@@ -0,0 +1,220 @@
+commit 130ac68ca25c9aa65e027e3e37337bc048205c69
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Wed Nov 19 12:16:00 2014 +0530
+
+    Auto-generate libc-modules.h
+    
+    Remove libc-modules.h from the tree and auto-generate it from
+    soversions.i and the list of modules in the built-modules variable
+    defined in Makeconfig.  Macros generated have increasing numbered
+    values, with built-modules having lower values starting from 1,
+    following which a separator value LIBS_BEGIN is added and then finally
+    the library names from soversions.i are appended to the list.  This
+    allows us to conveniently differentiate between the versioned
+    libraries and other built modules, which is needed in errno.h and
+    netdb.h to decide whether to use an internal symbol or an external
+    one.
+    
+    Verified that generated code remains unchanged on x86_64.
+    
+    	* Makeconfig (built-modules): List non-library modules to be
+    	built.
+    	(module-cppflags): Include libc-modules.h for
+    	everything except shlib-versions.v.i.
+    	(CPPFLAGS): Use it.
+    	(before-compile): Add libc-modules.h.
+    	($(common-objpfx)libc-modules.h,
+    	$(common-objpfx)libc-modules.stmp): New targets.
+    	(common-generated): Add libc-modules.h and libc-modules.stmp.
+    	($(common-objpfx)Versions.v.i): Depend on libc-modules.h.
+    	* include/libc-symbols.h: Don't include libc-modules.h.
+    	* include/libc-modules.h: Remove file.
+    	* scripts/gen-libc-modules.awk: New script to generate
+    	libc-modules.h.
+    	* sysdeps/unix/Makefile ($(common-objpfx)sysd-syscalls):
+    	Depend on libc-modules.stmp.
+
+commit 8a257e2cb50cd8e8e3e2368d80bf325ea4086cf9
+Author: Roland McGrath <roland@hack.frob.com>
+Date:   Thu Apr 9 14:42:29 2015 -0700
+
+    Omit libc-modules.h for all .v.i files.
+
+Index: glibc-2.17-c758a686/Makeconfig
+===================================================================
+--- glibc-2.17-c758a686.orig/Makeconfig
++++ glibc-2.17-c758a686/Makeconfig
+@@ -730,19 +730,34 @@ endif	# $(+cflags) == ""
+ # of many little headers in the include directory.
+ libio-include = -I$(..)libio
+ 
++# List of non-library modules that we build.
++built-modules = iconvprogs iconvdata ldconfig lddlibc4 libmemusage \
++		libSegFault libpcprofile librpcsvc locale-programs \
++		memusagestat nonlib nscd extramodules libnldbl
++
+ in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \
+ 				    $(libof-$(<F)) \
+ 				    $(libof-$(@F)) \
+ 				    libc))
+ 
++module-cppflags-real = -include $(common-objpfx)libc-modules.h \
++		       -DIN_MODULE=MODULE_$(in-module)
++
++# We don't need libc-modules.h and the MODULE_NAME definition for .v.i
++# files.  These targets don't (and will likely never need to) use the IS_IN
++# facility.  In fact, shlib-versions should not use it because that will
++# create a circular dependency as libc-modules.h is generated from
++# shlib-versions.
++module-cppflags = $(if $(filter %.v.i,$(@F)),,$(module-cppflags-real))
++
+ # These are the variables that the implicit compilation rules use.
+ # Note that we can't use -std=* in CPPFLAGS, because it overrides
+ # the implicit -lang-asm and breaks cpp behavior for .S files--notably
+ # it causes cpp to stop predefining __ASSEMBLER__.
+ CPPFLAGS = $(CPPUNDEFS) $(CPPFLAGS-config) $($(subdir)-CPPFLAGS) \
+-	   $(+includes) $(defines) \
++	   $(+includes) $(defines) $(module-cppflags) \
+ 	   -include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
+-	   $(CPPFLAGS-$(suffix $@)) -DIN_MODULE=MODULE_$(in-module) \
++	   $(CPPFLAGS-$(suffix $@)) \
+ 	   $(foreach lib,$(libof-$(basename $(@F))) \
+ 			 $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
+ 	   $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
+@@ -922,6 +937,23 @@ endif
+ postclean-generated += soversions.mk soversions.i \
+ 		       shlib-versions.v shlib-versions.v.i
+ 
++before-compile += $(common-objpfx)libc-modules.h
++ifeq ($(soversions.mk-done),t)
++# Generate a header with macro definitions for use with the IS_IN macro.
++# These are the possible values for the IN_MODULE macro defined when building
++# sources, to identify which module the translation unit is going to be built
++# into.
++$(common-objpfx)libc-modules.h: $(common-objpfx)libc-modules.stmp; @:
++$(common-objpfx)libc-modules.stmp: $(..)scripts/gen-libc-modules.awk \
++				   $(common-objpfx)soversions.i
++	$(AWK) -v buildlist="$(subst -,_,$(built-modules))" -f $^ > ${@:stmp=T}
++	$(move-if-change) ${@:stmp=T} ${@:stmp=h}
++	touch $@
++
++endif
++
++common-generated += libc-modules.h libc-modules.stmp
++
+ # Generate the header containing the names of all shared libraries.
+ # We use a stamp file to avoid unnecessary recompilations.
+ before-compile += $(common-objpfx)gnu/lib-names.h
+Index: glibc-2.17-c758a686/include/libc-modules.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/libc-modules.h
++++ /dev/null
+@@ -1,41 +0,0 @@
+-/* Valid values for the IN_MODULE macro, which is defined for each source file
+-   during compilation to indicate which module it is to be built into.
+-
+-   TODO: This file should eventually be auto-generated.  */
+-#define MODULE_libc		1
+-#define MODULE_libpthread	2
+-#define MODULE_rtld		3
+-#define MODULE_libdl		4
+-#define MODULE_libm		5
+-#define MODULE_iconvprogs	6
+-#define MODULE_iconvdata	7
+-#define MODULE_lddlibc4		8
+-#define MODULE_locale_programs	9
+-#define MODULE_memusagestat	10
+-#define MODULE_libutil		12
+-#define MODULE_libBrokenLocale	13
+-#define MODULE_libmemusage	15
+-#define MODULE_libresolv	16
+-#define MODULE_libnss_db	17
+-#define MODULE_libnss_files	18
+-#define	MODULE_libnss_dns	19
+-#define MODULE_libnss_compat	20
+-#define MODULE_libnss_hesiod	21
+-#define MODULE_libnss_nis	22
+-#define MODULE_libnss_nisplus	23
+-#define MODULE_libanl		24
+-#define MODULE_librt		25
+-#define MODULE_libSegFault	26
+-#define MODULE_libthread_db	27
+-#define MODULE_libcidn		28
+-#define MODULE_libcrypt		29
+-#define MODULE_libnsl		30
+-#define MODULE_libpcprofile	31
+-#define MODULE_librpcsvc	32
+-#define MODULE_nscd		33
+-#define MODULE_ldconfig 	34
+-#define MODULE_libnldbl 	35
+-
+-/* Catch-all for test modules and other binaries.  */
+-#define MODULE_nonlib		98
+-#define MODULE_extramodules	99
+Index: glibc-2.17-c758a686/include/libc-symbols.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/libc-symbols.h
++++ glibc-2.17-c758a686/include/libc-symbols.h
+@@ -20,9 +20,6 @@
+ #ifndef _LIBC_SYMBOLS_H
+ #define _LIBC_SYMBOLS_H	1
+ 
+-/* Pull in definitions for the MODULE_* macros.  */
+-#include <libc-modules.h>
+-
+ #define IS_IN(lib) (IN_MODULE == MODULE_##lib)
+ 
+ /* This file's macros are included implicitly in the compilation of every
+Index: glibc-2.17-c758a686/scripts/gen-libc-modules.awk
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/scripts/gen-libc-modules.awk
+@@ -0,0 +1,34 @@
++# Generate a header file that defines the MODULE_* macros for each library and
++# module we build in glibc.  The library names are pulled in from soversions.i
++# and the additional modules are passed in the BUILDLIST variable.
++BEGIN {
++  # BUILDLIST is set from the build-list variable in Makeconfig and is a space
++  # separated list of non-library modules that we build in glibc.
++  num = split (buildlist, libs, " ")
++  # Separate the built modules from the libraries.
++  libs[++num] = "LIBS_BEGIN"
++}
++
++# Skip over comments.
++$1 == "#" {
++  next
++}
++
++# We have only one special case in soversions.i parsing, which is to replace ld
++# with rtld since that's what we call it throughout the sources.
++match (FILENAME, ".*soversions.i") {
++  name = $2
++  if (name == "ld")
++    name = "rtld"
++
++  # Library names are not duplicated in soversions.i.
++  libs[++num] = name
++}
++
++# Finally, print out the header file.
++END {
++  printf ("/* AUTOGENERATED BY gen-libc-modules.awk, DO NOT EDIT.  */\n\n")
++  for (l in libs) {
++    printf ("#define MODULE_%s %d\n", libs[l], l)
++  }
++}
+Index: glibc-2.17-c758a686/sysdeps/unix/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/Makefile
++++ glibc-2.17-c758a686/sysdeps/unix/Makefile
+@@ -77,7 +77,8 @@ compile-syscall = $(COMPILE.S) -o $@ -x
+ 
+ ifndef avoid-generated
+ $(common-objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
+-			       $(wildcard $(+sysdep_dirs:%=%/syscalls.list))
++			       $(wildcard $(+sysdep_dirs:%=%/syscalls.list)) \
++			       $(common-objpfx)libc-modules.stmp
+ 	for dir in $(+sysdep_dirs); do \
+ 	  test -f $$dir/syscalls.list && \
+ 	  { sysdirs='$(sysdirs)' \
diff --git a/SOURCES/glibc-rh1256317-16.patch b/SOURCES/glibc-rh1256317-16.patch
new file mode 100644
index 0000000..28a5cfa
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-16.patch
@@ -0,0 +1,43 @@
+In order to ensure ABI compatibility between staged builds it was
+required that rtkaio/Makefile define both IN_MODULE=MODULE_librt
+and IS_IN_librt in order to get both the right set of versioned
+symbols and enable cancellation correctly. The changes to rtkaio/Makefile
+are Red Hat internal changes.
+
+commit 286663c34b006c1409df4a71f89d6d4d5d01df09
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Wed Nov 19 12:15:01 2014 +0530
+
+    Fix -Wundef warning in SHLIB_COMPAT
+    
+    Replace the IS_IN_##lib with IS_IN(lib).  Verified that the generated
+    code remains the same.
+    
+    	* include/shlib-compat.h (_SHLIB_COMPAT): Use IS_IN.
+Index: glibc-2.17-c758a686/include/shlib-compat.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/shlib-compat.h
++++ glibc-2.17-c758a686/include/shlib-compat.h
+@@ -45,7 +45,7 @@
+ # define SHLIB_COMPAT(lib, introduced, obsoleted)			      \
+   _SHLIB_COMPAT (lib, introduced, obsoleted)
+ # define _SHLIB_COMPAT(lib, introduced, obsoleted)			      \
+-  ((IS_IN_##lib - 0)							      \
++  (IS_IN (lib)								      \
+    && (!(ABI_##lib##_##obsoleted - 0)					      \
+        || ((ABI_##lib##_##introduced - 0) < (ABI_##lib##_##obsoleted - 0))))
+ 
+Index: glibc-2.17-c758a686/rtkaio/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/rtkaio/Makefile
++++ glibc-2.17-c758a686/rtkaio/Makefile
+@@ -69,7 +69,8 @@ CFLAGS-kaio_librt-cancellation.c = -fasy
+ 
+ LDFLAGS-rtkaio.so = -Wl,-soname=lib$(libprefix)rt.so$(librt.so-version) \
+ 		    -Wl,--enable-new-dtags,-z,nodelete
+-CPPFLAGS-librtkaio += -DIS_IN_librt=1 -I$(..)rt
++CPPFLAGS-librtkaio += -UIN_MODULE -DIN_MODULE=MODULE_librt \
++		      -UIS_IN_librt -DIS_IN_librt=1 -I$(..)rt
+ 
+ rpath-dirs := $(patsubst rt,rtkaio,$(rpath-dirs))
+ 
diff --git a/SOURCES/glibc-rh1256317-17.patch b/SOURCES/glibc-rh1256317-17.patch
new file mode 100644
index 0000000..7e2c51a
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-17.patch
@@ -0,0 +1,467 @@
+commit 9cd4747089e6b0d6ed6b2b6c75798912489c7bab
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Wed Nov 19 12:13:54 2014 +0530
+
+    Add new macro IN_MODULE to identify module in which source is built
+    
+    The current scheme to identify which module a translation unit is
+    built in depends on defining multiple macros IS_IN_* and also defining
+    NOT_IN_libc if we're building a non-libc module.  In addition, there
+    is an IN_LIB macro that does effectively the same thing, but for
+    different modules (notably the systemtap probes).  This macro scheme
+    unifies both ideas to use just one macro IN_MODULE and assign it a
+    value depending on the module it is being built into.  If the module
+    is not defined, it defaults to MODULE_libc.
+    
+    Patches that follow will replace uses of IS_IN_* variables with the
+    IS_IN() macro.  libc-symbols.h has been converted already to give an
+    example of how such a transition will look.
+    
+    Verified that there are no relevant binary changes.  One source change
+    that will crop up repeatedly is that of nscd_stat, since it uses the
+    build timestamp as a constant in its logic.
+    
+    	* Makeconfig (in-module): Get value of libof set for the
+    	translation unit.
+    	(CPPFLAGS): Use $(in-module).
+    	* Makerules: Don't suffix routine names for nonlib.
+    	* include/libc-modules.h: New file.
+    	* include/libc-symbols.h: Include libc-modules.h
+    	(IS_IN): New macro to replace IS_IN_* macros.
+    	* elf/Makefile: Set libof-* for each routine.
+    	* elf/rtld-Rules: Likewise.
+    	* extra-modules.mk: Likewise.
+    	* iconv/Makefile: Likewise.
+    	* iconvdata/Makefile: Likewise.
+    	* locale/Makefile: Likewise.
+    	* malloc/Makefile: Likewise.
+    	* nss/Makefile: Likewise.
+    	* sysdeps/gnu/Makefile: Likewise.
+    	* sysdeps/ieee754/ldbl-opt/Makefile: Likewise.
+    	* sysdeps/unix/sysv/linux/Makefile: Likewise.
+    	* sysdeps/s390/s390-64/Makefile: Likewise.
+    	* nscd/Makefile: Set libof-* for each routine.  Set CFLAGS and
+    	CPPFLAGS for nscd instead of nonlib.
+
+Index: glibc-2.17-c758a686/Makeconfig
+===================================================================
+--- glibc-2.17-c758a686.orig/Makeconfig
++++ glibc-2.17-c758a686/Makeconfig
+@@ -730,6 +730,11 @@ endif	# $(+cflags) == ""
+ # of many little headers in the include directory.
+ libio-include = -I$(..)libio
+ 
++in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \
++				    $(libof-$(<F)) \
++				    $(libof-$(@F)) \
++				    libc))
++
+ # These are the variables that the implicit compilation rules use.
+ # Note that we can't use -std=* in CPPFLAGS, because it overrides
+ # the implicit -lang-asm and breaks cpp behavior for .S files--notably
+@@ -737,7 +742,7 @@ libio-include = -I$(..)libio
+ CPPFLAGS = $(CPPUNDEFS) $(CPPFLAGS-config) $($(subdir)-CPPFLAGS) \
+ 	   $(+includes) $(defines) \
+ 	   -include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
+-	   $(CPPFLAGS-$(suffix $@)) \
++	   $(CPPFLAGS-$(suffix $@)) -DIN_MODULE=MODULE_$(in-module) \
+ 	   $(foreach lib,$(libof-$(basename $(@F))) \
+ 			 $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
+ 	   $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
+Index: glibc-2.17-c758a686/Makerules
+===================================================================
+--- glibc-2.17-c758a686.orig/Makerules
++++ glibc-2.17-c758a686/Makerules
+@@ -1151,7 +1151,7 @@ xcheck: xtests
+ 
+ all-nonlib = $(strip $(tests) $(xtests) $(test-srcs) $(test-extras) $(others))
+ ifneq (,$(all-nonlib))
+-cpp-srcs-left = $(all-nonlib:=.c) $(all-nonlib:=.cc)
++cpp-srcs-left = $(all-nonlib)
+ lib := nonlib
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ endif
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -436,7 +436,8 @@ $(objpfx)pldd: $(pldd-modules:%=$(objpfx
+ 
+ SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
+ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
+-		    -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1
++		    -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1 -DNOT_IN_libc=1
++libof-ldconfig = ldconfig
+ CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
+ CFLAGS-cache.c = $(SYSCONF-FLAGS)
+ CFLAGS-rtld.c = $(SYSCONF-FLAGS)
+@@ -454,6 +455,10 @@ CFLAGS-.op += -fno-tree-loop-distribute-
+ CFLAGS-.ob += -fno-tree-loop-distribute-patterns
+ CFLAGS-.oS += -fno-tree-loop-distribute-patterns
+ 
++cpp-srcs-left := $(all-rtld-routines:=.os)
++lib := rtld
++include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
++
+ test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
+ generated += $(addsuffix .so,$(strip $(modules-names)))
+ 
+Index: glibc-2.17-c758a686/elf/rtld-Rules
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/rtld-Rules
++++ glibc-2.17-c758a686/elf/rtld-Rules
+@@ -128,6 +128,11 @@ ifdef rtld-depfiles
+ -include $(rtld-depfiles)
+ endif
+ 
++# Set libof-* for each routine.
++cpp-srcs-left := $(rtld-modules:%.os=%)
++lib := rtld
++include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
++
+ # This here is the whole point of all the shenanigans.
+ rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld
+ 
+Index: glibc-2.17-c758a686/extra-modules.mk
+===================================================================
+--- glibc-2.17-c758a686.orig/extra-modules.mk
++++ glibc-2.17-c758a686/extra-modules.mk
+@@ -6,4 +6,5 @@
+ module := $(firstword $(extra-modules-left))
+ extra-modules-left := $(filter-out $(module),$(extra-modules-left))
+ 
++libof-$(notdir $(module)) := extramodules
+ CPPFLAGS-$(module).c += -DNOT_IN_libc
+Index: glibc-2.17-c758a686/iconv/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/iconv/Makefile
++++ glibc-2.17-c758a686/iconv/Makefile
+@@ -53,11 +53,12 @@ CFLAGS-gconv_cache.c += -DGCONV_DIR='"$(
+ CFLAGS-gconv_conf.c = -DGCONV_PATH='"$(gconvdir)"'
+ CFLAGS-iconvconfig.c = -DGCONV_PATH='"$(gconvdir)"' -DGCONV_DIR='"$(gconvdir)"'
+ 
+-CPPFLAGS-iconv_charmap = -DNOT_IN_libc
+-CPPFLAGS-linereader = -DNOT_IN_libc
+-CPPFLAGS-strtab = -DNOT_IN_libc
+-CPPFLAGS-charmap = -DNOT_IN_libc
+-CPPFLAGS-charmap-dir = -DNOT_IN_libc
++CPPFLAGS-iconvprogs = -DNOT_IN_libc
++
++# Set libof-* for each routine.
++cpp-srcs-left := $(iconv_prog-modules) $(iconvconfig-modules)
++lib := iconvprogs
++include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ 
+ include ../Rules
+ 
+Index: glibc-2.17-c758a686/iconvdata/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/iconvdata/Makefile
++++ glibc-2.17-c758a686/iconvdata/Makefile
+@@ -212,6 +212,7 @@ $(objpfx)iconv-rules: Makefile
+ 	$(AWK) 'NR == 1 { \
+ 		  for (i = 1; i <= NF; i++) { \
+ 		    printf "%s-routines := %s\n", $$i, tolower($$i); \
++		    printf "libof-%s := iconvdata\n", tolower($$i); \
+ 		    printf "%s-map := gconv.map\n", $$i; \
+ 		  } \
+ 		}; \
+@@ -265,6 +266,11 @@ endif # build-shared = yes
+ 
+ include ../Rules
+ 
++# Set libof-* for each routine.
++cpp-srcs-left := $(modules) $(generated-modules)
++lib := iconvdata
++include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
++
+ ifeq ($(run-built-tests),yes)
+ ifeq (yes,$(build-shared))
+ tests: $(objpfx)iconv-test.out $(objpfx)tst-tables.out
+Index: glibc-2.17-c758a686/include/libc-modules.h
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/include/libc-modules.h
+@@ -0,0 +1,41 @@
++/* Valid values for the IN_MODULE macro, which is defined for each source file
++   during compilation to indicate which module it is to be built into.
++
++   TODO: This file should eventually be auto-generated.  */
++#define MODULE_libc		1
++#define MODULE_libpthread	2
++#define MODULE_rtld		3
++#define MODULE_libdl		4
++#define MODULE_libm		5
++#define MODULE_iconvprogs	6
++#define MODULE_iconvdata	7
++#define MODULE_lddlibc4		8
++#define MODULE_locale_programs	9
++#define MODULE_memusagestat	10
++#define MODULE_libutil		12
++#define MODULE_libBrokenLocale	13
++#define MODULE_libmemusage	15
++#define MODULE_libresolv	16
++#define MODULE_libnss_db	17
++#define MODULE_libnss_files	18
++#define	MODULE_libnss_dns	19
++#define MODULE_libnss_compat	20
++#define MODULE_libnss_hesiod	21
++#define MODULE_libnss_nis	22
++#define MODULE_libnss_nisplus	23
++#define MODULE_libanl		24
++#define MODULE_librt		25
++#define MODULE_libSegFault	26
++#define MODULE_libthread_db	27
++#define MODULE_libcidn		28
++#define MODULE_libcrypt		29
++#define MODULE_libnsl		30
++#define MODULE_libpcprofile	31
++#define MODULE_librpcsvc	32
++#define MODULE_nscd		33
++#define MODULE_ldconfig 	34
++#define MODULE_libnldbl 	35
++
++/* Catch-all for test modules and other binaries.  */
++#define MODULE_nonlib		98
++#define MODULE_extramodules	99
+Index: glibc-2.17-c758a686/include/libc-symbols.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/libc-symbols.h
++++ glibc-2.17-c758a686/include/libc-symbols.h
+@@ -20,6 +20,11 @@
+ #ifndef _LIBC_SYMBOLS_H
+ #define _LIBC_SYMBOLS_H	1
+ 
++/* Pull in definitions for the MODULE_* macros.  */
++#include <libc-modules.h>
++
++#define IS_IN(lib) (IN_MODULE == MODULE_##lib)
++
+ /* This file's macros are included implicitly in the compilation of every
+    file in the C library by -imacros.
+ 
+@@ -450,7 +455,7 @@ for linking")
+    If the function should be internal to multiple objects, say ld.so and
+    libc.so, the best way is to use:
+ 
+-   #if !defined NOT_IN_libc || defined IS_IN_rtld
++   #if IS_IN (libc) || IS_IN (rtld)
+    hidden_proto (foo)
+    #endif
+ 
+@@ -561,7 +566,7 @@ for linking")
+ # define libc_hidden_data_ver(local, name)
+ #endif
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # define rtld_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define rtld_hidden_def(name) hidden_def (name)
+ # define rtld_hidden_weak(name) hidden_weak (name)
+@@ -579,7 +584,7 @@ for linking")
+ # define rtld_hidden_data_ver(local, name)
+ #endif
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # define libm_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libm_hidden_def(name) hidden_def (name)
+ # define libm_hidden_weak(name) hidden_weak (name)
+@@ -597,7 +602,7 @@ for linking")
+ # define libm_hidden_data_ver(local, name)
+ #endif
+ 
+-#ifdef IS_IN_libresolv
++#if IS_IN (libresolv)
+ # define libresolv_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libresolv_hidden_def(name) hidden_def (name)
+ # define libresolv_hidden_weak(name) hidden_weak (name)
+@@ -615,7 +620,7 @@ for linking")
+ # define libresolv_hidden_data_ver(local, name)
+ #endif
+ 
+-#ifdef IS_IN_librt
++#if IS_IN (librt)
+ # define librt_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define librt_hidden_def(name) hidden_def (name)
+ # define librt_hidden_weak(name) hidden_weak (name)
+@@ -633,7 +638,7 @@ for linking")
+ # define librt_hidden_data_ver(local, name)
+ #endif
+ 
+-#ifdef IS_IN_libdl
++#if IS_IN (libdl)
+ # define libdl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libdl_hidden_def(name) hidden_def (name)
+ # define libdl_hidden_weak(name) hidden_weak (name)
+@@ -651,7 +656,7 @@ for linking")
+ # define libdl_hidden_data_ver(local, name)
+ #endif
+ 
+-#ifdef IS_IN_libnss_files
++#if IS_IN (libnss_files)
+ # define libnss_files_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libnss_files_hidden_def(name) hidden_def (name)
+ # define libnss_files_hidden_weak(name) hidden_weak (name)
+@@ -669,7 +674,7 @@ for linking")
+ # define libnss_files_hidden_data_ver(local, name)
+ #endif
+ 
+-#ifdef IS_IN_libnsl
++#if IS_IN (libnsl)
+ # define libnsl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libnsl_hidden_def(name) hidden_def (name)
+ # define libnsl_hidden_weak(name) hidden_weak (name)
+@@ -687,7 +692,7 @@ for linking")
+ # define libnsl_hidden_data_ver(local, name)
+ #endif
+ 
+-#ifdef IS_IN_libnss_nisplus
++#if IS_IN (libnss_nisplus)
+ # define libnss_nisplus_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libnss_nisplus_hidden_def(name) hidden_def (name)
+ # define libnss_nisplus_hidden_weak(name) hidden_weak (name)
+@@ -713,7 +718,7 @@ for linking")
+ # define HIDDEN_BUILTIN_JUMPTARGET(name) HIDDEN_JUMPTARGET(name)
+ #endif
+ 
+-#ifdef IS_IN_libutil
++#if IS_IN (libutil)
+ # define libutil_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libutil_hidden_def(name) hidden_def (name)
+ # define libutil_hidden_weak(name) hidden_weak (name)
+Index: glibc-2.17-c758a686/locale/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/locale/Makefile
++++ glibc-2.17-c758a686/locale/Makefile
+@@ -95,8 +95,8 @@ CFLAGS-locfile.c = -Wno-write-strings -W
+ CFLAGS-charmap-dir.c = -Wno-write-strings
+ 
+ # This makes sure -DNOT_IN_libc et al are passed for all these modules.
+-cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \
+-				$(locale-modules) $(lib-modules))
++cpp-srcs-left := $(localedef-modules) $(localedef-aux) $(locale-modules) \
++		 $(lib-modules)
+ lib := locale-programs
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ 
+Index: glibc-2.17-c758a686/malloc/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/malloc/Makefile
++++ glibc-2.17-c758a686/malloc/Makefile
+@@ -97,6 +97,11 @@ endif
+ do-memusagestat: $(objpfx)memusagestat
+ 
+ memusagestat-modules = memusagestat
++
++cpp-srcs-left := $(memusagestat-modules)
++lib := memusagestat
++include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
++
+ $(objpfx)memusagestat: $(memusagestat-modules:%=$(objpfx)%.o)
+ 	$(LINK.o) -o $@ $^ $(libgd-LDFLAGS) -lgd -lpng -lz -lm
+ 
+Index: glibc-2.17-c758a686/nscd/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nscd/Makefile
++++ glibc-2.17-c758a686/nscd/Makefile
+@@ -79,26 +79,25 @@ CFLAGS-nscd_gethst_r.c = -fexceptions
+ CFLAGS-nscd_getai.c = -fexceptions
+ CFLAGS-nscd_initgroups.c = -fexceptions
+ 
+-CPPFLAGS-nonlib += -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2
++CPPFLAGS-nscd += -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2 -DNOT_IN_libc=1
+ 
+ ifeq (yesyes,$(have-fpie)$(build-shared))
+-CFLAGS-nonlib += $(pie-ccflag)
++CFLAGS-nscd += $(pie-ccflag)
+ endif
+ ifeq (yes,$(have-ssp))
+-CFLAGS-nonlib += -fstack-protector
++CFLAGS-nscd += -fstack-protector
+ endif
+ ifeq (yes,$(have-ssp-strong))
+-CFLAGS-nonlib += -fstack-protector-strong
++CFLAGS-nscd += -fstack-protector-strong
+ endif
+ 
+ ifeq (yesyes,$(have-fpie)$(build-shared))
+ LDFLAGS-nscd = -Wl,-z,now
+ endif
+ 
+-# This makes sure CPPFLAGS-nonlib and CFLAGS-nonlib are passed
+-# for all these modules.
+-cpp-srcs-left := $(nscd-modules:=.c)
+-lib := nonlib
++# Set libof-nscd.
++cpp-srcs-left := $(nscd-modules)
++lib := nscd
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ 
+ $(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o)
+Index: glibc-2.17-c758a686/nss/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nss/Makefile
++++ glibc-2.17-c758a686/nss/Makefile
+@@ -108,7 +108,8 @@ $(objpfx)makedb: $(makedb-modules:%=$(ob
+ $(inst_vardbdir)/Makefile: db-Makefile $(+force)
+ 	$(do-install)
+ 
+-CFLAGS-nss_test1.c = -DNOT_IN_libc=1
++libof-nss_test1 = extramodules
++CPPFLAGS-nss_test1 = -DNOT_IN_libc=1
+ $(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(common-objpfx)libc.so \
+ 			   $(common-objpfx)libc_nonshared.a
+ 	$(build-module)
+Index: glibc-2.17-c758a686/stdlib/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/stdlib/Makefile
++++ glibc-2.17-c758a686/stdlib/Makefile
+@@ -138,6 +138,7 @@ LDFLAGS-tst-putenv = $(no-as-needed)
+ 
+ $(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os
+ 	$(build-module)
++libof-tst-putenvmod = extramodules
+ CFLAGS-tst-putenvmod.c = -DNOT_IN_libc=1
+ 
+ ifeq ($(build-shared),yes)
+Index: glibc-2.17-c758a686/sysdeps/gnu/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/gnu/Makefile
++++ glibc-2.17-c758a686/sysdeps/gnu/Makefile
+@@ -30,6 +30,8 @@ ifeq ($(subdir),stdio-common)
+ 
+ errlist-c = $(firstword $(wildcard $(addsuffix /errlist.c,$(sysdirs) .)))
+ 
++libof-errlist-compat = extramodules
++
+ ifeq ($(versioning),yes)
+ $(objpfx)errlist-compat.c: $(errlist-c) $(..)sysdeps/gnu/errlist-compat.awk \
+ 			   $(common-objpfx)Versions.v.i $(before-compile)
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-64/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/Makefile
++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/Makefile
+@@ -28,6 +28,10 @@ s390x-iconv-modules = ISO-8859-1_CP037_Z
+ extra-modules-left += $(s390x-iconv-modules)
+ include extra-module.mk
+ 
++cpp-srcs-left := $(foreach mod,$(s390x-iconv-modules),$($(mod)-routines))
++lib := iconvdata
++include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
++
+ extra-objs      += $(addsuffix .so, $(s390x-iconv-modules))
+ install-others  += $(patsubst %, $(inst_gconvdir)/%.so, $(s390x-iconv-modules))
+ 
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/Makefile
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/Makefile
+@@ -159,6 +159,7 @@ ifeq ($(subdir),elf)
+ sysdep-rtld-routines += dl-brk dl-sbrk dl-getcwd dl-openat64 dl-opendir \
+ 			dl-fxstatat64
+ 
++libof-lddlibc4 = lddlibc4
+ CPPFLAGS-lddlibc4 += -DNOT_IN_libc
+ endif
+ 
diff --git a/SOURCES/glibc-rh1256317-18.patch b/SOURCES/glibc-rh1256317-18.patch
new file mode 100644
index 0000000..f7cd4c6
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-18.patch
@@ -0,0 +1,51 @@
+commit d330b980e9ee2349492087a279a9c7bf294f6b47
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Tue Sep 16 22:20:45 2014 +0530
+
+    Remove CFLAGS for interp.c
+    
+    Replace it with including an auto-generated linker-runtime.h.
+    Build-tested on x86_64 and found that there was no change in the
+    generated code.
+    
+    	* elf/Makefile (CFLAGS-interp.c): Remove.
+    	($(elf-objpfx)runtime-linker.h): Generate header with linker
+    	path string.
+    	* elf/interp.c: Include generated runtime-linker.h
+
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -344,9 +344,16 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
+ 	$(READELF) -s $@ \
+ 	  | $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
+ 
+-# interp.c exists just to get this string into the libraries.
+-CFLAGS-interp.c = -D'RUNTIME_LINKER="$(rtlddir)/$(rtld-installed-name)"'
+-$(objpfx)interp.os: $(common-objpfx)config.make
++# interp.c exists just to get the runtime linker path into libc.so.
++$(objpfx)interp.os: $(elf-objpfx)runtime-linker.h
++
++$(elf-objpfx)runtime-linker.h: $(elf-objpfx)runtime-linker.st; @:
++$(elf-objpfx)runtime-linker.st: $(common-objpfx)config.make
++	$(name-target-directory)
++	echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
++		> ${@:st=T}
++	$(move-if-change) ${@:st=T} ${@:st=h}
++	touch $@
+ 
+ ifneq (ld.so,$(rtld-installed-name))
+ # Make sure ld.so.1 exists in the build directory so we can link
+Index: glibc-2.17-c758a686/elf/interp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/interp.c
++++ glibc-2.17-c758a686/elf/interp.c
+@@ -16,5 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#include <elf/runtime-linker.h>
++
+ const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
+   = RUNTIME_LINKER;
diff --git a/SOURCES/glibc-rh1256317-19.patch b/SOURCES/glibc-rh1256317-19.patch
new file mode 100644
index 0000000..c23c58e
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-19.patch
@@ -0,0 +1,254 @@
+commit 02657da2cf4457804ed938ee08b8316249126444
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Tue Sep 16 22:19:22 2014 +0530
+
+    Include .interp section only for libc.so
+    
+    Barring libc.so and libdl.so, none of the libraries have any entry
+    points, so it is pointless to add a .interp section for them.  The
+    libdl.so entry point (in dlfcn/eval.c) is also defunct, so remove that
+    file as well.
+    
+    Build tested for x86_64, ppc64 and s390x.  I have not moved
+    CFLAGS-interp.c to CPPFLAGS-interp.c isnce I'll be removing it
+    completely in a follow-up patch.
+    
+    Siddhesh
+    
+    	* Makerules (lib%.so): Don't include $(+interp) in
+    	prerequisites.
+    	* elf/Makefile (CFLAGS-interp.c): Don't define NOT_IN_libc.
+    	* dlfcn/eval.c: Remove file.
+
+Index: glibc-2.17-c758a686/Makerules
+===================================================================
+--- glibc-2.17-c758a686.orig/Makerules
++++ glibc-2.17-c758a686/Makerules
+@@ -461,7 +461,7 @@ link-libc-deps = $(common-objpfx)libc.so
+ # build shared libraries in place from the installed *_pic.a files.
+ # $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
+ # on other shared objects.
+-lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(+interp)
++lib%.so: lib%_pic.a $(+preinit) $(+postinit)
+ 	$(build-shlib)
+ 
+ define build-shlib-helper
+Index: glibc-2.17-c758a686/dlfcn/eval.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/eval.c
++++ /dev/null
+@@ -1,200 +0,0 @@
+-/* You don't really want to know what this hack is for.
+-   Copyright (C) 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <assert.h>
+-#include <ctype.h>
+-#include <dlfcn.h>
+-#include <errno.h>
+-#include <limits.h>
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <unistd.h>
+-
+-static void *funcall (char **stringp) __attribute_noinline__;
+-static void *eval (char **stringp);
+-
+-
+-long int weak_function
+-__strtol_internal (const char *nptr, char **endptr, int base, int group)
+-{
+-  unsigned long int result = 0;
+-  long int sign = 1;
+-
+-  while (*nptr == ' ' || *nptr == '\t')
+-    ++nptr;
+-
+-  if (*nptr == '-')
+-    {
+-      sign = -1;
+-      ++nptr;
+-    }
+-  else if (*nptr == '+')
+-    ++nptr;
+-
+-  if (*nptr < '0' || *nptr > '9')
+-    {
+-      if (endptr != NULL)
+-	*endptr = (char *) nptr;
+-      return 0L;
+-    }
+-
+-  assert (base == 0);
+-  base = 10;
+-  if (*nptr == '0')
+-    {
+-      if (nptr[1] == 'x' || nptr[1] == 'X')
+-	{
+-	  base = 16;
+-	  nptr += 2;
+-	}
+-      else
+-	base = 8;
+-    }
+-
+-  while (*nptr >= '0' && *nptr <= '9')
+-    {
+-      unsigned long int digval = *nptr - '0';
+-      if (result > LONG_MAX / 10
+-	  || (sign > 0 ? result == LONG_MAX / 10 && digval > LONG_MAX % 10
+-	      : (result == ((unsigned long int) LONG_MAX + 1) / 10
+-		 && digval > ((unsigned long int) LONG_MAX + 1) % 10)))
+-	{
+-	  errno = ERANGE;
+-	  return sign > 0 ? LONG_MAX : LONG_MIN;
+-	}
+-      result *= base;
+-      result += digval;
+-      ++nptr;
+-    }
+-
+-  return (long int) result * sign;
+-}
+-
+-
+-static void *
+-funcall (char **stringp)
+-{
+-  void *args[strlen (*stringp)], **ap = args;
+-  void *argcookie = &args[1];
+-
+-  do
+-    {
+-      /* Evaluate the next token.  */
+-      *ap++ = eval (stringp);
+-
+-      /* Whitespace is irrelevant.  */
+-      while (isspace (**stringp))
+-	++*stringp;
+-
+-      /* Terminate at closing paren or end of line.  */
+-    } while (**stringp != '\0' && **stringp != ')');
+-  if (**stringp != '\0')
+-    /* Swallow closing paren.  */
+-    ++*stringp;
+-
+-  if (args[0] == NULL)
+-    {
+-      static const char unknown[] = "Unknown function\n";
+-      write (1, unknown, sizeof unknown - 1);
+-      return NULL;
+-    }
+-
+-  /* Do it to it.  */
+-  __builtin_return (__builtin_apply (args[0],
+-				     &argcookie,
+-				     (char *) ap - (char *) &args[1]));
+-}
+-
+-static void *
+-eval (char **stringp)
+-{
+-  void *value;
+-  char *p = *stringp, c;
+-
+-  /* Whitespace is irrelevant.  */
+-  while (isspace (*p))
+-    ++p;
+-
+-  switch (*p)
+-    {
+-    case '"':
+-      /* String constant.  */
+-      value = ++p;
+-      do
+-	if (*p == '\\')
+-	  {
+-	    switch (*strcpy (p, p + 1))
+-	      {
+-	      case 't':
+-		*p = '\t';
+-		break;
+-	      case 'n':
+-		*p = '\n';
+-		break;
+-	      }
+-	    ++p;
+-	  }
+-      while (*p != '\0' && *p++ != '"');
+-      if (p[-1] == '"')
+-	p[-1] = '\0';
+-      break;
+-
+-    case '(':
+-      *stringp = ++p;
+-      return funcall (stringp);
+-
+-    default:
+-      /* Try to parse it as a number.  */
+-      value = (void *) __strtol_internal (p, stringp, 0, 0);
+-      if (*stringp != p)
+-	return value;
+-
+-      /* Anything else is a symbol that produces its address.  */
+-      value = p;
+-      do
+-	++p;
+-      while (*p != '\0' && !isspace (*p) && (!ispunct (*p) || *p == '_'));
+-      c = *p;
+-      *p = '\0';
+-      value = dlsym (NULL, value);
+-      *p = c;
+-      break;
+-    }
+-
+-  *stringp = p;
+-  return value;
+-}
+-
+-
+-extern void _start (void) __attribute__ ((noreturn));
+-void
+-__attribute__ ((noreturn))
+-_start (void)
+-{
+-  char *buf = NULL;
+-  size_t bufsz = 0;
+-
+-  while (__getdelim (&buf, &bufsz, '\n', stdin) > 0)
+-    {
+-      char *p = buf;
+-      eval (&p);
+-    }
+-
+-  exit (0);
+-}
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -345,8 +345,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld
+ 	  | $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
+ 
+ # interp.c exists just to get this string into the libraries.
+-CFLAGS-interp.c = -D'RUNTIME_LINKER="$(rtlddir)/$(rtld-installed-name)"' \
+-		  -DNOT_IN_libc=1
++CFLAGS-interp.c = -D'RUNTIME_LINKER="$(rtlddir)/$(rtld-installed-name)"'
+ $(objpfx)interp.os: $(common-objpfx)config.make
+ 
+ ifneq (ld.so,$(rtld-installed-name))
diff --git a/SOURCES/glibc-rh1256317-2.patch b/SOURCES/glibc-rh1256317-2.patch
new file mode 100644
index 0000000..dc9445e
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-2.patch
@@ -0,0 +1,7228 @@
+commit 4f41c682f3f0a0ad69eeac38a6b270f4362c3a02
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Mon Nov 24 15:03:45 2014 +0530
+
+    Remove NOT_IN_libc
+    
+    Replace with !IS_IN (libc).  This completes the transition from
+    the IS_IN/NOT_IN macros to the IN_MODULE macro set.
+    
+    The generated code is unchanged on x86_64.
+    
+    	* stdlib/isomac.c (fmt): Replace NOT_IN_libc with IN_MODULE.
+    	(get_null_defines): Adjust.
+    	* sunrpc/Makefile: Adjust comment.
+    	* Makerules (CPPFLAGS-nonlib): Remove NOT_IN_libc.
+    	* elf/Makefile (CPPFLAGS-sotruss-lib): Likewise.
+    	(CFLAGS-interp.c): Likewise.
+    	(CFLAGS-ldconfig.c): Likewise.
+    	(CPPFLAGS-.os): Likewise.
+    	* elf/rtld-Rules (rtld-CPPFLAGS): Likewise.
+    	* extra-lib.mk (CPPFLAGS-$(lib)): Likewise.
+    	* extra-modules.mk (extra-modules.mk): Likewise.
+    	* iconv/Makefile (CPPFLAGS-iconvprogs): Likewise.
+    	* locale/Makefile (CPPFLAGS-locale_programs): Likewise.
+    	* malloc/Makefile (CPPFLAGS-memusagestat): Likewise.
+    	* nscd/Makefile (CPPFLAGS-nscd): Likewise.
+    	* nss/Makefile (CPPFLAGS-nss_test1): Likewise.
+    	* stdlib/Makefile (CFLAGS-tst-putenvmod.c): Likewise.
+    	* sysdeps/gnu/Makefile ($(objpfx)errlist-compat.c): Likewise.
+    	* sysdeps/unix/sysv/linux/Makefile (CPPFLAGS-lddlibc4): Likewise.
+    	* iconvdata/Makefile (CPPFLAGS): Likewise.
+    	(cpp-srcs-left): Add libof for all iconvdata routines.
+    	* bits/stdio-lock.h: Replace NOT_IN_libc with IS_IN.
+    	* include/assert.h: Likewise.
+    	* include/ctype.h: Likewise.
+    	* include/errno.h: Likewise.
+    	* include/libc-symbols.h: Likewise.
+    	* include/math.h: Likewise.
+    	* include/netdb.h: Likewise.
+    	* include/resolv.h: Likewise.
+    	* include/stdio.h: Likewise.
+    	* include/stdlib.h: Likewise.
+    	* include/string.h: Likewise.
+    	* include/sys/stat.h: Likewise.
+    	* include/wctype.h: Likewise.
+    	* intl/l10nflist.c: Likewise.
+    	* libidn/idn-stub.c: Likewise.
+    	* libio/libioP.h: Likewise.
+    	* nptl/libc_multiple_threads.c: Likewise.
+    	* nptl/pthreadP.h: Likewise.
+    	* posix/regex_internal.h: Likewise.
+    	* resolv/res_hconf.c: Likewise.
+    	* sysdeps/arm/armv7/multiarch/memcpy.S: Likewise.
+    	* sysdeps/arm/memmove.S: Likewise.
+    	* sysdeps/arm/sysdep.h: Likewise.
+    	* sysdeps/generic/_itoa.h: Likewise.
+    	* sysdeps/generic/symbol-hacks.h: Likewise.
+    	* sysdeps/gnu/errlist.awk: Likewise.
+    	* sysdeps/gnu/errlist.c: Likewise.
+    	* sysdeps/i386/i586/memcpy.S: Likewise.
+    	* sysdeps/i386/i586/memset.S: Likewise.
+    	* sysdeps/i386/i686/memcpy.S: Likewise.
+    	* sysdeps/i386/i686/memmove.S: Likewise.
+    	* sysdeps/i386/i686/mempcpy.S: Likewise.
+    	* sysdeps/i386/i686/memset.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/bcopy.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/bzero.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memchr-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memchr.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memcmp-sse4.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memcmp-ssse3.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memcmp.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memcpy-ssse3.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memcpy.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memcpy_chk.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memmove.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memmove_chk.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/mempcpy.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/mempcpy_chk.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memrchr-c.c: Likewise.
+    	* sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memrchr-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memrchr.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memset-sse2-rep.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memset-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memset.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/memset_chk.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/rawmemchr.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcat-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcat-ssse3.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcat.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strchr-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strchr.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcmp-sse4.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcmp-ssse3.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcmp.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcpy-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcpy-ssse3.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcpy.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strcspn.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strlen-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strlen.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strnlen.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strrchr-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strrchr.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/strspn.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcschr-c.c: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcschr-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcschr.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcscmp-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcscmp.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcscpy-c.c: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcscpy-ssse3.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcscpy.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcslen-c.c: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcslen-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcslen.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcsrchr-c.c: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcsrchr-sse2.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wcsrchr.S: Likewise.
+    	* sysdeps/i386/i686/multiarch/wmemcmp-c.c: Likewise.
+    	* sysdeps/i386/i686/multiarch/wmemcmp.S: Likewise.
+    	* sysdeps/ia64/fpu/libm-symbols.h: Likewise.
+    	* sysdeps/nptl/bits/libc-lock.h: Likewise.
+    	* sysdeps/nptl/bits/libc-lockP.h: Likewise.
+    	* sysdeps/nptl/bits/stdio-lock.h: Likewise.
+    	* sysdeps/posix/closedir.c: Likewise.
+    	* sysdeps/posix/opendir.c: Likewise.
+    	* sysdeps/posix/readdir.c: Likewise.
+    	* sysdeps/posix/rewinddir.c: Likewise.
+    	* sysdeps/powerpc/novmx-sigjmp.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/__longjmp.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/bsd-_setjmp.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/fpu/__longjmp.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/fpu/setjmp.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-ppc32.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memcmp.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-ppc32.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memcpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memmove.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memset-ppc32.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/memset.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strlen-ppc32.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strlen.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strncase.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-ppc32.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strncmp.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/strnlen.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/wcschr.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy.c: Likewise.
+    	* sysdeps/powerpc/powerpc32/power6/memset.S: Likewise.
+    	* sysdeps/powerpc/powerpc32/setjmp.S: Likewise.
+    	* sysdeps/powerpc/powerpc64/__longjmp.S: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/bzero.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memcmp.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memcpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memmove-ppc64.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memmove.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/mempcpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memrchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/memset.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.S: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/stpcpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/stpncpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcat.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strchrnul.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcmp.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.S: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strcspn.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strlen.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strncase.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strncase_l.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strncat.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strncmp.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strncpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strnlen.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strpbrk.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strrchr-ppc64.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strrchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strspn-ppc64.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/strspn.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/wcschr.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/wcscpy.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/multiarch/wordcopy.c: Likewise.
+    	* sysdeps/powerpc/powerpc64/setjmp.S: Likewise.
+    	* sysdeps/s390/s390-32/multiarch/ifunc-resolve.c: Likewise.
+    	* sysdeps/s390/s390-32/multiarch/memcmp.S: Likewise.
+    	* sysdeps/s390/s390-32/multiarch/memcpy.S: Likewise.
+    	* sysdeps/s390/s390-32/multiarch/memset.S: Likewise.
+    	* sysdeps/s390/s390-64/multiarch/ifunc-resolve.c: Likewise.
+    	* sysdeps/s390/s390-64/multiarch/memcmp.S: Likewise.
+    	* sysdeps/s390/s390-64/multiarch/memcpy.S: Likewise.
+    	* sysdeps/s390/s390-64/multiarch/memset.S: Likewise.
+    	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S: Likewise.
+    	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara2.S: Likewise.
+    	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S: Likewise.
+    	* sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: Likewise.
+    	* sysdeps/sparc/sparc64/multiarch/memcpy.S: Likewise.
+    	* sysdeps/sparc/sparc64/multiarch/memset-niagara1.S: Likewise.
+    	* sysdeps/sparc/sparc64/multiarch/memset-niagara4.S: Likewise.
+    	* sysdeps/sparc/sparc64/multiarch/memset.S: Likewise.
+    	* sysdeps/unix/alpha/sysdep.S: Likewise.
+    	* sysdeps/unix/alpha/sysdep.h: Likewise.
+    	* sysdeps/unix/make-syscalls.sh: Likewise.
+    	* sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/aarch64/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/alpha/vfork.S: Likewise.
+    	* sysdeps/unix/sysv/linux/arm/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/getpid.c: Likewise.
+    	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
+    	* sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise.
+    	* sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/lowlevellock-futex.h: Likewise.
+    	* sysdeps/unix/sysv/linux/m68k/bits/m68k-vdso.h: Likewise.
+    	* sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/microblaze/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/not-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/longjmp_chk.c: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-32/vfork.S: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-64/vfork.S: Likewise.
+    	* sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
+    	* sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sh/vfork.S: Likewise.
+    	* sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sparc/sparc64/brk.S: Likewise.
+    	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/tile/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/tile/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/tile/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/tile/waitpid.S: Likewise.
+    	* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
+    	* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
+    	* sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
+    	* sysdeps/wordsize-32/symbol-hacks.h: Likewise.
+    	* sysdeps/x86_64/memcpy.S: Likewise.
+    	* sysdeps/x86_64/memmove.c: Likewise.
+    	* sysdeps/x86_64/memset.S: Likewise.
+    	* sysdeps/x86_64/multiarch/init-arch.h: Likewise.
+    	* sysdeps/x86_64/multiarch/memcmp-sse4.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memcmp-ssse3.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memcmp.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memcpy-ssse3.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memcpy.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memmove.c: Likewise.
+    	* sysdeps/x86_64/multiarch/mempcpy.S: Likewise.
+    	* sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memset-avx2.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memset.S: Likewise.
+    	* sysdeps/x86_64/multiarch/memset_chk.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strcat-sse2-unaligned.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strcat-ssse3.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strcat.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strchr-sse2-no-bsf.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strchr.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strcmp-ssse3.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strcmp.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strcpy-ssse3.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strcpy.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strcspn.S: Likewise.
+    	* sysdeps/x86_64/multiarch/strspn.S: Likewise.
+    	* sysdeps/x86_64/multiarch/wcscpy-c.c: Likewise.
+    	* sysdeps/x86_64/multiarch/wcscpy-ssse3.S: Likewise.
+    	* sysdeps/x86_64/multiarch/wcscpy.S: Likewise.
+    	* sysdeps/x86_64/multiarch/wmemcmp-c.c: Likewise.
+    	* sysdeps/x86_64/multiarch/wmemcmp.S: Likewise.
+    	* sysdeps/x86_64/strcmp.S: Likewise.
+
+Index: glibc-2.17-c758a686/bits/stdio-lock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/bits/stdio-lock.h
++++ glibc-2.17-c758a686/bits/stdio-lock.h
+@@ -44,7 +44,7 @@ __libc_lock_define_recursive (typedef, _
+ #define _IO_cleanup_region_end(_doit) \
+   __libc_cleanup_region_end (_doit)
+ 
+-#if defined _LIBC && !defined NOT_IN_libc
++#if defined _LIBC && IS_IN (libc)
+ # define _IO_acquire_lock(_fp) \
+   _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp));      \
+   _IO_flockfile (_fp)
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -99,7 +99,6 @@ install-others += $(inst_auditdir)/sotru
+ install-bin-script += sotruss
+ generated += sotruss
+ libof-sotruss-lib = extramodules
+-CPPFLAGS-sotruss-lib = -DNOT_IN_libc
+ $(objpfx)sotruss-lib.so: $(objpfx)sotruss-lib.os
+ 	$(build-module-asneeded)
+ $(objpfx)sotruss-lib.so: $(common-objpfx)libc.so $(objpfx)ld.so \
+@@ -437,15 +436,12 @@ $(objpfx)pldd: $(pldd-modules:%=$(objpfx
+ 
+ SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
+ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
+-		    -D'SLIBDIR="$(slibdir)"' -DNOT_IN_libc
++		    -D'SLIBDIR="$(slibdir)"'
+ libof-ldconfig = ldconfig
+ CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
+ CFLAGS-cache.c = $(SYSCONF-FLAGS)
+ CFLAGS-rtld.c = $(SYSCONF-FLAGS)
+ 
+-CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
+-		     -DNOT_IN_libc=1)
+-
+ # Disable any optimization which might result in function calls during early
+ # dynamic loader startup. We disable -ftree-loop-distribute-patterns which
+ # might convert code into calls to functions like memcpy or memset when the PLT
+Index: glibc-2.17-c758a686/elf/rtld-Rules
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/rtld-Rules
++++ glibc-2.17-c758a686/elf/rtld-Rules
+@@ -128,12 +128,10 @@ ifdef rtld-depfiles
+ -include $(rtld-depfiles)
+ endif
+ 
++# This here is the whole point of all the shenanigans.
+ # Set libof-* for each routine.
+ cpp-srcs-left := $(rtld-modules:%.os=%)
+ lib := rtld
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ 
+-# This here is the whole point of all the shenanigans.
+-rtld-CPPFLAGS := -DNOT_IN_libc=1
+-
+ endif
+Index: glibc-2.17-c758a686/extra-lib.mk
+===================================================================
+--- glibc-2.17-c758a686.orig/extra-lib.mk
++++ glibc-2.17-c758a686/extra-lib.mk
+@@ -100,5 +100,3 @@ cpp-srcs-left := $($(lib)-routines) $($(
+ ifneq (,$(cpp-srcs-left))
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ endif
+-
+-CPPFLAGS-$(lib) := -DNOT_IN_libc=1
+Index: glibc-2.17-c758a686/extra-modules.mk
+===================================================================
+--- glibc-2.17-c758a686.orig/extra-modules.mk
++++ glibc-2.17-c758a686/extra-modules.mk
+@@ -7,4 +7,3 @@ module := $(firstword $(extra-modules-le
+ extra-modules-left := $(filter-out $(module),$(extra-modules-left))
+ 
+ libof-$(notdir $(module)) := extramodules
+-CPPFLAGS-$(module).c += -DNOT_IN_libc
+Index: glibc-2.17-c758a686/iconv/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/iconv/Makefile
++++ glibc-2.17-c758a686/iconv/Makefile
+@@ -53,8 +53,6 @@ CFLAGS-gconv_cache.c += -DGCONV_DIR='"$(
+ CFLAGS-gconv_conf.c = -DGCONV_PATH='"$(gconvdir)"'
+ CFLAGS-iconvconfig.c = -DGCONV_PATH='"$(gconvdir)"' -DGCONV_DIR='"$(gconvdir)"'
+ 
+-CPPFLAGS-iconvprogs = -DNOT_IN_libc
+-
+ # Set libof-* for each routine.
+ cpp-srcs-left := $(iconv_prog-modules) $(iconvconfig-modules)
+ lib := iconvprogs
+Index: glibc-2.17-c758a686/iconvdata/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/iconvdata/Makefile
++++ glibc-2.17-c758a686/iconvdata/Makefile
+@@ -76,9 +76,6 @@ endif
+ test-srcs := tst-table-from tst-table-to
+ endif
+ 
+-# No code here is in libc.so.
+-CPPFLAGS += -DNOT_IN_libc
+-
+ libJIS-routines := jis0201 jis0208 jis0212
+ libKSC-routines := ksc5601
+ libGB-routines := gb2312
+@@ -267,7 +264,9 @@ endif # build-shared = yes
+ include ../Rules
+ 
+ # Set libof-* for each routine.
+-cpp-srcs-left := $(modules) $(generated-modules)
++cpp-srcs-left := $(modules) $(generated-modules) $(libJIS-routines) \
++		 $(libKSC-routines) $(libGB-routines) $(libCNS-routines) \
++		 $(libISOIR165-routines) $(libJISX0213-routines)
+ lib := iconvdata
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ 
+Index: glibc-2.17-c758a686/include/assert.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/assert.h
++++ glibc-2.17-c758a686/include/assert.h
+@@ -20,7 +20,7 @@ extern void __assert_fail_base (const ch
+ 				const char *function)
+      __THROW  __attribute__ ((__noreturn__));
+ 
+-# if !defined NOT_IN_libc || IS_IN (rtld)
++# if IS_IN (libc) || IS_IN (rtld)
+ hidden_proto (__assert_fail)
+ hidden_proto (__assert_perror_fail)
+ # endif
+Index: glibc-2.17-c758a686/include/errno.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/errno.h
++++ glibc-2.17-c758a686/include/errno.h
+@@ -17,19 +17,19 @@
+ #  define errno rtld_errno
+ extern int rtld_errno attribute_hidden;
+ 
+-# elif !defined NOT_IN_libc || IS_IN_LIB
++# elif IS_IN_LIB
+ 
+ #  include <tls.h>
+ 
+ #  undef  errno
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define errno __libc_errno
+ #  else
+ #   define errno errno		/* For #ifndef errno tests.  */
+ #  endif
+ extern __thread int errno attribute_tls_model_ie;
+ 
+-# endif	/* !NOT_IN_libc || IS_IN_LIB */
++# endif	/* IS_IN_LIB */
+ 
+ # define __set_errno(val) (errno = (val))
+ 
+Index: glibc-2.17-c758a686/include/math.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/math.h
++++ glibc-2.17-c758a686/include/math.h
+@@ -6,7 +6,7 @@
+ /* Now define the internal interfaces.  */
+ extern int __matherr (struct exception *__exc);
+ 
+-# if !defined NOT_IN_libc || IS_IN (libm)
++# if IS_IN (libc) || IS_IN (libm)
+ hidden_proto (__finite)
+ hidden_proto (__isinf)
+ hidden_proto (__isnan)
+Index: glibc-2.17-c758a686/include/stdio.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/stdio.h
++++ glibc-2.17-c758a686/include/stdio.h
+@@ -117,7 +117,7 @@ extern const char *const _sys_errlist_in
+ extern int _sys_nerr_internal attribute_hidden;
+ 
+ libc_hidden_proto (__asprintf)
+-#  if !defined NOT_IN_libc
++#  if IS_IN (libc)
+ extern _IO_FILE *_IO_new_fopen (const char*, const char*);
+ #   define fopen(fname, mode) _IO_new_fopen (fname, mode)
+ extern _IO_FILE *_IO_new_fdopen (int, const char*);
+Index: glibc-2.17-c758a686/include/string.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/string.h
++++ glibc-2.17-c758a686/include/string.h
+@@ -57,7 +57,7 @@ extern __typeof (strcasecmp_l) __strcase
+ extern __typeof (strncasecmp_l) __strncasecmp_l;
+ 
+ /* Alternative version which doesn't pollute glibc's namespace.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # undef strndupa
+ # define strndupa(s, n)							      \
+   (__extension__							      \
+Index: glibc-2.17-c758a686/include/sys/stat.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/sys/stat.h
++++ glibc-2.17-c758a686/include/sys/stat.h
+@@ -12,7 +12,7 @@ extern __mode_t __umask (__mode_t __mask
+ extern int __mkdir (const char *__path, __mode_t __mode);
+ extern int __mknod (const char *__path,
+ 		    __mode_t __mode, __dev_t __dev);
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ hidden_proto (__fxstat)
+ hidden_proto (__fxstat64)
+ hidden_proto (__lxstat)
+Index: glibc-2.17-c758a686/include/wctype.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/wctype.h
++++ glibc-2.17-c758a686/include/wctype.h
+@@ -89,7 +89,7 @@ libc_hidden_proto (__towupper_l)
+ 
+ /* The spec says that isdigit must only match the decimal digits.  We
+    can check this without a memory access.  */
+-# ifndef NOT_IN_libc
++# if IS_IN (libc)
+ #  undef iswdigit
+ #  define iswdigit(c) ({ wint_t __c = (c); __c >= L'0' && __c <= L'9'; })
+ #  undef iswdigit_l
+Index: glibc-2.17-c758a686/intl/l10nflist.c
+===================================================================
+--- glibc-2.17-c758a686.orig/intl/l10nflist.c
++++ glibc-2.17-c758a686/intl/l10nflist.c
+@@ -324,7 +324,7 @@ _nl_normalize_codeset (codeset, name_len
+   char *retval;
+   char *wp;
+   size_t cnt;
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+   locale_t locale = newlocale (0, "C", NULL);
+ #else
+ # define locale _nl_C_locobj_ptr
+Index: glibc-2.17-c758a686/libidn/idn-stub.c
+===================================================================
+--- glibc-2.17-c758a686.orig/libidn/idn-stub.c
++++ glibc-2.17-c758a686/libidn/idn-stub.c
+@@ -130,7 +130,7 @@ __idna_to_ascii_lz (const char *input, c
+ }
+ 
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ libc_freeres_fn (unload_libidn)
+ {
+   if (h != NULL && h != (void *) 1l)
+Index: glibc-2.17-c758a686/libio/libioP.h
+===================================================================
+--- glibc-2.17-c758a686.orig/libio/libioP.h
++++ glibc-2.17-c758a686/libio/libioP.h
+@@ -900,7 +900,7 @@ _IO_acquire_lock_clear_flags2_fct (_IO_F
+     _IO_funlockfile (fp);
+ }
+ 
+-#if !defined _IO_MTSAFE_IO && !defined NOT_IN_libc
++#if !defined _IO_MTSAFE_IO && IS_IN (libc)
+ # define _IO_acquire_lock(_fp)						      \
+   do {									      \
+     _IO_FILE *_IO_acquire_lock_file = NULL
+Index: glibc-2.17-c758a686/malloc/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/malloc/Makefile
++++ glibc-2.17-c758a686/malloc/Makefile
+@@ -56,8 +56,6 @@ extra-objs = mcheck-init.o libmcheck.a
+ # Include the cleanup handler.
+ aux := set-freeres thread-freeres
+ 
+-CPPFLAGS-memusagestat = -DNOT_IN_libc
+-
+ # The Perl script to analyze the output of the mtrace functions.
+ ifneq ($(PERL),no)
+ install-bin-script = mtrace
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c
+@@ -18,7 +18,7 @@
+ 
+ #include <pthreadP.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifndef TLS_MULTIPLE_THREADS_IN_TCB
+ /* Variable set to a nonzero value either if more than one thread runs or ran,
+    or if a single-threaded process is trying to cancel itself.  See
+Index: glibc-2.17-c758a686/nptl/pthreadP.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/pthreadP.h
++++ glibc-2.17-c758a686/nptl/pthreadP.h
+@@ -273,7 +273,7 @@ __do_cancel (void)
+ #define CANCEL_RESET(oldtype) \
+   __pthread_disable_asynccancel (oldtype)
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ /* Same as CANCEL_ASYNC, but for use in libc.so.  */
+ # define LIBC_CANCEL_ASYNC() \
+   __libc_enable_asynccancel ()
+Index: glibc-2.17-c758a686/nscd/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nscd/Makefile
++++ glibc-2.17-c758a686/nscd/Makefile
+@@ -79,7 +79,7 @@ CFLAGS-nscd_gethst_r.c = -fexceptions
+ CFLAGS-nscd_getai.c = -fexceptions
+ CFLAGS-nscd_initgroups.c = -fexceptions
+ 
+-CPPFLAGS-nscd += -D_FORTIFY_SOURCE=2 -DNOT_IN_libc
++CPPFLAGS-nscd += -D_FORTIFY_SOURCE=2
+ 
+ ifeq (yesyes,$(have-fpie)$(build-shared))
+ CFLAGS-nscd += $(pie-ccflag)
+Index: glibc-2.17-c758a686/posix/regex_internal.h
+===================================================================
+--- glibc-2.17-c758a686.orig/posix/regex_internal.h
++++ glibc-2.17-c758a686/posix/regex_internal.h
+@@ -385,7 +385,7 @@ typedef struct re_dfa_t re_dfa_t;
+ # endif
+ #endif
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ static reg_errcode_t re_string_realloc_buffers (re_string_t *pstr,
+ 						int new_buf_len)
+      internal_function;
+@@ -735,7 +735,7 @@ re_string_wchar_at (const re_string_t *p
+   return (wint_t) pstr->wcs[idx];
+ }
+ 
+-# ifndef NOT_IN_libc
++# if IS_IN (libc)
+ static int
+ internal_function __attribute ((pure))
+ re_string_elem_size_at (const re_string_t *pstr, int idx)
+Index: glibc-2.17-c758a686/stdlib/isomac.c
+===================================================================
+--- glibc-2.17-c758a686.orig/stdlib/isomac.c
++++ glibc-2.17-c758a686/stdlib/isomac.c
+@@ -176,7 +176,8 @@ static char *macros[] =
+ /* Format string to build command to invoke compiler.  */
+ static const char fmt[] = "\
+ echo \"#include <%s>\" |\
+-%s -E -dM -ansi -pedantic %s -D_LIBC -D_ISOMAC -DNOT_IN_libc -I. \
++%s -E -dM -ansi -pedantic %s -D_LIBC -D_ISOMAC \
++-DIN_MODULE=MODULE_extramodules -I. \
+ -isystem `%s --print-prog-name=include` - 2> /dev/null > %s";
+ 
+ 
+@@ -304,7 +305,7 @@ get_null_defines (void)
+ 	;
+       result[result_len] = xstrndup (start, end - start);
+ 
+-      if (strcmp (result[result_len], "NOT_IN_libc") != 0)
++      if (strcmp (result[result_len], "IN_MODULE") != 0)
+ 	{
+ 	  if (first)
+ 	    {
+Index: glibc-2.17-c758a686/sunrpc/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sunrpc/Makefile
++++ glibc-2.17-c758a686/sunrpc/Makefile
+@@ -168,7 +168,7 @@ $(cross-rpcgen-objs): $(objpfx)cross-%.o
+ $(objpfx)cross-rpcgen: $(cross-rpcgen-objs)
+ 	$(BUILD_CC) $^ $(BUILD_LDFLAGS) -o $@
+ 
+-# This makes sure -DNOT_IN_libc is passed for all these modules.
++# This makes sure -DIN_MODULE is passed for all these modules.
+ cpp-srcs-left := $(rpcgen-objs:.o=.c)
+ lib := nonlib
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+Index: glibc-2.17-c758a686/ports/sysdeps/arm/memmove.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/arm/memmove.S
++++ glibc-2.17-c758a686/ports/sysdeps/arm/memmove.S
+@@ -65,7 +65,7 @@ ENTRY(memmove)
+ 
+ 		subs	ip, r0, r1
+ 		cmphi	r2, ip
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ 		bls	memcpy
+ #else
+ 		bls	HIDDEN_JUMPTARGET(memcpy)
+Index: glibc-2.17-c758a686/sysdeps/generic/_itoa.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/generic/_itoa.h
++++ glibc-2.17-c758a686/sysdeps/generic/_itoa.h
+@@ -46,12 +46,12 @@ extern char *_itoa (unsigned long long i
+ 
+ extern const char _itoa_upper_digits[];
+ extern const char _itoa_lower_digits[];
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ hidden_proto (_itoa_upper_digits)
+ hidden_proto (_itoa_lower_digits)
+ #endif
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ extern char *_itoa_word (_ITOA_WORD_TYPE value, char *buflim,
+ 			 unsigned int base, int upper_case);
+ #else
+Index: glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/generic/symbol-hacks.h
++++ glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h
+@@ -1,6 +1,6 @@
+ /* Some compiler optimizations may transform loops into memset/memmove
+    calls and without proper declaration it may generate PLT calls.  */
+-#if !defined __ASSEMBLER__ && !defined NOT_IN_libc && defined SHARED
++#if !defined __ASSEMBLER__ && IS_IN (libc) && defined SHARED
+ asm ("memmove = __GI_memmove");
+ asm ("memset = __GI_memset");
+ asm ("memcpy = __GI_memcpy");
+Index: glibc-2.17-c758a686/sysdeps/gnu/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/gnu/Makefile
++++ glibc-2.17-c758a686/sysdeps/gnu/Makefile
+@@ -41,7 +41,7 @@ $(objpfx)errlist-compat.c: $(errlist-c)
+ endif
+ 	$(make-target-directory)
+ 	$(AWK) -v maxerr=`\
+-	  $(CC) -S $(CPPFLAGS) $(CFLAGS) -DNOT_IN_libc -DEMIT_ERR_MAX $< -o - \
++	  $(CC) -S $(CPPFLAGS) $(CFLAGS) -DEMIT_ERR_MAX $< -o - \
+ 	  | sed -n 's/^.*@@@[^0-9]*\([0-9]*\)[^0-9]*@@@.*$$/\1/p'` \
+ 	       -f $(..)sysdeps/gnu/errlist-compat.awk \
+ 	       $(wildcard $(sysdirs:=/Versions)) > $@T
+Index: glibc-2.17-c758a686/sysdeps/i386/i586/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i586/memset.S
++++ glibc-2.17-c758a686/sysdeps/i386/i586/memset.S
+@@ -37,7 +37,7 @@
+ #endif
+ 
+         .text
+-#if defined PIC && !defined NOT_IN_libc && !BZERO_P
++#if defined PIC && IS_IN (libc) && !BZERO_P
+ ENTRY (__memset_chk)
+ 	movl	12(%esp), %eax
+ 	cmpl	%eax, 16(%esp)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/memset.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/memset.S
+@@ -38,7 +38,7 @@
+ #endif
+ 
+         .text
+-#if defined PIC && !defined NOT_IN_libc && !BZERO_P
++#if defined PIC && IS_IN (libc) && !BZERO_P
+ ENTRY_CHK (__memset_chk)
+ 	movl	12(%esp), %eax
+ 	cmpl	%eax, 16(%esp)
+@@ -105,7 +105,7 @@ ENTRY (BP_SYM (memset))
+ END (BP_SYM (memset))
+ libc_hidden_builtin_def (memset)
+ 
+-#if defined PIC && !defined NOT_IN_libc && !BZERO_P
++#if defined PIC && IS_IN (libc) && !BZERO_P
+ strong_alias (__memset_chk, __memset_zero_constant_len_parameter)
+ 	.section .gnu.warning.__memset_zero_constant_len_parameter
+ 	.string "memset used with constant zero length parameter; this could be due to transposed parameters"
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/bcopy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/bcopy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/bcopy.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in lib.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(bcopy)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/bzero.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/bzero.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/bzero.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in lib.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(__bzero)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memchr-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memchr-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memchr-sse2.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memchr.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ # define CFI_POP(REG) \
+ 	cfi_adjust_cfa_offset (-4); \
+ 	cfi_restore (REG)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcmp-sse4.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcmp-sse4.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcmp-sse4.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcmp.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in libc. */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(memcmp)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
+@@ -19,7 +19,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if !defined NOT_IN_libc \
++#if IS_IN (libc) \
+     && (defined SHARED \
+ 	|| defined USE_AS_MEMMOVE \
+ 	|| !defined USE_MULTIARCH)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if !defined NOT_IN_libc \
++#if IS_IN (libc) \
+     && (defined SHARED \
+ 	|| defined USE_AS_MEMMOVE \
+ 	|| !defined USE_MULTIARCH)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  In static binaries we need memcpy before the initialization
+    happened.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 	.text
+ ENTRY(memcpy)
+ 	.type	memcpy, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy_chk.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  There are no multiarch memcpy functions for static binaries.
+  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(__memcpy_chk)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memmove.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memmove.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memmove.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in lib.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(memmove)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memmove_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memmove_chk.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memmove_chk.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in lib.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(__memmove_chk)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/mempcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/mempcpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/mempcpy.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  In static binaries we need mempcpy before the initialization
+    happened.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 	.text
+ ENTRY(__mempcpy)
+ 	.type	__mempcpy, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/mempcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/mempcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/mempcpy_chk.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  There are no multiarch mempcpy functions for static binaries.
+  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(__mempcpy_chk)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memrchr-c.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr-c.c
+@@ -1,4 +1,4 @@
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define MEMRCHR  __memrchr_ia32
+ # include <string.h>
+ extern void *__memrchr_ia32 (const void *, int, size_t);
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memrchr-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr-sse2.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ # define CFI_PUSH(REG)	\
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memrchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ # define CFI_POP(REG) \
+ 	cfi_adjust_cfa_offset (-4); \
+ 	cfi_restore (REG)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ #include <sysdep.h>
+ #include "asm-syntax.h"
+@@ -79,7 +79,7 @@
+ #endif
+ 
+ 	.section .text.sse2,"ax",@progbits
+-#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BZERO
++#if defined SHARED && IS_IN (libc) && !defined USE_AS_BZERO
+ ENTRY (__memset_chk_sse2_rep)
+ 	movl	12(%esp), %eax
+ 	cmpl	%eax, 16(%esp)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memset-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset-sse2.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ #include <sysdep.h>
+ #include "asm-syntax.h"
+@@ -79,7 +79,7 @@
+ #endif
+ 
+ 	.section .text.sse2,"ax",@progbits
+-#if defined SHARED && !defined NOT_IN_libc && !defined USE_AS_BZERO
++#if defined SHARED && IS_IN (libc) && !defined USE_AS_BZERO
+ ENTRY (__memset_chk_sse2)
+ 	movl	12(%esp), %eax
+ 	cmpl	%eax, 16(%esp)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memset.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in lib.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(memset)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memset_chk.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset_chk.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in lib.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(__memset_chk)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/rawmemchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/rawmemchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/rawmemchr.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ # define CFI_POP(REG) \
+ 	cfi_adjust_cfa_offset (-4); \
+ 	cfi_restore (REG)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcat-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcat-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcat-sse2.S
+@@ -18,7 +18,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcat-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcat-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcat-ssse3.S
+@@ -18,7 +18,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcat.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcat.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcat.S
+@@ -43,7 +43,7 @@
+ /* Define multiple versions only for the definition in libc.  Don't
+    define multiple versions for strncat in static library since we
+    need strncat before the initialization happened.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # ifdef SHARED
+ 	.text
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strchr-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strchr-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strchr-sse2.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strchr.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(strchr)
+ 	.type	strchr, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcmp-sse4.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcmp-sse4.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcmp-sse4.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ #include <sysdep.h>
+ #include "asm-syntax.h"
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ #include <sysdep.h>
+ #include "asm-syntax.h"
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcmp.S
+@@ -50,7 +50,7 @@
+ /* Define multiple versions only for the definition in libc.  Don't
+    define multiple versions for strncmp in static library since we
+    need strncmp before the initialization happened.  */
+-#if (defined SHARED || !defined USE_AS_STRNCMP) && !defined NOT_IN_libc
++#if (defined SHARED || !defined USE_AS_STRNCMP) && IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(STRCMP)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcpy-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcpy-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcpy-sse2.S
+@@ -18,7 +18,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcpy-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcpy-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcpy-ssse3.S
+@@ -18,7 +18,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # ifndef USE_AS_STRCAT
+ #  include <sysdep.h>
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcpy.S
+@@ -59,7 +59,7 @@
+ /* Define multiple versions only for the definition in libc.  Don't
+    define multiple versions for strncpy in static library since we
+    need strncpy before the initialization happened.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # ifdef SHARED
+ 	.text
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcspn.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcspn.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcspn.S
+@@ -41,7 +41,7 @@
+ /* Define multiple versions only for the definition in libc.  Don't
+    define multiple versions for strpbrk in static library since we
+    need strpbrk before the initialization happened.  */
+-#if (defined SHARED || !defined USE_AS_STRPBRK) && !defined NOT_IN_libc
++#if (defined SHARED || !defined USE_AS_STRPBRK) && IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(STRCSPN)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 
+ #include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strlen-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strlen-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strlen-sse2.S
+@@ -19,7 +19,7 @@
+ 
+ /* for strlen only SHARED version is optimized, for strcat, strncat, strnlen both STATIC and SHARED are optimized */
+ 
+-#if (defined USE_AS_STRNLEN || defined USE_AS_STRCAT || defined SHARED) && !defined NOT_IN_libc
++#if (defined USE_AS_STRNLEN || defined USE_AS_STRCAT || defined SHARED) && IS_IN (libc)
+ 
+ # ifndef USE_AS_STRCAT
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strlen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strlen.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strlen.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in libc and for the
+    DSO.  In static binaries, we need strlen before the initialization
+    happened.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 	.text
+ ENTRY(strlen)
+ 	.type	strlen, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strnlen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strnlen.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strnlen.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(__strnlen)
+ 	.type	__strnlen, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strrchr-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strrchr-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strrchr-sse2.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strrchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strrchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strrchr.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(strrchr)
+ 	.type	strrchr, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strspn.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strspn.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strspn.S
+@@ -26,7 +26,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in libc.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(strspn)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcschr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcschr-c.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcschr-c.c
+@@ -1,6 +1,6 @@
+ #include <wchar.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ #  undef libc_hidden_def
+ #  define libc_hidden_def(name) \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcschr-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcschr-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcschr-sse2.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <sysdep.h>
+ 
+ # define CFI_PUSH(REG)	\
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcschr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcschr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcschr.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(wcschr)
+ 	.type	wcschr, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscmp-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcscmp-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscmp-sse2.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcscmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscmp.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in libc and for the
+    DSO.  In static binaries, we need wcscmp before the initialization
+    happened.  */
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(wcscmp)
+ 	.type	wcscmp, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscpy-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcscpy-c.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscpy-c.c
+@@ -1,4 +1,4 @@
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define wcscpy  __wcscpy_ia32
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscpy-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcscpy-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscpy-ssse3.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <sysdep.h>
+ 
+ # define CFI_PUSH(REG)	\
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcscpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscpy.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in libc. */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(wcscpy)
+ 	.type	wcscpy, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcslen-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcslen-c.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcslen-c.c
+@@ -1,6 +1,6 @@
+ #include <wchar.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define WCSLEN  __wcslen_ia32
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcslen-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcslen-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcslen-sse2.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <sysdep.h>
+ # define STR	4
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcslen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcslen.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcslen.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(__wcslen)
+ 	.type	__wcslen, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcsrchr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcsrchr-c.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcsrchr-c.c
+@@ -1,4 +1,4 @@
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define wcsrchr  __wcsrchr_ia32
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcsrchr-sse2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcsrchr-sse2.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcsrchr-sse2.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <sysdep.h>
+ # define CFI_PUSH(REG)	\
+ 	cfi_adjust_cfa_offset (4);	\
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcsrchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcsrchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcsrchr.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(wcsrchr)
+ 	.type	wcsrchr, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wmemcmp-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wmemcmp-c.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wmemcmp-c.c
+@@ -1,6 +1,6 @@
+ #include <wchar.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define WMEMCMP  __wmemcmp_ia32
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wmemcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wmemcmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wmemcmp.S
+@@ -23,7 +23,7 @@
+ 
+ /* Define multiple versions only for the definition in libc. */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(wmemcmp)
+ 	.type	wmemcmp, @gnu_indirect_function
+Index: glibc-2.17-c758a686/ports/sysdeps/ia64/fpu/libm-symbols.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/ia64/fpu/libm-symbols.h
++++ glibc-2.17-c758a686/ports/sysdeps/ia64/fpu/libm-symbols.h
+@@ -53,6 +53,6 @@
+  ASM_SIZE_DIRECTIVE(__ieee754_##name);			\
+  .type __ieee754_##name, @function
+ 
+-#if defined ASSEMBLER && !defined NOT_IN_libc
++#if defined ASSEMBLER && IS_IN (libc)
+ # define __libm_error_support	HIDDEN_JUMPTARGET(__libm_error_support)
+ #endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/libc-lock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/pthread/bits/libc-lock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/libc-lock.h
+@@ -26,7 +26,7 @@
+ 
+ /* Mutex type.  */
+ #if defined _LIBC || defined _IO_MTSAFE_IO
+-# if (defined NOT_IN_libc && !IS_IN (libpthread)) || !defined _LIBC
++# if (!IS_IN (libc) && !IS_IN (libpthread)) || !defined _LIBC
+ typedef struct { pthread_mutex_t mutex; } __libc_lock_recursive_t;
+ # else
+ typedef struct { int lock; int cnt; void *owner; } __libc_lock_recursive_t;
+@@ -47,7 +47,7 @@ typedef struct __libc_lock_recursive_opa
+ 
+ /* Define an initialized recursive lock variable NAME with storage
+    class CLASS.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
++#if defined _LIBC && (IS_IN (libc) || IS_IN (libpthread))
+ # if LLL_LOCK_INITIALIZER == 0
+ #  define __libc_lock_define_initialized_recursive(CLASS,NAME) \
+   CLASS __libc_lock_recursive_t NAME;
+@@ -65,7 +65,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Initialize a recursive mutex.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
++#if defined _LIBC && (IS_IN (libc) || IS_IN (libpthread))
+ # define __libc_lock_init_recursive(NAME) \
+   ((NAME) = (__libc_lock_recursive_t) _LIBC_LOCK_RECURSIVE_INITIALIZER, 0)
+ #else
+@@ -83,7 +83,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Finalize recursive named lock.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
++#if defined _LIBC && (IS_IN (libc) || IS_IN (libpthread))
+ # define __libc_lock_fini_recursive(NAME) ((void) 0)
+ #else
+ # define __libc_lock_fini_recursive(NAME) \
+@@ -91,7 +91,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Lock the recursive named lock variable.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
++#if defined _LIBC && (IS_IN (libc) || IS_IN (libpthread))
+ # define __libc_lock_lock_recursive(NAME) \
+   do {									      \
+     void *self = THREAD_SELF;						      \
+@@ -108,7 +108,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Try to lock the recursive named lock variable.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
++#if defined _LIBC && (IS_IN (libc) || IS_IN (libpthread))
+ # define __libc_lock_trylock_recursive(NAME) \
+   ({									      \
+     int result = 0;							      \
+@@ -133,7 +133,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Unlock the recursive named lock variable.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
++#if defined _LIBC && (IS_IN (libc) || IS_IN (libpthread))
+ /* We do no error checking here.  */
+ # define __libc_lock_unlock_recursive(NAME) \
+   do {									      \
+Index: glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/libc-lockP.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/pthread/bits/libc-lockP.h
++++ glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/libc-lockP.h
+@@ -35,7 +35,7 @@
+ #include <pthread-functions.h>
+ 
+ /* Mutex type.  */
+-#if defined NOT_IN_libc && !IS_IN (libpthread)
++#if !IS_IN (libc) && !IS_IN (libpthread)
+ typedef pthread_mutex_t __libc_lock_t;
+ #else
+ typedef int __libc_lock_t;
+@@ -69,7 +69,7 @@ typedef pthread_key_t __libc_key_t;
+    initialized locks must be set to one due to the lack of normal
+    atomic operations.) */
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread)
++#if IS_IN (libc) || IS_IN (libpthread)
+ # if LLL_LOCK_INITIALIZER == 0
+ #  define __libc_lock_define_initialized(CLASS,NAME) \
+   CLASS __libc_lock_t NAME;
+@@ -113,7 +113,7 @@ typedef pthread_key_t __libc_key_t;
+ #endif
+ 
+ /* Call thread functions through the function pointer table.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # define PTFAVAIL(NAME) __libc_pthread_functions_init
+ # define __libc_ptf_call(FUNC, ARGS, ELSE) \
+   (__libc_pthread_functions_init ? PTHFCT_CALL (ptr_##FUNC, ARGS) : ELSE)
+@@ -130,13 +130,13 @@ typedef pthread_key_t __libc_key_t;
+ 
+ /* Initialize the named lock variable, leaving it in a consistent, unlocked
+    state.  */
+-#if !defined NOT_IN_libc || IS_IN (libpthread)
++#if IS_IN (libc) || IS_IN (libpthread)
+ # define __libc_lock_init(NAME) ((NAME) = LLL_LOCK_INITIALIZER, 0)
+ #else
+ # define __libc_lock_init(NAME) \
+   __libc_maybe_call (__pthread_mutex_init, (&(NAME), NULL), 0)
+ #endif
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ /* ((NAME) = (__libc_rwlock_t) PTHREAD_RWLOCK_INITIALIZER, 0) is
+    inefficient.  */
+ # define __libc_rwlock_init(NAME) \
+@@ -149,13 +149,13 @@ typedef pthread_key_t __libc_key_t;
+ /* Finalize the named lock variable, which must be locked.  It cannot be
+    used again until __libc_lock_init is called again on it.  This must be
+    called on a lock variable before the containing storage is reused.  */
+-#if !defined NOT_IN_libc || IS_IN (libpthread)
++#if IS_IN (libc) || IS_IN (libpthread)
+ # define __libc_lock_fini(NAME) ((void) 0)
+ #else
+ # define __libc_lock_fini(NAME) \
+   __libc_maybe_call (__pthread_mutex_destroy, (&(NAME)), 0)
+ #endif
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # define __libc_rwlock_fini(NAME) ((void) 0)
+ #else
+ # define __libc_rwlock_fini(NAME) \
+@@ -163,7 +163,7 @@ typedef pthread_key_t __libc_key_t;
+ #endif
+ 
+ /* Lock the named lock variable.  */
+-#if !defined NOT_IN_libc || IS_IN (libpthread)
++#if IS_IN (libc) || IS_IN (libpthread)
+ # ifndef __libc_lock_lock
+ #  define __libc_lock_lock(NAME) \
+   ({ lll_lock (NAME, LLL_PRIVATE); 0; })
+@@ -179,7 +179,7 @@ typedef pthread_key_t __libc_key_t;
+   __libc_ptf_call (__pthread_rwlock_wrlock, (&(NAME)), 0)
+ 
+ /* Try to lock the named lock variable.  */
+-#if !defined NOT_IN_libc || IS_IN (libpthread)
++#if IS_IN (libc) || IS_IN (libpthread)
+ # ifndef __libc_lock_trylock
+ #  define __libc_lock_trylock(NAME) \
+   lll_trylock (NAME)
+@@ -198,7 +198,7 @@ typedef pthread_key_t __libc_key_t;
+   __libc_maybe_call (__pthread_mutex_trylock, (&(NAME).mutex), 0)
+ 
+ /* Unlock the named lock variable.  */
+-#if !defined NOT_IN_libc || IS_IN (libpthread)
++#if IS_IN (libc) || IS_IN (libpthread)
+ # define __libc_lock_unlock(NAME) \
+   lll_unlock (NAME, LLL_PRIVATE)
+ #else
+Index: glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/stdio-lock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/pthread/bits/stdio-lock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/stdio-lock.h
+@@ -84,7 +84,7 @@ typedef struct { int lock; int cnt; void
+ #define _IO_cleanup_region_end(_doit) \
+   __libc_cleanup_region_end (_doit)
+ 
+-#if defined _LIBC && !defined NOT_IN_libc
++#if defined _LIBC && IS_IN (libc)
+ 
+ # ifdef __EXCEPTIONS
+ #  define _IO_acquire_lock(_fp) \
+Index: glibc-2.17-c758a686/sysdeps/posix/closedir.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/posix/closedir.c
++++ glibc-2.17-c758a686/sysdeps/posix/closedir.c
+@@ -44,7 +44,7 @@ __closedir (DIR *dirp)
+ 
+   fd = dirp->fd;
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+   __libc_lock_fini (dirp->lock);
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/posix/opendir.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/posix/opendir.c
++++ glibc-2.17-c758a686/sysdeps/posix/opendir.c
+@@ -223,7 +223,7 @@ __alloc_dir (int fd, bool close_fd, int
+     }
+ 
+   dirp->fd = fd;
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+   __libc_lock_init (dirp->lock);
+ #endif
+   dirp->allocation = allocation;
+Index: glibc-2.17-c758a686/sysdeps/posix/readdir.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/posix/readdir.c
++++ glibc-2.17-c758a686/sysdeps/posix/readdir.c
+@@ -40,7 +40,7 @@ __READDIR (DIR *dirp)
+   DIRENT_TYPE *dp;
+   int saved_errno = errno;
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+   __libc_lock_lock (dirp->lock);
+ #endif
+ 
+@@ -110,7 +110,7 @@ __READDIR (DIR *dirp)
+       /* Skip deleted files.  */
+     } while (dp->d_ino == 0);
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+   __libc_lock_unlock (dirp->lock);
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/posix/rewinddir.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/posix/rewinddir.c
++++ glibc-2.17-c758a686/sysdeps/posix/rewinddir.c
+@@ -26,7 +26,7 @@ void
+ rewinddir (dirp)
+      DIR *dirp;
+ {
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+   __libc_lock_lock (dirp->lock);
+ #endif
+   (void) __lseek (dirp->fd, (off_t) 0, SEEK_SET);
+@@ -34,7 +34,7 @@ rewinddir (dirp)
+   dirp->offset = 0;
+   dirp->size = 0;
+   dirp->errcode = 0;
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+   __libc_lock_unlock (dirp->lock);
+ #endif
+ }
+Index: glibc-2.17-c758a686/sysdeps/powerpc/novmx-sigjmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/novmx-sigjmp.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/novmx-sigjmp.c
+@@ -20,7 +20,7 @@
+ 
+ #include <bits/wordsize.h>
+ #include <shlib-compat.h>
+-#if !defined NOT_IN_libc && defined SHARED
++#if IS_IN (libc) && defined SHARED
+ # if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
+ #  include <stddef.h>
+ #  include <novmxsetjmp.h>
+@@ -41,4 +41,4 @@ __novmx__sigjmp_save (__novmx__sigjmp_bu
+ }
+ 
+ # endif /* SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) */
+-#endif /* !NOT_IN_libc && SHARED  */
++#endif /* IS_IN (libc) && SHARED  */
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/__longjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/__longjmp.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/__longjmp.S
+@@ -19,11 +19,11 @@
+ #include <libc-symbols.h>
+ #include <shlib-compat.h>
+ 
+-#if defined NOT_IN_libc
++#if !IS_IN (libc)
+ /* Build a non-versioned object for rtld-*.  */
+ # include "__longjmp-common.S"
+ 
+-#else /* !NOT_IN_libc */
++#else /* !IS_IN (libc) */
+ strong_alias (__vmx__longjmp, __longjmp);
+ # define __longjmp  __vmx__longjmp
+ # include "__longjmp-common.S"
+@@ -35,4 +35,4 @@ strong_alias (__vmx__longjmp, __longjmp)
+ #  define __longjmp  __novmx__longjmp
+ #  include "__longjmp-common.S"
+ # endif
+-#endif /* !NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-_setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/bsd-_setjmp.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-_setjmp.S
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ #include <bp-sym.h>
+ 
+-#if defined NOT_IN_libc
++#if !IS_IN (libc)
+ /* Build a non-versioned object for rtld-*.  */
+ ENTRY (BP_SYM (_setjmp))
+ 	li r4,0			/* Set second argument to 0.  */
+@@ -55,4 +55,4 @@ ENTRY (BP_SYM (__vmx_setjmp))
+ 	b BP_SYM (__vmx__sigsetjmp@local)
+ END (BP_SYM (__vmx_setjmp))
+ libc_hidden_def (__vmx_setjmp)
+-#endif /* !NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
+@@ -20,11 +20,11 @@
+ #include <rtld-global-offsets.h>
+ #include <shlib-compat.h>
+ 
+-#if defined NOT_IN_libc
++#if !IS_IN (libc)
+ /* Build a non-versioned object for rtld-*.  */
+ # include "__longjmp-common.S"
+ 
+-#else /* !NOT_IN_libc */
++#else /* !IS_IN (libc) */
+ /* Build a versioned object for libc.  */
+ versioned_symbol (libc, __vmx__longjmp, __longjmp, GLIBC_2_3_4);
+ # define __longjmp  __vmx__longjmp
+@@ -38,4 +38,4 @@ compat_symbol (libc, __novmx__longjmp, _
+ #  define __longjmp  __novmx__longjmp
+ #  include "__longjmp-common.S"
+ # endif
+-#endif /* !NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp.S
+@@ -20,11 +20,11 @@
+ #include <rtld-global-offsets.h>
+ #include <shlib-compat.h>
+ 
+-#if defined NOT_IN_libc
++#if !IS_IN (libc)
+ /* Build a non-versioned object for rtld-*.  */
+ # include "setjmp-common.S"
+ 
+-#else /* !NOT_IN_libc */
++#else /* !IS_IN (libc) */
+ /* Build a versioned object for libc.  */
+ versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
+ # define __sigsetjmp __vmx__sigsetjmp
+@@ -41,4 +41,4 @@ compat_symbol (libc, __novmx__sigsetjmp,
+ #  define __sigjmp_save __novmx__sigjmp_save
+ #  include "setjmp-common.S"
+ # endif
+-#endif /* !NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/memset.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memset.S
+@@ -230,7 +230,7 @@ L(nzCacheAligned128):
+ 	ori	r1,r1,0
+         stw     rCHR,60(rMEMP3)
+ 	blt	cr6,L(cacheAligned1)
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	lfd	0,-128(rMEMP)
+ #endif
+ 	b	L(nzCacheAligned256)
+@@ -238,7 +238,7 @@ L(nzCacheAligned128):
+ L(nzCacheAligned256):
+ 	cmplwi	cr1,rLEN,256
+ 	addi	rMEMP3,rMEMP,64
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ /* When we are not in libc we should use only GPRs to avoid the FPU lock
+    interrupt.  */
+ 	stw	rCHR,0(rMEMP)
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp.S
+@@ -19,11 +19,11 @@
+ #include <shlib-compat.h>
+ #include <libc-symbols.h>
+ 
+-#if defined NOT_IN_libc
++#if !IS_IN (libc)
+ /* Build a non-versioned object for rtld-*.  */
+ # include "setjmp-common.S"
+ 
+-#else /* !NOT_IN_libc */
++#else /* !IS_IN (libc) */
+ /* Build a versioned object for libc.  */
+ versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
+ # define __sigsetjmp __vmx__sigsetjmp
+@@ -40,4 +40,4 @@ compat_symbol (libc, __novmx__sigsetjmp,
+ #  define __sigjmp_save __novmx__sigjmp_save
+ #  include "setjmp-common.S"
+ # endif
+-#endif /* !NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/__longjmp.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp.S
+@@ -20,11 +20,11 @@
+ #include <rtld-global-offsets.h>
+ #include <shlib-compat.h>
+ 
+-#if defined NOT_IN_libc
++#if !IS_IN (libc)
+ /* Build a non-versioned object for rtld-*.  */
+ # include "__longjmp-common.S"
+ 
+-#else /* !NOT_IN_libc */
++#else /* IS_IN (libc) */
+ strong_alias (__vmx__longjmp, __longjmp)
+ # define __longjmp  __vmx__longjmp
+ # include "__longjmp-common.S"
+@@ -36,4 +36,4 @@ strong_alias (__vmx__longjmp, __longjmp)
+ #  define __longjmp  __novmx__longjmp
+ #  include "__longjmp-common.S"
+ # endif
+-#endif /* !NOT_IN_libc */
++#endif /* IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/bzero.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero.c
+@@ -17,7 +17,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* Define multiple versions only for definition in libc.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <strings.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/memchr.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c
+@@ -22,7 +22,7 @@
+ #define weak_alias(name, aliasname) \
+   extern __typeof (__memcmp_ppc) aliasname \
+     __attribute__ ((weak, alias ("__memcmp_ppc")));
+-#if !defined(NOT_IN_libc) && defined(SHARED)
++#if IS_IN (libc) && defined(SHARED)
+ # undef libc_hidden_builtin_def
+ # define libc_hidden_builtin_def(name) \
+   __hidden_ver1(__memcmp_ppc, __GI_memcmp, __memcmp_ppc);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/memcmp.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp.c
+@@ -17,7 +17,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* Define multiple versions only for definition in libc.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S
+@@ -18,7 +18,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # undef EALIGN
+ # define EALIGN(name, alignt, words)				\
+   .section ".text";						\
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/memcpy.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy.c
+@@ -19,7 +19,7 @@
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  In static binaries we need memcpy before the initialization
+    happened.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ /* Redefine memcpy so that the compiler won't complain about the type
+    mismatch with the IFUNC selector in strong_alias, below.  */
+ # undef memcpy
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/memrchr.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
+@@ -29,7 +29,7 @@ ENTRY (__bzero_ppc)
+ END_GEN_TB (__bzero_ppc,TB_TOCLESS)
+ 
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # undef EALIGN
+ # define EALIGN(name, alignt, words)				\
+   .section ".text";						\
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/memset.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset.c
+@@ -17,7 +17,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* Define multiple versions only for definition in libc.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ /* Redefine memset so that the compiler won't complain about the type
+    mismatch with the IFUNC selector in strong_alias, below.  */
+ # undef memset
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.S
+@@ -18,7 +18,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # undef EALIGN
+ # define EALIGN(name, alignt, words)				\
+   .section ".text";						\
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # define NO_MEMPCPY_STPCPY_REDIRECT
+ # include <string.h>
+ # include <shlib-compat.h>
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # define strcasecmp __strcasecmp_ppc
+ extern __typeof (__strcasecmp) __strcasecmp_ppc attribute_hidden;
+@@ -26,7 +26,7 @@ extern __typeof (__strcasecmp) __strcase
+ #include <string/strcasecmp.c>
+ #undef strcasecmp
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+ 
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # define strcasecmp_l __strcasecmp_l_ppc
+ extern __typeof (__strcasecmp_l) __strcasecmp_l_ppc attribute_hidden;
+@@ -26,7 +26,7 @@ extern __typeof (__strcasecmp_l) __strca
+ #include <string/strcasecmp_l.c>
+ #undef strcasecmp_l
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+ 
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcat.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strcat.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcat.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strchr.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr.c
+@@ -17,7 +17,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* Define multiple versions only for definition in libc.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
+@@ -18,7 +18,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # undef EALIGN
+ # define EALIGN(name, alignt, words)				\
+   .section ".text";						\
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strcmp.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcmp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.S
+@@ -18,7 +18,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # undef EALIGN
+ # define EALIGN(name, alignt, words)				\
+   .section ".text";						\
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S
+@@ -18,7 +18,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # undef ENTRY
+ # define ENTRY(name)						\
+   .section ".text";						\
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strlen.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ /* Redefine strlen so that the compiler won't complain about the type
+    mismatch with the IFUNC selector in strong_alias, below.  */
+ # undef strlen
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strncase.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # define strncasecmp __strncasecmp_ppc
+ extern __typeof (__strncasecmp) __strncasecmp_ppc attribute_hidden;
+@@ -26,7 +26,7 @@ extern __typeof (__strncasecmp) __strnca
+ #include <string/strncase.c>
+ #undef strncasecmp
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+ 
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # define strncasecmp_l __strncasecmp_l_ppc
+ extern __typeof (__strncasecmp_l) __strncasecmp_l_ppc attribute_hidden;
+@@ -26,7 +26,7 @@ extern __typeof (__strncasecmp_l) __strn
+ #include <string/strncase_l.c>
+ #undef strncasecmp_l
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+ 
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
+@@ -17,7 +17,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ #undef EALIGN
+ #define EALIGN(name,alignt,words)				\
+   .section ".text";						\
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strncmp.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp.c
+@@ -17,7 +17,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* Define multiple versions only for definition in libc.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c
+@@ -22,7 +22,7 @@
+ #define weak_alias(name, aliasname) \
+   extern __typeof (__strncpy_ppc) aliasname \
+     __attribute__ ((weak, alias ("__strncpy_ppc")));
+-#if !defined(NOT_IN_libc) && defined(SHARED)
++#if IS_IN (libc) && defined(SHARED)
+ # undef libc_hidden_builtin_def
+ # define libc_hidden_builtin_def(name) \
+   __hidden_ver1(__strncpy_ppc, __GI_strncpy, __strncpy_ppc);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
+@@ -17,7 +17,7 @@
+    <http://www.gnu.org/licenses/ >.  */
+ 
+ /* Define multiple versions only for definition in libc. */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/strnlen.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <string.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/wcschr.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <wchar.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <wchar.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <wchar.h>
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/multiarch/wordcopy.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <stddef.h>
+ # include <memcopy.h>
+ # include <shlib-compat.h>
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp.S
+@@ -20,11 +20,11 @@
+ #include <rtld-global-offsets.h>
+ #include <shlib-compat.h>
+ 
+-#if defined NOT_IN_libc
++#if !IS_IN (libc)
+ /* Build a non-versioned object for rtld-*.  */
+ # include "setjmp-common.S"
+ 
+-#else /* !NOT_IN_libc */
++#else /* !IS_IN (libc) */
+ /* Build a versioned object for libc.  */
+ versioned_symbol (libc, __vmxsetjmp, setjmp, GLIBC_2_3_4)
+ versioned_symbol (libc, __vmx_setjmp, _setjmp, GLIBC_2_3_4)
+@@ -54,4 +54,4 @@ compat_symbol (libc, __novmx__sigsetjmp,
+ #  include "setjmp-common.S"
+ strong_alias (__novmxsetjmp, __novmx__setjmp)
+ # endif
+-#endif /* !NOT_IN_libc */
++#endif /* IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S
+@@ -35,7 +35,7 @@
+ #define XCC xcc
+ #endif
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ 
+ 	.register	%g2,#scratch
+ 	.register	%g3,#scratch
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy-niagara2.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc64/multiarch/memcpy-niagara2.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy-niagara2.S
+@@ -137,7 +137,7 @@
+ 	LOAD(ldd, base + 0x28, %x5); \
+ 	LOAD(ldd, base + 0x30, %x6);
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ 
+ 	.register	%g2,#scratch
+ 	.register	%g3,#scratch
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S
+@@ -46,7 +46,7 @@
+ #define STORE(type,src,addr)	type src, [addr]
+ #define STORE_INIT(src,addr)	stxa src, [addr] STORE_ASI
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ 
+ 	.register	%g2,#scratch
+ 	.register	%g3,#scratch
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
+@@ -30,7 +30,7 @@
+ #define XCC xcc
+ #endif
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ 
+ 	.register	%g2,#scratch
+ 	.register	%g3,#scratch
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc64/multiarch/memcpy.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memcpy.S
+@@ -20,7 +20,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(memcpy)
+ 	.type	memcpy, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memset-niagara1.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc64/multiarch/memset-niagara1.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memset-niagara1.S
+@@ -28,7 +28,7 @@
+ #define XCC xcc
+ #endif
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ 
+ 	.register	%g2,#scratch
+ 
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memset-niagara4.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc64/multiarch/memset-niagara4.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memset-niagara4.S
+@@ -21,7 +21,7 @@
+ 
+ #define ASI_BLK_INIT_QUAD_LDD_P	0xe2
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ 
+ 	.register	%g2, #scratch
+ 	.register	%g3, #scratch
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc64/multiarch/memset.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/multiarch/memset.S
+@@ -20,7 +20,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(memset)
+ 	.type	memset, @gnu_indirect_function
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/alpha/sysdep.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/alpha/sysdep.S
++++ glibc-2.17-c758a686/ports/sysdeps/unix/alpha/sysdep.S
+@@ -29,7 +29,7 @@
+ 	.text
+ #endif
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define SYSCALL_ERROR_ERRNO __libc_errno
+ #else
+ # define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/sysdeps/unix/make-syscalls.sh
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/make-syscalls.sh
++++ glibc-2.17-c758a686/sysdeps/unix/make-syscalls.sh
+@@ -100,7 +100,7 @@ emit_weak_aliases()
+       *@@*)
+ 	base=`echo $name | sed 's/@@.*//'`
+ 	ver=`echo $name | sed 's/.*@@//;s/\./_/g'`
+-	echo "	 echo '#ifndef NOT_IN_libc'; \\"
++	echo "	 echo '#if IS_IN (libc)'; \\"
+ 	if test -z "$vcount" ; then
+ 	  source=$strong
+ 	  vcount=1
+@@ -117,7 +117,7 @@ emit_weak_aliases()
+       *@*)
+ 	base=`echo $name | sed 's/@.*//'`
+ 	ver=`echo $name | sed 's/.*@//;s/\./_/g'`
+-	echo "	 echo '#ifndef NOT_IN_libc'; \\"
++	echo "	 echo '#if IS_IN (libc)'; \\"
+ 	if test -z "$vcount" ; then
+ 	  source=$strong
+ 	  vcount=1
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/Makefile
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/Makefile
+@@ -160,7 +160,6 @@ sysdep-rtld-routines += dl-brk dl-sbrk d
+ 			dl-fxstatat64
+ 
+ libof-lddlibc4 = lddlibc4
+-CPPFLAGS-lddlibc4 += -DNOT_IN_libc
+ endif
+ 
+ ifeq ($(subdir),rt)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				\
+@@ -85,7 +85,7 @@ ENTRY (name);								\
+ #  define CENABLE	bl __pthread_enable_asynccancel
+ #  define CDISABLE	bl __pthread_disable_asynccancel
+ #  define __local_multiple_threads __pthread_multiple_threads
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	bl __libc_enable_asynccancel
+ #  define CDISABLE	bl __libc_disable_asynccancel
+ #  define __local_multiple_threads __libc_multiple_threads
+@@ -96,7 +96,7 @@ ENTRY (name);								\
+ #  error Unsupported library
+ # endif
+ 
+-# if IS_IN (libpthread) || !defined NOT_IN_libc
++# if IS_IN (libpthread) || IS_IN (libc)
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
+@@ -93,7 +93,7 @@
+ # define ret_ERRVAL ret
+ 
+ # define SYSCALL_ERROR  .Lsyscall_error
+-# if NOT_IN_libc
++# if !IS_IN (libc)
+ #  if RTLD_PRIVATE_ERRNO
+ #   define SYSCALL_ERROR_HANDLER				\
+ .Lsyscall_error:						\
+@@ -325,7 +325,7 @@
+ 
+ /* Pointer mangling is supported for AArch64.  */
+ #if (IS_IN (rtld)) || \
+-     (!defined SHARED && (!defined NOT_IN_libc \
++     (!defined SHARED && (IS_IN (libc) \
+ 			  || IS_IN (libpthread)))
+ # ifdef __ASSEMBLER__
+ #  define PTR_MANGLE(dst, src, guard, tmp)                                \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h
+@@ -21,7 +21,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* ??? Assumes that nothing comes between PSEUDO and PSEUDO_END
+    besides "ret".  */
+@@ -109,7 +109,7 @@ __LABEL($multi_error)						\
+ #  define __local_enable_asynccancel	__pthread_enable_asynccancel
+ #  define __local_disable_asynccancel	__pthread_disable_asynccancel
+ #  define __local_multiple_threads	__pthread_multiple_threads
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define __local_enable_asynccancel	__libc_enable_asynccancel
+ #  define __local_disable_asynccancel	__libc_disable_asynccancel
+ #  define __local_multiple_threads	__libc_multiple_threads
+@@ -128,7 +128,7 @@ __LABEL($multi_error)						\
+ #  define CDISABLE	jsr ra, __local_disable_asynccancel; ldgp ra, 0(gp)
+ # endif
+ 
+-# if IS_IN (libpthread) || !defined NOT_IN_libc
++# if IS_IN (libpthread) || IS_IN (libc)
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+@@ -21,7 +21,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* NOTE: We do mark syscalls with unwind annotations, for the benefit of
+    cancellation; but they're really only accurate at the point of the
+@@ -190,7 +190,7 @@
+ #  define CENABLE	bl PLTJMP(__pthread_enable_asynccancel)
+ #  define CDISABLE	bl PLTJMP(__pthread_disable_asynccancel)
+ #  define __local_multiple_threads __pthread_multiple_threads
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	bl PLTJMP(__libc_enable_asynccancel)
+ #  define CDISABLE	bl PLTJMP(__libc_disable_asynccancel)
+ #  define __local_multiple_threads __libc_multiple_threads
+@@ -201,7 +201,7 @@
+ #  error Unsupported library
+ # endif
+ 
+-# if IS_IN (libpthread) || !defined NOT_IN_libc
++# if IS_IN (libpthread) || IS_IN (libc)
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
+@@ -104,7 +104,7 @@
+ 
+ #define ret_ERRVAL PSEUDO_RET_NOERRNO
+ 
+-#if NOT_IN_libc
++#if !IS_IN (libc)
+ # define SYSCALL_ERROR __local_syscall_error
+ # if RTLD_PRIVATE_ERRNO
+ #  define SYSCALL_ERROR_HANDLER					\
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/getpid.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/getpid.c
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/getpid.c
+@@ -21,7 +21,7 @@
+ #include <sysdep.h>
+ 
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ static inline __attribute__((always_inline)) pid_t really_getpid (pid_t oldval);
+ 
+ static inline __attribute__((always_inline)) pid_t
+@@ -48,7 +48,7 @@ really_getpid (pid_t oldval)
+ pid_t
+ __getpid (void)
+ {
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+   INTERNAL_SYSCALL_DECL (err);
+   pid_t result = INTERNAL_SYSCALL (getpid, err, 0);
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
+@@ -56,7 +56,7 @@
+ /* Initialize locks to zero.  */
+ #define LLL_MUTEX_LOCK_INITIALIZER (0)
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # ifndef NO_ERROR
+ #  define NO_ERROR -0x1000
+@@ -216,7 +216,7 @@ L(pre_end):						ASM_LINE_SEP	\
+ #   define CDISABLE .import __pthread_disable_asynccancel,code ASM_LINE_SEP \
+ 			bl __pthread_disable_asynccancel,%r2 ASM_LINE_SEP
+ #  endif
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  ifdef PIC
+ #   define CENABLE .import __libc_enable_asynccancel,code ASM_LINE_SEP \
+ 			bl __libc_enable_asynccancel,%r2 ASM_LINE_SEP
+@@ -246,7 +246,7 @@ L(pre_end):						ASM_LINE_SEP	\
+ 
+ # if IS_IN (libpthread)
+ #  define __local_multiple_threads __pthread_multiple_threads
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define __local_multiple_threads __libc_multiple_threads
+ # elif IS_IN (librt)
+ #  define __local_multiple_threads __librt_multiple_threads
+@@ -271,7 +271,7 @@ L(pre_end):						ASM_LINE_SEP	\
+ # define NO_CANCELLATION 1
+ 
+ #endif
+-/* !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt) */
++/* IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt) */
+ 
+ #ifndef __ASSEMBLER__
+ # define RTLD_SINGLE_THREAD_P \
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
+@@ -115,7 +115,7 @@ __lll_lock_wait_private:
+ 	cfi_endproc
+ 	.size	__lll_lock_wait_private,.-__lll_lock_wait_private
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ 	.globl	__lll_lock_wait
+ 	.type	__lll_lock_wait,@function
+ 	.hidden	__lll_lock_wait
+@@ -361,7 +361,7 @@ __lll_unlock_wake_private:
+ 	cfi_endproc
+ 	.size	__lll_unlock_wake_private,.-__lll_unlock_wake_private
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ 	.globl	__lll_unlock_wake
+ 	.type	__lll_unlock_wake,@function
+ 	.hidden	__lll_unlock_wake
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
+@@ -71,7 +71,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+@@ -245,7 +245,7 @@ LLL_STUB_UNWIND_INFO_END
+    value is zero.  In case the operation failed, the cmpxchg instruction
+    has loaded the current value of the memory work which is guaranteed
+    to be nonzero.  */
+-#if defined NOT_IN_libc || defined UP
++#if !IS_IN (libc) || defined UP
+ # define __lll_trylock_asm LOCK_INSTR "cmpxchgl %2, %1"
+ #else
+ # define __lll_trylock_asm "cmpl $0, %%gs:%P5\n\t" \
+@@ -283,7 +283,7 @@ LLL_STUB_UNWIND_INFO_END
+ 		       : "memory");					      \
+      ret; })
+ 
+-#if defined NOT_IN_libc || defined UP
++#if !IS_IN (libc) || defined UP
+ # define __lll_lock_asm_start LOCK_INSTR "cmpxchgl %1, %2\n\t"
+ #else
+ # define __lll_lock_asm_start "cmpl $0, %%gs:%P6\n\t"			      \
+@@ -452,7 +452,7 @@ LLL_STUB_UNWIND_INFO_END
+ 		       : "memory");					      \
+      result; })
+ 
+-#if defined NOT_IN_libc || defined UP
++#if !IS_IN (libc) || defined UP
+ # define __lll_unlock_asm LOCK_INSTR "subl $1, %0\n\t"
+ #else
+ # define __lll_unlock_asm "cmpl $0, %%gs:%P3\n\t"			      \
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -111,7 +111,7 @@
+ # if IS_IN (libpthread)
+ #  define CENABLE	call __pthread_enable_asynccancel;
+ #  define CDISABLE	call __pthread_disable_asynccancel
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	call __libc_enable_asynccancel;
+ #  define CDISABLE	call __libc_disable_asynccancel
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/i386/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/sysdep.h
+@@ -36,7 +36,7 @@
+ #define SYS_ify(syscall_name)	__NR_##syscall_name
+ 
+ #if defined USE_DL_SYSINFO \
+-    && (!defined NOT_IN_libc || IS_IN (libpthread))
++    && (IS_IN (libc) || IS_IN (libpthread))
+ # define I386_USE_SYSENTER	1
+ #else
+ # undef I386_USE_SYSENTER
+@@ -117,7 +117,7 @@
+ 
+ # elif defined _LIBC_REENTRANT
+ 
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h
+@@ -22,11 +22,11 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ 
+-# ifndef NOT_IN_libc
++# if IS_IN (libc)
+ #  define SYSDEP_CANCEL_ERRNO __libc_errno
+ # else
+ #  define SYSDEP_CANCEL_ERRNO errno
+@@ -163,7 +163,7 @@ __GC_##name:								      \
+ # if IS_IN (libpthread)
+ #  define CENABLE	br.call.sptk.many b0 = __pthread_enable_asynccancel
+ #  define CDISABLE	br.call.sptk.many b0 = __pthread_disable_asynccancel
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	br.call.sptk.many b0 = __libc_enable_asynccancel
+ #  define CDISABLE	br.call.sptk.many b0 = __libc_disable_asynccancel
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/sysdep.S
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.S
+@@ -34,7 +34,7 @@ ENTRY(__syscall_error)
+ 	st4	[r2]=r8
+ 	mov	r8=-1
+ #else
+-# ifndef NOT_IN_libc
++# if IS_IN (libc)
+ #  define SYSCALL_ERROR_ERRNO __libc_errno
+ # else
+ #  define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
+@@ -61,7 +61,7 @@
+ #endif
+ 
+ #if defined USE_DL_SYSINFO \
+-	&& (!defined NOT_IN_libc \
++	&& (IS_IN (libc) \
+ 	    || IS_IN (libpthread) || IS_IN (librt))
+ # define IA64_USE_NEW_STUB
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/bits/m68k-vdso.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/m68k/bits/m68k-vdso.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/bits/m68k-vdso.h
+@@ -35,7 +35,7 @@
+ 
+ /* We define __rtld_* copies for rtld.
+    We need them visible in libc to initialize.  */
+-#  if IS_IN (rtld) || !defined NOT_IN_libc
++#  if IS_IN (rtld) || IS_IN (libc)
+ extern void *__rtld___vdso_read_tp;
+ extern void *__rtld___vdso_atomic_cmpxchg_32;
+ extern void *__rtld___vdso_atomic_barrier;
+@@ -44,7 +44,7 @@ extern void *__rtld___vdso_atomic_barrie
+ extern void __vdso_read_tp_stub (void);
+ extern void __vdso_atomic_cmpxchg_32_stub (void);
+ extern void __vdso_atomic_barrier_stub (void);
+-#  endif /* IS_IN (rtld) || !NOT_IN_libc */
++#  endif /* IS_IN (rtld) || IS_IN (libc) */
+ 
+ /* RTLD should only use its own copies.  */
+ #  if !IS_IN (rtld)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/m68k/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -103,7 +103,7 @@
+ # if IS_IN (libpthread)
+ #  define CENABLE	PSEUDO_JMP (__pthread_enable_asynccancel)
+ #  define CDISABLE	PSEUDO_JMP (__pthread_disable_asynccancel)
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	PSEUDO_JMP (__libc_enable_asynccancel)
+ #  define CDISABLE	PSEUDO_JMP (__libc_disable_asynccancel)
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/m68k/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/sysdep.h
+@@ -102,7 +102,7 @@ SYSCALL_ERROR_LABEL:							      \
+     move.l %d0, %a0;							      \
+     rts;
+ # elif defined _LIBC_REENTRANT
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
+@@ -27,7 +27,7 @@
+    happen before any instructions.  So we use cfi_same_value instead of
+    cfi_restore.  */
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ #ifdef __PIC__
+ # undef PSEUDO
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/mips/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # ifdef __PIC__
+ #  define PSEUDO_CPLOAD .cpload t9;
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/not-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/not-cancel.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/not-cancel.h
+@@ -27,7 +27,7 @@
+    INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
+ 
+ /* Uncancelable openat.  */
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ extern int __openat_nocancel (int fd, const char *fname, int oflag,
+ 			      mode_t mode) attribute_hidden;
+ extern int __openat64_nocancel (int fd, const char *fname, int oflag,
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
+@@ -23,7 +23,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				\
+@@ -84,7 +84,7 @@
+ # if IS_IN (libpthread)
+ #  define CENABLE	bl __pthread_enable_asynccancel@local
+ #  define CDISABLE	bl __pthread_disable_asynccancel@local
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	bl __libc_enable_asynccancel@local
+ #  define CDISABLE	bl __libc_disable_asynccancel@local
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+@@ -23,7 +23,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # ifdef HAVE_ASM_GLOBAL_DOT_NAME
+ #  define DASHDASHPFX(str) .__##str
+@@ -107,7 +107,7 @@
+ #   define CENABLE	bl JUMPTARGET(__pthread_enable_asynccancel); nop
+ #   define CDISABLE	bl JUMPTARGET(__pthread_disable_asynccancel); nop
+ #  endif
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  ifdef SHARED
+ #   define CENABLE	bl JUMPTARGET(__libc_enable_asynccancel)
+ #   define CDISABLE	bl JUMPTARGET(__libc_disable_asynccancel)
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
+@@ -51,7 +51,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -78,7 +78,7 @@ L(pseudo_end):
+ # if IS_IN (libpthread)
+ #  define CENABLE	__pthread_enable_asynccancel
+ #  define CDISABLE	__pthread_disable_asynccancel
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	__libc_enable_asynccancel
+ #  define CDISABLE	__libc_disable_asynccancel
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S
+@@ -31,7 +31,7 @@
+ 	.text
+ ENTRY(__syscall_error)
+ #ifndef PIC
+-# ifndef NOT_IN_libc
++# if IS_IN (libc)
+ #  define SYSCALL_ERROR_ERRNO __libc_errno
+ # else
+ #  define SYSCALL_ERROR_ERRNO errno
+@@ -54,7 +54,7 @@ ENTRY(__syscall_error)
+ 	br	%r14
+ 1:	.long	rtld_errno - 0b
+ # else
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+@@ -106,7 +106,7 @@
+     br    %r14;								      \
+ 2:  .long rtld_errno-1b
+ # elif defined _LIBC_REENTRANT
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -73,7 +73,7 @@ L(pseudo_end):
+ #  define CENABLE	__pthread_enable_asynccancel
+ #  define CDISABLE	__pthread_disable_asynccancel
+ #  define __local_multiple_threads	__pthread_multiple_threads
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	__libc_enable_asynccancel
+ #  define CDISABLE	__libc_disable_asynccancel
+ #  define __local_multiple_threads	__libc_multiple_threads
+@@ -111,7 +111,7 @@ L(pseudo_end):
+ #define LR7_6		lg %r7,56+160(%r15); \
+ 			cfi_restore (%r7);
+ 
+-# if IS_IN (libpthread) || !defined NOT_IN_libc
++# if IS_IN (libpthread) || IS_IN (libc)
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P \
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S
+@@ -32,7 +32,7 @@
+ .text
+ ENTRY(__syscall_error)
+ #ifndef PIC
+-# ifndef NOT_IN_libc
++# if IS_IN (libc)
+ #  define SYSCALL_ERROR_ERRNO __libc_errno
+ # else
+ #  define SYSCALL_ERROR_ERRNO errno
+@@ -55,7 +55,7 @@ ENTRY(__syscall_error)
+ 	lghi	%r2,-1
+ 	br	%r14
+ # else
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+@@ -114,7 +114,7 @@
+     lghi  %r2,-1;							      \
+     br    %r14
+ # elif defined _LIBC_REENTRANT
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
+@@ -172,7 +172,7 @@ __lll_lock_wait_private:
+ 	cfi_endproc
+ 	.size	__lll_lock_wait_private,.-__lll_lock_wait_private
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ 	.globl	__lll_lock_wait
+ 	.type	__lll_lock_wait,@function
+ 	.hidden	__lll_lock_wait
+@@ -454,7 +454,7 @@ __lll_unlock_wake_private:
+ 	cfi_endproc
+ 	.size	__lll_unlock_wake_private,.-__lll_unlock_wake_private
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ 	.globl	__lll_unlock_wake
+ 	.type	__lll_unlock_wake,@function
+ 	.hidden	__lll_unlock_wake
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED     FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
+@@ -21,7 +21,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # define _IMM12 #-12
+ # define _IMM16 #-16
+@@ -108,7 +108,7 @@
+ # if IS_IN (libpthread)
+ #  define __local_enable_asynccancel	__pthread_enable_asynccancel
+ #  define __local_disable_asynccancel	__pthread_disable_asynccancel
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define __local_enable_asynccancel	__libc_enable_asynccancel
+ #  define __local_disable_asynccancel	__libc_disable_asynccancel
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sh/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sh/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sh/sysdep.h
+@@ -116,7 +116,7 @@
+ 
+ # elif defined _LIBC_REENTRANT
+ 
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
+@@ -56,7 +56,7 @@ extern void __cpu_relax (void);
+ #define BUSY_WAIT_NOP	__cpu_relax ()
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)	\
+@@ -71,7 +71,7 @@ __##syscall_name##_nocancel:			\
+ # if IS_IN (libpthread)
+ #  define CENABLE	call __pthread_enable_asynccancel
+ #  define CDISABLE	call __pthread_disable_asynccancel
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	call __libc_enable_asynccancel
+ #  define CDISABLE	call __libc_disable_asynccancel
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
+@@ -80,7 +80,7 @@ ENTRY(name);					\
+ 	 mov	-1, %o0;
+ # elif defined _LIBC_REENTRANT
+ 
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc64/brk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sparc/sparc64/brk.S
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc64/brk.S
+@@ -89,7 +89,7 @@ ENTRY (__brk)
+ #endif
+ 	st	%o0, [%g1]
+ #else
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	call	HIDDEN_JUMPTARGET(__errno_location)
+ #else
+ 	call	__errno_location
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)	\
+@@ -69,7 +69,7 @@ __##syscall_name##_nocancel:			\
+ # if IS_IN (libpthread)
+ #  define CENABLE	call __pthread_enable_asynccancel
+ #  define CDISABLE	call __pthread_disable_asynccancel
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	call __libc_enable_asynccancel
+ #  define CDISABLE	call __libc_disable_asynccancel
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+@@ -90,7 +90,7 @@ ENTRY(name);					\
+ 	 mov	-1, %o0;
+ # elif defined _LIBC_REENTRANT
+ 
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* Allow hacking in some extra code if desired. */
+ #ifndef PSEUDO_EXTRA
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/sysdep.h
+@@ -45,7 +45,7 @@
+ #ifndef PIC
+ /* For static code, on error jump to __syscall_error directly. */
+ # define SYSCALL_ERROR_NAME __syscall_error
+-#elif !defined NOT_IN_libc || IS_IN (libpthread)
++#elif IS_IN (libc) || IS_IN (libpthread)
+ /* Use the internal name for libc/libpthread shared objects. */
+ # define SYSCALL_ERROR_NAME __GI___syscall_error
+ #else
+@@ -205,7 +205,7 @@
+ #endif /* not __ASSEMBLER__ */
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && IS_IN (rtld)
++#if !IS_IN (libc) && IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S
+@@ -1,7 +1,7 @@
+ /*
+ extern pid_t __waitpid_nocancel (pid_t, int *, int) attribute_hidden;
+ */
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* Call __NR_wait4, providing fourth argument (struct rusage *) as NULL. */
+ #define PSEUDO_EXTRA move r3, zero;
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+@@ -108,7 +108,7 @@ __lll_lock_wait_private:
+ 	cfi_endproc
+ 	.size	__lll_lock_wait_private,.-__lll_lock_wait_private
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ 	.globl	__lll_lock_wait
+ 	.type	__lll_lock_wait,@function
+ 	.hidden	__lll_lock_wait
+@@ -348,7 +348,7 @@ __lll_unlock_wake_private:
+ 	cfi_endproc
+ 	.size	__lll_unlock_wake_private,.-__lll_unlock_wake_private
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ 	.globl	__lll_unlock_wake
+ 	.type	__lll_unlock_wake,@function
+ 	.hidden	__lll_unlock_wake
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+@@ -72,7 +72,7 @@
+ 
+ #ifndef __ASSEMBLER__
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+@@ -243,7 +243,7 @@ LLL_STUB_UNWIND_INFO_END
+    value is zero.  In case the operation failed, the cmpxchg instruction
+    has loaded the current value of the memory work which is guaranteed
+    to be nonzero.  */
+-#if defined NOT_IN_libc || defined UP
++#if !IS_IN (libc) || defined UP
+ # define __lll_trylock_asm LOCK_INSTR "cmpxchgl %2, %1"
+ #else
+ # define __lll_trylock_asm "cmpl $0, __libc_multiple_threads(%%rip)\n\t"      \
+@@ -280,7 +280,7 @@ LLL_STUB_UNWIND_INFO_END
+ 		       : "memory");					      \
+      ret; })
+ 
+-#if defined NOT_IN_libc || defined UP
++#if !IS_IN (libc) || defined UP
+ # define __lll_lock_asm_start LOCK_INSTR "cmpxchgl %4, %2\n\t"		      \
+ 			      "jnz 1f\n\t"
+ #else
+@@ -450,7 +450,7 @@ LLL_STUB_UNWIND_INFO_END
+ 		       : "memory", "cx", "cc", "r10", "r11");		      \
+      result; })
+ 
+-#if defined NOT_IN_libc || defined UP
++#if !IS_IN (libc) || defined UP
+ # define __lll_unlock_asm_start LOCK_INSTR "decl %0\n\t"		      \
+ 				"jne 1f\n\t"
+ #else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* The code to disable cancellation depends on the fact that the called
+    functions are special.  They don't modify registers other than %rax
+@@ -63,7 +63,7 @@
+ #  define CENABLE	call __pthread_enable_asynccancel;
+ #  define CDISABLE	call __pthread_disable_asynccancel;
+ #  define __local_multiple_threads __pthread_multiple_threads
+-# elif !defined NOT_IN_libc
++# elif IS_IN (libc)
+ #  define CENABLE	call __libc_enable_asynccancel;
+ #  define CDISABLE	call __libc_disable_asynccancel;
+ #  define __local_multiple_threads __libc_multiple_threads
+@@ -74,7 +74,7 @@
+ #  error Unsupported library
+ # endif
+ 
+-# if IS_IN (libpthread) || !defined NOT_IN_libc
++# if IS_IN (libpthread) || IS_IN (libc)
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P \
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/x86_64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+@@ -117,7 +117,7 @@
+   neg %eax;					\
+   movl %eax, (%rcx)
+ # else
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define SYSCALL_ERROR_ERRNO __libc_errno
+ #  else
+ #   define SYSCALL_ERROR_ERRNO errno
+Index: glibc-2.17-c758a686/sysdeps/wordsize-32/symbol-hacks.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/wordsize-32/symbol-hacks.h
++++ glibc-2.17-c758a686/sysdeps/wordsize-32/symbol-hacks.h
+@@ -23,7 +23,7 @@
+    therefore we get PLTs.  Unnecessarily so.  Changing gcc is a big
+    task which might not be worth it so we play tricks with the
+    assembler.  */
+-#if !defined __ASSEMBLER__ && !defined in_divdi3_c && !defined NOT_IN_libc && defined SHARED
++#if !defined __ASSEMBLER__ && !defined in_divdi3_c && IS_IN (libc) && defined SHARED
+ asm ("__divdi3 = __divdi3_internal");
+ asm ("__udivdi3 = __udivdi3_internal");
+ asm ("__moddi3 = __moddi3_internal");
+Index: glibc-2.17-c758a686/sysdeps/x86_64/memcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/memcpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/memcpy.S
+@@ -30,7 +30,7 @@
+ #  define RETVAL	(0)
+ #else
+ #  define RETVAL	(-8)
+-#  if defined SHARED && !defined USE_MULTIARCH && !defined NOT_IN_libc
++#  if defined SHARED && !defined USE_MULTIARCH && IS_IN (libc)
+ #    define memcpy	__memcpy
+ #    undef libc_hidden_builtin_def
+ #    define libc_hidden_builtin_def(name) \
+@@ -44,7 +44,7 @@
+ 
+         .text
+ 
+-#if defined PIC && !defined NOT_IN_libc
++#if defined PIC && IS_IN (libc)
+ ENTRY_CHK (__memcpy_chk)
+ 
+ 	cmpq	%rdx, %rcx
+@@ -253,14 +253,14 @@ L(32after):
+ /* Handle blocks smaller than 1/2 L1. */
+ 
+ L(fasttry):				/* first 1/2 L1 */
+-#ifndef NOT_IN_libc			/* only up to this algorithm outside of libc.so */
++#if IS_IN (libc)			/* only up to this algorithm outside of libc.so */
+ 	mov	__x86_64_data_cache_size_half(%rip), %R11_LP
+ 	cmpq	%rdx, %r11		/* calculate the smaller of */
+ 	cmovaq	%rdx, %r11		/* remaining bytes and 1/2 L1 */
+ #endif
+ 
+ L(fast):				/* good ol' MOVS */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	movq	%r11, %rcx
+ 	andq	$-8, %r11
+ #else
+@@ -275,7 +275,7 @@ L(fast):				/* good ol' MOVS */
+ 	.p2align 4,, 4
+ 
+ L(fastskip):
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	subq	%r11, %rdx		/* check for more */
+ 	testq	$-8, %rdx
+ 	jnz	L(fastafter)
+@@ -294,7 +294,7 @@ L(fastskip):
+ #endif
+ 	retq				/* exit */
+ 
+-#ifndef NOT_IN_libc			/* none of the algorithms below for RTLD */
++#if IS_IN (libc)			/* none of the algorithms below for RTLD */
+ 
+ 	.p2align 4
+ 
+@@ -570,13 +570,13 @@ L(NTskip):
+ #endif
+ 	retq				/* exit */
+ 
+-#endif /* !NOT_IN_libc */
++#endif /* IS_IN (libc) */
+ 
+ END(memcpy)
+ 
+ #ifndef USE_AS_MEMPCPY
+ libc_hidden_builtin_def (memcpy)
+-# if defined SHARED && !defined USE_MULTIARCH && !defined NOT_IN_libc
++# if defined SHARED && !defined USE_MULTIARCH && IS_IN (libc)
+ #  undef memcpy
+ #  include <shlib-compat.h>
+ versioned_symbol (libc, __memcpy, memcpy, GLIBC_2_14);
+Index: glibc-2.17-c758a686/sysdeps/x86_64/memmove.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/memmove.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/memmove.c
+@@ -17,7 +17,7 @@
+ 
+ #include "string/memmove.c"
+ 
+-#if !defined memmove && !defined NOT_IN_libc
++#if !defined memmove && IS_IN (libc)
+ #include <shlib-compat.h>
+ 
+ #if SHLIB_COMPAT (libc, GLIBC_2_2_5, GLIBC_2_14)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/memset.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/memset.S
+@@ -23,7 +23,7 @@
+ #define __STOS_UPPER_BOUNDARY	$65536
+ 
+ 	.text
+-#if !defined NOT_IN_libc && !defined USE_MULTIARCH
++#if IS_IN (libc) && !defined USE_MULTIARCH
+ ENTRY(__bzero)
+ 	mov	%rsi,%rdx	/* Adjust parameter.  */
+ 	xorl	%esi,%esi	/* Fill with 0s.  */
+@@ -32,7 +32,7 @@ END(__bzero)
+ weak_alias (__bzero, bzero)
+ #endif
+ 
+-#if defined PIC && !defined NOT_IN_libc
++#if defined PIC && IS_IN (libc)
+ ENTRY_CHK (__memset_chk)
+ 	cmpq	%rdx, %rcx
+ 	jb	HIDDEN_JUMPTARGET (__chk_fail)
+@@ -1354,7 +1354,7 @@ L(8byte_nt_move_skip):
+ END (memset)
+ libc_hidden_builtin_def (memset)
+ 
+-#if defined PIC && !defined NOT_IN_libc && !defined USE_MULTIARCH
++#if defined PIC && IS_IN (libc) && !defined USE_MULTIARCH
+ strong_alias (__memset_chk, __memset_zero_constant_len_parameter)
+ 	.section .gnu.warning.__memset_zero_constant_len_parameter
+ 	.string "memset used with constant zero length parameter; this could be due to transposed parameters"
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/init-arch.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/init-arch.h
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/init-arch.h
+@@ -141,7 +141,7 @@ extern void __init_cpu_features (void) a
+ extern const struct cpu_features *__get_cpu_features (void)
+      __attribute__ ((const));
+ 
+-# ifndef NOT_IN_libc
++# if IS_IN (libc)
+ #  define __get_cpu_features()	(&__cpu_features)
+ # endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcmp-sse4.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcmp-sse4.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcmp-sse4.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcmp-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcmp-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcmp-ssse3.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcmp.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcmp.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in libc. */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(memcmp)
+ 	.type	memcmp, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
+@@ -19,7 +19,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if !defined NOT_IN_libc \
++#if IS_IN (libc) \
+     && (defined SHARED \
+         || defined USE_AS_MEMMOVE \
+ 	|| !defined USE_MULTIARCH)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcpy-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy-ssse3.S
+@@ -19,7 +19,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if !defined NOT_IN_libc \
++#if IS_IN (libc) \
+     && (defined SHARED \
+         || defined USE_AS_MEMMOVE \
+ 	|| !defined USE_MULTIARCH)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy.S
+@@ -25,7 +25,7 @@
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  In static binaries we need memcpy before the initialization
+    happened.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 	.text
+ ENTRY(__new_memcpy)
+ 	.type	__new_memcpy, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy_chk.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  There are no multiarch memcpy functions for static binaries.
+  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(__memcpy_chk)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memmove.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove.c
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define MEMMOVE __memmove_sse2
+ # ifdef SHARED
+ #  undef libc_hidden_builtin_def
+@@ -39,7 +39,7 @@ extern __typeof (__redirect_memmove) __m
+ 
+ #include "string/memmove.c"
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <shlib-compat.h>
+ # include "init-arch.h"
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/mempcpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  In static binaries we need mempcpy before the initialization
+    happened.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ ENTRY(__mempcpy)
+ 	.type	__mempcpy, @gnu_indirect_function
+ 	cmpl	$0, KIND_OFFSET+__cpu_features(%rip)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/mempcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy_chk.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in lib and for
+    DSO.  There are no multiarch mempcpy functions for static binaries.
+  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ 	.text
+ ENTRY(__mempcpy_chk)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memset.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset.S
+@@ -21,7 +21,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in lib.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ ENTRY(memset)
+ 	.type	memset, @gnu_indirect_function
+ 	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memset_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset_chk.S
+@@ -21,7 +21,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in lib.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ ENTRY(__memset_chk)
+ 	.type	__memset_chk, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcat-sse2-unaligned.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcat-sse2-unaligned.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcat-sse2-unaligned.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcat-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcat-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcat-ssse3.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcat.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcat.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcat.S
+@@ -43,7 +43,7 @@
+ 
+ 
+ /* Define multiple versions only for the definition in libc.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(STRCAT)
+ 	.type	STRCAT, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strchr-sse2-no-bsf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strchr-sse2-no-bsf.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strchr-sse2-no-bsf.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef  NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # include <sysdep.h>
+ # include "asm-syntax.h"
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strchr.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strchr.S
+@@ -21,7 +21,7 @@
+ 
+ 
+ /* Define multiple versions only for the definition in libc.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(strchr)
+ 	.type	strchr, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcmp-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcmp-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcmp-ssse3.S
+@@ -1,4 +1,4 @@
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define USE_SSSE3 1
+ # define STRCMP __strcmp_ssse3
+ # include "../strcmp.S"
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcmp.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcmp.S
+@@ -79,7 +79,7 @@
+ /* Define multiple versions only for the definition in libc.  Don't
+    define multiple versions for strncmp in static library since we
+    need strncmp before the initialization happened.  */
+-#if (defined SHARED || !defined USE_AS_STRNCMP) && !defined NOT_IN_libc
++#if (defined SHARED || !defined USE_AS_STRNCMP) && IS_IN (libc)
+ 	.text
+ ENTRY(STRCMP)
+ 	.type	STRCMP, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # ifndef USE_AS_STRCAT
+ #  include <sysdep.h>
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcpy-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcpy-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcpy-ssse3.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ # ifndef USE_AS_STRCAT
+ #  include <sysdep.h>
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcpy.S
+@@ -57,7 +57,7 @@
+ 
+ 
+ /* Define multiple versions only for the definition in libc.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(STRCPY)
+ 	.type	STRCPY, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcspn.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcspn.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcspn.S
+@@ -41,7 +41,7 @@
+ /* Define multiple versions only for the definition in libc.  Don't
+    define multiple versions for strpbrk in static library since we
+    need strpbrk before the initialization happened.  */
+-#if (defined SHARED || !defined USE_AS_STRPBRK) && !defined NOT_IN_libc
++#if (defined SHARED || !defined USE_AS_STRPBRK) && IS_IN (libc)
+ 	.text
+ ENTRY(STRCSPN)
+ 	.type	STRCSPN, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strspn.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strspn.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strspn.S
+@@ -26,7 +26,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in libc.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(strspn)
+ 	.type	strspn, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wcscpy-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/wcscpy-c.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wcscpy-c.c
+@@ -1,4 +1,4 @@
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define wcscpy  __wcscpy_sse2
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wcscpy-ssse3.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/wcscpy-ssse3.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wcscpy-ssse3.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <sysdep.h>
+ 
+ 	.section .text.ssse3,"ax",@progbits
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wcscpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/wcscpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wcscpy.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in libc. */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ 	.text
+ ENTRY(wcscpy)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wmemcmp-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/wmemcmp-c.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wmemcmp-c.c
+@@ -1,4 +1,4 @@
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <wchar.h>
+ 
+ # define WMEMCMP  __wmemcmp_sse2
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wmemcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/wmemcmp.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wmemcmp.S
+@@ -22,7 +22,7 @@
+ #include <init-arch.h>
+ 
+ /* Define multiple versions only for the definition in libc. */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(wmemcmp)
+ 	.type	wmemcmp, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/strcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/strcmp.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/strcmp.S
+@@ -129,7 +129,7 @@ libc_hidden_def (__strncasecmp)
+ #endif
+ 
+ ENTRY (BP_SYM (STRCMP))
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ /* Simple version since we can't use SSE registers in ld.so.  */
+ L(oop):	movb	(%rdi), %al
+ 	cmpb	(%rsi), %al
+@@ -147,7 +147,7 @@ L(neq):	movl	$1, %eax
+ 	cmovbl	%ecx, %eax
+ 	ret
+ END (BP_SYM (STRCMP))
+-#else	/* NOT_IN_libc */
++#else	/* !IS_IN (libc) */
+ # ifdef USE_AS_STRCASECMP_L
+ 	/* We have to fall back on the C implementation for locales
+ 	   with encodings not matching ASCII for single bytes.  */
+@@ -2303,5 +2303,5 @@ LABEL(unaligned_table):
+ 	.int	LABEL(ashr_14) - LABEL(unaligned_table)
+ 	.int	LABEL(ashr_15) - LABEL(unaligned_table)
+ 	.int	LABEL(ashr_0) - LABEL(unaligned_table)
+-#endif /* NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+ libc_hidden_builtin_def (STRCMP)
+Index: glibc-2.17-c758a686/ChangeLog
+===================================================================
+--- glibc-2.17-c758a686.orig/ChangeLog
++++ glibc-2.17-c758a686/ChangeLog
+@@ -4849,7 +4849,7 @@
+ 
+ 	* libio/genops.c (_IO_unbuffer_write): Conditionalize locking code on
+ 	[_IO_MTSAFE_IO].
+-	* libio/libioP.h [!_IO_MTSAFE_IO && !NOT_IN_libc]
++	* libio/libioP.h [!_IO_MTSAFE_IO && !IS_IN (libc)]
+ 	(_IO_acquire_lock, _IO_acquire_lock_clear_flags2, _IO_release_lock):
+ 	New macros.
+ 
+@@ -5014,7 +5014,7 @@
+ 	including <string.h>.
+ 
+ 	* sysdeps/x86_64/multiarch/memmove.c: Don't include <stddef.h>.
+-	[!NOT_IN_libc]: Move #define and #undef of memmove to just before
++	[!IS_IN (libc)]: Move #define and #undef of memmove to just before
+ 	and after including <string.h>.  Move declarations of
+ 	__memmove_sse2, __memmove_ssse3, and __memmove_ssse3_back
+ 	to before #include "string/memmove.c".
+@@ -7322,7 +7322,7 @@
+ 2012-05-30  Richard Henderson  <rth@twiddle.net>
+ 
+ 	* sysdeps/unix/make-syscalls.sh: Protect symbol_version output
+-	with #ifndef NOT_IN_libc.
++	with #if IS_IN (libc).
+ 
+ 	* scripts/abilist.awk: Accept 8 fields.  Handle Alpha functions
+ 	marked to avoid plt entry.
+Index: glibc-2.17-c758a686/ChangeLog.13
+===================================================================
+--- glibc-2.17-c758a686.orig/ChangeLog.13
++++ glibc-2.17-c758a686/ChangeLog.13
+@@ -2465,7 +2465,7 @@
+ 	($(objpfx)errlist.d): Depend on $(..)sysdeps/gnu/errlist-compat.c.
+ 	* sysdeps/gnu/errlist.awk: Make output define _sys_errlist_internal
+ 	and _sys_nerr_internal instead of anything else.  Make it include
+-	"errlist-compat.c" if [!NOT_IN_libc && !ERRLIST_NO_COMPAT].
++	"errlist-compat.c" if [!IS_IN (libc) && !ERRLIST_NO_COMPAT].
+ 	Make it emit some asm magic if [EMIT_ERR_MAX].
+ 	* sysdeps/gnu/errlist.c: Regenerated.
+ 	* sysdeps/gnu/errlist-compat.awk: New file.
+Index: glibc-2.17-c758a686/ChangeLog.14
+===================================================================
+--- glibc-2.17-c758a686.orig/ChangeLog.14
++++ glibc-2.17-c758a686/ChangeLog.14
+@@ -2058,13 +2058,13 @@
+ 	* sysdeps/powerpc/powerpc64/__longjmp-common.S: New file.
+ 	* sysdeps/powerpc/powerpc64/__longjmp.S [NOT_IN_libc](__longjmp):
+ 	Non-versioned __longjmp for rtld-__longjmp.
+-	[!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as
++	[!IS_IN (libc)](__vmx__longjmp): Add VMX reg support and define as
+ 	default version of __longjmp.
+ 	[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
+ 	(__novmx__longjmp): Original version of __longjmp.
+ 	* sysdeps/powerpc/powerpc64/bsd-_setjmp.S [NOT_IN_libc](_setjmp):
+ 	Non-versioned _setjmp for rtld-_setjmp.
+-	[!NOT_IN_libc](__vmx_setjmp): Branch to __vmx__sigsetjmp and define
++	[!IS_IN (libc)](__vmx_setjmp): Branch to __vmx__sigsetjmp and define
+ 	as default version of _setjmp.
+ 	[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
+ 	(__novmx_setjmp): Original version of _setjmp.
+@@ -2075,7 +2075,7 @@
+ 	* sysdeps/powerpc/powerpc64/setjmp-common.S: New file.
+ 	* sysdeps/powerpc/powerpc64/setjmp.S [NOT_IN_libc](__setjmp):
+ 	Non-versioned __sigsetjmp for rtld-setjmp.
+-	[!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define
++	[!IS_IN (libc)](__vmx__sigsetjmp): Add VMX reg support and define
+ 	as default version of __sigsetjmp.
+ 	[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
+ 	(__novmx__sigsetjmp): Original version of __sigsetjmp.
+@@ -2083,13 +2083,13 @@
+ 	* sysdeps/powerpc/powerpc32/__longjmp-common.S: New File
+ 	* sysdeps/powerpc/powerpc32/__longjmp.S [NOT_IN_libc](__longjmp):
+ 	Non-versioned __longjmp for rtld-__longjmp.
+-	[!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as
++	[!IS_IN (libc)](__vmx__longjmp): Add VMX reg support and define as
+ 	default version of __longjmp.
+ 	[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
+ 	(__novmx__longjmp): Original version of __longjmp.
+ 	* sysdeps/powerpc/powerpc32/bsd-_setjmp.S [NOT_IN_libc](_setjmp):
+ 	Non-versioned _setjmp for rtld-_setjmp.
+-	[!NOT_IN_libc](__vmx_setjmp): Branch to __vmx__sigsetjmp and define
++	[!IS_IN (libc)](__vmx_setjmp): Branch to __vmx__sigsetjmp and define
+ 	as default version of _setjmp.
+ 	[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
+ 	(__novmx_setjmp): Original version of _setjmp.
+@@ -2100,21 +2100,21 @@
+ 	* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: New file.
+ 	* sysdeps/powerpc/powerpc32/fpu/__longjmp.S [NOT_IN_libc](__longjmp):
+ 	Non-versioned __longjmp for rtld-__longjmp.
+-	[!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as
++	[!IS_IN (libc)](__vmx__longjmp): Add VMX reg support and define as
+ 	default version of __longjmp.
+ 	[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
+ 	(__novmx__longjmp): Original version of __longjmp.
+ 	* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: New file.
+ 	* sysdeps/powerpc/powerpc32/fpu/setjmp.S [NOT_IN_libc](__setjmp):
+ 	Non-versioned __sigsetjmp for rtld-setjmp.
+-	[!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define
++	[!IS_IN (libc)](__vmx__sigsetjmp): Add VMX reg support and define
+ 	as default version of __sigsetjmp.
+ 	[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
+ 	(__novmx__sigsetjmp): Original version of __sigsetjmp.
+ 	* sysdeps/powerpc/powerpc32/setjmp-common.S: New file.
+ 	* sysdeps/powerpc/powerpc32/setjmp.S [NOT_IN_libc](__setjmp):
+ 	Non-versioned __sigsetjmp for rtld-setjmp.
+-	[!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define
++	[!IS_IN (libc)](__vmx__sigsetjmp): Add VMX reg support and define
+ 	as default version of __sigsetjmp.
+ 	[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
+ 	(__novmx__sigsetjmp): Original version of __sigsetjmp.
+Index: glibc-2.17-c758a686/csu/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/csu/Makefile
++++ glibc-2.17-c758a686/csu/Makefile
+@@ -146,13 +146,13 @@ $(objpfx)version-info.h: $(common-objpfx
+ 	   linux*) version=`(printf '%s\n%s\n' \
+ 				    '#include <linux/version.h>' \
+ 				    UTS_RELEASE \
+-			     | $(CC) $(CPPFLAGS) -O -E -P - -DNOT_IN_libc=1 | \
++			     | $(CC) $(CPPFLAGS) -O -E -P - | \
+ 			     sed -e 's/"\([^"]*\)".*/\1/p' -e d) 2>/dev/null`;\
+ 		   if [ -z "$$version" ]; then \
+ 		     version=`(printf '%s\n%s\n' \
+ 				      '#include <linux/version.h>' \
+ 				       LINUX_VERSION_CODE \
+-			       | $(CC) $(CPPFLAGS) -O -E -P - -DNOT_IN_libc=1 \
++			       | $(CC) $(CPPFLAGS) -O -E -P - \
+ 			       | sed -n -e '/^[123456789].*/p' \
+ 			       | awk '{v=$$1; \
+ 				       printf("%d.%d.%d\n", \
+Index: glibc-2.17-c758a686/nptl/ChangeLog
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/ChangeLog
++++ glibc-2.17-c758a686/nptl/ChangeLog
+@@ -11683,7 +11683,7 @@
+ 2002-12-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* libc-cancellation.c: Guard both function with
+-	#if !defined NOT_IN_libc.
++	#if IS_IN (libc).
+ 	* Makefile (libpthread-routines): Use ptw-, not pt- prefix for the
+ 	automatically provided pthread wrappers.
+ 	* pthreadP.h (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET): Define to
+Index: glibc-2.17-c758a686/nptl/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/Makefile
++++ glibc-2.17-c758a686/nptl/Makefile
+@@ -134,8 +134,6 @@ libpthread-routines = nptl-init vars eve
+ libpthread-shared-only-routines = version pt-allocrtsig unwind-forcedunwind
+ libpthread-static-only-routines = pthread_atfork
+ 
+-CFLAGS-pthread_atfork.c = -DNOT_IN_libc
+-
+ # Since cancellation handling is in large parts handled using exceptions
+ # we have to compile some files with exception handling enabled, some
+ # even with asynchronous unwind tables.
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h
+@@ -19,7 +19,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ extern int __open_nocancel (const char *, int, ...) attribute_hidden;
+ extern int __close_nocancel (int) attribute_hidden;
+ extern int __read_nocancel (int, void *, size_t) attribute_hidden;
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
+@@ -52,7 +52,7 @@
+ #define LLL_PRIVATE	0
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
+@@ -49,7 +49,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
++#if IS_IN (libc) || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				\
+@@ -103,7 +103,7 @@
+ #  define CDISABLE	call +__libc_disable_asynccancel,[],0;
+ # endif
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ # define __local_multiple_threads __libc_multiple_threads
+ #elif IS_IN (libpthread)
+ # define __local_multiple_threads __pthread_multiple_threads
+@@ -118,7 +118,7 @@
+ 				   p_header.data.multiple_threads) == 0, 1)
+ #  else
+ extern int __local_multiple_threads
+-#   if !defined NOT_IN_libc || IS_IN (libpthread)
++#   if IS_IN (libc) || IS_IN (libpthread)
+   attribute_hidden;
+ #   else
+   ;
+@@ -130,7 +130,7 @@ extern int __local_multiple_threads
+ #   define SINGLE_THREAD_P \
+ 	mov (+__local_multiple_threads),d0; \
+ 	cmp 0,d0
+-#  elif !defined NOT_IN_libc || IS_IN (libpthread)
++#  elif IS_IN (libc) || IS_IN (libpthread)
+ #   define SINGLE_THREAD_P \
+ 	movm [a2],(sp); \
+      1: mov pc,a2; \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
+@@ -48,7 +48,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/m68k/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h
+@@ -48,7 +48,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || IS_IN (rtld)
++#if IS_IN (libc) || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define MEMRCHR  __memrchr_ppc
+ # include <string.h>
+ extern void *__memrchr_ppc (const void *, int, size_t);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c
+@@ -17,7 +17,7 @@
+ 
+ #include <wchar.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # ifdef SHARED
+ #   undef libc_hidden_def
+ #   define libc_hidden_def(name)  \
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c
+@@ -17,7 +17,7 @@
+ 
+ #include <wchar.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define WCSCPY  __wcscpy_ppc
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c
+@@ -17,7 +17,7 @@
+ 
+ #include <wchar.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # define WCSRCHR  __wcsrchr_ppc
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/memccpy-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/memccpy-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/memccpy-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define MEMCCPY  __memccpy_c
+ # undef weak_alias
+ # define weak_alias(a, b)
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/memccpy-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/memccpy-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/memccpy-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -153,4 +153,4 @@ ENTRY(__memccpy_vx)
+ 	lghi	%r2,0		/* Return null.  */
+ 	br	%r14
+ END(__memccpy_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/memccpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/memccpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/memccpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__memccpy, memccpy)
+ 
+ #else
+ # include <string/memccpy.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/memchr-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/memchr-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/memchr-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -154,6 +154,6 @@ END(__memchr_vx)
+ # define memchr __memchr_c
+ # undef libc_hidden_builtin_def
+ # define libc_hidden_builtin_def(name) strong_alias(__memchr_c, __GI_memchr)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+ 
+ #include <memchr.S>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/memchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/memchr.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/memchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/memrchr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/memrchr-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/memrchr-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define MEMRCHR  __memrchr_c
+ 
+ # include <string.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/memrchr-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/memrchr-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/memrchr-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -157,4 +157,4 @@ ENTRY(__memrchr_vx)
+ 	clgijhe	%r4,64,.Lloop64	/* If n >= 64 -> loop64.  */
+ 	j	.Llt64
+ END(__memrchr_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/memrchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/memrchr.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/memrchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__memrchr, memrchr)
+ 
+ #else
+ # include <string/memrchr.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/rawmemchr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/rawmemchr-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/rawmemchr-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ 
+ # define RAWMEMCHR  __rawmemchr_c
+@@ -31,4 +31,4 @@
+ extern __typeof (rawmemchr) __rawmemchr_c attribute_hidden;
+ 
+ # include <string/rawmemchr.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/rawmemchr-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/rawmemchr-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/rawmemchr-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -89,4 +89,4 @@ ENTRY(__rawmemchr_vx)
+ 	la	%r2,0(%r5,%r2)	/* Return pointer to character.  */
+ 	br	%r14
+ END(__rawmemchr_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/rawmemchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/rawmemchr.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/rawmemchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__rawmemchr, rawmemchr)
+ 
+ #else
+ # include <string/rawmemchr.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT &&!defined NOT_IN_libc ) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT &&IS_IN (libc) ) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/stpcpy-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/stpcpy-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/stpcpy-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STPCPY  __stpcpy_c
+ # undef libc_hidden_def
+ # undef weak_alias
+@@ -31,4 +31,4 @@
+ 
+ 
+ # include <string/stpcpy.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/stpcpy-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/stpcpy-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/stpcpy-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -101,4 +101,4 @@ ENTRY(__stpcpy_vx)
+ 	la	%r2,0(%r5,%r2)	/* Return pointer to zero.  */
+ 	br	%r14
+ END(__stpcpy_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/stpcpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/stpcpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/stpcpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -26,4 +26,4 @@ libc_hidden_builtin_def (stpcpy)
+ 
+ #else
+ # include <string/stpcpy.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/stpncpy-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/stpncpy-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/stpncpy-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STPNCPY  __stpncpy_c
+ # ifdef SHARED
+ #  undef libc_hidden_def
+@@ -25,4 +25,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/stpncpy.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/stpncpy-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/stpncpy-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/stpncpy-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -197,4 +197,4 @@ ENTRY(__stpncpy_vx)
+ 	vl	%v16,0(%r5,%r3)	/* Load s.  */
+ 	j	.Llt64
+ END(__stpncpy_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/stpncpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/stpncpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/stpncpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__stpncpy, stpncpy)
+ 
+ #else
+ # include <string/stpncpy.c>
+-#endif  /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif  /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcat-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcat-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcat-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRCAT  __strcat_c
+ # ifdef SHARED
+ #  undef libc_hidden_builtin_def
+@@ -25,4 +25,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/strcat.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcat-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcat-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcat-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -158,4 +158,4 @@ ENTRY(__strcat_vx)
+ 	lgr	%r2,%r0		/* Load saved dest-ptr.  */
+ 	br	%r14
+ END(__strcat_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcat.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcat.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcat.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__strcat, strcat)
+ 
+ #else
+ # include <string/strcat.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strchr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strchr-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strchr-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRCHR  __strchr_c
+ # undef weak_alias
+ # ifdef SHARED
+@@ -26,4 +26,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/strchr.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strchr-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strchr-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strchr-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -97,4 +97,4 @@ ENTRY(__strchr_vx)
+ 	lghi	%r2,0		/* Return null if character not found.  */
+ 	br	%r14
+ END(__strchr_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strchr.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (strchr, index)
+ 
+ #else
+ # include <string/strchr.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strchrnul-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strchrnul-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strchrnul-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRCHRNUL  __strchrnul_c
+ # define __strchrnul STRCHRNUL
+ # undef weak_alias
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strchrnul-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strchrnul-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strchrnul-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -90,4 +90,4 @@ ENTRY(__strchrnul_vx)
+ .Lend:
+ 	br	%r14
+ END(__strchrnul_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strchrnul.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strchrnul.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strchrnul.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__strchrnul, strchrnul)
+ 
+ #else
+ # include <string/strchrnul.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcmp-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcmp-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcmp-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -111,6 +111,6 @@ END(__strcmp_vx)
+ # define strcmp __strcmp_c
+ # undef libc_hidden_builtin_def
+ # define libc_hidden_builtin_def(name) strong_alias(__strcmp_c, __GI_strcmp)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+ 
+ #include <strcmp.S>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcmp.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcmp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcpy-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcpy-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcpy-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -103,7 +103,7 @@ END(__strcpy_vx)
+ # define strcpy __strcpy_c
+ # undef libc_hidden_builtin_def
+ # define libc_hidden_builtin_def(name) strong_alias(__strcpy_c, __GI_strcpy)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+ 
+ /* Include mvst-strcpy-implementation in s390-32/s390-64 subdirectory.  */
+ #include <strcpy.S>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcspn-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcspn-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcspn-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRCSPN  __strcspn_c
+ # ifdef SHARED
+ #  undef libc_hidden_builtin_def
+@@ -25,4 +25,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/strcspn.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcspn-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcspn-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcspn-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -278,4 +278,4 @@ ENTRY(__strcspn_vx)
+ 	vlgvg	%r9,%v31,1
+ 	br	%r14
+ END(__strcspn_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strcspn.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strcspn.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strcspn.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__strcspn, strcspn)
+ 
+ #else
+ # include <string/strcspn.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strlen-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strlen-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strlen-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRLEN  __strlen_c
+ # ifdef SHARED
+ #  undef libc_hidden_builtin_def
+@@ -25,4 +25,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/strlen.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strlen-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strlen-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strlen-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -81,4 +81,4 @@ ENTRY(__strlen_vx)
+ 	algr	%r2,%r5
+ 	br	%r14
+ END(__strlen_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strlen.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strlen.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strlen.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__strlen, strlen)
+ 
+ #else
+ # include <string/strlen.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strncat-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strncat-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strncat-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRNCAT  __strncat_c
+ 
+ # include <string/strncat.c>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strncat-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strncat-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strncat-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -236,4 +236,4 @@ ENTRY(__strncat_vx)
+ 	vl	%v16,0(%r5,%r3)	/* Load s.  */
+ 	j	.Lcpy_lt64
+ END(__strncat_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strncat.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strncat.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strncat.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__strncat, strncat)
+ 
+ #else
+ # include <string/strncat.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strncmp-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strncmp-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strncmp-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRNCMP  __strncmp_c
+ # ifdef SHARED
+ #  undef libc_hidden_builtin_def
+@@ -25,4 +25,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/strncmp.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strncmp-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strncmp-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strncmp-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -134,4 +134,4 @@ ENTRY(__strncmp_vx)
+ 	lghi	%r2,0
+ 	br	%r14
+ END(__strncmp_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strncmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strncmp.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strncmp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -27,4 +27,4 @@ s390_vx_libc_ifunc2 (__strncmp, strncmp)
+ 
+ #else
+ # include <string/strncmp.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strncpy-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strncpy-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strncpy-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -201,7 +201,7 @@ END(__strncpy_vx)
+ # define strncpy __strncpy_c
+ # undef libc_hidden_builtin_def
+ # define libc_hidden_builtin_def(name) strong_alias(__strncpy_c, __GI_strncpy)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+ 
+ /* Include strncpy-implementation in s390-32/s390-64 subdirectory.  */
+ #include <strncpy.S>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strncpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strncpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strncpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strnlen-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strnlen-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strnlen-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRNLEN  __strnlen_c
+ # ifdef SHARED
+ #  undef libc_hidden_def
+@@ -25,4 +25,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/strnlen.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strnlen-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strnlen-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strnlen-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -131,4 +131,4 @@ ENTRY(__strnlen_vx)
+ 
+ 	j	.Llt64
+ END(__strnlen_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strnlen.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strnlen.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strnlen.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -26,4 +26,4 @@ libc_hidden_def (strnlen)
+ 
+ #else
+ # include <string/strnlen.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strpbrk-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strpbrk-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strpbrk-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRPBRK  __strpbrk_c
+ # ifdef SHARED
+ #  undef libc_hidden_builtin_def
+@@ -25,4 +25,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/strpbrk.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strpbrk-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strpbrk-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strpbrk-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -299,4 +299,4 @@ ENTRY(__strpbrk_vx)
+ 	lgr	%r2,%r1
+ 	br	%r14
+ END(__strpbrk_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strpbrk.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strpbrk.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strpbrk.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__strpbrk, strpbrk)
+ 
+ #else
+ # include <string/strpbrk.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strrchr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strrchr-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strrchr-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRRCHR  __strrchr_c
+ # undef weak_alias
+ # ifdef SHARED
+@@ -26,4 +26,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/strrchr.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strrchr-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strrchr-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strrchr-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -177,4 +177,4 @@ ENTRY(__strrchr_vx)
+ 	.byte	0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08
+ 	.byte	0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00
+ END(__strrchr_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strrchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strrchr.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strrchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (strrchr, rindex)
+ 
+ #else
+ # include <string/strrchr.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strspn-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strspn-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strspn-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define STRSPN  __strspn_c
+ # ifdef SHARED
+ #  undef libc_hidden_builtin_def
+@@ -25,4 +25,4 @@
+ # endif /* SHARED */
+ 
+ # include <string/strspn.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strspn-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strspn-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strspn-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -253,4 +253,4 @@ ENTRY(__strspn_vx)
+ 	j	.Lslow_next_acc_notonbb /* ... and search for zero in
+ 					    fully loaded vreg again.  */
+ END(__strspn_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/strspn.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/strspn.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/strspn.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <string.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__strspn, strspn)
+ 
+ #else
+ # include <string/strspn.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpcpy-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcpcpy-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpcpy-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCPCPY  __wcpcpy_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpcpy-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcpcpy-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpcpy-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -111,4 +111,4 @@ ENTRY(__wcpcpy_vx)
+ .Lfallback:
+ 	jg	__wcpcpy_c
+ END(__wcpcpy_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpcpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcpcpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpcpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__wcpcpy, wcpcpy)
+ 
+ #else
+ # include <wcsmbs/wcpcpy.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpncpy-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcpncpy-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpncpy-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCPNCPY  __wcpncpy_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpncpy-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcpncpy-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpncpy-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -219,4 +219,4 @@ ENTRY(__wcpncpy_vx)
+ .Lfallback:
+ 	jg	__wcpncpy_c
+ END(__wcpncpy_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpncpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcpncpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcpncpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__wcpncpy, wcpncpy)
+ 
+ #else
+ # include <wcsmbs/wcpncpy.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscat-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscat-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscat-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSCAT  __wcscat_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscat-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscat-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscat-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -172,4 +172,4 @@ ENTRY(__wcscat_vx)
+ .Lfallback:
+ 	jg	__wcscat_c
+ END(__wcscat_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscat.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscat.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscat.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__wcscat, wcscat)
+ 
+ #else
+ # include <wcsmbs/wcscat.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcschr-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschr-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSCHR  __wcschr_c
+ 
+ # include <wchar.h>
+@@ -28,4 +28,4 @@ extern __typeof (wcschr) __wcschr_c;
+ # endif /* SHARED */
+ 
+ # include <wcsmbs/wcschr.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschr-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcschr-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschr-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -100,4 +100,4 @@ ENTRY(__wcschr_vx)
+ .Lfallback:
+ 	jg	__wcschr_c
+ END(__wcschr_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcschr.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wcschr, wcschr)
+ 
+ #else
+ # include <wcsmbs/wcschr.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschrnul-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcschrnul-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschrnul-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSCHRNUL  __wcschrnul_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschrnul-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcschrnul-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschrnul-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -94,4 +94,4 @@ ENTRY(__wcschrnul_vx)
+ .Lfallback:
+ 	jg	__wcschrnul_c
+ END(__wcschrnul_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschrnul.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcschrnul.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcschrnul.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__wcschrnul, wcschrnul)
+ 
+ #else
+ # include <wcsmbs/wcschrnul.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscmp-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscmp-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscmp-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSCMP  __wcscmp_c
+ 
+ # include <wchar.h>
+@@ -27,4 +27,4 @@ extern __typeof (wcscmp) __wcscmp_c;
+   __hidden_ver1 (__wcscmp_c, __GI_wcscmp, __wcscmp_c);
+ # endif /* SHARED */
+ # include <wcsmbs/wcscmp.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscmp-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscmp-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscmp-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -128,4 +128,4 @@ ENTRY(__wcscmp_vx)
+ 	lghi	%r2,0
+ 	br	%r14
+ END(__wcscmp_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscmp.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscmp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wcscmp, wcscmp)
+ 
+ #else
+ # include <wcsmbs/wcscmp.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscpy-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscpy-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscpy-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSCPY  __wcscpy_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscpy-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscpy-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscpy-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -108,4 +108,4 @@ ENTRY(__wcscpy_vx)
+ .Lfallback:
+ 	jg	__wcscpy_c
+ END(__wcscpy_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wcscpy, wcscpy)
+ 
+ #else
+ # include <wcsmbs/wcscpy.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscspn-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscspn-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscspn-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSCSPN  __wcscspn_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscspn-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscspn-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscspn-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -290,4 +290,4 @@ ENTRY(__wcscspn_vx)
+ .Lfallback:
+ 	jg	__wcscspn_c
+ END(__wcscspn_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscspn.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcscspn.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcscspn.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wcscspn, wcscspn)
+ 
+ #else
+ # include <wcsmbs/wcscspn.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcslen-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcslen-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcslen-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSLEN  __wcslen_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcslen-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcslen-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcslen-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -88,4 +88,4 @@ ENTRY(__wcslen_vx)
+ .Lfallback:
+ 	jg	__wcslen_c
+ END(__wcslen_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcslen.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcslen.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcslen.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__wcslen, wcslen)
+ 
+ #else
+ # include <wcsmbs/wcslen.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncat-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsncat-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncat-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSNCAT  __wcsncat_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncat-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsncat-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncat-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -262,4 +262,4 @@ ENTRY(__wcsncat_vx)
+ .Lfallback:
+ 	jg	__wcsncat_c
+ END(__wcsncat_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncat.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsncat.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncat.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wcsncat, wcsncat)
+ 
+ #else
+ # include <wcsmbs/wcsncat.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncmp-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsncmp-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncmp-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSNCMP  __wcsncmp_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncmp-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsncmp-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncmp-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -174,4 +174,4 @@ ENTRY(__wcsncmp_vx)
+ 	locgrl	%r2,%r1
+ 	br	%r14
+ END(__wcsncmp_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsncmp.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncmp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wcsncmp, wcsncmp)
+ 
+ #else
+ # include <wcsmbs/wcsncmp.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncpy-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsncpy-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncpy-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSNCPY  __wcsncpy_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncpy-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsncpy-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncpy-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -220,4 +220,4 @@ ENTRY(__wcsncpy_vx)
+ 	jg	__wcsncpy_c
+ END(__wcsncpy_vx)
+ 
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsncpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsncpy.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__wcsncpy, wcsncpy)
+ 
+ #else
+ # include <wcsmbs/wcsncpy.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsnlen-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsnlen-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsnlen-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSNLEN  __wcsnlen_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsnlen-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsnlen-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsnlen-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -148,4 +148,4 @@ ENTRY(__wcsnlen_vx)
+ .Lfallback:
+ 	jg	__wcsnlen_c
+ END(__wcsnlen_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsnlen.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsnlen.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsnlen.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -25,4 +25,4 @@ weak_alias (__wcsnlen, wcsnlen)
+ 
+ #else
+ # include <wcsmbs/wcsnlen.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcspbrk-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcspbrk-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcspbrk-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSPBRK  __wcspbrk_c
+ 
+ # include <wchar.h>
+@@ -28,4 +28,4 @@ extern __typeof (wcspbrk) __wcspbrk_c;
+ # endif /* SHARED */
+ 
+ # include <wcsmbs/wcspbrk.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcspbrk-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcspbrk-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcspbrk-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -312,4 +312,4 @@ ENTRY(__wcspbrk_vx)
+ .Lfallback:
+ 	jg	__wcspbrk_c
+ END(__wcspbrk_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcspbrk.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcspbrk.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcspbrk.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wcspbrk, wcspbrk)
+ 
+ #else
+ # include <wcsmbs/wcspbrk.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsrchr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsrchr-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsrchr-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSRCHR  __wcsrchr_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsrchr-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsrchr-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsrchr-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -187,4 +187,4 @@ ENTRY(__wcsrchr_vx)
+ .Lfallback:
+ 	jg	__wcsrchr_c
+ END(__wcsrchr_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsrchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsrchr.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsrchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wcsrchr, wcsrchr)
+ 
+ #else
+ # include <wcsmbs/wcsrchr.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsspn-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsspn-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsspn-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WCSSPN  __wcsspn_c
+ 
+ # include <wchar.h>
+@@ -28,4 +28,4 @@ extern __typeof (wcsspn) __wcsspn_c;
+ # endif /* SHARED */
+ 
+ # include <wcsmbs/wcsspn.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsspn-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsspn-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsspn-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -267,4 +267,4 @@ ENTRY(__wcsspn_vx)
+ .Lfallback:
+ 	jg	__wcsspn_c
+ END(__wcsspn_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsspn.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wcsspn.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wcsspn.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wcsspn, wcsspn)
+ 
+ #else
+ # include <wcsmbs/wcsspn.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemchr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wmemchr-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemchr-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WMEMCHR  __wmemchr_c
+ 
+ # include <wchar.h>
+@@ -28,4 +28,4 @@ extern __typeof (wmemchr) __wmemchr_c;
+ # endif /* SHARED */
+ 
+ # include <wcsmbs/wmemchr.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemchr-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wmemchr-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemchr-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -163,4 +163,4 @@ ENTRY(__wmemchr_vx)
+ .Lfallback:
+ 	jg	__wmemchr_c
+ END(__wmemchr_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemchr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wmemchr.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemchr.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wmemchr, wmemchr)
+ 
+ #else
+ # include <wcsmbs/wmemchr.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemcmp-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wmemcmp-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemcmp-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WMEMCMP  __wmemcmp_c
+ 
+ # include <wchar.h>
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemcmp-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wmemcmp-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemcmp-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -146,4 +146,4 @@ ENTRY(__wmemcmp_vx)
+ 	la	%r3,0(%r5,%r3)
+ 	j	.Lremaining
+ END(__wmemcmp_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemcmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wmemcmp.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemcmp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wmemcmp, wmemcmp)
+ 
+ #else
+ # include <wcsmbs/wmemcmp.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemset-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wmemset-c.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemset-c.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # define WMEMSET  __wmemset_c
+ 
+ # include <wchar.h>
+@@ -28,4 +28,4 @@ extern __typeof (wmemset) __wmemset_c;
+ # endif /* SHARED */
+ 
+ # include <wcsmbs/wmemset.c>
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemset-vx.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wmemset-vx.S
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemset-vx.S
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ 
+ # include "sysdep.h"
+ # include "asm-syntax.h"
+@@ -139,4 +139,4 @@ ENTRY(__wmemset_vx)
+ 	srlg	%r4,%r4,2	/* Convert byte-count to character-count.  */
+ 	jg	__wmemset_c
+ END(__wmemset_vx)
+-#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++#endif /* HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc) */
+Index: glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemset.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/multiarch/wmemset.c
++++ glibc-2.17-c758a686/sysdeps/s390/multiarch/wmemset.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++#if defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)
+ # include <wchar.h>
+ # include <ifunc-resolve.h>
+ 
+@@ -24,4 +24,4 @@ s390_vx_libc_ifunc2 (__wmemset, wmemset)
+ 
+ #else
+ # include <wcsmbs/wmemset.c>
+-#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && IS_IN (libc)) */
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memcmp-s390.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/multiarch/memcmp-s390.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memcmp-s390.S
+@@ -27,7 +27,7 @@
+ 
+        .text
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ ENTRY(__memcmp_z196)
+ 	.machine "z196"
+@@ -92,11 +92,11 @@ ENTRY(__memcmp_z10)
+ 	clc     0(1,%r3),0(%r2)
+ END(__memcmp_z10)
+ 
+-#endif /* !NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+ 
+ #include "../memcmp.S"
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ .globl   memcmp
+ .set     memcmp,__memcmp_default
+ .weak    bcmp
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memcmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/multiarch/memcmp.c
++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memcmp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <ifunc-resolve.h>
+ 
+ s390_libc_ifunc (memcmp)
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memcpy-s390.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/multiarch/memcpy-s390.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memcpy-s390.S
+@@ -27,7 +27,7 @@
+ 
+        .text
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 
+ ENTRY(__memcpy_z196)
+ 	.machine "z196"
+@@ -88,11 +88,11 @@ ENTRY(__memcpy_z10)
+ 	mvc     0(1,%r1),0(%r3)
+ END(__memcpy_z10)
+ 
+-#endif /* SHARED && !defined NOT_IN_libc */
++#endif /* SHARED && IS_IN (libc) */
+ 
+ #include "../memcpy.S"
+ 
+-#if !defined SHARED || defined NOT_IN_libc
++#if !defined SHARED || !IS_IN (libc)
+ .globl   memcpy
+ .set     memcpy,__memcpy_default
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memcpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/multiarch/memcpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memcpy.c
+@@ -17,7 +17,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* In the static lib memcpy is needed before the reloc is resolved.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # include <ifunc-resolve.h>
+ 
+ s390_libc_ifunc (memcpy)
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memset-s390.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/multiarch/memset-s390.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memset-s390.S
+@@ -27,7 +27,7 @@
+ 
+        .text
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ ENTRY(__memset_z196)
+ 	.machine "z196"
+@@ -103,11 +103,11 @@ ENTRY(__memset_mvcle)
+ 	br      %r14
+ END(__memset_mvcle)
+ 
+-#endif /* !NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+ 
+ #include "../memset.S"
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ .globl   memset
+ .set     memset,__memset_default
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memset.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/multiarch/memset.c
++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/multiarch/memset.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <ifunc-resolve.h>
+ 
+ s390_libc_ifunc (memset)
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memcmp-s390x.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/multiarch/memcmp-s390x.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memcmp-s390x.S
+@@ -27,7 +27,7 @@
+ 
+        .text
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ ENTRY(__memcmp_z196)
+ 	.machine "z196"
+@@ -89,11 +89,11 @@ ENTRY(__memcmp_z10)
+ 	clc     0(1,%r3),0(%r2)
+ END(__memcmp_z10)
+ 
+-#endif /* !NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+ 
+ #include "../memcmp.S"
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ .globl   memcmp
+ .set     memcmp,__memcmp_default
+ .weak    bcmp
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memcmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/multiarch/memcmp.c
++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memcmp.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <ifunc-resolve.h>
+ 
+ s390_libc_ifunc (memcmp)
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memcpy-s390x.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/multiarch/memcpy-s390x.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memcpy-s390x.S
+@@ -27,7 +27,7 @@
+ 
+        .text
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 
+ ENTRY(__memcpy_z196)
+ 	.machine "z196"
+@@ -84,11 +84,11 @@ ENTRY(__memcpy_z10)
+ 	mvc     0(1,%r1),0(%r3)
+ END(__memcpy_z10)
+ 
+-#endif /* SHARED && !defined NOT_IN_libc  */
++#endif /* SHARED && IS_IN (libc)  */
+ 
+ #include "../memcpy.S"
+ 
+-#if !defined SHARED || defined NOT_IN_libc
++#if !defined SHARED || !IS_IN (libc)
+ .globl   memcpy
+ .set     memcpy,__memcpy_default
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memcpy.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/multiarch/memcpy.c
++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memcpy.c
+@@ -17,7 +17,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* In the static lib memcpy is needed before the reloc is resolved.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ # include <ifunc-resolve.h>
+ 
+ s390_libc_ifunc (memcpy)
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memset-s390x.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/multiarch/memset-s390x.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memset-s390x.S
+@@ -27,7 +27,7 @@
+ 
+        .text
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ ENTRY(__memset_z196)
+ 	.machine "z196"
+@@ -99,11 +99,11 @@ ENTRY(__memset_mvcle)
+ 	br	%r14
+ END(__memset_mvcle)
+ 
+-#endif /* !NOT_IN_libc */
++#endif /* !IS_IN (libc) */
+ 
+ #include "../memset.S"
+ 
+-#ifdef NOT_IN_libc
++#if !IS_IN (libc)
+ .globl   memset
+ .set     memset,__memset_default
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memset.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/multiarch/memset.c
++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/multiarch/memset.c
+@@ -16,7 +16,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # include <ifunc-resolve.h>
+ 
+ s390_libc_ifunc (memset)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset-x86-64.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memset-x86-64.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset-x86-64.S
+@@ -1,6 +1,6 @@
+ #include <sysdep.h>
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ # undef ENTRY_CHK
+ # define ENTRY_CHK(name) \
+ 	.type __memset_chk_x86_64, @function; \
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/rawmemchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/rawmemchr.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/rawmemchr.S
+@@ -23,7 +23,7 @@
+ 
+ 
+ /* Define multiple versions only for the definition in lib.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 	.text
+ ENTRY(rawmemchr)
+ 	.type	rawmemchr, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen-sse2-no-bsf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strlen-sse2-no-bsf.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen-sse2-no-bsf.S
+@@ -19,7 +19,7 @@
+ 
+ /* only for strlen case we don't use optimized version for STATIC build just for SHARED */
+ 
+-#if (defined SHARED || defined USE_AS_STRCAT || defined USE_AS_STRNLEN) && !defined NOT_IN_libc
++#if (defined SHARED || defined USE_AS_STRCAT || defined USE_AS_STRNLEN) && IS_IN (libc)
+ 
+ # ifndef USE_AS_STRCAT
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen-sse2-pminub.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strlen-sse2-pminub.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen-sse2-pminub.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if !defined NOT_IN_libc && (defined SHARED || defined USE_AS_STRCAT)
++#if IS_IN (libc) && (defined SHARED || defined USE_AS_STRCAT)
+ 
+ # ifndef USE_AS_STRCAT
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen-sse4.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strlen-sse4.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen-sse4.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 
+ #include <sysdep.h>
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strlen.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen.S
+@@ -25,7 +25,7 @@
+ /* Define multiple versions only for the definition in libc and for
+    the DSO.  In static binaries we need strlen before the initialization
+    happened.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 	.text
+ ENTRY(strlen)
+ 	.type	strlen, @gnu_indirect_function
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strnlen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strnlen.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strnlen.S
+@@ -22,7 +22,7 @@
+ 
+ 
+ /* Define multiple versions only for the definition in libc.  */
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ 
+ 	.text
+ ENTRY(__strnlen)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strrchr-sse2-no-bsf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strrchr-sse2-no-bsf.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strrchr-sse2-no-bsf.S
+@@ -17,7 +17,7 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 
+ # include <sysdep.h>
+ # include "asm-syntax.h"
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strrchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strrchr.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strrchr.S
+@@ -24,7 +24,7 @@
+ /* Define multiple versions only for the definition in libc and for
+    the DSO.  In static binaries we need strrchr before the initialization
+    happened.  */
+-#if defined SHARED && !defined NOT_IN_libc
++#if defined SHARED && IS_IN (libc)
+ 	.text
+ ENTRY(strrchr)
+ 	.type	strrchr, @gnu_indirect_function
+Index: glibc-2.17-c758a686/Makerules
+===================================================================
+--- glibc-2.17-c758a686.orig/Makerules
++++ glibc-2.17-c758a686/Makerules
+@@ -1156,9 +1156,6 @@ lib := nonlib
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ endif
+ 
+-# The include magic above causes those files to use this variable for flags.
+-CPPFLAGS-nonlib = -DNOT_IN_libc=1
+-
+ 
+ ifeq ($(versioning),yes)
+ # Generate normalized lists of symbols, versions, and data sizes.
+Index: glibc-2.17-c758a686/include/ctype.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/ctype.h
++++ glibc-2.17-c758a686/include/ctype.h
+@@ -7,7 +7,7 @@ libc_hidden_proto (__ctype_init)
+ 
+ extern int __isctype (int __c, int __mask);
+ 
+-# ifndef NOT_IN_libc
++# if IS_IN (libc)
+ 
+ /* These accessors are used by the optimized macros to find the
+    thread-local cache of ctype information from the current thread's
+@@ -46,13 +46,13 @@ __ctype_tolower_loc (void)
+   return __libc_tsd_address (const int32_t *, CTYPE_TOLOWER);
+ }
+ 
+-# endif	/* Not NOT_IN_libc.  */
++# endif	/* IS_IN (libc)  */
+ #endif
+ 
+ #include <ctype/ctype.h>
+ 
+ #ifndef _ISOMAC
+-# if !defined __NO_CTYPE && !defined NOT_IN_libc
++# if !defined __NO_CTYPE && IS_IN (libc)
+ /* The spec says that isdigit must only match the decimal digits.  We
+    can check this without a memory access.  */
+ #  undef isdigit
+Index: glibc-2.17-c758a686/include/libc-symbols.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/libc-symbols.h
++++ glibc-2.17-c758a686/include/libc-symbols.h
+@@ -548,7 +548,7 @@ for linking")
+ # define hidden_nolink(name, lib, version)
+ #endif
+ 
+-#if !defined NOT_IN_libc
++#if IS_IN (libc)
+ # define libc_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libc_hidden_def(name) hidden_def (name)
+ # define libc_hidden_weak(name) hidden_weak (name)
+Index: glibc-2.17-c758a686/include/netdb.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/netdb.h
++++ glibc-2.17-c758a686/include/netdb.h
+@@ -3,11 +3,11 @@
+ 
+ #ifndef _ISOMAC
+ /* Macros for accessing h_errno from inside libc.  */
+-# if !defined NOT_IN_libc || IS_IN_LIB
++# if IS_IN_LIB
+ #  undef  h_errno
+ #  ifdef _LIBC_REENTRANT
+ #   include <tls.h>
+-#   ifndef NOT_IN_libc
++#   if IS_IN (libc)
+ #    define h_errno __libc_h_errno
+ #   else
+ #    define h_errno h_errno	/* For #ifndef h_errno tests.  */
+@@ -16,7 +16,7 @@ extern __thread int h_errno attribute_tl
+ #  else
+ extern int h_errno;
+ #  endif	/* _LIBC_REENTRANT */
+-# endif /* !NOT_IN_libc || IS_IN_LIB */
++# endif /* IS_IN_LIB */
+ # define __set_h_errno(x) (h_errno = (x))
+ 
+ libc_hidden_proto (hstrerror)
+Index: glibc-2.17-c758a686/include/resolv.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/resolv.h
++++ glibc-2.17-c758a686/include/resolv.h
+@@ -16,7 +16,7 @@
+ # ifdef _LIBC_REENTRANT
+ #  include <tls.h>
+ #  undef _res
+-#  ifndef NOT_IN_libc
++#  if IS_IN (libc)
+ #   define __resp __libc_resp
+ #  endif
+ #  define _res (*__resp)
+Index: glibc-2.17-c758a686/include/stdlib.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/stdlib.h
++++ glibc-2.17-c758a686/include/stdlib.h
+@@ -216,7 +216,7 @@ extern int __qfcvt_r (long double __valu
+ 		      int *__restrict __decpt, int *__restrict __sign,
+ 		      char *__restrict __buf, size_t __len);
+ 
+-# ifndef NOT_IN_libc
++# if IS_IN (libc)
+ #  undef MB_CUR_MAX
+ #  define MB_CUR_MAX (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX))
+ 
+Index: glibc-2.17-c758a686/locale/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/locale/Makefile
++++ glibc-2.17-c758a686/locale/Makefile
+@@ -88,13 +88,13 @@ CPPFLAGS-locale-programs = -DLOCALE_PATH
+ 			   -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \
+ 			   -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \
+ 			   -DLOCSRCDIR='"$(i18ndir)/locales"' \
+-			   -DHAVE_CONFIG_H -DNOT_IN_libc
++			   -DHAVE_CONFIG_H
+ 
+ CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts
+ CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts
+ CFLAGS-charmap-dir.c = -Wno-write-strings
+ 
+-# This makes sure -DNOT_IN_libc et al are passed for all these modules.
++# Set libof-* for each routine.
+ cpp-srcs-left := $(localedef-modules) $(localedef-aux) $(locale-modules) \
+ 		 $(lib-modules)
+ lib := locale-programs
+Index: glibc-2.17-c758a686/nss/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nss/Makefile
++++ glibc-2.17-c758a686/nss/Makefile
+@@ -109,7 +109,6 @@ $(inst_vardbdir)/Makefile: db-Makefile $
+ 	$(do-install)
+ 
+ libof-nss_test1 = extramodules
+-CPPFLAGS-nss_test1 = -DNOT_IN_libc=1
+ $(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(common-objpfx)libc.so \
+ 			   $(common-objpfx)libc_nonshared.a
+ 	$(build-module)
+Index: glibc-2.17-c758a686/resolv/res_hconf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/resolv/res_hconf.c
++++ glibc-2.17-c758a686/resolv/res_hconf.c
+@@ -359,7 +359,7 @@ _res_hconf_init (void)
+ }
+ 
+ 
+-#ifndef NOT_IN_libc
++#if IS_IN (libc)
+ /* List of known interfaces.  */
+ libc_freeres_ptr (
+ static struct netaddr
+Index: glibc-2.17-c758a686/stdlib/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/stdlib/Makefile
++++ glibc-2.17-c758a686/stdlib/Makefile
+@@ -139,7 +139,6 @@ LDFLAGS-tst-putenv = $(no-as-needed)
+ $(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os
+ 	$(build-module)
+ libof-tst-putenvmod = extramodules
+-CFLAGS-tst-putenvmod.c = -DNOT_IN_libc=1
+ 
+ ifeq ($(build-shared),yes)
+ link-libm = $(common-objpfx)math/libm.so
+Index: glibc-2.17-c758a686/sysdeps/gnu/errlist.awk
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/gnu/errlist.awk
++++ glibc-2.17-c758a686/sysdeps/gnu/errlist.awk
+@@ -109,7 +109,7 @@ END {
+   print "  (sizeof _sys_errlist_internal / sizeof _sys_errlist_internal [0])";
+   print "const int _sys_nerr_internal = NERR;"
+   print "";
+-  print "#if !defined NOT_IN_libc && !ERRLIST_NO_COMPAT";
++  print "#if IS_IN (libc) && !ERRLIST_NO_COMPAT";
+   print "# include <errlist-compat.c>";
+   print "#endif";
+   print "";
+Index: glibc-2.17-c758a686/sysdeps/gnu/errlist.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/gnu/errlist.c
++++ glibc-2.17-c758a686/sysdeps/gnu/errlist.c
+@@ -1479,7 +1479,7 @@ TRANS error; @pxref{Cancel AIO Operation
+   (sizeof _sys_errlist_internal / sizeof _sys_errlist_internal [0])
+ const int _sys_nerr_internal = NERR;
+ 
+-#if !defined NOT_IN_libc && !ERRLIST_NO_COMPAT
++#if IS_IN (libc) && !ERRLIST_NO_COMPAT
+ # include <errlist-compat.c>
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i586/memcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i586/memcpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i586/memcpy.S
+@@ -34,7 +34,7 @@
+ #define LEN	SRC+PTR_SIZE
+ 
+         .text
+-#if defined PIC && !defined NOT_IN_libc
++#if defined PIC && IS_IN (libc)
+ ENTRY (__memcpy_chk)
+ 	movl	12(%esp), %eax
+ 	cmpl	%eax, 16(%esp)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/memcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/memcpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/memcpy.S
+@@ -30,7 +30,7 @@
+ #define LEN	SRC+PTR_SIZE
+ 
+ 	.text
+-#if defined PIC && !defined NOT_IN_libc
++#if defined PIC && IS_IN (libc)
+ ENTRY_CHK (__memcpy_chk)
+ 	movl	12(%esp), %eax
+ 	cmpl	%eax, 16(%esp)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/memmove.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/memmove.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/memmove.S
+@@ -37,7 +37,7 @@
+ # define SRC	DEST+PTR_SIZE
+ # define LEN	SRC+PTR_SIZE
+ 
+-# if defined PIC && !defined NOT_IN_libc
++# if defined PIC && IS_IN (libc)
+ ENTRY_CHK (__memmove_chk)
+ 	movl	12(%esp), %eax
+ 	cmpl	%eax, 16(%esp)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/mempcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/mempcpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/mempcpy.S
+@@ -30,7 +30,7 @@
+ #define LEN	SRC+PTR_SIZE
+ 
+ 	.text
+-#if defined PIC && !defined NOT_IN_libc
++#if defined PIC && IS_IN (libc)
+ ENTRY_CHK (__mempcpy_chk)
+ 	movl	12(%esp), %eax
+ 	cmpl	%eax, 16(%esp)
diff --git a/SOURCES/glibc-rh1256317-20.patch b/SOURCES/glibc-rh1256317-20.patch
new file mode 100644
index 0000000..8426653
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-20.patch
@@ -0,0 +1,54 @@
+commit 318c7a5846bbfaab567c92b37941000dfc0c00c0
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Aug 21 10:27:13 2014 +0530
+
+    Remove redundant CPPFLAGS for some programs
+    
+    These programs get the NOT_IN_libc twice, once through the 'other'
+    target and another explicitly.  Remove the explicitly added CPFLAG.
+    
+    	* catgets/Makefile (CPPFLAGS-gencat): Remove.
+    	* iconv/Makefile (CPPFLAGS-iconv_prog): Likewise.
+    	(CPPFLAGS-iconvconfig): Likewise.
+    	* timezone/Makefile (CPPFLAGS-zic): Likewise.
+
+Index: glibc-2.17-c758a686/catgets/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/catgets/Makefile
++++ glibc-2.17-c758a686/catgets/Makefile
+@@ -42,8 +42,6 @@ $(objpfx)gencat: $(gencat-modules:%=$(ob
+ catgets-CPPFLAGS := -DNLSPATH='"$(msgcatdir)/%L/%N:$(msgcatdir)/%L/LC_MESSAGES/%N:$(msgcatdir)/%l/%N:$(msgcatdir)/%l/LC_MESSAGES/%N:"' \
+ 	    -DHAVE_CONFIG_H
+ 
+-CPPFLAGS-gencat = -DNOT_IN_libc
+-
+ generated = de.msg test1.cat test1.h test2.cat test2.h sample.SJIS.cat \
+ 	    test-gencat.h
+ generated-dirs = de
+Index: glibc-2.17-c758a686/iconv/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/iconv/Makefile
++++ glibc-2.17-c758a686/iconv/Makefile
+@@ -53,9 +53,7 @@ CFLAGS-gconv_cache.c += -DGCONV_DIR='"$(
+ CFLAGS-gconv_conf.c = -DGCONV_PATH='"$(gconvdir)"'
+ CFLAGS-iconvconfig.c = -DGCONV_PATH='"$(gconvdir)"' -DGCONV_DIR='"$(gconvdir)"'
+ 
+-CPPFLAGS-iconv_prog = -DNOT_IN_libc
+ CPPFLAGS-iconv_charmap = -DNOT_IN_libc
+-CPPFLAGS-iconvconfig = -DNOT_IN_libc
+ CPPFLAGS-linereader = -DNOT_IN_libc
+ CPPFLAGS-strtab = -DNOT_IN_libc
+ CPPFLAGS-charmap = -DNOT_IN_libc
+Index: glibc-2.17-c758a686/timezone/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/timezone/Makefile
++++ glibc-2.17-c758a686/timezone/Makefile
+@@ -42,8 +42,6 @@ all: # Make this the default target; it
+ 
+ include ../Makeconfig	# Get objpfx defined so we can use it below.
+ 
+-CPPFLAGS-zic = -DNOT_IN_libc
+-
+ ifeq ($(have-ksh),yes)
+ install-bin-script = tzselect
+ generated += tzselect
diff --git a/SOURCES/glibc-rh1256317-21.patch b/SOURCES/glibc-rh1256317-21.patch
new file mode 100644
index 0000000..a1a4a1e
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-21.patch
@@ -0,0 +1,509 @@
+commit eb72478a286e0104f5636d21d86407b4c0e89fa1
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Aug 21 10:26:46 2014 +0530
+
+    Remove unnecessary uses of NOT_IN_libc
+    
+    If a IS_IN_* macro is defined, then NOT_IN_libc is always defined,
+    except obviously for IS_IN_libc.  There's no need to check for both.
+    Verified on x86_64 and i686 that the source is unchanged.
+    
+           * include/libc-symbols.h: Remove unnecessary check for
+           NOT_IN_libc.
+           * nptl/pthreadP.h: Likewise.
+           * sysdeps/aarch64/setjmp.S: Likewise.
+           * sysdeps/alpha/setjmp.S: Likewise.
+           * sysdeps/arm/sysdep.h: Likewise.
+           * sysdeps/i386/setjmp.S: Likewise.
+           * sysdeps/m68k/setjmp.c: Likewise.
+           * sysdeps/posix/getcwd.c: Likewise.
+           * sysdeps/powerpc/powerpc32/setjmp-common.S: Likewise.
+           * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise.
+           * sysdeps/s390/s390-32/setjmp.S: Likewise.
+           * sysdeps/s390/s390-64/setjmp.S: Likewise.
+           * sysdeps/sh/sh3/setjmp.S: Likewise.
+           * sysdeps/sh/sh4/setjmp.S: Likewise.
+           * sysdeps/unix/alpha/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/aarch64/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.
+           * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/tile/sysdep.h: Likewise.
+           * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
+           * sysdeps/x86_64/setjmp.S: Likewise.
+Index: glibc-2.17-c758a686/include/libc-symbols.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/libc-symbols.h
++++ glibc-2.17-c758a686/include/libc-symbols.h
+@@ -561,7 +561,7 @@ for linking")
+ # define libc_hidden_data_ver(local, name)
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ # define rtld_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define rtld_hidden_def(name) hidden_def (name)
+ # define rtld_hidden_weak(name) hidden_weak (name)
+@@ -579,7 +579,7 @@ for linking")
+ # define rtld_hidden_data_ver(local, name)
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_libm
++#ifdef IS_IN_libm
+ # define libm_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libm_hidden_def(name) hidden_def (name)
+ # define libm_hidden_weak(name) hidden_weak (name)
+@@ -597,7 +597,7 @@ for linking")
+ # define libm_hidden_data_ver(local, name)
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_libresolv
++#ifdef IS_IN_libresolv
+ # define libresolv_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libresolv_hidden_def(name) hidden_def (name)
+ # define libresolv_hidden_weak(name) hidden_weak (name)
+@@ -615,7 +615,7 @@ for linking")
+ # define libresolv_hidden_data_ver(local, name)
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_librt
++#ifdef IS_IN_librt
+ # define librt_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define librt_hidden_def(name) hidden_def (name)
+ # define librt_hidden_weak(name) hidden_weak (name)
+@@ -633,7 +633,7 @@ for linking")
+ # define librt_hidden_data_ver(local, name)
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_libdl
++#ifdef IS_IN_libdl
+ # define libdl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libdl_hidden_def(name) hidden_def (name)
+ # define libdl_hidden_weak(name) hidden_weak (name)
+@@ -651,7 +651,7 @@ for linking")
+ # define libdl_hidden_data_ver(local, name)
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_libnss_files
++#ifdef IS_IN_libnss_files
+ # define libnss_files_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libnss_files_hidden_def(name) hidden_def (name)
+ # define libnss_files_hidden_weak(name) hidden_weak (name)
+@@ -669,7 +669,7 @@ for linking")
+ # define libnss_files_hidden_data_ver(local, name)
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_libnsl
++#ifdef IS_IN_libnsl
+ # define libnsl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libnsl_hidden_def(name) hidden_def (name)
+ # define libnsl_hidden_weak(name) hidden_weak (name)
+@@ -687,7 +687,7 @@ for linking")
+ # define libnsl_hidden_data_ver(local, name)
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_libnss_nisplus
++#ifdef IS_IN_libnss_nisplus
+ # define libnss_nisplus_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libnss_nisplus_hidden_def(name) hidden_def (name)
+ # define libnss_nisplus_hidden_weak(name) hidden_weak (name)
+@@ -713,7 +713,7 @@ for linking")
+ # define HIDDEN_BUILTIN_JUMPTARGET(name) HIDDEN_JUMPTARGET(name)
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_libutil
++#ifdef IS_IN_libutil
+ # define libutil_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
+ # define libutil_hidden_def(name) hidden_def (name)
+ # define libutil_hidden_weak(name) hidden_weak (name)
+Index: glibc-2.17-c758a686/nptl/pthreadP.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/pthreadP.h
++++ glibc-2.17-c758a686/nptl/pthreadP.h
+@@ -239,7 +239,7 @@ extern void __pthread_register_cancel (_
+      __cleanup_fct_attribute;
+ extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
+      __cleanup_fct_attribute;
+-#if defined NOT_IN_libc && defined IS_IN_libpthread
++#ifdef IS_IN_libpthread
+ hidden_proto (__pthread_unwind)
+ hidden_proto (__pthread_unwind_next)
+ hidden_proto (__pthread_register_cancel)
+@@ -283,13 +283,13 @@ __do_cancel (void)
+ # define LIBC_CANCEL_HANDLED() \
+   __asm (".globl " __SYMBOL_PREFIX "__libc_enable_asynccancel"); \
+   __asm (".globl " __SYMBOL_PREFIX "__libc_disable_asynccancel")
+-#elif defined NOT_IN_libc && defined IS_IN_libpthread
++#elif defined IS_IN_libpthread
+ # define LIBC_CANCEL_ASYNC() CANCEL_ASYNC ()
+ # define LIBC_CANCEL_RESET(val) CANCEL_RESET (val)
+ # define LIBC_CANCEL_HANDLED() \
+   __asm (".globl " __SYMBOL_PREFIX "__pthread_enable_asynccancel"); \
+   __asm (".globl " __SYMBOL_PREFIX "__pthread_disable_asynccancel")
+-#elif defined NOT_IN_libc && defined IS_IN_librt
++#elif defined IS_IN_librt
+ # define LIBC_CANCEL_ASYNC() \
+   __librt_enable_asynccancel ()
+ # define LIBC_CANCEL_RESET(val) \
+@@ -344,7 +344,7 @@ extern int __make_stacks_executable (voi
+ 
+ /* longjmp handling.  */
+ extern void __pthread_cleanup_upto (__jmp_buf target, char *targetframe);
+-#if defined NOT_IN_libc && defined IS_IN_libpthread
++#ifdef IS_IN_libpthread
+ hidden_proto (__pthread_cleanup_upto)
+ #endif
+ 
+@@ -489,7 +489,7 @@ extern int __pthread_enable_asynccancel
+ extern void __pthread_disable_asynccancel (int oldtype)
+      internal_function attribute_hidden;
+ 
+-#if defined NOT_IN_libc && defined IS_IN_libpthread
++#ifdef IS_IN_libpthread
+ hidden_proto (__pthread_mutex_init)
+ hidden_proto (__pthread_mutex_destroy)
+ hidden_proto (__pthread_mutex_lock)
+Index: glibc-2.17-c758a686/sysdeps/posix/getcwd.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/posix/getcwd.c
++++ glibc-2.17-c758a686/sysdeps/posix/getcwd.c
+@@ -206,7 +206,7 @@ extern char *alloca ();
+ 
+ #ifdef __ASSUME_ATFCTS
+ # define __have_atfcts 1
+-#elif defined NOT_IN_libc && defined IS_IN_rtld
++#elif defined IS_IN_rtld
+ static int __rtld_have_atfcts;
+ # define __have_atfcts __rtld_have_atfcts
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S
+@@ -212,7 +212,7 @@ L(no_vmx):
+ #else
+ 	li	r6,0
+ #endif
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	li	r3,0
+ 	blr
+ #elif defined SHARED
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-32/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/setjmp.S
+@@ -57,7 +57,7 @@ ENTRY(__sigsetjmp)
+ #endif
+ 	std    %f4,40(%r2)
+ 	std    %f6,48(%r2)
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	/* In ld.so we never save the signal mask.  */
+ 	lhi    %r2,0
+ 	br     %r14
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-64/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/setjmp.S
+@@ -63,7 +63,7 @@ ENTRY(__sigsetjmp)
+ 	std    %f13,120(%r2)
+ 	std    %f14,128(%r2)
+ 	std    %f15,136(%r2)
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	/* In ld.so we never save the signal mask.  */
+ 	lghi   %r2,0
+ 	br     %r14
+Index: glibc-2.17-c758a686/sysdeps/sh/sh3/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sh/sh3/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/sh/sh3/setjmp.S
+@@ -46,7 +46,7 @@ ENTRY (__sigsetjmp)
+ 	mov.l	r9, @-r4
+ 	mov.l	r8, @-r4
+ 
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	/* In ld.so we never save the signal mask.  */
+ 	rts
+ 	 mov	#0, r0
+Index: glibc-2.17-c758a686/sysdeps/sh/sh4/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sh/sh4/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/sh/sh4/setjmp.S
+@@ -55,7 +55,7 @@ ENTRY (__sigsetjmp)
+ 	mov.l	r9, @-r4
+ 	mov.l	r8, @-r4
+ 
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	/* In ld.so we never save the signal mask.  */
+ 	rts
+ 	 mov	#0, r0
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/i386/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/sysdep.h
+@@ -521,7 +521,7 @@ asm (".L__X'%ebx = 1\n\t"
+ 
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  Using a global variable
+    is too complicated here since we have no PC-relative addressing mode.  */
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+@@ -272,7 +272,7 @@
+ 
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+@@ -282,7 +282,7 @@
+ 
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+@@ -367,7 +367,7 @@
+     _ret; })
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+@@ -373,7 +373,7 @@
+     _ret; })
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sh/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sh/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sh/sysdep.h
+@@ -338,7 +338,7 @@
+ #endif	/* __ASSEMBLER__ */
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  Using a global variable
+    is too complicated here since we have no PC-relative addressing mode.  */
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
+@@ -126,7 +126,7 @@ ENTRY(name);					\
+ #endif	/* __ASSEMBLER__ */
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+@@ -141,7 +141,7 @@ ENTRY(name);					\
+ #define STACK_BIAS	2047
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/x86_64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+@@ -395,7 +395,7 @@
+ 
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ # ifdef __ASSEMBLER__
+Index: glibc-2.17-c758a686/sysdeps/x86_64/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/setjmp.S
+@@ -54,7 +54,7 @@ ENTRY (__sigsetjmp)
+ #endif
+ 	movq %rax, (JB_PC*8)(%rdi)
+ 
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	/* In ld.so we never save the signal mask.  */
+ 	xorl %eax, %eax
+ 	retq
+Index: glibc-2.17-c758a686/ports/sysdeps/aarch64/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/aarch64/setjmp.S
++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/setjmp.S
+@@ -58,7 +58,7 @@ ENTRY (__sigsetjmp)
+ 	mov	x2,  sp
+ 	str	x2,  [x0, #JB_SP<<3]
+ #endif
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	/* In ld.so we never save the signal mask */
+ 	mov	w0, #0
+ 	RET
+Index: glibc-2.17-c758a686/ports/sysdeps/alpha/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/alpha/setjmp.S
++++ glibc-2.17-c758a686/ports/sysdeps/alpha/setjmp.S
+@@ -86,7 +86,7 @@ $sigsetjmp_local:
+ 	ldq	ra, 0(sp)
+ 	addq	sp, 16, sp
+ 	ret
+-#elif defined NOT_IN_libc && defined IS_IN_rtld
++#elif defined IS_IN_rtld
+ 	/* In ld.so we never save the signal mask.  */
+ 	mov	0, v0
+ 	ret
+Index: glibc-2.17-c758a686/ports/sysdeps/m68k/setjmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/m68k/setjmp.c
++++ glibc-2.17-c758a686/ports/sysdeps/m68k/setjmp.c
+@@ -57,7 +57,7 @@ __sigsetjmp (jmp_buf env, int savemask)
+ 		: : "m" (env[0].__jmpbuf[0].__fpregs[0]));
+ #endif
+ 
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+   /* In ld.so we never save the signal mask.  */
+   return 0;
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/alpha/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/alpha/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/alpha/sysdep.h
+@@ -346,7 +346,7 @@ __LABEL(name)						\
+ 
+ #include <stdint.h>
+ 
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ # ifdef __ASSEMBLER__
+ #  define PTR_MANGLE(dst, src, tmp)				\
+ 	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
+Index: glibc-2.17-c758a686/sysdeps/i386/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/setjmp.S
+@@ -51,7 +51,7 @@ ENTRY (BP_SYM (__sigsetjmp))
+ 	LEAVE /* pop frame pointer to prepare for tail-call.  */
+ 	movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer.  */
+ 
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	/* In ld.so we never save the signal mask.  */
+ 	xorl %eax, %eax
+ 	ret
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp-common.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/setjmp-common.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp-common.S
+@@ -64,7 +64,7 @@ ENTRY (BP_SYM (__sigsetjmp))
+ 	stw  r29,((JB_GPRS+15)*4)(3)
+ 	stw  r30,((JB_GPRS+16)*4)(3)
+ 	stw  r31,((JB_GPRS+17)*4)(3)
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	li   r3,0
+ 	blr
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
+@@ -324,8 +324,9 @@
+ #endif	/* __ASSEMBLER__ */
+ 
+ /* Pointer mangling is supported for AArch64.  */
+-#if (defined NOT_IN_libc && defined IS_IN_rtld) || \
+-  (!defined SHARED && (!defined NOT_IN_libc || defined IS_IN_libpthread))
++#if (defined IS_IN_rtld) || \
++     (!defined SHARED && (!defined NOT_IN_libc \
++			  || defined IS_IN_libpthread))
+ # ifdef __ASSEMBLER__
+ #  define PTR_MANGLE(dst, src, guard, tmp)                                \
+   LDST_PCREL (ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard_local)); \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S
+@@ -179,7 +179,7 @@ ENTRY(__sigsetjmp)
+ 	;;
+ 	st8.nta [r2]=r25		// ar.unat
+ 	st8.nta [r3]=in0		// &__jmp_buf
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ 	/* In ld.so we never save the signal mask.  */
+ 	;;
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
+@@ -62,7 +62,7 @@
+ 
+ #if defined USE_DL_SYSINFO \
+ 	&& (!defined NOT_IN_libc \
+-	    || defined IS_IN_libpthread || defined IS_IN_librt)
++	    || IS_IN (libpthread) || defined IS_IN_librt)
+ # define IA64_USE_NEW_STUB
+ #else
+ # undef IA64_USE_NEW_STUB
+@@ -361,7 +361,7 @@
+ #endif /* not __ASSEMBLER__ */
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#ifdef IS_IN_rtld
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
diff --git a/SOURCES/glibc-rh1256317-3.patch b/SOURCES/glibc-rh1256317-3.patch
new file mode 100644
index 0000000..e314e01
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-3.patch
@@ -0,0 +1,24 @@
+commit 76ca86a506a81d8a08655fb331162926569a47d6
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 21:24:22 2014 +0530
+
+    Remove last place for definition of IS_IN_* macros
+    
+    Ignoring IS_IN_build, which has a different purpose altogether, this
+    patch removes the last bit of IS_IN_* macro definitions.  Now barring
+    NOT_IN_libc, all cases use the IN_MODULE scheme.
+    
+    Generated code unchanged on x86_64.
+    
+    	* extra-lib.mk (CPPFLAGS-$(lib)): Remove IS_IN_$(lib).
+
+Index: glibc-2.17-c758a686/extra-lib.mk
+===================================================================
+--- glibc-2.17-c758a686.orig/extra-lib.mk
++++ glibc-2.17-c758a686/extra-lib.mk
+@@ -101,4 +101,4 @@ ifneq (,$(cpp-srcs-left))
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ endif
+ 
+-CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1
++CPPFLAGS-$(lib) := -DNOT_IN_libc=1
diff --git a/SOURCES/glibc-rh1256317-4.patch b/SOURCES/glibc-rh1256317-4.patch
new file mode 100644
index 0000000..6156feb
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-4.patch
@@ -0,0 +1,1239 @@
+commit a38484851aa244e1d5c48405f0e26fe93fa8d3b5
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 21:09:43 2014 +0530
+
+    Remove IS_IN_rtld
+    
+    Replace with IS_IN (rtld).  Generated code is unchanged on
+    x86_64.
+    
+            * elf/Makefile (CPPFLAGS-.os): Remove IS_IN_rtld.
+            * elf/dl-open.c: Use IS_IN (rtld) instead if IS_IN_rtld.
+            * elf/rtld-Rules: Likewise.
+            * elf/setup-vdso.h: Likewise.
+            * include/assert.h: Likewise.
+            * include/bits/stdlib-float.h: Likewise.
+            * include/errno.h: Likewise.
+            * include/sys/stat.h: Likewise.
+            * include/unistd.h: Likewise.
+            * sysdeps/aarch64/setjmp.S: Likewise.
+            * sysdeps/alpha/setjmp.S: Likewise.
+            * sysdeps/arm/__longjmp.S: Likewise.
+            * sysdeps/arm/aeabi_unwind_cpp_pr1.c: Likewise.
+            * sysdeps/arm/setjmp.S: Likewise.
+            * sysdeps/arm/sysdep.h: Likewise.
+            * sysdeps/generic/_itoa.h: Likewise.
+            * sysdeps/generic/dl-sysdep.h: Likewise.
+            * sysdeps/generic/ldsodefs.h: Likewise.
+            * sysdeps/i386/dl-tls.h: Likewise.
+            * sysdeps/i386/setjmp.S: Likewise.
+            * sysdeps/m68k/setjmp.c: Likewise.
+            * sysdeps/mach/hurd/dl-execstack.c: Likewise.
+            * sysdeps/mach/hurd/opendir.c: Likewise.
+            * sysdeps/posix/getcwd.c: Likewise.
+            * sysdeps/posix/opendir.c: Likewise.
+            * sysdeps/posix/profil.c: Likewise.
+            * sysdeps/powerpc/dl-procinfo.h: Likewise.
+            * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Likewise.
+            * sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
+            * sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h: Likewise.
+            * sysdeps/powerpc/powerpc32/setjmp-common.S: Likewise.
+            * sysdeps/powerpc/powerpc64/__longjmp-common.S: Likewise.
+            * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise.
+            * sysdeps/s390/dl-tls.h: Likewise.
+            * sysdeps/s390/s390-32/setjmp.S: Likewise.
+            * sysdeps/s390/s390-64/setjmp.S: Likewise.
+            * sysdeps/sh/sh3/setjmp.S: Likewise.
+            * sysdeps/sh/sh4/setjmp.S: Likewise.
+            * sysdeps/unix/alpha/sysdep.h: Likewise.
+            * sysdeps/unix/arm/sysdep.S: Likewise.
+            * sysdeps/unix/i386/sysdep.S: Likewise.
+            * sysdeps/unix/sysv/linux/aarch64/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/getcwd.c: Likewise.
+            * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.
+            * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/lowlevellock-futex.h: Likewise.
+            * sysdeps/unix/sysv/linux/m68k/bits/m68k-vdso.h: Likewise.
+            * sysdeps/unix/sysv/linux/m68k/m68k-helpers.S: Likewise.
+            * sysdeps/unix/sysv/linux/microblaze/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/tile/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/tile/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
+            * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
+            * sysdeps/unix/x86_64/sysdep.S: Likewise.
+            * sysdeps/x86_64/setjmp.S: Likewise.
+
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -444,7 +444,7 @@ CFLAGS-cache.c = $(SYSCONF-FLAGS)
+ CFLAGS-rtld.c = $(SYSCONF-FLAGS)
+ 
+ CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
+-		     -DNOT_IN_libc=1 -DIS_IN_rtld=1)
++		     -DNOT_IN_libc=1)
+ 
+ # Disable any optimization which might result in function calls during early
+ # dynamic loader startup. We disable -ftree-loop-distribute-patterns which
+Index: glibc-2.17-c758a686/elf/dl-open.c
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/dl-open.c
++++ glibc-2.17-c758a686/elf/dl-open.c
+@@ -741,7 +741,7 @@ _dl_show_scope (struct link_map *l, int
+   _dl_debug_printf ("\n");
+ }
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* Return non-zero if ADDR lies within one of L's segments.  */
+ int
+ internal_function
+Index: glibc-2.17-c758a686/elf/rtld-Rules
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/rtld-Rules
++++ glibc-2.17-c758a686/elf/rtld-Rules
+@@ -134,6 +134,6 @@ lib := rtld
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ 
+ # This here is the whole point of all the shenanigans.
+-rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1
++rtld-CPPFLAGS := -DNOT_IN_libc=1
+ 
+ endif
+Index: glibc-2.17-c758a686/elf/setup-vdso.h
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/setup-vdso.h
++++ glibc-2.17-c758a686/elf/setup-vdso.h
+@@ -101,7 +101,7 @@ setup_vdso (struct link_map *main_map __
+       /* Add the vDSO to the object list.  */
+       _dl_add_to_namespace_list (l, LM_ID_BASE);
+ 
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+       /* Rearrange the list so this DSO appears after rtld_map.  */
+       assert (l->l_next == NULL);
+       assert (l->l_prev == main_map);
+Index: glibc-2.17-c758a686/include/assert.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/assert.h
++++ glibc-2.17-c758a686/include/assert.h
+@@ -20,7 +20,7 @@ extern void __assert_fail_base (const ch
+ 				const char *function)
+      __THROW  __attribute__ ((__noreturn__));
+ 
+-# if !defined NOT_IN_libc || defined IS_IN_rtld
++# if !defined NOT_IN_libc || IS_IN (rtld)
+ hidden_proto (__assert_fail)
+ hidden_proto (__assert_perror_fail)
+ # endif
+Index: glibc-2.17-c758a686/include/bits/stdlib-float.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/bits/stdlib-float.h
++++ glibc-2.17-c758a686/include/bits/stdlib-float.h
+@@ -1,4 +1,4 @@
+ /* No floating-point inline functions in rtld.  */
+-#ifndef IS_IN_rtld
++#if !IS_IN (rtld)
+ # include <stdlib/bits/stdlib-float.h>
+ #endif
+Index: glibc-2.17-c758a686/include/errno.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/errno.h
++++ glibc-2.17-c758a686/include/errno.h
+@@ -4,7 +4,7 @@
+ 
+ #if defined _ERRNO_H && !defined _ISOMAC && !defined __cplusplus
+ 
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ #  include <dl-sysdep.h>
+ # endif
+ 
+Index: glibc-2.17-c758a686/include/sys/stat.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/sys/stat.h
++++ glibc-2.17-c758a686/include/sys/stat.h
+@@ -12,7 +12,7 @@ extern __mode_t __umask (__mode_t __mask
+ extern int __mkdir (const char *__path, __mode_t __mode);
+ extern int __mknod (const char *__path,
+ 		    __mode_t __mode, __dev_t __dev);
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ hidden_proto (__fxstat)
+ hidden_proto (__fxstat64)
+ hidden_proto (__lxstat)
+Index: glibc-2.17-c758a686/ports/sysdeps/aarch64/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/aarch64/setjmp.S
++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/setjmp.S
+@@ -58,7 +58,7 @@ ENTRY (__sigsetjmp)
+ 	mov	x2,  sp
+ 	str	x2,  [x0, #JB_SP<<3]
+ #endif
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	/* In ld.so we never save the signal mask */
+ 	mov	w0, #0
+ 	RET
+Index: glibc-2.17-c758a686/ports/sysdeps/alpha/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/alpha/setjmp.S
++++ glibc-2.17-c758a686/ports/sysdeps/alpha/setjmp.S
+@@ -86,7 +86,7 @@ $sigsetjmp_local:
+ 	ldq	ra, 0(sp)
+ 	addq	sp, 16, sp
+ 	ret
+-#elif defined IS_IN_rtld
++#elif IS_IN (rtld)
+ 	/* In ld.so we never save the signal mask.  */
+ 	mov	0, v0
+ 	ret
+Index: glibc-2.17-c758a686/ports/sysdeps/arm/__longjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/arm/__longjmp.S
++++ glibc-2.17-c758a686/ports/sysdeps/arm/__longjmp.S
+@@ -52,7 +52,7 @@ ENTRY (__longjmp)
+ #endif
+ 
+ #ifdef NEED_HWCAP
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ 	ldr	a2, 1f
+ 	ldr	a3, .Lrtld_local_ro
+ 0:	add	a2, pc, a2
+@@ -104,7 +104,7 @@ ENTRY (__longjmp)
+ 	DO_RET(lr)
+ 
+ #ifdef NEED_HWCAP
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ 1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - 8
+ .Lrtld_local_ro:
+ 	.long	C_SYMBOL_NAME(_rtld_local_ro)(GOTOFF)
+Index: glibc-2.17-c758a686/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c
++++ glibc-2.17-c758a686/ports/sysdeps/arm/aeabi_unwind_cpp_pr1.c
+@@ -27,7 +27,7 @@ attribute_hidden
+ void
+ __aeabi_unwind_cpp_pr0 (void)
+ {
+-#ifndef IS_IN_rtld
++#if !IS_IN (rtld)
+   abort ();
+ #endif
+ }
+@@ -36,7 +36,7 @@ attribute_hidden
+ void
+ __aeabi_unwind_cpp_pr1 (void)
+ {
+-#ifndef IS_IN_rtld
++#if !IS_IN (rtld)
+   abort ();
+ #endif
+ }
+@@ -45,7 +45,7 @@ attribute_hidden
+ void
+ __aeabi_unwind_cpp_pr2 (void)
+ {
+-#ifndef IS_IN_rtld
++#if !IS_IN (rtld)
+   abort ();
+ #endif
+ }
+Index: glibc-2.17-c758a686/ports/sysdeps/arm/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/arm/setjmp.S
++++ glibc-2.17-c758a686/ports/sysdeps/arm/setjmp.S
+@@ -35,7 +35,7 @@ ENTRY (__sigsetjmp)
+ 
+ #ifdef NEED_HWCAP
+ 	/* Check if we have a VFP unit.  */
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ 	ldr	a3, 1f
+ 	ldr	a4, .Lrtld_local_ro
+ 0:	add	a3, pc, a3
+@@ -90,7 +90,7 @@ ENTRY (__sigsetjmp)
+ 	B	PLTJMP(C_SYMBOL_NAME(__sigjmp_save))
+ 
+ #ifdef NEED_HWCAP
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ 1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - 8
+ .Lrtld_local_ro:
+ 	.long	C_SYMBOL_NAME(_rtld_local_ro)(GOTOFF)
+Index: glibc-2.17-c758a686/sysdeps/generic/_itoa.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/generic/_itoa.h
++++ glibc-2.17-c758a686/sysdeps/generic/_itoa.h
+@@ -46,7 +46,7 @@ extern char *_itoa (unsigned long long i
+ 
+ extern const char _itoa_upper_digits[];
+ extern const char _itoa_lower_digits[];
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ hidden_proto (_itoa_upper_digits)
+ hidden_proto (_itoa_lower_digits)
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/generic/dl-sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/generic/dl-sysdep.h
++++ glibc-2.17-c758a686/sysdeps/generic/dl-sysdep.h
+@@ -27,7 +27,7 @@
+    all the libc functions that ld.so uses are called without PLT and always
+    get the versions linked into ld.so rather than the libc ones.  */
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # define RTLD_PRIVATE_ERRNO 1
+ #else
+ # define RTLD_PRIVATE_ERRNO 0
+Index: glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/generic/ldsodefs.h
++++ glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h
+@@ -246,7 +246,7 @@ typedef void (*receiver_fct) (int, const
+ # define GL(name) _##name
+ #else
+ # define EXTERN
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ #  define GL(name) _rtld_local._##name
+ # else
+ #  define GL(name) _rtld_global._##name
+@@ -415,7 +415,7 @@ struct rtld_global
+ #ifdef SHARED
+ };
+ # define __rtld_global_attribute__
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ #  ifdef HAVE_SDATA_SECTION
+ #   define __rtld_local_attribute__ \
+ 	    __attribute__ ((visibility ("hidden"), section (".sdata")))
+@@ -434,7 +434,7 @@ extern struct rtld_global _rtld_global _
+ #ifndef SHARED
+ # define GLRO(name) _##name
+ #else
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ #  define GLRO(name) _rtld_local_ro._##name
+ # else
+ #  define GLRO(name) _rtld_global_ro._##name
+@@ -593,7 +593,7 @@ struct rtld_global_ro
+   EXTERN int _dl_pointer_guard;
+ };
+ # define __rtld_global_attribute__
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ #  define __rtld_local_attribute__ __attribute__ ((visibility ("hidden")))
+ extern struct rtld_global_ro _rtld_local_ro
+     attribute_relro __rtld_local_attribute__;
+@@ -610,7 +610,7 @@ extern const struct rtld_global_ro _rtld
+ #endif
+ #undef EXTERN
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* This is the initial value of GL(dl_error_catch_tsd).
+    A non-TLS libpthread will change it.  */
+ extern void **_dl_initial_error_catch_tsd (void) __attribute__ ((const))
+@@ -641,7 +641,7 @@ extern char **_dl_argv
+      attribute_relro
+ #endif
+      ;
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ extern char **_dl_argv_internal attribute_hidden
+ # ifndef DL_ARGV_NOT_RELRO
+      attribute_relro
+@@ -655,7 +655,7 @@ extern char **_dl_argv_internal attribut
+ /* Flag set at startup and cleared when the last initializer has run.  */
+ extern int _dl_starting_up;
+ weak_extern (_dl_starting_up)
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ extern int _dl_starting_up_internal attribute_hidden;
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/dl-tls.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/dl-tls.h
++++ glibc-2.17-c758a686/sysdeps/i386/dl-tls.h
+@@ -32,7 +32,7 @@ extern void *___tls_get_addr (tls_index
+ extern void *___tls_get_addr_internal (tls_index *ti)
+      __attribute__ ((__regparm__ (1))) attribute_hidden;
+ 
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ /* The special thing about the x86 TLS ABI is that we have two
+    variants of the __tls_get_addr function with different calling
+    conventions.  The GNU version, which we are mostly concerned here,
+Index: glibc-2.17-c758a686/sysdeps/i386/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/setjmp.S
+@@ -51,7 +51,7 @@ ENTRY (BP_SYM (__sigsetjmp))
+ 	LEAVE /* pop frame pointer to prepare for tail-call.  */
+ 	movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer.  */
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	/* In ld.so we never save the signal mask.  */
+ 	xorl %eax, %eax
+ 	ret
+Index: glibc-2.17-c758a686/ports/sysdeps/m68k/setjmp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/m68k/setjmp.c
++++ glibc-2.17-c758a686/ports/sysdeps/m68k/setjmp.c
+@@ -57,7 +57,7 @@ __sigsetjmp (jmp_buf env, int savemask)
+ 		: : "m" (env[0].__jmpbuf[0].__fpregs[0]));
+ #endif
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+   /* In ld.so we never save the signal mask.  */
+   return 0;
+ #else
+Index: glibc-2.17-c758a686/sysdeps/mach/hurd/dl-execstack.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/mach/hurd/dl-execstack.c
++++ glibc-2.17-c758a686/sysdeps/mach/hurd/dl-execstack.c
+@@ -34,7 +34,7 @@ _dl_make_stack_executable (void **stack_
+     return EPERM;
+   *stack_endp = NULL;
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+   if (__mprotect ((void *)_dl_hurd_data->stack_base, _dl_hurd_data->stack_size,
+ 		  PROT_READ|PROT_WRITE|PROT_EXEC) != 0)
+     return errno;
+Index: glibc-2.17-c758a686/sysdeps/mach/hurd/opendir.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/mach/hurd/opendir.c
++++ glibc-2.17-c758a686/sysdeps/mach/hurd/opendir.c
+@@ -82,7 +82,7 @@ __opendirat (int dfd, const char *name)
+ 
+   int flags = O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_CLOEXEC;
+   int fd;
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+   assert (dfd == AT_FDCWD);
+   fd = open_not_cancel_2 (name, flags);
+ #else
+Index: glibc-2.17-c758a686/sysdeps/posix/getcwd.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/posix/getcwd.c
++++ glibc-2.17-c758a686/sysdeps/posix/getcwd.c
+@@ -206,7 +206,7 @@ extern char *alloca ();
+ 
+ #ifdef __ASSUME_ATFCTS
+ # define __have_atfcts 1
+-#elif defined IS_IN_rtld
++#elif IS_IN (rtld)
+ static int __rtld_have_atfcts;
+ # define __have_atfcts __rtld_have_atfcts
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/posix/opendir.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/posix/opendir.c
++++ glibc-2.17-c758a686/sysdeps/posix/opendir.c
+@@ -121,7 +121,7 @@ __opendirat (int dfd, const char *name)
+   flags |= O_CLOEXEC;
+ #endif
+   int fd;
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+   assert (dfd == AT_FDCWD);
+   fd = open_not_cancel_2 (name, flags);
+ #else
+Index: glibc-2.17-c758a686/sysdeps/posix/profil.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/posix/profil.c
++++ glibc-2.17-c758a686/sysdeps/posix/profil.c
+@@ -65,7 +65,7 @@ __profil (u_short *sample_buffer, size_t
+ {
+   struct sigaction act;
+   struct itimerval timer;
+-#ifndef IS_IN_rtld
++#if !IS_IN (rtld)
+   static struct sigaction oact;
+   static struct itimerval otimer;
+ # define oact_ptr &oact
+Index: glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/dl-procinfo.h
++++ glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h
+@@ -166,7 +166,7 @@ _dl_string_platform (const char *str)
+   return -1;
+ }
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ static inline int
+ __attribute__ ((unused))
+ _dl_procinfo (unsigned int type, unsigned long int word)
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
+@@ -37,7 +37,7 @@ ENTRY (BP_SYM (__longjmp))
+ 	addis	r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@ha
+ 	addi	r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@l
+ #  ifdef SHARED
+-#   ifdef IS_IN_rtld
++#   if IS_IN (rtld)
+ 	/* Inside ld.so we use the local alias to avoid runtime GOT
+ 	   relocations.  */
+ 	lwz     r5,_rtld_local_ro@got(r5)
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
+@@ -90,7 +90,7 @@ ENTRY (BP_SYM (__sigsetjmp))
+ 	mtlr	r6
+ 	cfi_same_value (lr)
+ #  ifdef SHARED
+-#   ifdef IS_IN_rtld
++#   if IS_IN (rtld)
+ 	/* Inside ld.so we use the local alias to avoid runtime GOT
+ 	   relocations.  */
+ 	lwz     r5,_rtld_local_ro@got(r5)
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
+@@ -21,7 +21,7 @@
+    the dl_hwcap field. The assembly is to make the compiler not optimize the
+    test (&_rtld_global_ro != NULL), which is always true in ISO C (but not
+    in that case since _rtld_global_ro might not been realocated yet).  */
+-#if defined(SHARED) && !defined(IS_IN_rtld)
++#if defined(SHARED) && !IS_IN (rtld)
+ # define __GLRO(value) \
+   ({ volatile void **__p = (volatile void**)(&_rtld_global_ro);	\
+     unsigned long int __ret;					\
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp-common.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/setjmp-common.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp-common.S
+@@ -64,7 +64,7 @@ ENTRY (BP_SYM (__sigsetjmp))
+ 	stw  r29,((JB_GPRS+15)*4)(3)
+ 	stw  r30,((JB_GPRS+16)*4)(3)
+ 	stw  r31,((JB_GPRS+17)*4)(3)
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	li   r3,0
+ 	blr
+ #else
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/__longjmp-common.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S
+@@ -31,7 +31,7 @@
+ 	.section	".toc","aw"
+ .LC__dl_hwcap:
+ # ifdef SHARED
+-#  ifdef IS_IN_rtld
++#  if IS_IN (rtld)
+ 	/* Inside ld.so we use the local alias to avoid runtime GOT
+ 	   relocations.  */
+ 	.tc _rtld_local_ro[TC],_rtld_local_ro
+@@ -132,7 +132,7 @@ L(no_vmx):
+ 	ld r0,(JB_LR*8)(r3)
+ 	ld r14,((JB_GPRS+0)*8)(r3)
+ 	lfd fp14,((JB_FPRS+0)*8)(r3)
+-#if defined SHARED && !defined IS_IN_rtld
++#if defined SHARED && !IS_IN (rtld)
+ 	std r2,FRAME_TOC_SAVE(r1)	/* Restore the callers TOC save area.  */
+ #endif
+ 	ld r15,((JB_GPRS+1)*8)(r3)
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S
+@@ -30,7 +30,7 @@
+ 	.section	".toc","aw"
+ .LC__dl_hwcap:
+ # ifdef SHARED
+-#  ifdef IS_IN_rtld
++#  if IS_IN (rtld)
+ 	/* Inside ld.so we use the local alias to avoid runtime GOT
+ 	   relocations.  */
+ 	.tc _rtld_local_ro[TC],_rtld_local_ro
+@@ -50,7 +50,7 @@ ENTRY (setjmp)
+ 	b JUMPTARGET (GLUE(__sigsetjmp,_ent))
+ END (setjmp)
+ 
+-#if defined SHARED && !defined IS_IN_rtld && !defined __NO_VMX__
++#if defined SHARED && !IS_IN (rtld) && !defined __NO_VMX__
+ /* When called from within libc we need a special version of _setjmp
+    that saves r2 since the call won't go via a plt call stub.  See
+    bugz #269.  __GI__setjmp is used in csu/libc-start.c when
+@@ -82,7 +82,7 @@ JUMPTARGET(GLUE(__sigsetjmp,_ent)):
+ 	std  r1,(JB_GPR1*8)(3)
+ #endif
+ 	mflr r0
+-#if defined SHARED && !defined IS_IN_rtld
++#if defined SHARED && !IS_IN (rtld)
+ 	ld   r5,FRAME_TOC_SAVE(r1)	/* Retrieve the callers TOC.  */
+ 	std  r5,(JB_GPR2*8)(3)
+ #else
+@@ -212,7 +212,7 @@ L(no_vmx):
+ #else
+ 	li	r6,0
+ #endif
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	li	r3,0
+ 	blr
+ #elif defined SHARED
+Index: glibc-2.17-c758a686/sysdeps/s390/dl-tls.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/dl-tls.h
++++ glibc-2.17-c758a686/sysdeps/s390/dl-tls.h
+@@ -29,7 +29,7 @@ typedef struct
+ 
+ extern unsigned long __tls_get_offset (unsigned long got_offset);
+ 
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ 
+ #  include <shlib-compat.h>
+ 
+@@ -78,9 +78,9 @@ __tls_get_offset:\n\
+ 1:	.long	__tls_get_addr - 0b\n\
+ ");
+ #  endif
+-# else /* IS_IN_rtld */
++# else /* IS_IN (rtld) */
+ extern void *__tls_get_addr_internal (tls_index *ti);
+-# endif /* !IS_IN_rtld */
++# endif /* !IS_IN (rtld) */
+ 
+ # define GET_ADDR_OFFSET \
+   (ti->ti_offset - (unsigned long) __builtin_thread_pointer ())
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-32/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/setjmp.S
+@@ -57,7 +57,7 @@ ENTRY(__sigsetjmp)
+ #endif
+ 	std    %f4,40(%r2)
+ 	std    %f6,48(%r2)
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	/* In ld.so we never save the signal mask.  */
+ 	lhi    %r2,0
+ 	br     %r14
+Index: glibc-2.17-c758a686/sysdeps/s390/s390-64/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/setjmp.S
+@@ -63,7 +63,7 @@ ENTRY(__sigsetjmp)
+ 	std    %f13,120(%r2)
+ 	std    %f14,128(%r2)
+ 	std    %f15,136(%r2)
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	/* In ld.so we never save the signal mask.  */
+ 	lghi   %r2,0
+ 	br     %r14
+Index: glibc-2.17-c758a686/sysdeps/sh/sh3/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sh/sh3/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/sh/sh3/setjmp.S
+@@ -46,7 +46,7 @@ ENTRY (__sigsetjmp)
+ 	mov.l	r9, @-r4
+ 	mov.l	r8, @-r4
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	/* In ld.so we never save the signal mask.  */
+ 	rts
+ 	 mov	#0, r0
+Index: glibc-2.17-c758a686/sysdeps/sh/sh4/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sh/sh4/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/sh/sh4/setjmp.S
+@@ -55,7 +55,7 @@ ENTRY (__sigsetjmp)
+ 	mov.l	r9, @-r4
+ 	mov.l	r8, @-r4
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	/* In ld.so we never save the signal mask.  */
+ 	rts
+ 	 mov	#0, r0
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/alpha/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/alpha/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/alpha/sysdep.h
+@@ -26,7 +26,7 @@
+ # include <regdef.h>
+ #endif
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # include <dl-sysdep.h>         /* Defines RTLD_PRIVATE_ERRNO.  */
+ #endif
+ 
+@@ -346,7 +346,7 @@ __LABEL(name)						\
+ 
+ #include <stdint.h>
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # ifdef __ASSEMBLER__
+ #  define PTR_MANGLE(dst, src, tmp)				\
+ 	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/arm/sysdep.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/arm/sysdep.S
++++ glibc-2.17-c758a686/ports/sysdeps/unix/arm/sysdep.S
+@@ -21,7 +21,7 @@
+ #define _ERRNO_H
+ #include <bits/errno.h>
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # include <dl-sysdep.h>			/* Defines RTLD_PRIVATE_ERRNO.  */
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/unix/i386/sysdep.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/i386/sysdep.S
++++ glibc-2.17-c758a686/sysdeps/unix/i386/sysdep.S
+@@ -22,7 +22,7 @@
+ #include <bp-asm.h>
+ #include <bp-sym.h>
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # include <dl-sysdep.h>		/* Defines RTLD_PRIVATE_ERRNO.  */
+ #endif
+ 
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
+@@ -324,7 +324,7 @@
+ #endif	/* __ASSEMBLER__ */
+ 
+ /* Pointer mangling is supported for AArch64.  */
+-#if (defined IS_IN_rtld) || \
++#if (IS_IN (rtld)) || \
+      (!defined SHARED && (!defined NOT_IN_libc \
+ 			  || IS_IN (libpthread)))
+ # ifdef __ASSEMBLER__
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/getcwd.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/getcwd.c
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/getcwd.c
+@@ -33,7 +33,7 @@
+ 
+ /* If we compile the file for use in ld.so we don't need the feature
+    that getcwd() allocates the buffers itself.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # define NO_ALLOCATION	1
+ #endif
+ 
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
+@@ -56,7 +56,7 @@
+ /* Initialize locks to zero.  */
+ #define LLL_MUTEX_LOCK_INITIALIZER (0)
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
+@@ -71,7 +71,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/i386/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/sysdep.h
+@@ -521,7 +521,7 @@ asm (".L__X'%ebx = 1\n\t"
+ 
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  Using a global variable
+    is too complicated here since we have no PC-relative addressing mode.  */
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S
+@@ -179,7 +179,7 @@ ENTRY(__sigsetjmp)
+ 	;;
+ 	st8.nta [r2]=r25		// ar.unat
+ 	st8.nta [r3]=in0		// &__jmp_buf
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	/* In ld.so we never save the signal mask.  */
+ 	;;
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
+@@ -361,7 +361,7 @@
+ #endif /* not __ASSEMBLER__ */
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/bits/m68k-vdso.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/m68k/bits/m68k-vdso.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/bits/m68k-vdso.h
+@@ -23,7 +23,7 @@
+ 
+ #ifdef SHARED
+ 
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ # define M68K_VDSO_SYMBOL(name) __rtld_##name
+ # define STR_M68K_VDSO_SYMBOL(name) "__rtld_" #name
+ # else
+@@ -35,7 +35,7 @@
+ 
+ /* We define __rtld_* copies for rtld.
+    We need them visible in libc to initialize.  */
+-#  if defined IS_IN_rtld || !defined NOT_IN_libc
++#  if IS_IN (rtld) || !defined NOT_IN_libc
+ extern void *__rtld___vdso_read_tp;
+ extern void *__rtld___vdso_atomic_cmpxchg_32;
+ extern void *__rtld___vdso_atomic_barrier;
+@@ -44,14 +44,14 @@ extern void *__rtld___vdso_atomic_barrie
+ extern void __vdso_read_tp_stub (void);
+ extern void __vdso_atomic_cmpxchg_32_stub (void);
+ extern void __vdso_atomic_barrier_stub (void);
+-#  endif /* IS_IN_rtld || !NOT_IN_libc */
++#  endif /* IS_IN (rtld) || !NOT_IN_libc */
+ 
+ /* RTLD should only use its own copies.  */
+-#  ifndef IS_IN_rtld
++#  if !IS_IN (rtld)
+ extern void *__vdso_read_tp;
+ extern void *__vdso_atomic_cmpxchg_32;
+ extern void *__vdso_atomic_barrier;
+-#  endif /* !IS_IN_rtld */
++#  endif /* !IS_IN (rtld) */
+ 
+ # endif /* !__ASSEMBLER__ */
+ 
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/m68k-helpers.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/m68k/m68k-helpers.S
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/m68k-helpers.S
+@@ -51,7 +51,7 @@ END (__vdso_read_tp_stub)
+    equivalent helper function (which clobbers fewer registers than
+    a normal function call) in a vdso; tail call to the
+    helper.  */
+-# ifdef IS_IN_rtld
++# if IS_IN (rtld)
+ /* rtld gets a hidden copy of __m68k_read_tp.  */
+ 	.hidden __m68k_read_tp
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+@@ -272,7 +272,7 @@
+ 
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+@@ -282,7 +282,7 @@
+ 
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
+@@ -51,7 +51,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+@@ -367,7 +367,7 @@
+     _ret; })
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+@@ -373,7 +373,7 @@
+     _ret; })
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED     FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sh/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sh/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sh/sysdep.h
+@@ -338,7 +338,7 @@
+ #endif	/* __ASSEMBLER__ */
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  Using a global variable
+    is too complicated here since we have no PC-relative addressing mode.  */
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
+@@ -56,7 +56,7 @@ extern void __cpu_relax (void);
+ #define BUSY_WAIT_NOP	__cpu_relax ()
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
+@@ -22,7 +22,7 @@
+ 
+ #include <sysdeps/unix/sysv/linux/sparc/sysdep.h>
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # include <dl-sysdep.h>		/* Defines RTLD_PRIVATE_ERRNO.  */
+ #endif
+ #include <tls.h>
+@@ -126,7 +126,7 @@ ENTRY(name);					\
+ #endif	/* __ASSEMBLER__ */
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+@@ -22,7 +22,7 @@
+ 
+ #include <sysdeps/unix/sysv/linux/sparc/sysdep.h>
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # include <dl-sysdep.h>		/* Defines RTLD_PRIVATE_ERRNO.  */
+ #endif
+ #include <tls.h>
+@@ -141,7 +141,7 @@ ENTRY(name);					\
+ #define STACK_BIAS	2047
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/sysdep.h
+@@ -205,7 +205,7 @@
+ #endif /* not __ASSEMBLER__ */
+ 
+ /* Pointer mangling support.  */
+-#if defined NOT_IN_libc && defined IS_IN_rtld
++#if defined NOT_IN_libc && IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ #else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+@@ -72,7 +72,7 @@
+ 
+ #ifndef __ASSEMBLER__
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/x86_64/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+@@ -24,7 +24,7 @@
+ #include <bp-asm.h>
+ #include <tls.h>
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # include <dl-sysdep.h>		/* Defines RTLD_PRIVATE_ERRNO.  */
+ #endif
+ 
+@@ -395,7 +395,7 @@
+ 
+ 
+ /* Pointer mangling support.  */
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* We cannot use the thread descriptor because in ld.so we use setjmp
+    earlier than the descriptor is initialized.  */
+ # ifdef __ASSEMBLER__
+Index: glibc-2.17-c758a686/sysdeps/unix/x86_64/sysdep.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/x86_64/sysdep.S
++++ glibc-2.17-c758a686/sysdeps/unix/x86_64/sysdep.S
+@@ -22,7 +22,7 @@
+ #include <bp-sym.h>
+ #include <tls.h>
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # include <dl-sysdep.h>		/* Defines RTLD_PRIVATE_ERRNO.  */
+ #endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/setjmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/setjmp.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/setjmp.S
+@@ -54,7 +54,7 @@ ENTRY (__sigsetjmp)
+ #endif
+ 	movq %rax, (JB_PC*8)(%rdi)
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ 	/* In ld.so we never save the signal mask.  */
+ 	xorl %eax, %eax
+ 	retq
+Index: glibc-2.17-c758a686/include/unistd.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/unistd.h
++++ glibc-2.17-c758a686/include/unistd.h
+@@ -151,7 +151,7 @@ libc_hidden_proto (__sbrk)
+    environment variables that normally affect them.  */
+ extern int __libc_enable_secure attribute_relro;
+ extern int __libc_enable_secure_decided;
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ /* XXX The #ifdef should go.  */
+ extern int __libc_enable_secure_internal attribute_relro attribute_hidden;
+ #endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
+@@ -27,7 +27,7 @@
+    all the libc functions that ld.so uses are called without PLT and always
+    get the versions linked into ld.so rather than the libc ones.  */
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # define RTLD_PRIVATE_ERRNO 1
+ #else
+ # define RTLD_PRIVATE_ERRNO 0
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
+@@ -52,7 +52,7 @@
+ #define LLL_PRIVATE	0
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
+@@ -49,7 +49,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
+@@ -48,7 +48,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h
+@@ -27,7 +27,7 @@
+    all the libc functions that ld.so uses are called without PLT and always
+    get the versions linked into ld.so rather than the libc ones.  */
+ 
+-#ifdef IS_IN_rtld
++#if IS_IN (rtld)
+ # define RTLD_PRIVATE_ERRNO 1
+ #else
+ # define RTLD_PRIVATE_ERRNO 0
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/m68k/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h
+@@ -48,7 +48,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h
+@@ -50,7 +50,7 @@
+ #define LLL_SHARED	FUTEX_PRIVATE_FLAG
+ 
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_rtld
++#if !defined NOT_IN_libc || IS_IN (rtld)
+ /* In libc.so or ld.so all futexes are private.  */
+ # ifdef __ASSUME_PRIVATE_FUTEX
+ #  define __lll_private_flag(fl, private) \
diff --git a/SOURCES/glibc-rh1256317-5.patch b/SOURCES/glibc-rh1256317-5.patch
new file mode 100644
index 0000000..a5a0ddf
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-5.patch
@@ -0,0 +1,861 @@
+commit a109996ef96b065c8374c486e80ee3bf23c69edd
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 21:04:47 2014 +0530
+
+    Remove IS_IN_libm
+    
+    Replace with IS_IN (libm). Generated code unchanged on x86_64.
+    
+            * include/math.h: Use IS_IN instead of IS_IN_libm.
+            * sysdeps/alpha/fpu/s_copysign.c: Likewise.
+            * sysdeps/ieee754/ldbl-128ibm/s_copysignl.c: Likewise.
+            * sysdeps/ieee754/ldbl-128ibm/s_finitel.c: Likewise.
+            * sysdeps/ieee754/ldbl-128ibm/s_fmal.c: Likewise.
+            * sysdeps/ieee754/ldbl-128ibm/s_frexpl.c: Likewise.
+            * sysdeps/ieee754/ldbl-128ibm/s_isinfl.c: Likewise.
+            * sysdeps/ieee754/ldbl-128ibm/s_isnanl.c: Likewise.
+            * sysdeps/ieee754/ldbl-128ibm/s_modfl.c: Likewise.
+            * sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c: Likewise.
+            * sysdeps/ieee754/ldbl-128ibm/s_signbitl.c: Likewise.
+            * sysdeps/ieee754/ldbl-64-128/s_copysignl.c: Likewise.
+            * sysdeps/ieee754/ldbl-64-128/s_finitel.c: Likewise.
+            * sysdeps/ieee754/ldbl-64-128/s_frexpl.c: Likewise.
+            * sysdeps/ieee754/ldbl-64-128/s_isinfl.c: Likewise.
+            * sysdeps/ieee754/ldbl-64-128/s_isnanl.c: Likewise.
+            * sysdeps/ieee754/ldbl-64-128/s_modfl.c: Likewise.
+            * sysdeps/ieee754/ldbl-64-128/s_scalbnl.c: Likewise.
+            * sysdeps/ieee754/ldbl-64-128/s_signbitl.c: Likewise.
+            * sysdeps/ieee754/ldbl-64-128/w_scalblnl.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_copysign.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_finite.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_frexp.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_isinf.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_isnan.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_ldexp.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_ldexpl.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_modf.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_scalbln.c: Likewise.
+            * sysdeps/ieee754/ldbl-opt/s_scalbn.c: Likewise.
+            * sysdeps/powerpc/power5+/fpu/s_modf.c: Likewise.
+            * sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Likewise.
+            * sysdeps/powerpc/powerpc32/fpu/s_copysignl.S: Likewise.
+            * sysdeps/powerpc/powerpc32/fpu/s_isnan.S: Likewise.
+            * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c: Likewise.
+            * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c: Likewise.
+            * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf.c: Likewise.
+            * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan.c: Likewise.
+            * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c: Likewise.
+            * sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S: Likewise.
+            * sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S: Likewise.
+            * sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S: Likewise.
+            * sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S: Likewise.
+            * sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S: Likewise.
+            * sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S: Likewise.
+            * sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c: Likewise.
+            * sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c: Likewise.
+            * sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c: Likewise.
+            * sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c: Likewise.
+            * sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c: Likewise.
+            * sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Likewise.
+            * sysdeps/powerpc/powerpc64/fpu/s_copysignl.S: Likewise.
+            * sysdeps/powerpc/powerpc64/fpu/s_isnan.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S: Likewise.
+            * sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S: Likewise.
+            * sysdeps/sparc/sparc32/fpu/s_signbitl.S: Likewise.
+            * sysdeps/sparc/sparc32/sparcv9/fpu/s_isnan.S: Likewise.
+            * sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S: Likewise.
+
+Index: glibc-2.17-c758a686/include/math.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/math.h
++++ glibc-2.17-c758a686/include/math.h
+@@ -6,7 +6,7 @@
+ /* Now define the internal interfaces.  */
+ extern int __matherr (struct exception *__exc);
+ 
+-# if !defined NOT_IN_libc || defined IS_IN_libm
++# if !defined NOT_IN_libc || IS_IN (libm)
+ hidden_proto (__finite)
+ hidden_proto (__isinf)
+ hidden_proto (__isnan)
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_copysignl.c
+@@ -34,7 +34,7 @@ long double __copysignl(long double x, l
+   return x;
+ }
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __copysignl, copysignl);
+ #else
+ long_double_symbol (libc, __copysignl, copysignl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_finitel.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_finitel.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_finitel.c
+@@ -40,7 +40,7 @@ ___finitel (long double x)
+ }
+ hidden_ver (___finitel, __finitel)
+ weak_alias (___finitel, ____finitel)
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, ____finitel, finitel);
+ long_double_symbol (libm, ___finitel, __finitel);
+ #else
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fmal.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_fmal.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fmal.c
+@@ -37,7 +37,7 @@ __fmal (long double x, long double y, lo
+ 
+        return (x * y) + z;
+ }
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __fmal, fmal);
+ #else
+ long_double_symbol (libc, __fmal, fmal);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c
+@@ -141,7 +141,7 @@ long double __frexpl(long double x, int
+   *eptr = expon;
+   return x;
+ }
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __frexpl, frexpl);
+ #else
+ long_double_symbol (libc, __frexpl, frexpl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c
+@@ -33,7 +33,7 @@ ___isinfl (long double x)
+   return ~mask & (hx >> 62);
+ }
+ hidden_ver (___isinfl, __isinfl)
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ weak_alias (___isinfl, ____isinfl)
+ long_double_symbol (libc, ___isinfl, isinfl);
+ long_double_symbol (libc, ____isinfl, __isinfl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c
+@@ -39,7 +39,7 @@ ___isnanl (long double x)
+   return (int) (hx >> 63);
+ }
+ hidden_ver (___isnanl, __isnanl)
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ weak_alias (___isnanl, ____isnanl)
+ long_double_symbol (libc, ___isnanl, isnanl);
+ long_double_symbol (libc, ____isnanl, __isnanl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_modfl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_modfl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_modfl.c
+@@ -89,7 +89,7 @@ long double __modfl(long double x, long
+ 	    }
+ 	}
+ }
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __modfl, modfl);
+ #else
+ long_double_symbol (libc, __modfl, modfl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c
+@@ -102,7 +102,7 @@ long double __scalbnl (long double x, in
+ 	x = ldbl_pack (xhi, xlo);
+ 	return x*twolm54;
+ }
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __scalbnl, scalbnl);
+ #else
+ long_double_symbol (libc, __scalbnl, scalbnl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c
+@@ -31,7 +31,7 @@ ___signbitl (long double x)
+   EXTRACT_WORDS64 (e, xhi);
+   return e < 0;
+ }
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, ___signbitl, __signbitl);
+ #else
+ long_double_symbol (libc, ___signbitl, __signbitl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
+@@ -2,7 +2,7 @@
+ #undef weak_alias
+ #define weak_alias(n,a)
+ #include <sysdeps/ieee754/ldbl-128/s_copysignl.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __copysignl, copysignl);
+ #else
+ long_double_symbol (libc, __copysignl, copysignl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_finitel.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-64-128/s_finitel.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_finitel.c
+@@ -8,7 +8,7 @@
+ #undef __finitel
+ hidden_ver (___finitel, __finitel)
+ _weak_alias (___finitel, ____finitel)
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, ____finitel, finitel);
+ long_double_symbol (libm, ___finitel, __finitel);
+ #else
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
+@@ -2,7 +2,7 @@
+ #undef weak_alias
+ #define weak_alias(n,a)
+ #include <sysdeps/ieee754/ldbl-128/s_frexpl.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __frexpl, frexpl);
+ #else
+ long_double_symbol (libc, __frexpl, frexpl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_isinfl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-64-128/s_isinfl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_isinfl.c
+@@ -1,5 +1,5 @@
+ #include <math_ldbl_opt.h>
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # undef weak_alias
+ # define weak_alias(n,a)
+ # undef hidden_def
+@@ -7,7 +7,7 @@
+ # define __isinfl(arg) ___isinfl(arg)
+ #endif
+ #include <sysdeps/ieee754/ldbl-128/s_isinfl.c>
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # undef __isinfl
+ hidden_ver (___isinfl, __isinfl)
+ _weak_alias (___isinfl, ____isinfl)
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_isnanl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-64-128/s_isnanl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_isnanl.c
+@@ -1,5 +1,5 @@
+ #include <math_ldbl_opt.h>
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # undef weak_alias
+ # define weak_alias(n,a)
+ # undef hidden_def
+@@ -7,7 +7,7 @@
+ # define __isnanl(arg) ___isnanl(arg)
+ #endif
+ #include <sysdeps/ieee754/ldbl-128/s_isnanl.c>
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # undef __isnanl
+ hidden_ver (___isnanl, __isnanl)
+ _weak_alias (___isnanl, ____isnanl)
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_modfl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-64-128/s_modfl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_modfl.c
+@@ -2,7 +2,7 @@
+ #undef weak_alias
+ #define weak_alias(n,a)
+ #include <sysdeps/ieee754/ldbl-128/s_modfl.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __modfl, modfl);
+ #else
+ long_double_symbol (libc, __modfl, modfl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_scalbnl.c
+@@ -2,7 +2,7 @@
+ #undef weak_alias
+ #define weak_alias(n,a)
+ #include <sysdeps/ieee754/ldbl-128/s_scalbnl.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __scalbnl, scalbnl);
+ #else
+ long_double_symbol (libc, __scalbnl, scalbnl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_signbitl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-64-128/s_signbitl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_signbitl.c
+@@ -4,7 +4,7 @@
+ #define __signbitl(arg) ___signbitl(arg)
+ #include <sysdeps/ieee754/ldbl-128/s_signbitl.c>
+ #undef __signbitl
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, ___signbitl, __signbitl);
+ #else
+ long_double_symbol (libc, ___signbitl, __signbitl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_copysign.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_copysign.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_copysign.c
+@@ -1,6 +1,6 @@
+ #include <math_ldbl_opt.h>
+ #include <sysdeps/ieee754/dbl-64/s_copysign.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_finite.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_finite.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_finite.c
+@@ -1,7 +1,7 @@
+ #include <math_ldbl_opt.h>
+ #include <sysdeps/ieee754/dbl-64/s_finite.c>
+ weak_alias (__finite, ___finite)
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+ compat_symbol (libm, __finite, __finitel, GLIBC_2_1);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_frexp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_frexp.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_frexp.c
+@@ -1,6 +1,6 @@
+ #include <math_ldbl_opt.h>
+ #include <sysdeps/ieee754/dbl-64/s_frexp.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __frexp, frexpl, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_isinf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_isinf.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_isinf.c
+@@ -1,6 +1,6 @@
+ #include <math_ldbl_opt.h>
+ #include <sysdeps/ieee754/dbl-64/s_isinf.c>
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+ compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_isnan.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_isnan.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_isnan.c
+@@ -1,6 +1,6 @@
+ #include <math_ldbl_opt.h>
+ #include <sysdeps/ieee754/dbl-64/s_isnan.c>
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_ldexp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_ldexp.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_ldexp.c
+@@ -1,6 +1,6 @@
+ #include <math_ldbl_opt.h>
+ #include <math/s_ldexp.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __ldexp, ldexpl, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
+@@ -2,7 +2,7 @@
+ #undef weak_alias
+ #define weak_alias(n,a)
+ #include <math/s_ldexpl.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __ldexpl, ldexpl);
+ #else
+ long_double_symbol (libc, __ldexpl, ldexpl);
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_modf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_modf.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_modf.c
+@@ -1,6 +1,6 @@
+ #include <math_ldbl_opt.h>
+ #include <sysdeps/ieee754/dbl-64/s_modf.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __modf, modfl, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_scalbln.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_scalbln.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_scalbln.c
+@@ -1,6 +1,6 @@
+ #include <math_ldbl_opt.h>
+ #include <sysdeps/ieee754/dbl-64/s_scalbln.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ #if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+ compat_symbol (libm, __scalbln, scalblnl, GLIBC_2_1);
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_scalbn.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-opt/s_scalbn.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-opt/s_scalbn.c
+@@ -1,6 +1,6 @@
+ #include <math_ldbl_opt.h>
+ #include <sysdeps/ieee754/dbl-64/s_scalbn.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __scalbn, scalbnl, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/power5+/fpu/s_modf.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c
+@@ -49,7 +49,7 @@ weak_alias (__modf, modf)
+ strong_alias (__modf, __modfl)
+ weak_alias (__modf, modfl)
+ #endif
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __modf, modfl, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
+@@ -50,7 +50,7 @@ strong_alias(__copysign,__copysignf)
+ weak_alias (__copysign,copysignl)
+ strong_alias(__copysign,__copysignl)
+ #endif
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __copysign, copysignl, GLIBC_2_0)
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S
+@@ -42,7 +42,7 @@ L(0):	bgelr	cr6
+ 	blr
+ END (__copysignl)
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __copysignl, copysignl)
+ #else
+ long_double_symbol (libc, __copysignl, copysignl)
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
+@@ -48,7 +48,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S
+@@ -52,7 +52,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
+@@ -47,7 +47,7 @@ strong_alias (__copysign, __copysignl)
+ weak_alias (__copysign, copysignl)
+ #endif
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+ compat_symbol (libm, copysign, copysignl, GLIBC_2_0)
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S
+@@ -52,7 +52,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S
+@@ -78,7 +78,7 @@ strong_alias (__finite, __finitel)
+ weak_alias (__finite, finitel)
+ #endif
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+ compat_symbol (libm, finite, finitel, GLIBC_2_0)
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S
+@@ -77,7 +77,7 @@ strong_alias (__isinf, __isinfl)
+ weak_alias (__isinf, isinfl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+ compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
+@@ -82,7 +82,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c
+@@ -42,7 +42,7 @@ weak_alias (__copysign, copysign)
+ weak_alias (__copysign,copysignl)
+ strong_alias(__copysign,__copysignl)
+ #endif
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
+@@ -39,7 +39,7 @@ strong_alias (__finite, __finitel)
+ weak_alias (__finite, finitel)
+ #endif
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+ compat_symbol (libm, finite, finitel, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
+@@ -39,7 +39,7 @@ strong_alias (__isinf, __isinfl)
+ weak_alias (__isinf, isinfl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
+ compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+ compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
+@@ -48,7 +48,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c
+@@ -35,7 +35,7 @@ weak_alias (__modf, modf)
+ strong_alias (__modf, __modfl)
+ weak_alias (__modf, modfl)
+ #endif
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __modf, modfl, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
+@@ -50,7 +50,7 @@ strong_alias(__copysign,__copysignf)
+ weak_alias (__copysign,copysignl)
+ strong_alias(__copysign,__copysignl)
+ #endif
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __copysign, copysignl, GLIBC_2_0)
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_copysignl.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_copysignl.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_copysignl.S
+@@ -43,7 +43,7 @@ L(0):
+ 	blr
+ END (__copysignl)
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __copysignl, copysignl)
+ #else
+ long_double_symbol (libc, __copysignl, copysignl)
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_isnan.S
+@@ -47,7 +47,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S
+@@ -51,7 +51,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
+@@ -47,7 +47,7 @@ strong_alias (__copysign, __copysignl)
+ weak_alias (__copysign, copysignl)
+ #endif
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+ compat_symbol (libm, copysign, copysignl, GLIBC_2_0)
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S
+@@ -50,7 +50,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S
+@@ -49,7 +49,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
+@@ -57,7 +57,7 @@ strong_alias (__finite, __finitef)
+ hidden_def (__finitef)
+ weak_alias (__finitef, finitef)
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+ compat_symbol (libm, __finite, __finitel, GLIBC_2_0)
+ compat_symbol (libm, finite, finitel, GLIBC_2_0)
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S
+@@ -61,7 +61,7 @@ strong_alias (__isinf, __isinfl)
+ weak_alias (__isinf, isinfl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+ compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S
+@@ -60,7 +60,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
+@@ -43,7 +43,7 @@ strong_alias (__finite, __finitef)
+ hidden_def (__finitef)
+ weak_alias (__finitef, finitef)
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
+ compat_symbol (libm, __finite, __finitel, GLIBC_2_0)
+ compat_symbol (libm, finite, finitel, GLIBC_2_0)
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S
+@@ -53,7 +53,7 @@ strong_alias (__isinf, __isinfl)
+ weak_alias (__isinf, isinfl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
+ compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
+@@ -45,7 +45,7 @@ strong_alias (__isnan, __isnanl)
+ weak_alias (__isnan, isnanl)
+ #endif
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
+Index: glibc-2.17-c758a686/ports/sysdeps/alpha/fpu/s_copysign.c
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/alpha/fpu/s_copysign.c
++++ glibc-2.17-c758a686/ports/sysdeps/alpha/fpu/s_copysign.c
+@@ -30,7 +30,7 @@ weak_alias (__copysign, copysign)
+ strong_alias (__copysign, __copysignl)
+ weak_alias (__copysign, copysignl)
+ #endif
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+ compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
+ # endif
+Index: glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c
++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-64-128/s_scalblnl.c
+@@ -2,7 +2,7 @@
+ #undef weak_alias
+ #define weak_alias(n,a)
+ #include <sysdeps/ieee754/ldbl-128/s_scalblnl.c>
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, __scalblnl, scalblnl);
+ #else
+ long_double_symbol (libc, __scalblnl, scalblnl);
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc32/fpu/s_signbitl.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc32/fpu/s_signbitl.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc32/fpu/s_signbitl.S
+@@ -25,7 +25,7 @@ ENTRY (___signbitl)
+ 	 srl	%o1, 31, %o0
+ END (___signbitl)
+ 
+-#ifdef IS_IN_libm
++#if IS_IN (libm)
+ long_double_symbol (libm, ___signbitl, __signbitl);
+ #else
+ long_double_symbol (libc, ___signbitl, __signbitl);
+Index: glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/fpu/s_isnan.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/sparc/sparc32/sparcv9/fpu/s_isnan.S
++++ glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/fpu/s_isnan.S
+@@ -32,7 +32,7 @@ END (__isnan)
+ hidden_def (__isnan)
+ weak_alias (__isnan, isnan)
+ 
+-#ifndef IS_IN_libm
++#if !IS_IN (libm)
+ # if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+ compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
+ compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
diff --git a/SOURCES/glibc-rh1256317-6.patch b/SOURCES/glibc-rh1256317-6.patch
new file mode 100644
index 0000000..2a1ce72
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-6.patch
@@ -0,0 +1,914 @@
+commit ce9f10f7f0cc83df3e307a18e480587c3b404321
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 14:22:40 2014 +0530
+
+    Remove IS_IN_libpthread
+    
+    Replace with IS_IN (libpthread).  Generated code unchanged on
+    x86_64.
+    
+    	* nptl/lowlevellock.c: Use IS_IN instead of IS_IN_libpthread.
+    	* nptl/pthreadP.h: Likewise.
+    	* nptl_db/structs.def: Likewise.
+    	* sysdeps/arm/sysdep.h: Likewise.
+    	* sysdeps/nptl/bits/libc-lock.h: Likewise.
+    	* sysdeps/nptl/bits/libc-lockP.h: Likewise.
+    	* sysdeps/sparc/sparc32/lowlevellock.c: Likewise.
+    	* sysdeps/unix/alpha/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/aarch64/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/arm/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/not-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/tile/sysdep-cancel.h: Likewise.
+    	* sysdeps/unix/sysv/linux/tile/sysdep.h: Likewise.
+    	* sysdeps/unix/sysv/linux/tile/waitpid.S: Likewise.
+    	* sysdeps/unix/sysv/linux/x86_64/cancellation.S: Likewise.
+    	* sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
+
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
+@@ -37,7 +37,7 @@ __lll_lock_wait_private (int *futex)
+ 
+ 
+ /* These functions don't get included in libc.so  */
+-#ifdef IS_IN_libpthread
++#if IS_IN (libpthread)
+ void
+ __lll_lock_wait (int *futex, int private)
+ {
+Index: glibc-2.17-c758a686/nptl/pthreadP.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/pthreadP.h
++++ glibc-2.17-c758a686/nptl/pthreadP.h
+@@ -225,7 +225,7 @@ extern int __pthread_debug attribute_hid
+ 
+ extern void __pthread_unwind (__pthread_unwind_buf_t *__buf)
+      __cleanup_fct_attribute __attribute ((__noreturn__))
+-#if !defined SHARED && !defined IS_IN_libpthread
++#if !defined SHARED && !IS_IN (libpthread)
+      weak_function
+ #endif
+      ;
+@@ -239,7 +239,7 @@ extern void __pthread_register_cancel (_
+      __cleanup_fct_attribute;
+ extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
+      __cleanup_fct_attribute;
+-#ifdef IS_IN_libpthread
++#if IS_IN (libpthread)
+ hidden_proto (__pthread_unwind)
+ hidden_proto (__pthread_unwind_next)
+ hidden_proto (__pthread_register_cancel)
+@@ -283,7 +283,7 @@ __do_cancel (void)
+ # define LIBC_CANCEL_HANDLED() \
+   __asm (".globl " __SYMBOL_PREFIX "__libc_enable_asynccancel"); \
+   __asm (".globl " __SYMBOL_PREFIX "__libc_disable_asynccancel")
+-#elif defined IS_IN_libpthread
++#elif IS_IN (libpthread)
+ # define LIBC_CANCEL_ASYNC() CANCEL_ASYNC ()
+ # define LIBC_CANCEL_RESET(val) CANCEL_RESET (val)
+ # define LIBC_CANCEL_HANDLED() \
+@@ -344,7 +344,7 @@ extern int __make_stacks_executable (voi
+ 
+ /* longjmp handling.  */
+ extern void __pthread_cleanup_upto (__jmp_buf target, char *targetframe);
+-#ifdef IS_IN_libpthread
++#if IS_IN (libpthread)
+ hidden_proto (__pthread_cleanup_upto)
+ #endif
+ 
+@@ -489,7 +489,7 @@ extern int __pthread_enable_asynccancel
+ extern void __pthread_disable_asynccancel (int oldtype)
+      internal_function attribute_hidden;
+ 
+-#ifdef IS_IN_libpthread
++#if IS_IN (libpthread)
+ hidden_proto (__pthread_mutex_init)
+ hidden_proto (__pthread_mutex_destroy)
+ hidden_proto (__pthread_mutex_lock)
+@@ -528,7 +528,7 @@ extern int __librt_enable_asynccancel (v
+ extern void __librt_disable_asynccancel (int oldtype)
+      internal_function attribute_hidden;
+ 
+-#ifdef IS_IN_libpthread
++#if IS_IN (libpthread)
+ /* Special versions which use non-exported functions.  */
+ extern void __pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer,
+ 				    void (*routine) (void *), void *arg)
+Index: glibc-2.17-c758a686/nptl_db/structs.def
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl_db/structs.def
++++ glibc-2.17-c758a686/nptl_db/structs.def
+@@ -31,7 +31,7 @@
+ #endif
+ 
+ #ifndef DB_RTLD_GLOBAL_FIELD
+-# if !defined IS_IN_libpthread
++# if !IS_IN (libpthread)
+ #  define DB_RTLD_GLOBAL_FIELD(field)		\
+   DB_STRUCT_FIELD (rtld_global, _##field)	\
+   DB_MAIN_VARIABLE (_##field)
+@@ -98,11 +98,11 @@ DB_STRUCT_ARRAY_FIELD (dtv, dtv)
+ #define pointer_val pointer.val /* Field of anonymous struct in dtv_t.  */
+ DB_STRUCT_FIELD (dtv_t, pointer_val)
+ DB_STRUCT_FIELD (dtv_t, counter)
+-#if !defined IS_IN_libpthread || TLS_TCB_AT_TP
++#if !IS_IN (libpthread) || TLS_TCB_AT_TP
+ DB_STRUCT_FIELD (pthread, dtvp)
+ #endif
+ 
+-#if !(defined IS_IN_libpthread && !defined SHARED)
++#if !(IS_IN (libpthread) && !defined SHARED)
+ DB_STRUCT (rtld_global)
+ DB_RTLD_VARIABLE (_rtld_global)
+ #endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/libc-lock.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/pthread/bits/libc-lock.h
++++ glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/libc-lock.h
+@@ -26,7 +26,7 @@
+ 
+ /* Mutex type.  */
+ #if defined _LIBC || defined _IO_MTSAFE_IO
+-# if (defined NOT_IN_libc && !defined IS_IN_libpthread) || !defined _LIBC
++# if (defined NOT_IN_libc && !IS_IN (libpthread)) || !defined _LIBC
+ typedef struct { pthread_mutex_t mutex; } __libc_lock_recursive_t;
+ # else
+ typedef struct { int lock; int cnt; void *owner; } __libc_lock_recursive_t;
+@@ -47,7 +47,7 @@ typedef struct __libc_lock_recursive_opa
+ 
+ /* Define an initialized recursive lock variable NAME with storage
+    class CLASS.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
++#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
+ # if LLL_LOCK_INITIALIZER == 0
+ #  define __libc_lock_define_initialized_recursive(CLASS,NAME) \
+   CLASS __libc_lock_recursive_t NAME;
+@@ -65,7 +65,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Initialize a recursive mutex.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
++#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
+ # define __libc_lock_init_recursive(NAME) \
+   ((NAME) = (__libc_lock_recursive_t) _LIBC_LOCK_RECURSIVE_INITIALIZER, 0)
+ #else
+@@ -83,7 +83,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Finalize recursive named lock.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
++#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
+ # define __libc_lock_fini_recursive(NAME) ((void) 0)
+ #else
+ # define __libc_lock_fini_recursive(NAME) \
+@@ -91,7 +91,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Lock the recursive named lock variable.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
++#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
+ # define __libc_lock_lock_recursive(NAME) \
+   do {									      \
+     void *self = THREAD_SELF;						      \
+@@ -108,7 +108,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Try to lock the recursive named lock variable.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
++#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
+ # define __libc_lock_trylock_recursive(NAME) \
+   ({									      \
+     int result = 0;							      \
+@@ -133,7 +133,7 @@ typedef struct __libc_lock_recursive_opa
+ #endif
+ 
+ /* Unlock the recursive named lock variable.  */
+-#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
++#if defined _LIBC && (!defined NOT_IN_libc || IS_IN (libpthread))
+ /* We do no error checking here.  */
+ # define __libc_lock_unlock_recursive(NAME) \
+   do {									      \
+Index: glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/libc-lockP.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/pthread/bits/libc-lockP.h
++++ glibc-2.17-c758a686/nptl/sysdeps/pthread/bits/libc-lockP.h
+@@ -35,7 +35,7 @@
+ #include <pthread-functions.h>
+ 
+ /* Mutex type.  */
+-#if defined NOT_IN_libc && !defined IS_IN_libpthread
++#if defined NOT_IN_libc && !IS_IN (libpthread)
+ typedef pthread_mutex_t __libc_lock_t;
+ #else
+ typedef int __libc_lock_t;
+@@ -69,7 +69,7 @@ typedef pthread_key_t __libc_key_t;
+    initialized locks must be set to one due to the lack of normal
+    atomic operations.) */
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || IS_IN (libpthread)
+ # if LLL_LOCK_INITIALIZER == 0
+ #  define __libc_lock_define_initialized(CLASS,NAME) \
+   CLASS __libc_lock_t NAME;
+@@ -130,7 +130,7 @@ typedef pthread_key_t __libc_key_t;
+ 
+ /* Initialize the named lock variable, leaving it in a consistent, unlocked
+    state.  */
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || IS_IN (libpthread)
+ # define __libc_lock_init(NAME) ((NAME) = LLL_LOCK_INITIALIZER, 0)
+ #else
+ # define __libc_lock_init(NAME) \
+@@ -149,7 +149,7 @@ typedef pthread_key_t __libc_key_t;
+ /* Finalize the named lock variable, which must be locked.  It cannot be
+    used again until __libc_lock_init is called again on it.  This must be
+    called on a lock variable before the containing storage is reused.  */
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || IS_IN (libpthread)
+ # define __libc_lock_fini(NAME) ((void) 0)
+ #else
+ # define __libc_lock_fini(NAME) \
+@@ -163,7 +163,7 @@ typedef pthread_key_t __libc_key_t;
+ #endif
+ 
+ /* Lock the named lock variable.  */
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || IS_IN (libpthread)
+ # ifndef __libc_lock_lock
+ #  define __libc_lock_lock(NAME) \
+   ({ lll_lock (NAME, LLL_PRIVATE); 0; })
+@@ -179,7 +179,7 @@ typedef pthread_key_t __libc_key_t;
+   __libc_ptf_call (__pthread_rwlock_wrlock, (&(NAME)), 0)
+ 
+ /* Try to lock the named lock variable.  */
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || IS_IN (libpthread)
+ # ifndef __libc_lock_trylock
+ #  define __libc_lock_trylock(NAME) \
+   lll_trylock (NAME)
+@@ -198,7 +198,7 @@ typedef pthread_key_t __libc_key_t;
+   __libc_maybe_call (__pthread_mutex_trylock, (&(NAME).mutex), 0)
+ 
+ /* Unlock the named lock variable.  */
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || IS_IN (libpthread)
+ # define __libc_lock_unlock(NAME) \
+   lll_unlock (NAME, LLL_PRIVATE)
+ #else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				\
+@@ -81,7 +81,7 @@ ENTRY (name);								\
+ # define UNDOCARGS_5	UNDOCARGS_3; ldp x3, x4, [sp, 32]
+ # define UNDOCARGS_6	UNDOCARGS_4; ldp x4, x5, [sp, 40]
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	bl __pthread_enable_asynccancel
+ #  define CDISABLE	bl __pthread_disable_asynccancel
+ #  define __local_multiple_threads __pthread_multiple_threads
+@@ -96,7 +96,7 @@ ENTRY (name);								\
+ #  error Unsupported library
+ # endif
+ 
+-# if defined IS_IN_libpthread || !defined NOT_IN_libc
++# if IS_IN (libpthread) || !defined NOT_IN_libc
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h
+@@ -326,7 +326,7 @@
+ /* Pointer mangling is supported for AArch64.  */
+ #if (defined IS_IN_rtld) || \
+      (!defined SHARED && (!defined NOT_IN_libc \
+-			  || defined IS_IN_libpthread))
++			  || IS_IN (libpthread)))
+ # ifdef __ASSEMBLER__
+ #  define PTR_MANGLE(dst, src, guard, tmp)                                \
+   LDST_PCREL (ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard_local)); \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+@@ -21,7 +21,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* NOTE: We do mark syscalls with unwind annotations, for the benefit of
+    cancellation; but they're really only accurate at the point of the
+@@ -186,7 +186,7 @@
+ # define RESTORE_LR_6 \
+   RESTORE_LR_0
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	bl PLTJMP(__pthread_enable_asynccancel)
+ #  define CDISABLE	bl PLTJMP(__pthread_disable_asynccancel)
+ #  define __local_multiple_threads __pthread_multiple_threads
+@@ -201,7 +201,7 @@
+ #  error Unsupported library
+ # endif
+ 
+-# if defined IS_IN_libpthread || !defined NOT_IN_libc
++# if IS_IN (libpthread) || !defined NOT_IN_libc
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -108,7 +108,7 @@
+ # define _POPCARGS_6	_POPCARGS_5; popl %ebp; \
+ 			cfi_adjust_cfa_offset (-4); cfi_restore (ebp);
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	call __pthread_enable_asynccancel;
+ #  define CDISABLE	call __pthread_disable_asynccancel
+ # elif !defined NOT_IN_libc
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/i386/sysdep.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/sysdep.h
+@@ -36,7 +36,7 @@
+ #define SYS_ify(syscall_name)	__NR_##syscall_name
+ 
+ #if defined USE_DL_SYSINFO \
+-    && (!defined NOT_IN_libc || defined IS_IN_libpthread)
++    && (!defined NOT_IN_libc || IS_IN (libpthread))
+ # define I386_USE_SYSENTER	1
+ #else
+ # undef I386_USE_SYSENTER
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/not-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/not-cancel.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/not-cancel.h
+@@ -27,7 +27,7 @@
+    INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
+ 
+ /* Uncancelable openat.  */
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ extern int __openat_nocancel (int fd, const char *fname, int oflag,
+ 			      mode_t mode) attribute_hidden;
+ extern int __openat64_nocancel (int fd, const char *fname, int oflag,
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
+@@ -23,7 +23,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				\
+@@ -81,7 +81,7 @@
+ # define DOCARGS_6	stw 8,40(1); DOCARGS_5
+ # define UNDOCARGS_6	lwz 8,40(1); UNDOCARGS_5
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	bl __pthread_enable_asynccancel@local
+ #  define CDISABLE	bl __pthread_disable_asynccancel@local
+ # elif !defined NOT_IN_libc
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+@@ -23,7 +23,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # ifdef HAVE_ASM_GLOBAL_DOT_NAME
+ #  define DASHDASHPFX(str) .__##str
+@@ -99,7 +99,7 @@
+ # define DOCARGS_6	std 8,CANCEL_PARM_SAVE+40(1); DOCARGS_5
+ # define UNDOCARGS_6	ld 8,CANCEL_PARM_SAVE+40(1); UNDOCARGS_5
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  ifdef SHARED
+ #   define CENABLE	bl JUMPTARGET(__pthread_enable_asynccancel)
+ #   define CDISABLE	bl JUMPTARGET(__pthread_disable_asynccancel)
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -75,7 +75,7 @@ L(pseudo_check):							      \
+ .size	__##syscall_name##_nocancel,.-__##syscall_name##_nocancel;	      \
+ L(pseudo_end):
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	__pthread_enable_asynccancel
+ #  define CDISABLE	__pthread_disable_asynccancel
+ # elif !defined NOT_IN_libc
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -69,7 +69,7 @@ L(pseudo_check):							      \
+ .size	__##syscall_name##_nocancel,.-__##syscall_name##_nocancel;	      \
+ L(pseudo_end):
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	__pthread_enable_asynccancel
+ #  define CDISABLE	__pthread_disable_asynccancel
+ #  define __local_multiple_threads	__pthread_multiple_threads
+@@ -111,7 +111,7 @@ L(pseudo_end):
+ #define LR7_6		lg %r7,56+160(%r15); \
+ 			cfi_restore (%r7);
+ 
+-# if defined IS_IN_libpthread || !defined NOT_IN_libc
++# if IS_IN (libpthread) || !defined NOT_IN_libc
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P \
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S
+@@ -21,7 +21,7 @@
+ #include <kernel-features.h>
+ #include "lowlevellock.h"
+ 
+-#ifdef IS_IN_libpthread
++#if IS_IN (libpthread)
+ # ifdef SHARED
+ #  define __pthread_unwind __GI___pthread_unwind
+ # endif
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* The code to disable cancellation depends on the fact that the called
+    functions are special.  They don't modify registers other than %rax
+@@ -59,7 +59,7 @@
+     jae SYSCALL_ERROR_LABEL
+ 
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	call __pthread_enable_asynccancel;
+ #  define CDISABLE	call __pthread_disable_asynccancel;
+ #  define __local_multiple_threads __pthread_multiple_threads
+@@ -74,7 +74,7 @@
+ #  error Unsupported library
+ # endif
+ 
+-# if defined IS_IN_libpthread || !defined NOT_IN_libc
++# if IS_IN (libpthread) || !defined NOT_IN_libc
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P \
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h
+@@ -19,7 +19,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ extern int __open_nocancel (const char *, int, ...) attribute_hidden;
+ extern int __close_nocancel (int) attribute_hidden;
+ extern int __read_nocancel (int, void *, size_t) attribute_hidden;
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c
+@@ -35,7 +35,7 @@ __lll_lock_wait_private (int *futex)
+ 
+ 
+ /* These functions don't get included in libc.so  */
+-#ifdef IS_IN_libpthread
++#if IS_IN (libpthread)
+ void
+ __lll_lock_wait (int *futex, int private)
+ {
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
+@@ -21,7 +21,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # define _IMM12 #-12
+ # define _IMM16 #-16
+@@ -105,7 +105,7 @@
+ # define LOAD_ARGS_5	LOAD_ARGS_4
+ # define LOAD_ARGS_6	LOAD_ARGS_5
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define __local_enable_asynccancel	__pthread_enable_asynccancel
+ #  define __local_disable_asynccancel	__pthread_disable_asynccancel
+ # elif !defined NOT_IN_libc
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
+@@ -37,7 +37,7 @@ __lll_lock_wait_private (int *futex)
+ 
+ 
+ /* These functions don't get included in libc.so  */
+-#ifdef IS_IN_libpthread
++#if IS_IN (libpthread)
+ void
+ __lll_lock_wait (int *futex, int private)
+ {
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)	\
+@@ -68,7 +68,7 @@ __##syscall_name##_nocancel:			\
+ 	 restore %g0, %l1, %o0;
+ 
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	call __pthread_enable_asynccancel
+ #  define CDISABLE	call __pthread_disable_asynccancel
+ # elif !defined NOT_IN_libc
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)	\
+@@ -66,7 +66,7 @@ __##syscall_name##_nocancel:			\
+ 2:	jmpl %i7 + 8, %g0;			\
+ 	 restore %g0, %l1, %o0;
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	call __pthread_enable_asynccancel
+ #  define CDISABLE	call __pthread_disable_asynccancel
+ # elif !defined NOT_IN_libc
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h
+@@ -21,7 +21,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* ??? Assumes that nothing comes between PSEUDO and PSEUDO_END
+    besides "ret".  */
+@@ -105,7 +105,7 @@ __LABEL($multi_error)						\
+ # define LOAD_ARGS_5	LOAD_ARGS_4; ldq a4, 40(sp)
+ # define LOAD_ARGS_6	LOAD_ARGS_5; ldq a5, 48(sp)
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define __local_enable_asynccancel	__pthread_enable_asynccancel
+ #  define __local_disable_asynccancel	__pthread_disable_asynccancel
+ #  define __local_multiple_threads	__pthread_multiple_threads
+@@ -128,7 +128,7 @@ __LABEL($multi_error)						\
+ #  define CDISABLE	jsr ra, __local_disable_asynccancel; ldgp ra, 0(gp)
+ # endif
+ 
+-# if defined IS_IN_libpthread || !defined NOT_IN_libc
++# if IS_IN (libpthread) || !defined NOT_IN_libc
+ #  ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ #   define SINGLE_THREAD_P \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				\
+@@ -79,7 +79,7 @@
+ # define LOAD_ARGS_5	LOAD_ARGS_4
+ # define LOAD_ARGS_6	LOAD_ARGS_5
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	call __pthread_enable_asynccancel,[],0;
+ #  define CDISABLE	call __pthread_disable_asynccancel,[],0;
+ # elif IS_IN (librt)
+@@ -105,7 +105,7 @@
+ 
+ #if !defined NOT_IN_libc
+ # define __local_multiple_threads __libc_multiple_threads
+-#elif defined IS_IN_libpthread
++#elif IS_IN (libpthread)
+ # define __local_multiple_threads __pthread_multiple_threads
+ #else
+ # define __local_multiple_threads __librt_multiple_threads
+@@ -118,7 +118,7 @@
+ 				   p_header.data.multiple_threads) == 0, 1)
+ #  else
+ extern int __local_multiple_threads
+-#   if !defined NOT_IN_libc || defined IS_IN_libpthread
++#   if !defined NOT_IN_libc || IS_IN (libpthread)
+   attribute_hidden;
+ #   else
+   ;
+@@ -130,7 +130,7 @@ extern int __local_multiple_threads
+ #   define SINGLE_THREAD_P \
+ 	mov (+__local_multiple_threads),d0; \
+ 	cmp 0,d0
+-#  elif !defined NOT_IN_libc || defined IS_IN_libpthread
++#  elif !defined NOT_IN_libc || IS_IN (libpthread)
+ #   define SINGLE_THREAD_P \
+ 	movm [a2],(sp); \
+      1: mov pc,a2; \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c
+@@ -85,7 +85,7 @@ __lll_timedlock_wait (lll_lock_t *futex,
+ 
+ 
+ /* These don't get included in libc.so  */
+-#ifdef IS_IN_libpthread
++#if IS_IN (libpthread)
+ int
+ lll_unlock_wake_cb (lll_lock_t *futex)
+ {
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # ifndef NO_ERROR
+ #  define NO_ERROR -0x1000
+@@ -204,7 +204,7 @@ L(pre_end):						ASM_LINE_SEP	\
+ # define POPARGS_6	POPARGS_5 ldw -56(%sr0,%sp), %r21	ASM_LINE_SEP	\
+ 			.cfi_restore 21				ASM_LINE_SEP
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  ifdef PIC
+ #   define CENABLE .import __pthread_enable_asynccancel,code ASM_LINE_SEP \
+ 			bl __pthread_enable_asynccancel,%r2 ASM_LINE_SEP
+@@ -244,7 +244,7 @@ L(pre_end):						ASM_LINE_SEP	\
+ #  error Unsupported library
+ # endif
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define __local_multiple_threads __pthread_multiple_threads
+ # elif !defined NOT_IN_libc
+ #  define __local_multiple_threads __libc_multiple_threads
+@@ -271,7 +271,7 @@ L(pre_end):						ASM_LINE_SEP	\
+ # define NO_CANCELLATION 1
+ 
+ #endif
+-/* !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt) */
++/* !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt) */
+ 
+ #ifndef __ASSEMBLER__
+ # define RTLD_SINGLE_THREAD_P \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ 
+@@ -160,7 +160,7 @@ __GC_##name:								      \
+ # undef PSEUDO_END
+ # define PSEUDO_END(name) .endp
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	br.call.sptk.many b0 = __pthread_enable_asynccancel
+ #  define CDISABLE	br.call.sptk.many b0 = __pthread_disable_asynccancel
+ # elif !defined NOT_IN_libc
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/m68k/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -100,7 +100,7 @@
+ #  define PSEUDO_JMP(sym) jbsr sym
+ # endif
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	PSEUDO_JMP (__pthread_enable_asynccancel)
+ #  define CDISABLE	PSEUDO_JMP (__pthread_disable_asynccancel)
+ # elif !defined NOT_IN_libc
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
+@@ -27,7 +27,7 @@
+    happen before any instructions.  So we use cfi_same_value instead of
+    cfi_restore.  */
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ #ifdef __PIC__
+ # undef PSEUDO
+@@ -146,7 +146,7 @@
+ # define SAVESTK 	PTR_SUBU sp, STKSPACE; cfi_adjust_cfa_offset(STKSPACE)
+ # define RESTORESTK 	PTR_ADDU sp, STKSPACE; cfi_adjust_cfa_offset(-STKSPACE)
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	PTR_LA t9, __pthread_enable_asynccancel; jalr t9
+ #  define CDISABLE	PTR_LA t9, __pthread_disable_asynccancel; jalr t9
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/mips/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ # ifdef __PIC__
+ #  define PSEUDO_CPLOAD .cpload t9;
+@@ -152,7 +152,7 @@
+ #  define PSEUDO_JMP(sym) jal sym;
+ # endif
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	PSEUDO_JMP (__pthread_enable_asynccancel)
+ #  define CDISABLE	PSEUDO_JMP (__pthread_disable_asynccancel)
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* Allow hacking in some extra code if desired. */
+ #ifndef PSEUDO_EXTRA
+@@ -117,7 +117,7 @@
+ 
+ # define STKSPACE	(13 * REGSIZE)
+ 
+-# ifdef IS_IN_libpthread
++# if IS_IN (libpthread)
+ #  define CENABLE	jal __pthread_enable_asynccancel
+ #  define CDISABLE	jal __pthread_disable_asynccancel
+ # elif IS_IN (librt)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S
+@@ -1,7 +1,7 @@
+ /*
+ extern pid_t __waitpid_nocancel (pid_t, int *, int) attribute_hidden;
+ */
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
++#if !defined NOT_IN_libc || IS_IN (libpthread) || IS_IN (librt)
+ 
+ /* Call __NR_wait4, providing fourth argument (struct rusage *) as NULL. */
+ #define PSEUDO_EXTRA move r3, zero;
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/sysdep.h
+@@ -45,7 +45,7 @@
+ #ifndef PIC
+ /* For static code, on error jump to __syscall_error directly. */
+ # define SYSCALL_ERROR_NAME __syscall_error
+-#elif !defined NOT_IN_libc || defined IS_IN_libpthread
++#elif !defined NOT_IN_libc || IS_IN (libpthread)
+ /* Use the internal name for libc/libpthread shared objects. */
+ # define SYSCALL_ERROR_NAME __GI___syscall_error
+ #else
diff --git a/SOURCES/glibc-rh1256317-7.patch b/SOURCES/glibc-rh1256317-7.patch
new file mode 100644
index 0000000..ef5ceac
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-7.patch
@@ -0,0 +1,546 @@
+commit 016afc75cd45dfaf49c0aa7a9befda77ab933846
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 13:26:25 2014 +0530
+
+    Remove IS_IN_librt
+    
+    Replace with IS_IN (librt).  Generated code unchanged on x86_64
+    
+            * include/mqueue.h: Use IS_IN instead of IS_IN_librt.
+            * nptl/pthreadP.h: Likewise.
+            * sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
+            * sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/not-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/tile/sysdep-cancel.h: Likewise.
+            * sysdeps/unix/sysv/linux/tile/waitpid.S: Likewise.
+            * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
+
+Index: glibc-2.17-c758a686/include/mqueue.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/mqueue.h
++++ glibc-2.17-c758a686/include/mqueue.h
+@@ -1,6 +1,6 @@
+ #include <rt/mqueue.h>
+ 
+-#ifdef IS_IN_librt
++#if IS_IN (librt)
+ hidden_proto (mq_timedsend)
+ hidden_proto (mq_timedreceive)
+ hidden_proto (mq_setattr)
+Index: glibc-2.17-c758a686/nptl/pthreadP.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/pthreadP.h
++++ glibc-2.17-c758a686/nptl/pthreadP.h
+@@ -289,7 +289,7 @@ __do_cancel (void)
+ # define LIBC_CANCEL_HANDLED() \
+   __asm (".globl " __SYMBOL_PREFIX "__pthread_enable_asynccancel"); \
+   __asm (".globl " __SYMBOL_PREFIX "__pthread_disable_asynccancel")
+-#elif defined IS_IN_librt
++#elif IS_IN (librt)
+ # define LIBC_CANCEL_ASYNC() \
+   __librt_enable_asynccancel ()
+ # define LIBC_CANCEL_RESET(val) \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				\
+@@ -89,7 +89,7 @@ ENTRY (name);								\
+ #  define CENABLE	bl __libc_enable_asynccancel
+ #  define CDISABLE	bl __libc_disable_asynccancel
+ #  define __local_multiple_threads __libc_multiple_threads
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	bl __librt_enable_asynccancel
+ #  define CDISABLE	bl __librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+@@ -21,7 +21,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ /* NOTE: We do mark syscalls with unwind annotations, for the benefit of
+    cancellation; but they're really only accurate at the point of the
+@@ -194,7 +194,7 @@
+ #  define CENABLE	bl PLTJMP(__libc_enable_asynccancel)
+ #  define CDISABLE	bl PLTJMP(__libc_disable_asynccancel)
+ #  define __local_multiple_threads __libc_multiple_threads
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	bl PLTJMP(__librt_enable_asynccancel)
+ #  define CDISABLE	bl PLTJMP(__librt_disable_asynccancel)
+ # else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -114,7 +114,7 @@
+ # elif !defined NOT_IN_libc
+ #  define CENABLE	call __libc_enable_asynccancel;
+ #  define CDISABLE	call __libc_disable_asynccancel
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	call __librt_enable_asynccancel;
+ #  define CDISABLE	call __librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/not-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/not-cancel.h
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/not-cancel.h
+@@ -27,7 +27,7 @@
+    INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
+ 
+ /* Uncancelable openat.  */
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ extern int __openat_nocancel (int fd, const char *fname, int oflag,
+ 			      mode_t mode) attribute_hidden;
+ extern int __openat64_nocancel (int fd, const char *fname, int oflag,
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
+@@ -23,7 +23,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				\
+@@ -87,7 +87,7 @@
+ # elif !defined NOT_IN_libc
+ #  define CENABLE	bl __libc_enable_asynccancel@local
+ #  define CDISABLE	bl __libc_disable_asynccancel@local
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	bl __librt_enable_asynccancel@local
+ #  define CDISABLE	bl __librt_disable_asynccancel@local
+ # else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+@@ -23,7 +23,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # ifdef HAVE_ASM_GLOBAL_DOT_NAME
+ #  define DASHDASHPFX(str) .__##str
+@@ -115,7 +115,7 @@
+ #   define CENABLE	bl JUMPTARGET(__libc_enable_asynccancel); nop
+ #   define CDISABLE	bl JUMPTARGET(__libc_disable_asynccancel); nop
+ #  endif
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  ifdef SHARED
+ #   define CENABLE	bl JUMPTARGET(__librt_enable_asynccancel)
+ #   define CDISABLE	bl JUMPTARGET(__librt_disable_asynccancel)
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -81,7 +81,7 @@ L(pseudo_end):
+ # elif !defined NOT_IN_libc
+ #  define CENABLE	__libc_enable_asynccancel
+ #  define CDISABLE	__libc_disable_asynccancel
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	__librt_enable_asynccancel
+ #  define CDISABLE	__librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -77,7 +77,7 @@ L(pseudo_end):
+ #  define CENABLE	__libc_enable_asynccancel
+ #  define CDISABLE	__libc_disable_asynccancel
+ #  define __local_multiple_threads	__libc_multiple_threads
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	__librt_enable_asynccancel
+ #  define CDISABLE	__librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ /* The code to disable cancellation depends on the fact that the called
+    functions are special.  They don't modify registers other than %rax
+@@ -67,7 +67,7 @@
+ #  define CENABLE	call __libc_enable_asynccancel;
+ #  define CDISABLE	call __libc_disable_asynccancel;
+ #  define __local_multiple_threads __libc_multiple_threads
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	call __librt_enable_asynccancel;
+ #  define CDISABLE	call __librt_disable_asynccancel;
+ # else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/not-cancel.h
+@@ -19,7 +19,7 @@
+ 
+ #include <sysdep.h>
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ extern int __open_nocancel (const char *, int, ...) attribute_hidden;
+ extern int __close_nocancel (int) attribute_hidden;
+ extern int __read_nocancel (int, void *, size_t) attribute_hidden;
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
+@@ -21,7 +21,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # define _IMM12 #-12
+ # define _IMM16 #-16
+@@ -111,7 +111,7 @@
+ # elif !defined NOT_IN_libc
+ #  define __local_enable_asynccancel	__libc_enable_asynccancel
+ #  define __local_disable_asynccancel	__libc_disable_asynccancel
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define __local_enable_asynccancel	__librt_enable_asynccancel
+ #  define __local_disable_asynccancel	__librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)	\
+@@ -74,7 +74,7 @@ __##syscall_name##_nocancel:			\
+ # elif !defined NOT_IN_libc
+ #  define CENABLE	call __libc_enable_asynccancel
+ #  define CDISABLE	call __libc_disable_asynccancel
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	call __librt_enable_asynccancel
+ #  define CDISABLE	call __librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)	\
+@@ -72,7 +72,7 @@ __##syscall_name##_nocancel:			\
+ # elif !defined NOT_IN_libc
+ #  define CENABLE	call __libc_enable_asynccancel
+ #  define CDISABLE	call __libc_disable_asynccancel
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	call __librt_enable_asynccancel
+ #  define CDISABLE	call __librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/alpha/nptl/sysdep-cancel.h
+@@ -21,7 +21,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ /* ??? Assumes that nothing comes between PSEUDO and PSEUDO_END
+    besides "ret".  */
+@@ -113,7 +113,7 @@ __LABEL($multi_error)						\
+ #  define __local_enable_asynccancel	__libc_enable_asynccancel
+ #  define __local_disable_asynccancel	__libc_disable_asynccancel
+ #  define __local_multiple_threads	__libc_multiple_threads
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define __local_enable_asynccancel	__librt_enable_asynccancel
+ #  define __local_disable_asynccancel	__librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				\
+@@ -82,7 +82,7 @@
+ # ifdef IS_IN_libpthread
+ #  define CENABLE	call __pthread_enable_asynccancel,[],0;
+ #  define CDISABLE	call __pthread_disable_asynccancel,[],0;
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  ifdef PIC
+ #   define CENABLE	movm [a2],(sp); \
+ 			1: mov pc,a2; \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # ifndef NO_ERROR
+ #  define NO_ERROR -0x1000
+@@ -228,7 +228,7 @@ L(pre_end):						ASM_LINE_SEP	\
+ #   define CDISABLE	.import __libc_disable_asynccancel,code ASM_LINE_SEP \
+ 			bl __libc_disable_asynccancel,%r2 ASM_LINE_SEP
+ #  endif
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  ifdef PIC
+ #   define CENABLE .import __librt_enable_asynccancel,code ASM_LINE_SEP \
+ 			bl __librt_enable_asynccancel,%r2 ASM_LINE_SEP
+@@ -248,7 +248,7 @@ L(pre_end):						ASM_LINE_SEP	\
+ #  define __local_multiple_threads __pthread_multiple_threads
+ # elif !defined NOT_IN_libc
+ #  define __local_multiple_threads __libc_multiple_threads
+-# elif IS_IN_librt
++# elif IS_IN (librt)
+ #  define __local_multiple_threads __librt_multiple_threads
+ # else
+ #  error Unsupported library
+@@ -271,7 +271,7 @@ L(pre_end):						ASM_LINE_SEP	\
+ # define NO_CANCELLATION 1
+ 
+ #endif
+-/* !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt */
++/* !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt) */
+ 
+ #ifndef __ASSEMBLER__
+ # define RTLD_SINGLE_THREAD_P \
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ 
+@@ -166,7 +166,7 @@ __GC_##name:								      \
+ # elif !defined NOT_IN_libc
+ #  define CENABLE	br.call.sptk.many b0 = __libc_enable_asynccancel
+ #  define CDISABLE	br.call.sptk.many b0 = __libc_disable_asynccancel
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	br.call.sptk.many b0 = __librt_enable_asynccancel
+ #  define CDISABLE	br.call.sptk.many b0 = __librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/sysdep.h
+@@ -62,7 +62,7 @@
+ 
+ #if defined USE_DL_SYSINFO \
+ 	&& (!defined NOT_IN_libc \
+-	    || IS_IN (libpthread) || defined IS_IN_librt)
++	    || IS_IN (libpthread) || IS_IN (librt))
+ # define IA64_USE_NEW_STUB
+ #else
+ # undef IA64_USE_NEW_STUB
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/m68k/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/m68k/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args)				      \
+@@ -106,7 +106,7 @@
+ # elif !defined NOT_IN_libc
+ #  define CENABLE	PSEUDO_JMP (__libc_enable_asynccancel)
+ #  define CDISABLE	PSEUDO_JMP (__libc_disable_asynccancel)
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	PSEUDO_JMP (__librt_enable_asynccancel)
+ #  define CDISABLE	PSEUDO_JMP (__librt_disable_asynccancel)
+ # else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
+@@ -27,7 +27,7 @@
+    happen before any instructions.  So we use cfi_same_value instead of
+    cfi_restore.  */
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ #ifdef __PIC__
+ # undef PSEUDO
+@@ -149,7 +149,7 @@
+ # ifdef IS_IN_libpthread
+ #  define CENABLE	PTR_LA t9, __pthread_enable_asynccancel; jalr t9
+ #  define CDISABLE	PTR_LA t9, __pthread_disable_asynccancel; jalr t9
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	PTR_LA t9, __librt_enable_asynccancel; jalr t9
+ #  define CDISABLE	PTR_LA t9, __librt_disable_asynccancel; jalr t9
+ # else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/mips/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ # ifdef __PIC__
+ #  define PSEUDO_CPLOAD .cpload t9;
+@@ -155,7 +155,7 @@
+ # ifdef IS_IN_libpthread
+ #  define CENABLE	PSEUDO_JMP (__pthread_enable_asynccancel)
+ #  define CDISABLE	PSEUDO_JMP (__pthread_disable_asynccancel)
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	PSEUDO_JMP (__librt_enable_asynccancel)
+ #  define CDISABLE	PSEUDO_JMP (__librt_disable_asynccancel)
+ # else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h
+@@ -22,7 +22,7 @@
+ # include <nptl/pthreadP.h>
+ #endif
+ 
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ /* Allow hacking in some extra code if desired. */
+ #ifndef PSEUDO_EXTRA
+@@ -120,7 +120,7 @@
+ # ifdef IS_IN_libpthread
+ #  define CENABLE	jal __pthread_enable_asynccancel
+ #  define CDISABLE	jal __pthread_disable_asynccancel
+-# elif defined IS_IN_librt
++# elif IS_IN (librt)
+ #  define CENABLE	jal __librt_enable_asynccancel
+ #  define CDISABLE	jal __librt_disable_asynccancel
+ # else
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/tile/nptl/waitpid.S
+@@ -1,7 +1,7 @@
+ /*
+ extern pid_t __waitpid_nocancel (pid_t, int *, int) attribute_hidden;
+ */
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || IS_IN (librt)
+ 
+ /* Call __NR_wait4, providing fourth argument (struct rusage *) as NULL. */
+ #define PSEUDO_EXTRA move r3, zero;
diff --git a/SOURCES/glibc-rh1256317-8.patch b/SOURCES/glibc-rh1256317-8.patch
new file mode 100644
index 0000000..ed35874
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-8.patch
@@ -0,0 +1,135 @@
+commit 9b42a0b3a3cc037e6bdd62869d91cb19c80aa0e5
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 13:17:21 2014 +0530
+
+    Remove IS_IN_libdl
+    
+    Replace with IS_IN (libdl).  No changes to generated code on x86_64.
+    
+    	* dlfcn/dladdr.c: Use IS_IN.
+    	* dlfcn/dladdr1.c: Likewise.
+    	* dlfcn/dlclose.c: Likewise.
+    	* dlfcn/dlerror.c: Likewise.
+    	* dlfcn/dlinfo.c: Likewise.
+    	* dlfcn/dlmopen.c: Likewise.
+    	* dlfcn/dlopen.c: Likewise.
+    	* dlfcn/dlsym.c: Likewise.
+    	* dlfcn/dlvsym.c: Likewise.
+
+Index: glibc-2.17-c758a686/dlfcn/dladdr.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/dladdr.c
++++ glibc-2.17-c758a686/dlfcn/dladdr.c
+@@ -19,7 +19,7 @@
+ 
+ #include <dlfcn.h>
+ 
+-#if !defined SHARED && defined IS_IN_libdl
++#if !defined SHARED && IS_IN (libdl)
+ 
+ int
+ dladdr (const void *address, Dl_info *info)
+Index: glibc-2.17-c758a686/dlfcn/dladdr1.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/dladdr1.c
++++ glibc-2.17-c758a686/dlfcn/dladdr1.c
+@@ -18,7 +18,7 @@
+ 
+ #include <dlfcn.h>
+ 
+-#if !defined SHARED && defined IS_IN_libdl
++#if !defined SHARED && IS_IN (libdl)
+ 
+ int
+ dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
+Index: glibc-2.17-c758a686/dlfcn/dlclose.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/dlclose.c
++++ glibc-2.17-c758a686/dlfcn/dlclose.c
+@@ -20,7 +20,7 @@
+ #include <dlfcn.h>
+ #include <ldsodefs.h>
+ 
+-#if !defined SHARED && defined IS_IN_libdl
++#if !defined SHARED && IS_IN (libdl)
+ 
+ int
+ dlclose (void *handle)
+Index: glibc-2.17-c758a686/dlfcn/dlerror.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/dlerror.c
++++ glibc-2.17-c758a686/dlfcn/dlerror.c
+@@ -25,7 +25,7 @@
+ #include <bits/libc-lock.h>
+ #include <ldsodefs.h>
+ 
+-#if !defined SHARED && defined IS_IN_libdl
++#if !defined SHARED && IS_IN (libdl)
+ 
+ char *
+ dlerror (void)
+Index: glibc-2.17-c758a686/dlfcn/dlinfo.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/dlinfo.c
++++ glibc-2.17-c758a686/dlfcn/dlinfo.c
+@@ -21,7 +21,7 @@
+ #include <ldsodefs.h>
+ #include <libintl.h>
+ 
+-#if !defined SHARED && defined IS_IN_libdl
++#if !defined SHARED && IS_IN (libdl)
+ 
+ int
+ dlinfo (void *handle, int request, void *arg)
+Index: glibc-2.17-c758a686/dlfcn/dlmopen.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/dlmopen.c
++++ glibc-2.17-c758a686/dlfcn/dlmopen.c
+@@ -23,7 +23,7 @@
+ #include <unistd.h>
+ #include <ldsodefs.h>
+ 
+-#if !defined SHARED && defined IS_IN_libdl
++#if !defined SHARED && IS_IN (libdl)
+ 
+ void *
+ dlmopen (Lmid_t nsid, const char *file, int mode)
+Index: glibc-2.17-c758a686/dlfcn/dlopen.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/dlopen.c
++++ glibc-2.17-c758a686/dlfcn/dlopen.c
+@@ -22,7 +22,7 @@
+ #include <unistd.h>
+ #include <ldsodefs.h>
+ 
+-#if !defined SHARED && defined IS_IN_libdl
++#if !defined SHARED && IS_IN (libdl)
+ 
+ void *
+ dlopen (const char *file, int mode)
+Index: glibc-2.17-c758a686/dlfcn/dlsym.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/dlsym.c
++++ glibc-2.17-c758a686/dlfcn/dlsym.c
+@@ -21,7 +21,7 @@
+ 
+ #include <ldsodefs.h>
+ 
+-#if !defined SHARED && defined IS_IN_libdl
++#if !defined SHARED && IS_IN (libdl)
+ 
+ void *
+ dlsym (void *handle, const char *name)
+Index: glibc-2.17-c758a686/dlfcn/dlvsym.c
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/dlvsym.c
++++ glibc-2.17-c758a686/dlfcn/dlvsym.c
+@@ -21,7 +21,7 @@
+ 
+ #include <ldsodefs.h>
+ 
+-#if !defined SHARED && defined IS_IN_libdl
++#if !defined SHARED && IS_IN (libdl)
+ 
+ void *
+ weak_function
diff --git a/SOURCES/glibc-rh1256317-9.patch b/SOURCES/glibc-rh1256317-9.patch
new file mode 100644
index 0000000..548191a
--- /dev/null
+++ b/SOURCES/glibc-rh1256317-9.patch
@@ -0,0 +1,74 @@
+commit 85f36372aa9b7c4f8e1ebb6a3bf2c0785a019612
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Thu Nov 20 13:12:02 2014 +0530
+
+    Remove IS_IN_nscd
+    
+    Replace with IS_IN (nscd).  Generated code unchanged on x86_64.
+    
+    	* include/ifaddrs.h: Use IS_IN.
+    	* inet/check_pf.c: Likewise.
+    	* sysdeps/unix/sysv/linux/check_pf.c: Likewise.
+    	* nscd/Makefile (CPPFLAGS-nscd): Remove IS_IN_nscd.
+
+Index: glibc-2.17-c758a686/include/ifaddrs.h
+===================================================================
+--- glibc-2.17-c758a686.orig/include/ifaddrs.h
++++ glibc-2.17-c758a686/include/ifaddrs.h
+@@ -26,7 +26,7 @@ extern void __check_native (uint32_t a1_
+ 			    uint32_t a2_index, int *a2_native)
+   attribute_hidden;
+ 
+-#ifdef IS_IN_nscd
++#if IS_IN (nscd)
+ extern uint32_t __bump_nl_timestamp (void) attribute_hidden;
+ #endif
+ 
+Index: glibc-2.17-c758a686/inet/check_pf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/inet/check_pf.c
++++ glibc-2.17-c758a686/inet/check_pf.c
+@@ -62,7 +62,7 @@ __free_in6ai (struct in6addrinfo *in6ai)
+ }
+ 
+ 
+-#ifdef IS_IN_nscd
++#if IS_IN (nscd)
+ uint32_t
+ __bump_nl_timestamp (void)
+ {
+Index: glibc-2.17-c758a686/nscd/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nscd/Makefile
++++ glibc-2.17-c758a686/nscd/Makefile
+@@ -79,7 +79,7 @@ CFLAGS-nscd_gethst_r.c = -fexceptions
+ CFLAGS-nscd_getai.c = -fexceptions
+ CFLAGS-nscd_initgroups.c = -fexceptions
+ 
+-CPPFLAGS-nscd += -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2 -DNOT_IN_libc=1
++CPPFLAGS-nscd += -D_FORTIFY_SOURCE=2 -DNOT_IN_libc
+ 
+ ifeq (yesyes,$(have-fpie)$(build-shared))
+ CFLAGS-nscd += $(pie-ccflag)
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/check_pf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/check_pf.c
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/check_pf.c
+@@ -65,7 +65,7 @@ libc_freeres_ptr (static struct cached_d
+ __libc_lock_define_initialized (static, lock);
+ 
+ 
+-#ifdef IS_IN_nscd
++#if IS_IN (nscd)
+ static uint32_t nl_timestamp;
+ 
+ uint32_t
+@@ -81,7 +81,7 @@ __bump_nl_timestamp (void)
+ static inline uint32_t
+ get_nl_timestamp (void)
+ {
+-#ifdef IS_IN_nscd
++#if IS_IN (nscd)
+   return nl_timestamp;
+ #elif defined USE_NSCD
+   return __nscd_get_nl_timestamp ();
diff --git a/SOURCES/glibc-rh1268008-1.patch b/SOURCES/glibc-rh1268008-1.patch
new file mode 100644
index 0000000..720315d
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-1.patch
@@ -0,0 +1,98 @@
+From c58ed232c3d94c9ad7b4acddb8593ae0b1f9db10 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:16:32 +0200
+Subject: [PATCH 01/30] S/390: Unify 31 and 64 bit configure.in
+
+upstream-commit-id: 579db35a068e70a4f3112000778138ede6994ac0
+
+This patch is needed to prepare for the optimized string function patchset.
+The configure fragments for s390-32/64 are identical and thus unified to one
+configure file.
+
+---
+ sysdeps/s390/configure            | 5 +++++
+ sysdeps/s390/configure.in         | 6 ++++++
+ sysdeps/s390/s390-32/configure    | 5 -----
+ sysdeps/s390/s390-32/configure.in | 6 ------
+ sysdeps/s390/s390-64/configure    | 5 -----
+ sysdeps/s390/s390-64/configure.in | 6 ------
+ 6 files changed, 11 insertions(+), 22 deletions(-)
+ create mode 100644 sysdeps/s390/configure
+ create mode 100644 sysdeps/s390/configure.in
+ delete mode 100644 sysdeps/s390/s390-32/configure
+ delete mode 100644 sysdeps/s390/s390-32/configure.in
+ delete mode 100644 sysdeps/s390/s390-64/configure
+ delete mode 100644 sysdeps/s390/s390-64/configure.in
+
+diff --git a/sysdeps/s390/configure b/sysdeps/s390/configure
+new file mode 100644
+index 0000000..669bb9b
+--- /dev/null
++++ b/sysdeps/s390/configure
+@@ -0,0 +1,5 @@
++# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
++ # Local configure fragment for sysdeps/s390.
++
++$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
++
+diff --git a/sysdeps/s390/configure.in b/sysdeps/s390/configure.in
+new file mode 100644
+index 0000000..b5af4e1
+--- /dev/null
++++ b/sysdeps/s390/configure.in
+@@ -0,0 +1,6 @@
++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
++# Local configure fragment for sysdeps/s390.
++
++dnl It is always possible to access static and hidden symbols in an
++dnl position independent way.
++AC_DEFINE(PI_STATIC_AND_HIDDEN)
+diff --git a/sysdeps/s390/s390-32/configure b/sysdeps/s390/s390-32/configure
+deleted file mode 100644
+index 669bb9b..0000000
+--- a/sysdeps/s390/s390-32/configure
++++ /dev/null
+@@ -1,5 +0,0 @@
+-# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
+- # Local configure fragment for sysdeps/s390.
+-
+-$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
+-
+diff --git a/sysdeps/s390/s390-32/configure.in b/sysdeps/s390/s390-32/configure.in
+deleted file mode 100644
+index b5af4e1..0000000
+--- a/sysdeps/s390/s390-32/configure.in
++++ /dev/null
+@@ -1,6 +0,0 @@
+-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+-# Local configure fragment for sysdeps/s390.
+-
+-dnl It is always possible to access static and hidden symbols in an
+-dnl position independent way.
+-AC_DEFINE(PI_STATIC_AND_HIDDEN)
+diff --git a/sysdeps/s390/s390-64/configure b/sysdeps/s390/s390-64/configure
+deleted file mode 100644
+index 669bb9b..0000000
+--- a/sysdeps/s390/s390-64/configure
++++ /dev/null
+@@ -1,5 +0,0 @@
+-# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
+- # Local configure fragment for sysdeps/s390.
+-
+-$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
+-
+diff --git a/sysdeps/s390/s390-64/configure.in b/sysdeps/s390/s390-64/configure.in
+deleted file mode 100644
+index b5af4e1..0000000
+--- a/sysdeps/s390/s390-64/configure.in
++++ /dev/null
+@@ -1,6 +0,0 @@
+-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+-# Local configure fragment for sysdeps/s390.
+-
+-dnl It is always possible to access static and hidden symbols in an
+-dnl position independent way.
+-AC_DEFINE(PI_STATIC_AND_HIDDEN)
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-10.patch b/SOURCES/glibc-rh1268008-10.patch
new file mode 100644
index 0000000..1f65fbd
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-10.patch
@@ -0,0 +1,479 @@
+From cca51a74315c37614042113b004505b150d305d7 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:54:21 +0200
+Subject: [PATCH 10/30] S390: Optimize strlen and wcslen.
+
+upstream-commit-id: 9472f35a0a6dbbda82ce103aaf0f5013f5d46e34
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00089.html
+
+This patch provides optimized versions of strlen and wcslen with the z13 vector
+instructions.
+The helper macro IFUNC_VX_IMPL is introduced and is used to register all
+__<func>_c() and __<func>_vx() functions within __libc_ifunc_impl_list()
+to the ifunc test framework.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/Makefile: New File.
+	* sysdeps/s390/multiarch/strlen-c.c: Likewise.
+	* sysdeps/s390/multiarch/strlen-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strlen.c: Likewise.
+	* sysdeps/s390/multiarch/wcslen-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcslen-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcslen.c: Likewise.
+	* string/strlen.c (STRLEN): Define and use macro.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(IFUNC_VX_IMPL): New macro function.
+	(__libc_ifunc_impl_list): Add ifunc test for strlen, wcslen.
+	* benchtests/Makefile (wcsmbs-bench): New variable.
+	(string-bench-all): Added wcsmbs-bench.
+	* benchtests/bench-wcslen.c: New File.
+---
+ benchtests/Makefile                      |  3 +-
+ benchtests/bench-wcslen.c                | 20 +++++++
+ string/strlen.c                          |  7 ++-
+ sysdeps/s390/multiarch/Makefile          |  7 +++
+ sysdeps/s390/multiarch/ifunc-impl-list.c | 14 +++++
+ sysdeps/s390/multiarch/strlen-c.c        | 28 ++++++++++
+ sysdeps/s390/multiarch/strlen-vx.S       | 84 +++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strlen.c          | 27 ++++++++++
+ sysdeps/s390/multiarch/wcslen-c.c        | 25 +++++++++
+ sysdeps/s390/multiarch/wcslen-vx.S       | 91 ++++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcslen.c          | 28 ++++++++++
+ 11 files changed, 331 insertions(+), 3 deletions(-)
+ create mode 100644 benchtests/bench-wcslen.c
+ create mode 100644 sysdeps/s390/multiarch/Makefile
+ create mode 100644 sysdeps/s390/multiarch/strlen-c.c
+ create mode 100644 sysdeps/s390/multiarch/strlen-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strlen.c
+ create mode 100644 sysdeps/s390/multiarch/wcslen-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcslen-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcslen.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 9b02bc7..09ab87f 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -38,7 +38,8 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+-string-bench-all := $(string-bench)
++wcsmbs-bench := wcslen
++string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+ 
+diff --git a/benchtests/bench-wcslen.c b/benchtests/bench-wcslen.c
+new file mode 100644
+index 0000000..4e9d085
+--- /dev/null
++++ b/benchtests/bench-wcslen.c
+@@ -0,0 +1,20 @@
++/* Measure wcslen functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strlen.c"
+diff --git a/string/strlen.c b/string/strlen.c
+index 5c1efda..d682693 100644
+--- a/string/strlen.c
++++ b/string/strlen.c
+@@ -23,11 +23,14 @@
+ 
+ #undef strlen
+ 
++#ifndef STRLEN
++# define STRLEN strlen
++#endif
++
+ /* Return the length of the null-terminated string STR.  Scan for
+    the null terminator quickly by testing four bytes at a time.  */
+ size_t
+-strlen (str)
+-     const char *str;
++STRLEN (const char *str)
+ {
+   const char *char_ptr;
+   const unsigned long int *longword_ptr;
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+new file mode 100644
+index 0000000..3a98098
+--- /dev/null
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -0,0 +1,7 @@
++ifeq ($(subdir),string)
++sysdep_routines += strlen strlen-vx strlen-c
++endif
++
++ifeq ($(subdir),wcsmbs)
++sysdep_routines += wcslen wcslen-vx wcslen-c
++endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index c330904..e9639ef 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -18,6 +18,7 @@
+ 
+ #include <assert.h>
+ #include <string.h>
++#include <wchar.h>
+ #include <ifunc-impl-list.h>
+ #include <ifunc-resolve.h>
+ 
+@@ -70,5 +71,18 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+ 
+ #endif /* SHARED */
+ 
++#ifdef HAVE_S390_VX_ASM_SUPPORT
++
++# define IFUNC_VX_IMPL(FUNC)						\
++  IFUNC_IMPL (i, name, FUNC,						\
++	      IFUNC_IMPL_ADD (array, i, FUNC, dl_hwcap & HWCAP_S390_VX, \
++			      __##FUNC##_vx)				\
++	      IFUNC_IMPL_ADD (array, i, FUNC, 1, __##FUNC##_c))
++
++  IFUNC_VX_IMPL (strlen);
++  IFUNC_VX_IMPL (wcslen);
++
++#endif /* HAVE_S390_VX_ASM_SUPPORT */
++
+   return i;
+ }
+diff --git a/sysdeps/s390/multiarch/strlen-c.c b/sysdeps/s390/multiarch/strlen-c.c
+new file mode 100644
+index 0000000..1cbe959
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strlen-c.c
+@@ -0,0 +1,28 @@
++/* Default strlen implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRLEN  __strlen_c
++# ifdef SHARED
++#  undef libc_hidden_builtin_def
++#  define libc_hidden_builtin_def(name)			\
++  __hidden_ver1 (__strlen_c, __GI_strlen, __strlen_c);
++# endif /* SHARED */
++
++# include <string/strlen.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strlen-vx.S b/sysdeps/s390/multiarch/strlen-vx.S
+new file mode 100644
+index 0000000..1a5cb23
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strlen-vx.S
+@@ -0,0 +1,84 @@
++/* Vector optimized 32/64 bit S/390 version of strlen.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* size_t strlen (const char *s)
++   Returns length of string s.
++
++   Register usage:
++   -r1=bytes to 4k-byte boundary
++   -r2=s
++   -r3=tmp
++   -r4=tmp
++   -r5=current_len and return_value
++   -v16=part of s
++*/
++ENTRY(__strlen_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfenezb	%v16,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r4,%v16,7	/* Load zero index or 16 if not found.  */
++	clr	%r4,%r1		/* If found zero within loaded bytes?  */
++	locgrl	%r2,%r4		/* Then copy return value.  */
++	blr	%r14		/* And return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r3,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r3		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find zero in 16 byte aligned loop.  */
++.Lloop:
++	vl	%v16,0(%r5,%r2)	/* Load s.  */
++	vfenezbs %v16,%v16,%v16 /* Find element not equal with zero search.  */
++	je	.Lfound		/* Jump away if zero was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Lfound48
++
++	aghi	%r5,64
++	j	.Lloop		/* No zero found -> loop.  */
++
++.Lfound48:
++	aghi	%r5,16
++.Lfound32:
++	aghi	%r5,16
++.Lfound16:
++	aghi	%r5,16
++.Lfound:
++	vlgvb	%r2,%v16,7	/* Load byte index of zero.  */
++	algr	%r2,%r5
++	br	%r14
++END(__strlen_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strlen.c b/sysdeps/s390/multiarch/strlen.c
+new file mode 100644
+index 0000000..ba5863f
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strlen.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of strlen.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strlen, strlen)
++
++#else
++# include <string/strlen.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcslen-c.c b/sysdeps/s390/multiarch/wcslen-c.c
+new file mode 100644
+index 0000000..6dd011e
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcslen-c.c
+@@ -0,0 +1,25 @@
++/* Default wcslen implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSLEN  __wcslen_c
++
++# include <wchar.h>
++extern __typeof (__wcslen) __wcslen_c;
++# include <wcsmbs/wcslen.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcslen-vx.S b/sysdeps/s390/multiarch/wcslen-vx.S
+new file mode 100644
+index 0000000..579e66b
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcslen-vx.S
+@@ -0,0 +1,91 @@
++/* Vector optimized 32/64 bit S/390 version of wcslen.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* size_t wcslen (const wchar_t *s)
++   Returns length of string s.
++
++   Register usage:
++   -r1=bytes to 4k-byte boundary
++   -r2=s
++   -r3=tmp
++   -r4=tmp
++   -r5=current_len and return_value
++   -v16=part of s
++*/
++ENTRY(__wcslen_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	tmll	%r2,3		/* Test if s is 4-byte aligned?   */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	vfenezf	%v16,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r4,%v16,7	/* Load zero index or 16 if not found.  */
++	clr	%r4,%r1		/* If found zero within loaded bytes?  */
++	locgrl	%r2,%r4		/* Then copy return value.  */
++	jl	.Lend		/* And return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r3,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r3		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Lloop:
++	vl	%v16,0(%r5,%r2)	/* Load s.  */
++	vfenezfs %v16,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound		/* Jump away if zero was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Lfound48
++
++	aghi	%r5,64
++	j	.Lloop		/* No zero found -> loop.  */
++
++.Lfound48:
++	aghi	%r5,16
++.Lfound32:
++	aghi	%r5,16
++.Lfound16:
++	aghi	%r5,16
++.Lfound:
++	vlgvb	%r2,%v16,7	/* Load byte index of zero.  */
++	algr	%r2,%r5
++.Lend:
++	srlg	%r2,%r2,2	/* Convert byte-count to character-count.  */
++	br	%r14
++.Lfallback:
++	jg	__wcslen_c
++END(__wcslen_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcslen.c b/sysdeps/s390/multiarch/wcslen.c
+new file mode 100644
+index 0000000..a7be73e
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcslen.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of wcslen.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__wcslen)
++weak_alias (__wcslen, wcslen)
++
++#else
++# include <wcsmbs/wcslen.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-11.patch b/SOURCES/glibc-rh1268008-11.patch
new file mode 100644
index 0000000..6e9fa72
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-11.patch
@@ -0,0 +1,962 @@
+From 1a569200bc2875ffc474587fb6ec599aac4bad9b Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:56:59 +0200
+Subject: [PATCH 11/30] S390: Optimize strnlen and wcsnlen.
+
+upstream-commit-id: fcf40ebe2682fd65d64f94d69a3df798960cf1b7
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00082.html
+
+This patch provides optimized versions of strnlen and wcsnlen with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strnlen-c.c: New File.
+	* sysdeps/s390/multiarch/strnlen-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strnlen.c: Likewise.
+	* sysdeps/s390/multiarch/wcsnlen-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcsnlen-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcsnlen.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strnlen and
+	wcsnlen functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strnlen, wcsnlen.
+	* wcsmbs/wcsnlen.c: Use WCSNLEN if defined.
+	* string/test-strnlen.c: Add wcsnlen support.
+	* wcsmbs/test-wcsnlen.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcsnlen.
+	* benchtests/bench-strnlen.c: Add wcsnlen support.
+	* benchtests/bench-wcsnlen.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcsnlen.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-strnlen.c               |  73 +++++++++------
+ benchtests/bench-wcsnlen.c               |  20 ++++
+ string/test-strnlen.c                    |  87 +++++++++++-------
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strnlen-c.c       |  28 ++++++
+ sysdeps/s390/multiarch/strnlen-vx.S      | 134 +++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strnlen.c         |  29 ++++++
+ sysdeps/s390/multiarch/wcsnlen-c.c       |  25 +++++
+ sysdeps/s390/multiarch/wcsnlen-vx.S      | 151 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcsnlen.c         |  28 ++++++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wcsnlen-ifunc.c              |  20 ++++
+ wcsmbs/test-wcsnlen.c                    |  20 ++++
+ wcsmbs/wcsnlen.c                         |   7 +-
+ 16 files changed, 571 insertions(+), 64 deletions(-)
+ create mode 100644 benchtests/bench-wcsnlen.c
+ create mode 100644 sysdeps/s390/multiarch/strnlen-c.c
+ create mode 100644 sysdeps/s390/multiarch/strnlen-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strnlen.c
+ create mode 100644 sysdeps/s390/multiarch/wcsnlen-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcsnlen-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcsnlen.c
+ create mode 100644 wcsmbs/test-wcsnlen-ifunc.c
+ create mode 100644 wcsmbs/test-wcsnlen.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 09ab87f..7bb2eef 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -38,7 +38,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+-wcsmbs-bench := wcslen
++wcsmbs-bench := wcslen wcsnlen
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-strnlen.c b/benchtests/bench-strnlen.c
+index 793f9be..cbdce75 100644
+--- a/benchtests/bench-strnlen.c
++++ b/benchtests/bench-strnlen.c
+@@ -1,5 +1,5 @@
+ /* Measure strlen functions.
+-   Copyright (C) 2013 Free Software Foundation, Inc.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -17,17 +17,36 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strnlen"
++#ifndef WIDE
++# define TEST_NAME "strnlen"
++#else
++# define TEST_NAME "wcsnlen"
++#endif /* WIDE */
+ #include "bench-string.h"
+ 
+-typedef size_t (*proto_t) (const char *, size_t);
+-size_t simple_strnlen (const char *, size_t);
+-
+-IMPL (simple_strnlen, 0)
+-IMPL (strnlen, 1)
++#ifndef WIDE
++# define STRNLEN strnlen
++# define CHAR char
++# define BIG_CHAR CHAR_MAX
++# define MIDDLE_CHAR 127
++# define SIMPLE_STRNLEN simple_strnlen
++#else
++# include <wchar.h>
++# define STRNLEN wcsnlen
++# define CHAR wchar_t
++# define BIG_CHAR WCHAR_MAX
++# define MIDDLE_CHAR 1121
++# define SIMPLE_STRNLEN simple_wcsnlen
++#endif /* WIDE */
++
++typedef size_t (*proto_t) (const CHAR *, size_t);
++size_t SIMPLE_STRNLEN (const CHAR *, size_t);
++
++IMPL (SIMPLE_STRNLEN, 0)
++IMPL (STRNLEN, 1)
+ 
+ size_t
+-simple_strnlen (const char *s, size_t maxlen)
++SIMPLE_STRNLEN (const CHAR *s, size_t maxlen)
+ {
+   size_t i;
+ 
+@@ -36,7 +55,7 @@ simple_strnlen (const char *s, size_t maxlen)
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len)
++do_one_test (impl_t *impl, const CHAR *s, size_t maxlen, size_t exp_len)
+ {
+   size_t len = CALL (impl, s, maxlen), i, iters = INNER_LOOP_ITERS;
+   timing_t start, stop, cur;
+@@ -66,18 +85,20 @@ do_test (size_t align, size_t len, size_t maxlen, int max_char)
+ {
+   size_t i;
+ 
+-  align &= 7;
+-  if (align + len >= page_size)
++  align &= 63;
++  if ((align + len) * sizeof (CHAR) >= page_size)
+     return;
+ 
++  CHAR *buf = (CHAR *) (buf1);
++
+   for (i = 0; i < len; ++i)
+-    buf1[align + i] = 1 + 7 * i % max_char;
+-  buf1[align + len] = 0;
++    buf[align + i] = 1 + 7 * i % max_char;
++  buf[align + len] = 0;
+ 
+   printf ("Length %4zd, alignment %2zd:", len, align);
+ 
+   FOR_EACH_IMPL (impl, 0)
+-    do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen));
++    do_one_test (impl, (CHAR *) (buf + align), maxlen, MIN (len, maxlen));
+ 
+   putchar ('\n');
+ }
+@@ -96,34 +117,34 @@ test_main (void)
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (0, i, i - 1, 127);
+-      do_test (0, i, i, 127);
+-      do_test (0, i, i + 1, 127);
++      do_test (0, i, i - 1, MIDDLE_CHAR);
++      do_test (0, i, i, MIDDLE_CHAR);
++      do_test (0, i, i + 1, MIDDLE_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (i, i, i - 1, 127);
+-      do_test (i, i, i, 127);
+-      do_test (i, i, i + 1, 127);
++      do_test (i, i, i - 1, MIDDLE_CHAR);
++      do_test (i, i, i, MIDDLE_CHAR);
++      do_test (i, i, i + 1, MIDDLE_CHAR);
+     }
+ 
+   for (i = 2; i <= 10; ++i)
+     {
+-      do_test (0, 1 << i, 5000, 127);
+-      do_test (1, 1 << i, 5000, 127);
++      do_test (0, 1 << i, 5000, MIDDLE_CHAR);
++      do_test (1, 1 << i, 5000, MIDDLE_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+-    do_test (0, i, 5000, 255);
++    do_test (0, i, 5000, BIG_CHAR);
+ 
+   for (i = 1; i < 8; ++i)
+-    do_test (i, i, 5000, 255);
++    do_test (i, i, 5000, BIG_CHAR);
+ 
+   for (i = 2; i <= 10; ++i)
+     {
+-      do_test (0, 1 << i, 5000, 255);
+-      do_test (1, 1 << i, 5000, 255);
++      do_test (0, 1 << i, 5000, BIG_CHAR);
++      do_test (1, 1 << i, 5000, BIG_CHAR);
+     }
+ 
+   return ret;
+diff --git a/benchtests/bench-wcsnlen.c b/benchtests/bench-wcsnlen.c
+new file mode 100644
+index 0000000..2b5a51c
+--- /dev/null
++++ b/benchtests/bench-wcsnlen.c
+@@ -0,0 +1,20 @@
++/* Measure wcsnlen functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strnlen.c"
+diff --git a/string/test-strnlen.c b/string/test-strnlen.c
+index ae959bf..43db896 100644
+--- a/string/test-strnlen.c
++++ b/string/test-strnlen.c
+@@ -1,5 +1,5 @@
+ /* Test and measure strlen functions.
+-   Copyright (C) 1999-2012 Free Software Foundation, Inc.
++   Copyright (C) 1999-2015 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+ 
+@@ -18,17 +18,36 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strnlen"
++#ifndef WIDE
++# define TEST_NAME "strnlen"
++#else
++# define TEST_NAME "wcsnlen"
++#endif /* !WIDE */
+ #include "test-string.h"
+ 
+-typedef size_t (*proto_t) (const char *, size_t);
+-size_t simple_strnlen (const char *, size_t);
+-
+-IMPL (simple_strnlen, 0)
+-IMPL (strnlen, 1)
++#ifndef WIDE
++# define STRNLEN strnlen
++# define CHAR char
++# define BIG_CHAR CHAR_MAX
++# define MIDDLE_CHAR 127
++# define SIMPLE_STRNLEN simple_strnlen
++#else
++# include <wchar.h>
++# define STRNLEN wcsnlen
++# define CHAR wchar_t
++# define BIG_CHAR WCHAR_MAX
++# define MIDDLE_CHAR 1121
++# define SIMPLE_STRNLEN simple_wcsnlen
++#endif /* !WIDE */
++
++typedef size_t (*proto_t) (const CHAR *, size_t);
++size_t SIMPLE_STRNLEN (const CHAR *, size_t);
++
++IMPL (SIMPLE_STRNLEN, 0)
++IMPL (STRNLEN, 1)
+ 
+ size_t
+-simple_strnlen (const char *s, size_t maxlen)
++SIMPLE_STRNLEN (const CHAR *s, size_t maxlen)
+ {
+   size_t i;
+ 
+@@ -37,7 +56,7 @@ simple_strnlen (const char *s, size_t maxlen)
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len)
++do_one_test (impl_t *impl, const CHAR *s, size_t maxlen, size_t exp_len)
+ {
+   size_t len = CALL (impl, s, maxlen);
+   if (len != exp_len)
+@@ -54,23 +73,25 @@ do_test (size_t align, size_t len, size_t maxlen, int max_char)
+ {
+   size_t i;
+ 
+-  align &= 7;
+-  if (align + len >= page_size)
++  align &= 63;
++  if ((align + len) * sizeof (CHAR) >= page_size)
+     return;
+ 
++  CHAR *buf = (CHAR *) (buf1);
++
+   for (i = 0; i < len; ++i)
+-    buf1[align + i] = 1 + 7 * i % max_char;
+-  buf1[align + len] = 0;
++    buf[align + i] = 1 + 7 * i % max_char;
++  buf[align + len] = 0;
+ 
+   FOR_EACH_IMPL (impl, 0)
+-    do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen));
++    do_one_test (impl, (CHAR *) (buf + align), maxlen, MIN (len, maxlen));
+ }
+ 
+ static void
+ do_random_tests (void)
+ {
+   size_t i, j, n, align, len;
+-  unsigned char *p = buf1 + page_size - 512;
++  CHAR *p = (CHAR *) (buf1 + page_size - 512 * sizeof (CHAR));
+ 
+   for (n = 0; n < ITERATIONS; n++)
+     {
+@@ -97,25 +118,25 @@ do_random_tests (void)
+       FOR_EACH_IMPL (impl, 1)
+ 	{
+ 	  if (len > 0
+-	      && CALL (impl, (char *) (p + align), len - 1) != len - 1)
++	      && CALL (impl, (CHAR *) (p + align), len - 1) != len - 1)
+ 	    {
+ 	      error (0, 0, "Iteration %zd (limited) - wrong result in function %s (%zd) %zd != %zd, p %p",
+ 		     n, impl->name, align,
+-		     CALL (impl, (char *) (p + align), len - 1), len - 1, p);
++		     CALL (impl, (CHAR *) (p + align), len - 1), len - 1, p);
+ 	      ret = 1;
+ 	    }
+-	  if (CALL (impl, (char *) (p + align), len) != len)
++	  if (CALL (impl, (CHAR *) (p + align), len) != len)
+ 	    {
+ 	      error (0, 0, "Iteration %zd (exact) - wrong result in function %s (%zd) %zd != %zd, p %p",
+ 		     n, impl->name, align,
+-		     CALL (impl, (char *) (p + align), len), len, p);
++		     CALL (impl, (CHAR *) (p + align), len), len, p);
+ 	      ret = 1;
+ 	    }
+-	  if (CALL (impl, (char *) (p + align), len + 1) != len)
++	  if (CALL (impl, (CHAR *) (p + align), len + 1) != len)
+ 	    {
+ 	      error (0, 0, "Iteration %zd (long) - wrong result in function %s (%zd) %zd != %zd, p %p",
+ 		     n, impl->name, align,
+-		     CALL (impl, (char *) (p + align), len + 1), len, p);
++		     CALL (impl, (CHAR *) (p + align), len + 1), len, p);
+ 	      ret = 1;
+ 	    }
+ 	}
+@@ -136,34 +157,34 @@ test_main (void)
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (0, i, i - 1, 127);
+-      do_test (0, i, i, 127);
+-      do_test (0, i, i + 1, 127);
++      do_test (0, i, i - 1, MIDDLE_CHAR);
++      do_test (0, i, i, MIDDLE_CHAR);
++      do_test (0, i, i + 1, MIDDLE_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (i, i, i - 1, 127);
+-      do_test (i, i, i, 127);
+-      do_test (i, i, i + 1, 127);
++      do_test (i, i, i - 1, MIDDLE_CHAR);
++      do_test (i, i, i, MIDDLE_CHAR);
++      do_test (i, i, i + 1, MIDDLE_CHAR);
+     }
+ 
+   for (i = 2; i <= 10; ++i)
+     {
+-      do_test (0, 1 << i, 5000, 127);
+-      do_test (1, 1 << i, 5000, 127);
++      do_test (0, 1 << i, 5000, MIDDLE_CHAR);
++      do_test (1, 1 << i, 5000, MIDDLE_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+-    do_test (0, i, 5000, 255);
++    do_test (0, i, 5000, BIG_CHAR);
+ 
+   for (i = 1; i < 8; ++i)
+-    do_test (i, i, 5000, 255);
++    do_test (i, i, 5000, BIG_CHAR);
+ 
+   for (i = 2; i <= 10; ++i)
+     {
+-      do_test (0, 1 << i, 5000, 255);
+-      do_test (1, 1 << i, 5000, 255);
++      do_test (0, 1 << i, 5000, BIG_CHAR);
++      do_test (1, 1 << i, 5000, BIG_CHAR);
+     }
+ 
+   do_random_tests ();
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 3a98098..3397f24 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -1,7 +1,9 @@
+ ifeq ($(subdir),string)
+-sysdep_routines += strlen strlen-vx strlen-c
++sysdep_routines += strlen strlen-vx strlen-c \
++		   strnlen strnlen-vx strnlen-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+-sysdep_routines += wcslen wcslen-vx wcslen-c
++sysdep_routines += wcslen wcslen-vx wcslen-c \
++		   wcsnlen wcsnlen-vx wcsnlen-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index e9639ef..bc17c59 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -82,6 +82,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strlen);
+   IFUNC_VX_IMPL (wcslen);
+ 
++  IFUNC_VX_IMPL (strnlen);
++  IFUNC_VX_IMPL (wcsnlen);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strnlen-c.c b/sysdeps/s390/multiarch/strnlen-c.c
+new file mode 100644
+index 0000000..50fc688
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strnlen-c.c
+@@ -0,0 +1,28 @@
++/* Default strnlen implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRNLEN  __strnlen_c
++# ifdef SHARED
++#  undef libc_hidden_def
++#  define libc_hidden_def(name)					\
++  __hidden_ver1 (__strnlen_c, __GI_strnlen, __strnlen_c);
++# endif /* SHARED */
++
++# include <string/strnlen.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strnlen-vx.S b/sysdeps/s390/multiarch/strnlen-vx.S
+new file mode 100644
+index 0000000..8c15621
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strnlen-vx.S
+@@ -0,0 +1,134 @@
++/* Vector optimized 32/64 bit S/390 version of strnlen.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* size_t strnlen (const char *s, size_t maxlen)
++   Returns the number of characters in s or at most maxlen.
++
++   Register usage:
++   -r1=tmp
++   -r2=address of string
++   -r3=maxlen (number of characters to be read)
++   -r4=tmp
++   -r5=current_len and return_value
++   -v16=part of s
++*/
++ENTRY(__strnlen_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r3,%r3
++# endif /* !defined __s390x__ */
++
++	clgfi	%r3,0		/* if maxlen == 0, return 0.  */
++	locgre	%r2,%r3
++	ber	%r14
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r1,%r1		/* Convert 32bit to 64bit.  */
++
++	vfenezb	%v16,%v16,%v16	/* Find element not equal with zero search.  */
++	clgr	%r1,%r3
++	locgrh	%r1,%r3		/* loaded_byte_count
++				   = min (loaded_byte_count, maxlen)  */
++
++	vlgvb	%r5,%v16,7	/* Load zero index or 16 if not found.  */
++	clr	%r5,%r1		/* If found zero within loaded bytes?  */
++	locgrl	%r2,%r5		/* Then copy return value.  */
++	blr	%r14		/* And return.  */
++
++	clgr	%r1,%r3		/* If loaded_byte_count == maxlen?  */
++	locgre	%r2,%r3		/* Then copy return value.  */
++	ber	%r14		/* And return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r4		/* Compute bytes to 16bytes boundary.  */
++
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r3,.Lloop64
++
++	/* Find zero in max 64byte with aligned s.  */
++.Llt64:
++	vl	%v16,0(%r5,%r2) /* Load s.  */
++	vfenezbs %v16,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound		/* Jump away if zero was found.  */
++	aghi	%r5,16
++	clgrjhe	%r5,%r3,.Lfound /* current_len >= maxlen -> end.  */
++	vl	%v16,0(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Lfound
++	aghi	%r5,16
++	clgrjhe	%r5,%r3,.Lfound
++	vl	%v16,0(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Lfound
++	aghi	%r5,16
++	clgrjhe	%r5,%r3,.Lfound
++	vl	%v16,0(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	j	.Lfound
++
++.Lfound48:
++	aghi	%r5,16
++.Lfound32:
++	aghi	%r5,16
++.Lfound16:
++	aghi	%r5,16
++.Lfound:
++	vlgvb	%r4,%v16,7	/* Load byte index of zero or 16 if no zero.  */
++	algr	%r5,%r4
++
++	clgr	%r5,%r3
++	locgrh	%r5,%r3		/* Return min (current_len, maxlen).  */
++	lgr	%r2,%r5
++	br	%r14
++
++	/* Find zero in 16 byte aligned loop.  */
++.Lloop64:
++	vl	%v16,0(%r5,%r2) /* Load s.  */
++	vfenezbs %v16,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound		/* Jump away if zero was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Lfound48
++
++	aghi	%r5,64
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r3,.Lloop64
++
++	j	.Llt64
++END(__strnlen_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strnlen.c b/sysdeps/s390/multiarch/strnlen.c
+new file mode 100644
+index 0000000..f036fcd
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strnlen.c
+@@ -0,0 +1,29 @@
++/* Multiple versions of strnlen.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__strnlen)
++weak_alias (__strnlen, strnlen)
++libc_hidden_def (strnlen)
++
++#else
++# include <string/strnlen.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcsnlen-c.c b/sysdeps/s390/multiarch/wcsnlen-c.c
+new file mode 100644
+index 0000000..6d8b537
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsnlen-c.c
+@@ -0,0 +1,25 @@
++/* Default wcsnlen implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSNLEN  __wcsnlen_c
++
++# include <wchar.h>
++extern __typeof (__wcsnlen) __wcsnlen_c;
++# include <wcsmbs/wcsnlen.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcsnlen-vx.S b/sysdeps/s390/multiarch/wcsnlen-vx.S
+new file mode 100644
+index 0000000..8c21630
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsnlen-vx.S
+@@ -0,0 +1,151 @@
++/* Vector optimized 32/64 bit S/390 version of wcsnlen.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* size_t wcsnlen (const wchar_t *s, size_t maxlen)
++   Returns the number of characters in s or at most maxlen.
++
++   Register usage:
++   -r1=tmp
++   -r2=address of string
++   -r3=maxlen (number of characters to be read)
++   -r4=tmp
++   -r5=current_len and return_value
++   -v16=part of s
++*/
++ENTRY(__wcsnlen_vx)
++
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r3,%r3
++# endif /* !defined __s390x__ */
++
++	clgfi	%r3,0		/* if maxlen == 0, return 0.  */
++	locgre	%r2,%r3
++	ber	%r14
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r1,%r1		/* Convert 32bit to 64bit.  */
++
++	tmll	%r2,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	/* Check range of maxlen and convert to byte-count.  */
++# ifdef __s390x__
++	tmhh	%r3,49152	/* Test bit 0 or 1 of maxlen.  */
++	lghi	%r4,-4		/* Max byte-count is 18446744073709551612.  */
++# else
++	tmlh	%r3,49152	/* Test bit 0 or 1 of maxlen.  */
++	llilf	%r4,4294967292	/* Max byte-count is 4294967292.  */
++# endif /* !__s390x__ */
++	sllg	%r3,%r3,2	/* Convert character-count to byte-count.  */
++	locgrne	%r3,%r4		/* Use max byte-count, if bit 0/1 was one.  */
++
++	vfenezf	%v16,%v16,%v16	/* Find element not equal with zero search.  */
++	clgr	%r1,%r3
++	locgrh	%r1,%r3		/* loaded_byte_count
++				   = min (loaded_byte_count, maxlen)  */
++
++	vlgvb	%r5,%v16,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Lend	/* Found zero within loaded bytes -> return.  */
++
++	clgr	%r1,%r3		/* If loaded_byte_count == maxlen -> end.  */
++	locgre	%r5,%r3
++	je	.Lend
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r4		/* Compute bytes to 16bytes boundary.  */
++
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r3,.Lloop64
++
++	/* Find zero in max 64byte with aligned s.  */
++.Llt64:
++	vl	%v16,0(%r5,%r2)	/* Load s.  */
++	vfenezfs %v16,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound		/* Jump away if zero was found.  */
++	aghi	%r5,16
++	clgrjhe	%r5,%r3,.Lfound /* If current_len >= maxlen -> end.  */
++	vl	%v16,0(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Lfound
++	aghi	%r5,16
++	clgrjhe	%r5,%r3,.Lfound
++	vl	%v16,0(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Lfound
++	aghi	%r5,16
++	clgrjhe	%r5,%r3,.Lfound
++	vl	%v16,0(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	j	.Lfound
++
++.Lfound48:
++	aghi	%r5,16
++.Lfound32:
++	aghi	%r5,16
++.Lfound16:
++	aghi	%r5,16
++.Lfound:
++	vlgvb	%r4,%v16,7	/* Load byte index of zero or 16 if no zero.  */
++	algr	%r5,%r4
++
++	clgr	%r5,%r3
++	locgrh	%r5,%r3		/* Return min (current_len, maxlen).  */
++.Lend:
++	srlg	%r2,%r5,2	/* Convert byte-count to character-count.  */
++	br	%r14
++
++	/* Find zero in 16byte aligned loop.  */
++.Lloop64:
++	vl	%v16,0(%r5,%r2)	/* Load s.  */
++	vfenezfs %v16,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound		/* Jump away if zero was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Lfound48
++
++	aghi	%r5,64
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r3,.Lloop64
++
++	j	.Llt64
++
++.Lfallback:
++	jg	__wcsnlen_c
++END(__wcsnlen_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcsnlen.c b/sysdeps/s390/multiarch/wcsnlen.c
+new file mode 100644
+index 0000000..fbb0cab
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsnlen.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of wcsnlen.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__wcsnlen)
++weak_alias (__wcsnlen, wcsnlen)
++
++#else
++# include <wcsmbs/wcsnlen.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index 54994e2..ec0b050 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -41,7 +41,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    isoc99_swscanf isoc99_vswscanf \
+ 	    mbrtoc16 c16rtomb
+ 
+-strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy
++strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcsnlen-ifunc.c b/wcsmbs/test-wcsnlen-ifunc.c
+new file mode 100644
+index 0000000..8aa528e
+--- /dev/null
++++ b/wcsmbs/test-wcsnlen-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcsnlen function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcsnlen.c"
+diff --git a/wcsmbs/test-wcsnlen.c b/wcsmbs/test-wcsnlen.c
+new file mode 100644
+index 0000000..262ab30
+--- /dev/null
++++ b/wcsmbs/test-wcsnlen.c
+@@ -0,0 +1,20 @@
++/* Test wcsnlen function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-strnlen.c"
+diff --git a/wcsmbs/wcsnlen.c b/wcsmbs/wcsnlen.c
+index dff1b45..e803920 100644
+--- a/wcsmbs/wcsnlen.c
++++ b/wcsmbs/wcsnlen.c
+@@ -18,8 +18,11 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WCSNLEN
++# define __wcsnlen WCSNLEN
++#endif
+ 
+-/* Copy SRC to DEST.  */
++/* Return length of string S at most maxlen.  */
+ size_t
+ __wcsnlen (s, maxlen)
+      const wchar_t *s;
+@@ -44,4 +47,6 @@ __wcsnlen (s, maxlen)
+ 
+   return len;
+ }
++#ifndef WCSNLEN
+ weak_alias (__wcsnlen, wcsnlen)
++#endif
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-12.patch b/SOURCES/glibc-rh1268008-12.patch
new file mode 100644
index 0000000..893d4b7
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-12.patch
@@ -0,0 +1,502 @@
+From 4c98816d5248bed13b1d8388efc0c47fe869300f Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 11:02:10 +0200
+Subject: [PATCH 12/30] S390: Optimize strcpy and wcscpy.
+
+upstream-commit-id: 680df122ab8a07806cb38d044292896334f76c01
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00157.html
+
+This patch provides optimized versions of strcpy and wcscpy with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strcpy-vx.S: New File.
+	* sysdeps/s390/multiarch/strcpy.c: Likewise.
+	* sysdeps/s390/multiarch/wcscpy-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcscpy-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcscpy.c: Likewise.
+	* sysdeps/s390/s390-32/multiarch/strcpy.c: Likewise.
+	* sysdeps/s390/s390-64/multiarch/strcpy.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strcpy and
+	wcscpy functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strcpy, wcscpy.
+	* benchtests/bench-wcscpy.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcscpy.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-wcscpy.c                |  20 ++++++
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strcpy-vx.S       | 109 ++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strcpy.c          |  24 +++++++
+ sysdeps/s390/multiarch/wcscpy-c.c        |  25 +++++++
+ sysdeps/s390/multiarch/wcscpy-vx.S       | 111 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcscpy.c          |  27 ++++++++
+ sysdeps/s390/s390-32/multiarch/strcpy.c  |  21 ++++++
+ sysdeps/s390/s390-64/multiarch/strcpy.c  |  21 ++++++
+ 11 files changed, 366 insertions(+), 3 deletions(-)
+ create mode 100644 benchtests/bench-wcscpy.c
+ create mode 100644 sysdeps/s390/multiarch/strcpy-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strcpy.c
+ create mode 100644 sysdeps/s390/multiarch/wcscpy-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcscpy-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcscpy.c
+ create mode 100644 sysdeps/s390/s390-32/multiarch/strcpy.c
+ create mode 100644 sysdeps/s390/s390-64/multiarch/strcpy.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 7bb2eef..1dda844 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -38,7 +38,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+-wcsmbs-bench := wcslen wcsnlen
++wcsmbs-bench := wcslen wcsnlen wcscpy
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-wcscpy.c b/benchtests/bench-wcscpy.c
+new file mode 100644
+index 0000000..62c5825
+--- /dev/null
++++ b/benchtests/bench-wcscpy.c
+@@ -0,0 +1,20 @@
++/* Measure wcscpy functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strcpy.c"
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 3397f24..e2202b7 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -1,9 +1,11 @@
+ ifeq ($(subdir),string)
+ sysdep_routines += strlen strlen-vx strlen-c \
+-		   strnlen strnlen-vx strnlen-c
++		   strnlen strnlen-vx strnlen-c \
++		   strcpy strcpy-vx
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+ sysdep_routines += wcslen wcslen-vx wcslen-c \
+-		   wcsnlen wcsnlen-vx wcsnlen-c
++		   wcsnlen wcsnlen-vx wcsnlen-c \
++		   wcscpy wcscpy-vx wcscpy-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index bc17c59..c9228d6 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -85,6 +85,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strnlen);
+   IFUNC_VX_IMPL (wcsnlen);
+ 
++  IFUNC_VX_IMPL (strcpy);
++  IFUNC_VX_IMPL (wcscpy);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strcpy-vx.S b/sysdeps/s390/multiarch/strcpy-vx.S
+new file mode 100644
+index 0000000..a8243b0
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcpy-vx.S
+@@ -0,0 +1,109 @@
++/* Vector optimized 32/64 bit S/390 version of strcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char * strcpy (const char *dest, const char *src)
++   Copy string src to dest.
++
++   Register usage:
++   -r1=tmp
++   -r2=dest and return_value
++   -r3=src
++   -r4=tmp
++   -r5=current_len
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++*/
++ENTRY(__strcpy_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfenezb	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Lfound_align /* If found zero within loaded bytes,
++					 copy bytes before and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r4		/* Compute highest index to 16byte boundary.  */
++
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Lloop:
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	vfenezbs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16_0	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3)/* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezbs %v17,%v16,%v16
++	je	.Lfound_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	j	.Lloop	/* No zero found -> loop.  */
++
++.Lfound_v16_32:
++	aghi	%r5,32
++.Lfound_v16_0:
++	la	%r3,0(%r5,%r2)
++	vlgvb	%r4,%v17,7	/* Load byte index of zero.  */
++	vstl	%v16,%r4,0(%r3)	/* Store characters including zero.  */
++	br	%r14
++
++.Lfound_v18_48:
++	aghi	%r5,32
++.Lfound_v18_16:
++	la	%r3,16(%r5,%r2)
++	vlgvb	%r4,%v17,7	/* Load byte index of zero.  */
++	vstl	%v18,%r4,0(%r3)	/* Store characters including zero.  */
++	br	%r14
++
++.Lfound_align:
++	vstl	%v16,%r5,0(%r2)	/* Copy characters including zero.  */
++	br	%r14
++END(__strcpy_vx)
++
++/* Use mvst-strcpy-implementation as default implementation.  */
++# define strcpy __strcpy_c
++# undef libc_hidden_builtin_def
++# define libc_hidden_builtin_def(name) strong_alias(__strcpy_c, __GI_strcpy)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++
++/* Include mvst-strcpy-implementation in s390-32/s390-64 subdirectory.  */
++#include <strcpy.S>
+diff --git a/sysdeps/s390/multiarch/strcpy.c b/sysdeps/s390/multiarch/strcpy.c
+new file mode 100644
+index 0000000..2e00ddf
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcpy.c
+@@ -0,0 +1,24 @@
++/* Multiple versions of strcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strcpy, strcpy)
++#endif
+diff --git a/sysdeps/s390/multiarch/wcscpy-c.c b/sysdeps/s390/multiarch/wcscpy-c.c
+new file mode 100644
+index 0000000..ca219dd
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscpy-c.c
+@@ -0,0 +1,25 @@
++/* Default wcscpy implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSCPY  __wcscpy_c
++
++# include <wchar.h>
++extern __typeof (wcscpy) __wcscpy_c;
++# include <wcsmbs/wcscpy.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcscpy-vx.S b/sysdeps/s390/multiarch/wcscpy-vx.S
+new file mode 100644
+index 0000000..6ec10bf
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscpy-vx.S
+@@ -0,0 +1,111 @@
++/* Vector optimized 32/64 bit S/390 version of wcscpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char * wcscpy (const wchar_t *dest, const wchar_t *src)
++   Copy string src to dest.
++
++   Register usage:
++   -r0=border-len for switching to vector-instructions
++   -r1=tmp
++   -r2=dest and return value
++   -r3=src
++   -r4=tmp
++   -r5=current_len
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++*/
++ENTRY(__wcscpy_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	tmll	%r3,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	vfenezf	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Lfound_align /* If found zero within loaded bytes,
++					 copy bytes before and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r4		/* Compute highest index to 16byte boundary.  */
++
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Lloop:
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	vfenezfs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16_0	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezfs %v17,%v16,%v16
++	je	.Lfound_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	j	.Lloop		/* No zero found -> loop.  */
++
++.Lfound_v16_32:
++	aghi	%r5,32
++.Lfound_v16_0:
++	la	%r3,0(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	vstl	%v16,%r1,0(%r3)	/* Copy characters including zero.  */
++	br	%r14
++
++.Lfound_v18_48:
++	aghi	%r5,32
++.Lfound_v18_16:
++	la	%r3,16(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	vstl	%v18,%r1,0(%r3)	/* Copy characters including zero.  */
++	br	%r14
++
++.Lfound_align:
++	aghi	%r5,3		/* Also copy remaining bytes of zero.  */
++	vstl	%v16,%r5,0(%r2)	/* Copy characters including zero.  */
++	br	%r14
++
++.Lfallback:
++	jg	__wcscpy_c
++END(__wcscpy_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcscpy.c b/sysdeps/s390/multiarch/wcscpy.c
+new file mode 100644
+index 0000000..b3a057a
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscpy.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wcscpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wcscpy, wcscpy)
++
++#else
++# include <wcsmbs/wcscpy.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/s390-32/multiarch/strcpy.c b/sysdeps/s390/s390-32/multiarch/strcpy.c
+new file mode 100644
+index 0000000..b02c392
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/strcpy.c
+@@ -0,0 +1,21 @@
++/* Multiple versions of strcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This wrapper-file is needed, because otherwise file
++   sysdeps/s390/s390-[32|64]/strcpy.S will be used.  */
++#include <sysdeps/s390/multiarch/strcpy.c>
+diff --git a/sysdeps/s390/s390-64/multiarch/strcpy.c b/sysdeps/s390/s390-64/multiarch/strcpy.c
+new file mode 100644
+index 0000000..b02c392
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/strcpy.c
+@@ -0,0 +1,21 @@
++/* Multiple versions of strcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This wrapper-file is needed, because otherwise file
++   sysdeps/s390/s390-[32|64]/strcpy.S will be used.  */
++#include <sysdeps/s390/multiarch/strcpy.c>
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-13.patch b/SOURCES/glibc-rh1268008-13.patch
new file mode 100644
index 0000000..34e6a6c
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-13.patch
@@ -0,0 +1,707 @@
+From 9912e5a176f76caf6db58f9f2e9793b08ce3c957 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 11:04:59 +0200
+Subject: [PATCH 13/30] S390: Optimize stpcpy and wcpcpy.
+
+upstream-commit-id: 8ade3db78db17e0112648d302f98eda115949cd5
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00154.html
+
+This patch provides optimized versions of stpcpy and wcpcpy with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/stpcpy-c.c: New File.
+	* sysdeps/s390/multiarch/stpcpy-vx.S: Likewise.
+	* sysdeps/s390/multiarch/stpcpy.c: Likewise.
+	* sysdeps/s390/multiarch/wcpcpy-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcpcpy-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcpcpy.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add stpcpy and
+	wcpcpy functions.
+	* string/stpcpy.c: Use STPCPY if defined.
+	* wcsmbs/wcpcpy.c: Use WCPCPY if defined.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for stpcpy, wcpcpy.
+	* string/test-stpcpy.c: Add wcpcpy support.
+	* wcsmbs/test-wcpcpy.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcpcpy.
+	* benchtests/bench-stpcpy.c: Add wcpcpy support.
+	* benchtests/bench-wcpcpy.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcpcpy.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-stpcpy.c                |  33 ++++++---
+ benchtests/bench-wcpcpy.c                |  20 ++++++
+ string/stpcpy.c                          |   6 ++
+ string/test-stpcpy.c                     |  33 ++++++---
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/stpcpy-c.c        |  34 +++++++++
+ sysdeps/s390/multiarch/stpcpy-vx.S       | 104 ++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/stpcpy.c          |  29 ++++++++
+ sysdeps/s390/multiarch/wcpcpy-c.c        |  25 +++++++
+ sysdeps/s390/multiarch/wcpcpy-vx.S       | 114 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcpcpy.c          |  28 ++++++++
+ wcsmbs/Makefile                          |   3 +-
+ wcsmbs/test-wcpcpy-ifunc.c               |  20 ++++++
+ wcsmbs/test-wcpcpy.c                     |  20 ++++++
+ wcsmbs/wcpcpy.c                          |   6 +-
+ 17 files changed, 463 insertions(+), 23 deletions(-)
+ create mode 100644 benchtests/bench-wcpcpy.c
+ create mode 100644 sysdeps/s390/multiarch/stpcpy-c.c
+ create mode 100644 sysdeps/s390/multiarch/stpcpy-vx.S
+ create mode 100644 sysdeps/s390/multiarch/stpcpy.c
+ create mode 100644 sysdeps/s390/multiarch/wcpcpy-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcpcpy-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcpcpy.c
+ create mode 100644 wcsmbs/test-wcpcpy-ifunc.c
+ create mode 100644 wcsmbs/test-wcpcpy.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 1dda844..1b491c6 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -38,7 +38,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+-wcsmbs-bench := wcslen wcsnlen wcscpy
++wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-stpcpy.c b/benchtests/bench-stpcpy.c
+index 0645298..f950c92 100644
+--- a/benchtests/bench-stpcpy.c
++++ b/benchtests/bench-stpcpy.c
+@@ -18,19 +18,34 @@
+ 
+ #define STRCPY_RESULT(dst, len) ((dst) + (len))
+ #define TEST_MAIN
+-#define TEST_NAME "stpcpy"
++#ifndef WIDE
++# define TEST_NAME "stpcpy"
++#else
++# define TEST_NAME "wcpcpy"
++#endif /* WIDE */
+ #include "bench-string.h"
+-
+-char *simple_stpcpy (char *, const char *);
+-
+-IMPL (simple_stpcpy, 0)
+-IMPL (stpcpy, 1)
+-
+-char *
+-simple_stpcpy (char *dst, const char *src)
++#ifndef WIDE
++# define CHAR char
++# define SIMPLE_STPCPY simple_stpcpy
++# define STPCPY stpcpy
++#else
++# include <wchar.h>
++# define CHAR wchar_t
++# define SIMPLE_STPCPY simple_wcpcpy
++# define STPCPY wcpcpy
++#endif /* WIDE */
++
++CHAR *SIMPLE_STPCPY (CHAR *, const CHAR *);
++
++IMPL (SIMPLE_STPCPY, 0)
++IMPL (STPCPY, 1)
++
++CHAR *
++SIMPLE_STPCPY (CHAR *dst, const CHAR *src)
+ {
+   while ((*dst++ = *src++) != '\0');
+   return dst - 1;
+ }
+ 
++#undef CHAR
+ #include "bench-strcpy.c"
+diff --git a/benchtests/bench-wcpcpy.c b/benchtests/bench-wcpcpy.c
+new file mode 100644
+index 0000000..cfbfccf
+--- /dev/null
++++ b/benchtests/bench-wcpcpy.c
+@@ -0,0 +1,20 @@
++/* Measure wcpcpy functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-stpcpy.c"
+diff --git a/string/stpcpy.c b/string/stpcpy.c
+index b0a83ba..69d150f 100644
+--- a/string/stpcpy.c
++++ b/string/stpcpy.c
+@@ -28,6 +28,12 @@
+ # define __stpcpy stpcpy
+ #endif
+ 
++#ifdef STPCPY
++extern __typeof (__stpcpy) STPCPY;
++# undef __stpcpy
++# define __stpcpy STPCPY
++#endif
++
+ /* Copy SRC to DEST, returning the address of the terminating '\0' in DEST.  */
+ char *
+ __stpcpy (dest, src)
+diff --git a/string/test-stpcpy.c b/string/test-stpcpy.c
+index 6a7af0c..962e5d6 100644
+--- a/string/test-stpcpy.c
++++ b/string/test-stpcpy.c
+@@ -19,19 +19,34 @@
+ 
+ #define STRCPY_RESULT(dst, len) ((dst) + (len))
+ #define TEST_MAIN
+-#define TEST_NAME "stpcpy"
++#ifndef WIDE
++# define TEST_NAME "stpcpy"
++#else
++# define TEST_NAME "wcpcpy"
++#endif /* !WIDE */
+ #include "test-string.h"
+-
+-char *simple_stpcpy (char *, const char *);
+-
+-IMPL (simple_stpcpy, 0)
+-IMPL (stpcpy, 1)
+-
+-char *
+-simple_stpcpy (char *dst, const char *src)
++#ifndef WIDE
++# define CHAR char
++# define SIMPLE_STPCPY simple_stpcpy
++# define STPCPY stpcpy
++#else
++# include <wchar.h>
++# define CHAR wchar_t
++# define SIMPLE_STPCPY simple_wcpcpy
++# define STPCPY wcpcpy
++#endif /* !WIDE */
++
++CHAR *SIMPLE_STPCPY (CHAR *, const CHAR *);
++
++IMPL (SIMPLE_STPCPY, 0)
++IMPL (STPCPY, 1)
++
++CHAR *
++SIMPLE_STPCPY (CHAR *dst, const CHAR *src)
+ {
+   while ((*dst++ = *src++) != '\0');
+   return dst - 1;
+ }
+ 
++#undef CHAR
+ #include "test-strcpy.c"
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index e2202b7..5b57342 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -1,11 +1,13 @@
+ ifeq ($(subdir),string)
+ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strnlen strnlen-vx strnlen-c \
+-		   strcpy strcpy-vx
++		   strcpy strcpy-vx \
++		   stpcpy stpcpy-vx stpcpy-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcsnlen wcsnlen-vx wcsnlen-c \
+-		   wcscpy wcscpy-vx wcscpy-c
++		   wcscpy wcscpy-vx wcscpy-c \
++		   wcpcpy wcpcpy-vx wcpcpy-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index c9228d6..a402301 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -88,6 +88,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strcpy);
+   IFUNC_VX_IMPL (wcscpy);
+ 
++  IFUNC_VX_IMPL (stpcpy);
++  IFUNC_VX_IMPL (wcpcpy);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/stpcpy-c.c b/sysdeps/s390/multiarch/stpcpy-c.c
+new file mode 100644
+index 0000000..4679ec6
+--- /dev/null
++++ b/sysdeps/s390/multiarch/stpcpy-c.c
+@@ -0,0 +1,34 @@
++/* Default stpcpy implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STPCPY  __stpcpy_c
++# undef libc_hidden_def
++# undef weak_alias
++# undef libc_hidden_builtin_def
++# ifdef SHARED
++#  define libc_hidden_def(name)					\
++  __hidden_ver1 (__stpcpy_c, __GI___stpcpy, __stpcpy_c);
++#  define libc_hidden_builtin_def(name)				\
++  strong_alias (__stpcpy_c, __stpcpy_c_1);			\
++  __hidden_ver1 (__stpcpy_c_1, __GI_stpcpy, __stpcpy_c_1);
++# endif /* SHARED */
++
++
++# include <string/stpcpy.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/stpcpy-vx.S b/sysdeps/s390/multiarch/stpcpy-vx.S
+new file mode 100644
+index 0000000..661ad15
+--- /dev/null
++++ b/sysdeps/s390/multiarch/stpcpy-vx.S
+@@ -0,0 +1,104 @@
++/* Vector optimized 32/64 bit S/390 version of stpcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char * stpcpy (const char *dest, const char *src)
++   Copy string src to dest returning a pointer to its end.
++
++   Register usage:
++   -r1=tmp
++   -r2=dest and return value
++   -r3=src
++   -r4=tmp
++   -r5=current_len
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++*/
++ENTRY(__stpcpy_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfenezb	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Lfound_align /* If found zero within loaded bytes,
++					 copy bytes before and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r4		/* Compute highest index to 16byte boundary.  */
++
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Lloop:
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	vfenezbs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16_0	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezbs %v17,%v16,%v16
++	je	.Lfound_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	j	.Lloop		/* No zero found -> loop.  */
++
++.Lfound_v16_32:
++	aghi	%r5,32
++.Lfound_v16_0:
++	la	%r3,0(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	vstl	%v16,%r1,0(%r3)	/* Copy characters including zero.  */
++	la	%r2,0(%r1,%r3)	/* Return pointer to zero.  */
++	br	%r14
++
++.Lfound_v18_48:
++	aghi	%r5,32
++.Lfound_v18_16:
++	la	%r3,16(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	vstl	%v18,%r1,0(%r3)	/* Copy characters including zero.  */
++	la	%r2,0(%r1,%r3)	/* Return pointer to zero.  */
++	br	%r14
++
++.Lfound_align:
++	vstl	%v16,%r5,0(%r2)	/* Copy characters including zero.  */
++	la	%r2,0(%r5,%r2)	/* Return pointer to zero.  */
++	br	%r14
++END(__stpcpy_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/stpcpy.c b/sysdeps/s390/multiarch/stpcpy.c
+new file mode 100644
+index 0000000..7dc85a0
+--- /dev/null
++++ b/sysdeps/s390/multiarch/stpcpy.c
+@@ -0,0 +1,29 @@
++/* Multiple versions of stpcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__stpcpy)
++weak_alias (__stpcpy, stpcpy)
++libc_hidden_builtin_def (stpcpy)
++
++#else
++# include <string/stpcpy.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcpcpy-c.c b/sysdeps/s390/multiarch/wcpcpy-c.c
+new file mode 100644
+index 0000000..7349f34
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcpcpy-c.c
+@@ -0,0 +1,25 @@
++/* Default wcslen implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCPCPY  __wcpcpy_c
++
++# include <wchar.h>
++extern __typeof (__wcpcpy) __wcpcpy_c;
++# include <wcsmbs/wcpcpy.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcpcpy-vx.S b/sysdeps/s390/multiarch/wcpcpy-vx.S
+new file mode 100644
+index 0000000..195b836
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcpcpy-vx.S
+@@ -0,0 +1,114 @@
++/* Vector optimized 32/64 bit S/390 version of wcpcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t * wcpcpy (const wchar_t *dest, const wchar_t *src)
++   Copy string src to dest returning a pointer to its end.
++
++   Register usage:
++   -r0=border-len for switching to vector-instructions
++   -r1=tmp
++   -r2=dest and return value
++   -r3=src
++   -r4=tmp
++   -r5=current_len
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++*/
++ENTRY(__wcpcpy_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	tmll	%r3,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	vfenezf	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Lfound_align /* If found zero within loaded bytes,
++					 copy bytes before and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r4		/* Compute highest index to 16byte boundary.  */
++
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Lloop:
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	vfenezfs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16_0	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezfs %v17,%v16,%v16
++	je	.Lfound_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	j	.Lloop		/* No zero found -> loop.  */
++
++.Lfound_v16_32:
++	aghi	%r5,32
++.Lfound_v16_0:
++	la	%r3,0(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	vstl	%v16,%r1,0(%r3)	/* Copy characters including zero.  */
++	lay	%r2,-3(%r1,%r3)	/* Return pointer to zero.  */
++	br	%r14
++
++.Lfound_v18_48:
++	aghi	%r5,32
++.Lfound_v18_16:
++	la	%r3,16(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	vstl	%v18,%r1,0(%r3)	/* Copy characters including zero.  */
++	lay	%r2,-3(%r1,%r3)	/* Return pointer to zero.  */
++	br	%r14
++
++.Lfound_align:
++	aghi	%r5,3		/* Also copy remaining bytes of zero.  */
++	vstl	%v16,%r5,0(%r2)	/* Copy characters including zero.  */
++	lay	%r2,-3(%r5,%r2)	/* Return pointer to zero.  */
++	br	%r14
++
++.Lfallback:
++	jg	__wcpcpy_c
++END(__wcpcpy_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcpcpy.c b/sysdeps/s390/multiarch/wcpcpy.c
+new file mode 100644
+index 0000000..46bf8e8
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcpcpy.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of wcpcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__wcpcpy)
++weak_alias (__wcpcpy, wcpcpy)
++
++#else
++# include <wcsmbs/wcpcpy.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index ec0b050..3b91b6d 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -41,7 +41,8 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    isoc99_swscanf isoc99_vswscanf \
+ 	    mbrtoc16 c16rtomb
+ 
+-strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen
++strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
++		wcpcpy
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcpcpy-ifunc.c b/wcsmbs/test-wcpcpy-ifunc.c
+new file mode 100644
+index 0000000..aa39062
+--- /dev/null
++++ b/wcsmbs/test-wcpcpy-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcpcpy function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcpcpy.c"
+diff --git a/wcsmbs/test-wcpcpy.c b/wcsmbs/test-wcpcpy.c
+new file mode 100644
+index 0000000..2cf91a1
+--- /dev/null
++++ b/wcsmbs/test-wcpcpy.c
+@@ -0,0 +1,20 @@
++/* Test wcspcpy functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-stpcpy.c"
+diff --git a/wcsmbs/wcpcpy.c b/wcsmbs/wcpcpy.c
+index eaaab2c..f67ba62 100644
+--- a/wcsmbs/wcpcpy.c
++++ b/wcsmbs/wcpcpy.c
+@@ -21,7 +21,9 @@
+ #define __need_ptrdiff_t
+ #include <stddef.h>
+ 
+-
++#ifdef WCPCPY
++# define __wcpcpy WCPCPY
++#endif
+ /* Copy SRC to DEST, returning the address of the terminating L'\0' in
+    DEST.  */
+ wchar_t *
+@@ -43,4 +45,6 @@ __wcpcpy (dest, src)
+   return wcp;
+ }
+ 
++#ifndef WCPCPY
+ weak_alias (__wcpcpy, wcpcpy)
++#endif
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-14.patch b/SOURCES/glibc-rh1268008-14.patch
new file mode 100644
index 0000000..89e9f67
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-14.patch
@@ -0,0 +1,1238 @@
+From 74fa8494fa732a0bd63b14b60ea0f1e542e0cee6 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 11:09:04 +0200
+Subject: [PATCH 14/30] S390: Optimize strncpy and wcsncpy.
+
+upstream-commit-id: d183b96ee6dc694e95f212c9272a178163351b19
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00160.html
+
+This patch provides optimized versions of strncpy and wcsncpy with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strncpy-vx.S: New File.
+	* sysdeps/s390/multiarch/strncpy.c: Likewise.
+	* sysdeps/s390/multiarch/wcsncpy-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcsncpy-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcsncpy.c: Likewise.
+	* sysdeps/s390/s390-32/multiarch/strncpy.c: Likewise.
+	* sysdeps/s390/s390-64/multiarch/strncpy.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strncpy and
+	wcsncpy functions.
+	* wcsmbs/wcsncpy.c: Use WCSNCPY if defined.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strncpy, wcsncpy.
+	* string/test-strncpy.c: Add wcsncpy support.
+	* wcsmbs/test-wcsncpy.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcsncpy.
+	* benchtests/bench-strncpy.c: Add wcsncpy support.
+	* benchtests/bench-wcsncpy.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcsncpy
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-strncpy.c               | 108 ++++++++++-----
+ benchtests/bench-wcsncpy.c               |  20 +++
+ string/test-strncpy.c                    | 129 +++++++++++-------
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strncpy-vx.S      | 207 ++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strncpy.c         |  24 ++++
+ sysdeps/s390/multiarch/wcsncpy-c.c       |  25 ++++
+ sysdeps/s390/multiarch/wcsncpy-vx.S      | 223 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcsncpy.c         |  28 ++++
+ sysdeps/s390/s390-32/multiarch/strncpy.c |  21 +++
+ sysdeps/s390/s390-64/multiarch/strncpy.c |  21 +++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wcsncpy-ifunc.c              |  20 +++
+ wcsmbs/test-wcsncpy.c                    |  20 +++
+ wcsmbs/wcsncpy.c                         |   5 +
+ 17 files changed, 778 insertions(+), 86 deletions(-)
+ create mode 100644 benchtests/bench-wcsncpy.c
+ create mode 100644 sysdeps/s390/multiarch/strncpy-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strncpy.c
+ create mode 100644 sysdeps/s390/multiarch/wcsncpy-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcsncpy-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcsncpy.c
+ create mode 100644 sysdeps/s390/s390-32/multiarch/strncpy.c
+ create mode 100644 sysdeps/s390/s390-64/multiarch/strncpy.c
+ create mode 100644 wcsmbs/test-wcsncpy-ifunc.c
+ create mode 100644 wcsmbs/test-wcsncpy.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 1b491c6..f898258 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -38,7 +38,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+-wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy
++wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-strncpy.c b/benchtests/bench-strncpy.c
+index 645925b..2cfd56a 100644
+--- a/benchtests/bench-strncpy.c
++++ b/benchtests/bench-strncpy.c
+@@ -1,5 +1,5 @@
+ /* Measure strncpy functions.
+-   Copyright (C) 2013 Free Software Foundation, Inc.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -16,23 +16,56 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#ifdef WIDE
++# include <wchar.h>
++# define CHAR wchar_t
++# define UCHAR wchar_t
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++# define MEMCMP wmemcmp
++# define MEMSET wmemset
++# define STRNLEN wcsnlen
++#else
++# define CHAR char
++# define UCHAR unsigned char
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++# define MEMCMP memcmp
++# define MEMSET memset
++# define STRNLEN strnlen
++#endif /* !WIDE */
++
+ #ifndef STRNCPY_RESULT
+ # define STRNCPY_RESULT(dst, len, n) dst
+ # define TEST_MAIN
+-# define TEST_NAME "strncpy"
++# ifndef WIDE
++#  define TEST_NAME "strncpy"
++# else
++#  define TEST_NAME "wcsncpy"
++# endif /* WIDE */
+ # include "bench-string.h"
+ 
+-char *simple_strncpy (char *, const char *, size_t);
+-char *stupid_strncpy (char *, const char *, size_t);
+-
+-IMPL (stupid_strncpy, 0)
+-IMPL (simple_strncpy, 0)
+-IMPL (strncpy, 1)
+-
+-char *
+-simple_strncpy (char *dst, const char *src, size_t n)
++# ifndef WIDE
++#  define SIMPLE_STRNCPY simple_strncpy
++#  define STUPID_STRNCPY stupid_strncpy
++#  define STRNCPY strncpy
++# else
++#  define SIMPLE_STRNCPY simple_wcsncpy
++#  define STUPID_STRNCPY stupid_wcsncpy
++#  define STRNCPY wcsncpy
++# endif /* WIDE */
++
++CHAR *SIMPLE_STRNCPY (CHAR *, const CHAR *, size_t);
++CHAR *STUPID_STRNCPY (CHAR *, const CHAR *, size_t);
++
++IMPL (STUPID_STRNCPY, 0)
++IMPL (SIMPLE_STRNCPY, 0)
++IMPL (STRNCPY, 1)
++
++CHAR *
++SIMPLE_STRNCPY (CHAR *dst, const CHAR *src, size_t n)
+ {
+-  char *ret = dst;
++  CHAR *ret = dst;
+   while (n--)
+     if ((*dst++ = *src++) == '\0')
+       {
+@@ -43,10 +76,10 @@ simple_strncpy (char *dst, const char *src, size_t n)
+   return ret;
+ }
+ 
+-char *
+-stupid_strncpy (char *dst, const char *src, size_t n)
++CHAR *
++STUPID_STRNCPY (CHAR *dst, const CHAR *src, size_t n)
+ {
+-  size_t nc = strnlen (src, n);
++  size_t nc = STRNLEN (src, n);
+   size_t i;
+ 
+   for (i = 0; i < nc; ++i)
+@@ -55,12 +88,12 @@ stupid_strncpy (char *dst, const char *src, size_t n)
+     dst[i] = '\0';
+   return dst;
+ }
+-#endif
++#endif /* !STRNCPY_RESULT */
+ 
+-typedef char *(*proto_t) (char *, const char *, size_t);
++typedef CHAR *(*proto_t) (CHAR *, const CHAR *, size_t);
+ 
+ static void
+-do_one_test (impl_t *impl, char *dst, const char *src, size_t len, size_t n)
++do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, size_t len, size_t n)
+ {
+   size_t i, iters = INNER_LOOP_ITERS;
+   timing_t start, stop, cur;
+@@ -73,7 +106,7 @@ do_one_test (impl_t *impl, char *dst, const char *src, size_t len, size_t n)
+       return;
+     }
+ 
+-  if (memcmp (dst, src, len > n ? n : len) != 0)
++  if (memcmp (dst, src, (len > n ? n : len) * sizeof (CHAR)) != 0)
+     {
+       error (0, 0, "Wrong result in function %s", impl->name);
+       ret = 1;
+@@ -109,23 +142,24 @@ static void
+ do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char)
+ {
+   size_t i;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+   align1 &= 7;
+-  if (align1 + len >= page_size)
++  if ((align1 + len) * sizeof (CHAR) >= page_size)
+     return;
+ 
+   align2 &= 7;
+-  if (align2 + len >= page_size)
++  if ((align2 + len) * sizeof (CHAR) >= page_size)
+     return;
+ 
+-  s1 = (char *) (buf1 + align1);
+-  s2 = (char *) (buf2 + align2);
++  s1 = (CHAR *) (buf1 + align1);
++  s2 = (CHAR *) (buf2 + align2);
+ 
+   for (i = 0; i < len; ++i)
+     s1[i] = 32 + 23 * i % (max_char - 32);
+   s1[len] = 0;
+-  for (i = len + 1; i + align1 < page_size && i < len + 64; ++i)
++  for (i = len + 1; (i + align1) * sizeof (CHAR) < page_size && i < len + 64;
++       ++i)
+     s1[i] = 32 + 32 * i % (max_char - 32);
+ 
+   printf ("Length %4zd, n %4zd, alignment %2zd/%2zd:", len, n, align1, align2);
+@@ -150,22 +184,22 @@ test_main (void)
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (i, i, 16, 16, 127);
+-      do_test (i, i, 16, 16, 255);
+-      do_test (i, 2 * i, 16, 16, 127);
+-      do_test (2 * i, i, 16, 16, 255);
+-      do_test (8 - i, 2 * i, 1 << i, 2 << i, 127);
+-      do_test (2 * i, 8 - i, 2 << i, 1 << i, 127);
+-      do_test (8 - i, 2 * i, 1 << i, 2 << i, 255);
+-      do_test (2 * i, 8 - i, 2 << i, 1 << i, 255);
++      do_test (i, i, 16, 16, SMALL_CHAR);
++      do_test (i, i, 16, 16, BIG_CHAR);
++      do_test (i, 2 * i, 16, 16, SMALL_CHAR);
++      do_test (2 * i, i, 16, 16, BIG_CHAR);
++      do_test (8 - i, 2 * i, 1 << i, 2 << i, SMALL_CHAR);
++      do_test (2 * i, 8 - i, 2 << i, 1 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 1 << i, 2 << i, BIG_CHAR);
++      do_test (2 * i, 8 - i, 2 << i, 1 << i, BIG_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (0, 0, 4 << i, 8 << i, 127);
+-      do_test (0, 0, 16 << i, 8 << i, 127);
+-      do_test (8 - i, 2 * i, 4 << i, 8 << i, 127);
+-      do_test (8 - i, 2 * i, 16 << i, 8 << i, 127);
++      do_test (0, 0, 4 << i, 8 << i, SMALL_CHAR);
++      do_test (0, 0, 16 << i, 8 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 4 << i, 8 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 16 << i, 8 << i, SMALL_CHAR);
+     }
+ 
+   return ret;
+diff --git a/benchtests/bench-wcsncpy.c b/benchtests/bench-wcsncpy.c
+new file mode 100644
+index 0000000..d6f63c9
+--- /dev/null
++++ b/benchtests/bench-wcsncpy.c
+@@ -0,0 +1,20 @@
++/* Measure wcsncpy functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strncpy.c"
+diff --git a/string/test-strncpy.c b/string/test-strncpy.c
+index a623093..bdccc98 100644
+--- a/string/test-strncpy.c
++++ b/string/test-strncpy.c
+@@ -17,23 +17,56 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#ifdef WIDE
++# include <wchar.h>
++# define CHAR wchar_t
++# define UCHAR wchar_t
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++# define MEMCMP wmemcmp
++# define MEMSET wmemset
++# define STRNLEN wcsnlen
++#else
++# define CHAR char
++# define UCHAR unsigned char
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++# define MEMCMP memcmp
++# define MEMSET memset
++# define STRNLEN strnlen
++#endif /* !WIDE */
++
++
+ #ifndef STRNCPY_RESULT
+ # define STRNCPY_RESULT(dst, len, n) dst
+ # define TEST_MAIN
+-# define TEST_NAME "strncpy"
++# ifndef WIDE
++#  define TEST_NAME "strncpy"
++# else
++#  define TEST_NAME "wcsncpy"
++# endif /* WIDE */
+ # include "test-string.h"
++# ifndef WIDE
++#  define SIMPLE_STRNCPY simple_strncpy
++#  define STUPID_STRNCPY stupid_strncpy
++#  define STRNCPY strncpy
++# else
++#  define SIMPLE_STRNCPY simple_wcsncpy
++#  define STUPID_STRNCPY stupid_wcsncpy
++#  define STRNCPY wcsncpy
++# endif /* WIDE */
+ 
+-char *simple_strncpy (char *, const char *, size_t);
+-char *stupid_strncpy (char *, const char *, size_t);
++CHAR *SIMPLE_STRNCPY (CHAR *, const CHAR *, size_t);
++CHAR *STUPID_STRNCPY (CHAR *, const CHAR *, size_t);
+ 
+-IMPL (stupid_strncpy, 0)
+-IMPL (simple_strncpy, 0)
+-IMPL (strncpy, 1)
++IMPL (STUPID_STRNCPY, 0)
++IMPL (SIMPLE_STRNCPY, 0)
++IMPL (STRNCPY, 1)
+ 
+-char *
+-simple_strncpy (char *dst, const char *src, size_t n)
++CHAR *
++SIMPLE_STRNCPY (CHAR *dst, const CHAR *src, size_t n)
+ {
+-  char *ret = dst;
++  CHAR *ret = dst;
+   while (n--)
+     if ((*dst++ = *src++) == '\0')
+       {
+@@ -44,10 +77,10 @@ simple_strncpy (char *dst, const char *src, size_t n)
+   return ret;
+ }
+ 
+-char *
+-stupid_strncpy (char *dst, const char *src, size_t n)
++CHAR *
++STUPID_STRNCPY (CHAR *dst, const CHAR *src, size_t n)
+ {
+-  size_t nc = strnlen (src, n);
++  size_t nc = STRNLEN (src, n);
+   size_t i;
+ 
+   for (i = 0; i < nc; ++i)
+@@ -56,12 +89,12 @@ stupid_strncpy (char *dst, const char *src, size_t n)
+     dst[i] = '\0';
+   return dst;
+ }
+-#endif
++#endif /* !STRNCPY_RESULT */
+ 
+-typedef char *(*proto_t) (char *, const char *, size_t);
++typedef CHAR *(*proto_t) (CHAR *, const CHAR *, size_t);
+ 
+ static void
+-do_one_test (impl_t *impl, char *dst, const char *src, size_t len, size_t n)
++do_one_test (impl_t *impl, CHAR *dst, const char *src, size_t len, size_t n)
+ {
+   if (CALL (impl, dst, src, n) != STRNCPY_RESULT (dst, len, n))
+     {
+@@ -71,7 +104,7 @@ do_one_test (impl_t *impl, char *dst, const char *src, size_t len, size_t n)
+       return;
+     }
+ 
+-  if (memcmp (dst, src, len > n ? n : len) != 0)
++  if (memcmp (dst, src, (len > n ? n : len) * sizeof (CHAR)) != 0)
+     {
+       error (0, 0, "Wrong result in function %s", impl->name);
+       ret = 1;
+@@ -96,23 +129,26 @@ static void
+ do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char)
+ {
+   size_t i;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
++/* For wcsncpy: align1 and align2 here mean alignment not in bytes,
++   but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t)).  */
+   align1 &= 7;
+-  if (align1 + len >= page_size)
++  if ((align1 + len) * sizeof (CHAR) >= page_size)
+     return;
+ 
+   align2 &= 7;
+-  if (align2 + len >= page_size)
++  if ((align2 + len) * sizeof (CHAR) >= page_size)
+     return;
+ 
+-  s1 = (char *) (buf1 + align1);
+-  s2 = (char *) (buf2 + align2);
++  s1 = (CHAR *) (buf1) + align1;
++  s2 = (CHAR *) (buf2) + align2;
+ 
+   for (i = 0; i < len; ++i)
+     s1[i] = 32 + 23 * i % (max_char - 32);
+   s1[len] = 0;
+-  for (i = len + 1; i + align1 < page_size && i < len + 64; ++i)
++  for (i = len + 1; (i + align1) * sizeof (CHAR) < page_size && i < len + 64;
++       ++i)
+     s1[i] = 32 + 32 * i % (max_char - 32);
+ 
+   FOR_EACH_IMPL (impl, 0)
+@@ -123,12 +159,16 @@ static void
+ do_random_tests (void)
+ {
+   size_t i, j, n, align1, align2, len, size, mode;
+-  unsigned char *p1 = buf1 + page_size - 512;
+-  unsigned char *p2 = buf2 + page_size - 512;
+-  unsigned char *res;
++  UCHAR *p1 = (UCHAR *) (buf1 + page_size) - 512;
++  UCHAR *p2 = (UCHAR *) (buf2 + page_size) - 512;
++  UCHAR *res;
+ 
+   for (n = 0; n < ITERATIONS; n++)
+     {
++      /* For wcsncpy: align1 and align2 here mean align not in bytes,
++	 but in wchar_ts, in bytes it will equal to align * (sizeof
++	 (wchar_t)).  */
++
+       mode = random ();
+       if (mode & 1)
+ 	{
+@@ -166,7 +206,7 @@ do_random_tests (void)
+ 	    {
+ 	      size = random () & 511;
+ 	      if (size + j > 512)
+-		size = 512 - j - (random() & 31);
++		size = 512 - j - (random () & 31);
+ 	    }
+ 	  else
+ 	    size = 512 - j;
+@@ -182,18 +222,17 @@ do_random_tests (void)
+ 	    p1[i] = 0;
+ 	  else
+ 	    {
+-	      p1[i] = random () & 255;
++	      p1[i] = random () & BIG_CHAR;
+ 	      if (i >= align1 && i < len + align1 && !p1[i])
+-		p1[i] = (random () & 127) + 3;
++		p1[i] = (random () & SMALL_CHAR) + 3;
+ 	    }
+ 	}
+ 
+       FOR_EACH_IMPL (impl, 1)
+ 	{
+-	  memset (p2 - 64, '\1', 512 + 64);
+-	  res = (unsigned char *) CALL (impl,
+-					(char *) (p2 + align2),
+-					(char *) (p1 + align1), size);
++	  MEMSET (p2 - 64, '\1', 512 + 64);
++	  res = (UCHAR *) CALL (impl, (CHAR *) (p2 + align2),
++				(CHAR *) (p1 + align1), size);
+ 	  if (res != STRNCPY_RESULT (p2 + align2, len, size))
+ 	    {
+ 	      error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd) %p != %p",
+@@ -235,7 +274,7 @@ do_random_tests (void)
+ 	  j = len + 1;
+ 	  if (size < j)
+ 	    j = size;
+-	  if (memcmp (p1 + align1, p2 + align2, j))
++	  if (MEMCMP (p1 + align1, p2 + align2, j))
+ 	    {
+ 	      error (0, 0, "Iteration %zd - different strings, %s (%zd, %zd, %zd)",
+ 		     n, impl->name, align1, align2, len);
+@@ -259,22 +298,22 @@ test_main (void)
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (i, i, 16, 16, 127);
+-      do_test (i, i, 16, 16, 255);
+-      do_test (i, 2 * i, 16, 16, 127);
+-      do_test (2 * i, i, 16, 16, 255);
+-      do_test (8 - i, 2 * i, 1 << i, 2 << i, 127);
+-      do_test (2 * i, 8 - i, 2 << i, 1 << i, 127);
+-      do_test (8 - i, 2 * i, 1 << i, 2 << i, 255);
+-      do_test (2 * i, 8 - i, 2 << i, 1 << i, 255);
++      do_test (i, i, 16, 16, SMALL_CHAR);
++      do_test (i, i, 16, 16, BIG_CHAR);
++      do_test (i, 2 * i, 16, 16, SMALL_CHAR);
++      do_test (2 * i, i, 16, 16, BIG_CHAR);
++      do_test (8 - i, 2 * i, 1 << i, 2 << i, SMALL_CHAR);
++      do_test (2 * i, 8 - i, 2 << i, 1 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 1 << i, 2 << i, BIG_CHAR);
++      do_test (2 * i, 8 - i, 2 << i, 1 << i, BIG_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (0, 0, 4 << i, 8 << i, 127);
+-      do_test (0, 0, 16 << i, 8 << i, 127);
+-      do_test (8 - i, 2 * i, 4 << i, 8 << i, 127);
+-      do_test (8 - i, 2 * i, 16 << i, 8 << i, 127);
++      do_test (0, 0, 4 << i, 8 << i, SMALL_CHAR);
++      do_test (0, 0, 16 << i, 8 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 4 << i, 8 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 16 << i, 8 << i, SMALL_CHAR);
+     }
+ 
+   do_random_tests ();
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 5b57342..0dff2dc 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -2,12 +2,14 @@ ifeq ($(subdir),string)
+ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strnlen strnlen-vx strnlen-c \
+ 		   strcpy strcpy-vx \
+-		   stpcpy stpcpy-vx stpcpy-c
++		   stpcpy stpcpy-vx stpcpy-c \
++		   strncpy strncpy-vx
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcsnlen wcsnlen-vx wcsnlen-c \
+ 		   wcscpy wcscpy-vx wcscpy-c \
+-		   wcpcpy wcpcpy-vx wcpcpy-c
++		   wcpcpy wcpcpy-vx wcpcpy-c \
++		   wcsncpy wcsncpy-vx wcsncpy-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index a402301..940421d 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -91,6 +91,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (stpcpy);
+   IFUNC_VX_IMPL (wcpcpy);
+ 
++  IFUNC_VX_IMPL (strncpy);
++  IFUNC_VX_IMPL (wcsncpy);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strncpy-vx.S b/sysdeps/s390/multiarch/strncpy-vx.S
+new file mode 100644
+index 0000000..c18b9b7
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strncpy-vx.S
+@@ -0,0 +1,207 @@
++/* Vector optimized 32/64 bit S/390 version of strncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char * strncpy (const char *dest, const char *src, size_t n)
++   Copy at most n characters of string  src to dest.
++
++   Register usage:
++   -r0=dest pointer for return
++   -r1=tmp, zero byte index
++   -r2=dest
++   -r3=src
++   -r4=n
++   -r5=current_len
++   -r6=tmp, loaded bytes
++   -r7=tmp, border
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++   -v31=register save area for r6, r7
++*/
++ENTRY(__strncpy_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgfi	%r4,0
++	ber	%r14		/* Nothing to do, if n == 0.  */
++	lgr	%r0,%r2		/* Save destination pointer for return.  */
++	vlvgp	%v31,%r6,%r7	/* Save registers.  */
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r6,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r6,%r6		/* Convert 32bit to 64bit.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	clgrjle	%r4,%r6,.Lremaining_v16 /* If n <= loaded-bytes
++					   -> process remaining.  */
++
++	/* n > loaded-byte-count.  */
++	vfenezb	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r1,%r6,.Lfound_v16_store /* Found zero within loaded bytes,
++					     copy and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r7,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r7		/* Compute highest index to 16byte boundary.  */
++
++	/* Zero not found and n > loaded-byte-count.  */
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Now we are 16byte aligned, so we can load
++	   a full vreg without page fault.  */
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lloop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	clgijl	%r4,17,.Lremaining_v16	/* If n <= 16, process remaining
++					   bytes.  */
++.Llt64:
++	lgr	%r7,%r4
++	slgfi	%r7,16		/* border_len = n - 16.  */
++
++	clgrjhe	%r5,%r7,.Lremaining_v16 /* If current_len >= border
++					   then process remaining bytes.  */
++	vfenezbs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lremaining_v18
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18
++	vl	%v16,16(%r5,%r3)
++	vst	%v18,0(%r5,%r2)
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lremaining_v16
++	vfenezbs %v17,%v16,%v16
++	je	.Lfound_v16
++	vl	%v18,16(%r5,%r3)
++	vst	%v16,0(%r5,%r2)
++	aghi	%r5,16
++
++.Lremaining_v18:
++	vlr	%v16,%v18
++.Lremaining_v16:
++	/* v16 contains the remaining bytes [1...16].
++	   Store remaining bytes and append string-termination.  */
++	vfenezb	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	slgrk	%r7,%r4,%r5	/* Remaining bytes = maxlen - current_len.  */
++	aghi	%r7,-1		/* vstl needs highest index.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no index register.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	/* Zero in remaining bytes? -> jump away (zero-index < max-index)
++	   Do not jump away if zero-index == max-index,
++	   but simply copy zero with vstl below.  */
++	clrjl	%r1,%r7,.Lfound_v16_store
++	vstl	%v16,%r7,0(%r2)	/* Store remaining bytes without null
++				   termination!.  */
++.Lend:
++	/* Restore saved registers.  */
++	vlgvg	%r6,%v31,0
++	vlgvg	%r7,%v31,1
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++
++.Lfound_v16_32:
++	aghi	%r5,32
++	j	.Lfound_v16
++.Lfound_v18_48:
++	aghi	%r5,32
++.Lfound_v18_16:
++	aghi	%r5,16
++.Lfound_v18:
++	vlr	%v16,%v18
++.Lfound_v16:
++	/* v16 contains a zero. Store remaining bytes to zero. current_len
++	   has not reached border, thus checking for n is not needed! */
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no support for index-register.  */
++.Lfound_v16_store:
++	vstl	%v16,%r1,0(%r2)	/* Copy characters including zero.  */
++	/* Fill remaining bytes with zero - remaining count always > 0.  */
++	algr	%r5,%r1		/* Remaining bytes (=%r4) = ...  */
++	slgr	%r4,%r5		/* = n - (current_len + zero_index + 1).  */
++	la	%r2,0(%r1,%r2)	/* Pointer to zero. start filling beyond.  */
++	aghi	%r4,-2		/* mvc with exrl needs count - 1.
++				   (additional -1, see remaining bytes above) */
++	srlg	%r6,%r4,8	/* Split into 256 byte blocks.  */
++	ltgr	%r6,%r6
++	je	.Lzero_lt256
++.Lzero_loop256:
++	mvc	1(256,%r2),0(%r2) /* Fill 256 zeros at once.  */
++	la	%r2,256(%r2)
++	brctg	%r6,.Lzero_loop256 /* Loop until all blocks are processed.  */
++.Lzero_lt256:
++	exrl	%r4,.Lmvc_lt256
++	j	.Lend
++.Lmvc_lt256:
++	mvc	1(1,%r2),0(%r2)
++
++.Lloop64:
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	vfenezbs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezbs %v17,%v16,%v16
++	je	.Lfound_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lloop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	j	.Llt64
++END(__strncpy_vx)
++
++# define strncpy __strncpy_c
++# undef libc_hidden_builtin_def
++# define libc_hidden_builtin_def(name) strong_alias(__strncpy_c, __GI_strncpy)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++
++/* Include strncpy-implementation in s390-32/s390-64 subdirectory.  */
++#include <strncpy.S>
+diff --git a/sysdeps/s390/multiarch/strncpy.c b/sysdeps/s390/multiarch/strncpy.c
+new file mode 100644
+index 0000000..0b0c308
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strncpy.c
+@@ -0,0 +1,24 @@
++/* Multiple versions of strncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strncpy, strncpy)
++#endif
+diff --git a/sysdeps/s390/multiarch/wcsncpy-c.c b/sysdeps/s390/multiarch/wcsncpy-c.c
+new file mode 100644
+index 0000000..a46e4ac
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsncpy-c.c
+@@ -0,0 +1,25 @@
++/* Default wcsncpy implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSNCPY  __wcsncpy_c
++
++# include <wchar.h>
++extern __typeof (__wcsncpy) __wcsncpy_c;
++# include <wcsmbs/wcsncpy.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcsncpy-vx.S b/sysdeps/s390/multiarch/wcsncpy-vx.S
+new file mode 100644
+index 0000000..072a2d4
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsncpy-vx.S
+@@ -0,0 +1,223 @@
++/* Vector optimized 32/64 bit S/390 version of wcsncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t *wcsncpy (const wchar_t *dest, const wchar_t *src, size_t n)
++   Copy at most n characters of string  src to dest.
++
++   Register usage:
++   -r0=dest pointer for return
++   -r1=tmp, zero byte index
++   -r2=dest
++   -r3=src
++   -r4=n
++   -r5=current_len
++   -r6=tmp, loaded bytes
++   -r7=tmp, border
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++   -v31=register save area for r6, r7
++*/
++ENTRY(__wcsncpy_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgfi	%r4,0
++	ber	%r14		/* Nothing to do, if n == 0.  */
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++
++	tmll	%r3,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	vlvgp	%v31,%r6,%r7	/* Save registers.  */
++	lgr	%r0,%r2		/* Save destination pointer for return.  */
++
++	lcbb	%r6,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r6,%r6		/* Convert 32bit to 64bit.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	/* Check range of maxlen and convert to byte-count.  */
++# ifdef __s390x__
++	tmhh	%r4,49152	/* Test bit 0 or 1 of n.  */
++	lghi	%r1,-4		/* Max byte-count is 18446744073709551612.  */
++# else
++	tmlh	%r4,49152	/* Test bit 0 or 1 of n.  */
++	llilf	%r1,4294967292	/* Max byte-count is 4294967292.  */
++# endif /* !__s390x__ */
++	sllg	%r4,%r4,2	/* Convert character-count to byte-count.  */
++	locgrne	%r4,%r1		/* Use max byte-count, if bit 0/1 was one.  */
++
++	clgrjle	%r4,%r6,.Lremaining_v16 /* If n <= loaded-bytes
++					   -> process remaining.  */
++
++	/* n > loaded-byte-count.  */
++	vfenezf	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	clrjl	%r1,%r6,.Lfound_v16_store /* Found zero within loaded bytes,
++					     copy and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r7,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r7		/* Compute highest index to 16byte boundary.  */
++
++	/* Zero not found and n > loaded-byte-count.  */
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Now we are 16byte aligned, so we can load
++	   a full vreg without page fault.  */
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lloop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	clgijl	%r4,17,.Lremaining_v16	/* If n <=16, process remaining
++					   bytes.  */
++.Llt64:
++	lgr	%r7,%r4
++	slgfi	%r7,16		/* border_len = maxlen - 16.  */
++
++	clgrjhe	%r5,%r7,.Lremaining_v16 /* If current_len >= border
++					       then process remaining bytes.  */
++	vfenezfs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lremaining_v18
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18
++	vl	%v16,16(%r5,%r3)
++	vst	%v18,0(%r5,%r2)
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lremaining_v16
++	vfenezfs %v17,%v16,%v16
++	je	.Lfound_v16
++	vl	%v18,16(%r5,%r3)
++	vst	%v16,0(%r5,%r2)
++	aghi	%r5,16
++
++.Lremaining_v18:
++	vlr	%v16,%v18
++.Lremaining_v16:
++	/* v16 contains the remaining bytes [1...16].
++	   Store remaining bytes and append string-termination.  */
++	vfenezf	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	slgrk	%r7,%r4,%r5	/* Remaining bytes = maxlen - current_len.  */
++	aghi	%r7,-1		/* vstl needs highest index.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no index register.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	/* Zero in remaining bytes? -> jump away (zero-index < max-index)
++	   Do not jump away if zero-index == max-index,
++	   but simply copy zero with vstl below.  */
++	clrjl	%r1,%r7,.Lfound_v16_store
++	vstl	%v16,%r7,0(%r2)	/* Store remaining bytes without null
++				   termination!.  */
++.Lend:
++	/* Restore saved registers.  */
++	vlgvg	%r6,%v31,0
++	vlgvg	%r7,%v31,1
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++.Lfound_v16_32:
++	aghi	%r5,32
++	j	.Lfound_v16
++.Lfound_v18_48:
++	aghi	%r5,32
++.Lfound_v18_16:
++	aghi	%r5,16
++.Lfound_v18:
++	vlr	%v16,%v18
++.Lfound_v16:
++	/* v16 contains a zero. Store remaining bytes to zero. current_len
++	   has not reached border, thus checking for n is not needed! */
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no support for index-register.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++.Lfound_v16_store:
++	vstl	%v16,%r1,0(%r2)	/* Copy characters including zero.  */
++	/* Fill remaining bytes with zero - remaining count always > 0.  */
++	algr	%r5,%r1		/* Remaining bytes (=%r4) = ...  */
++	slgr	%r4,%r5		/* = maxlen - (currlen + zero_index + 1).  */
++	la	%r2,0(%r1,%r2)	/* Pointer to zero. start filling beyond.  */
++	aghi	%r4,-2		/* mvc with exrl needs count - 1.
++				   (additional -1, see remaining bytes above) */
++	srlg	%r6,%r4,8	/* Split into 256 byte blocks.  */
++	ltgr	%r6,%r6
++	je	.Lzero_lt256
++.Lzero_loop256:
++	mvc	1(256,%r2),0(%r2) /* Fill 256 zeros at once.  */
++	la	%r2,256(%r2)
++	brctg	%r6,.Lzero_loop256 /* Loop until all blocks are processed.  */
++.Lzero_lt256:
++	exrl	%r4,.Lmvc_lt256
++	j	.Lend
++.Lmvc_lt256:
++	mvc	1(1,%r2),0(%r2)
++
++	/* Find zero in 16byte aligned loop.  */
++.Lloop64:
++	vl	%v16,0(%r5,%r3) /* Load s.  */
++	vfenezfs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezfs %v17,%v16,%v16
++	je	.Lfound_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lloop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	j	.Llt64
++
++.Lfallback:
++	jg	__wcsncpy_c
++END(__wcsncpy_vx)
++
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcsncpy.c b/sysdeps/s390/multiarch/wcsncpy.c
+new file mode 100644
+index 0000000..99aa344
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsncpy.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of wcsncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__wcsncpy)
++weak_alias (__wcsncpy, wcsncpy)
++
++#else
++# include <wcsmbs/wcsncpy.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/s390-32/multiarch/strncpy.c b/sysdeps/s390/s390-32/multiarch/strncpy.c
+new file mode 100644
+index 0000000..bc9c336
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/strncpy.c
+@@ -0,0 +1,21 @@
++/* Multiple versions of strncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This wrapper-file is needed, because otherwise file
++   sysdeps/s390/s390-[32|64]/strncpy.S will be used.  */
++#include <sysdeps/s390/multiarch/strncpy.c>
+diff --git a/sysdeps/s390/s390-64/multiarch/strncpy.c b/sysdeps/s390/s390-64/multiarch/strncpy.c
+new file mode 100644
+index 0000000..bc9c336
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/strncpy.c
+@@ -0,0 +1,21 @@
++/* Multiple versions of strncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This wrapper-file is needed, because otherwise file
++   sysdeps/s390/s390-[32|64]/strncpy.S will be used.  */
++#include <sysdeps/s390/multiarch/strncpy.c>
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index 3b91b6d..c26ab0c 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -42,7 +42,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    mbrtoc16 c16rtomb
+ 
+ strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+-		wcpcpy
++		wcpcpy wcsncpy
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcsncpy-ifunc.c b/wcsmbs/test-wcsncpy-ifunc.c
+new file mode 100644
+index 0000000..0141b38
+--- /dev/null
++++ b/wcsmbs/test-wcsncpy-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcsncpy function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcsncpy.c"
+diff --git a/wcsmbs/test-wcsncpy.c b/wcsmbs/test-wcsncpy.c
+new file mode 100644
+index 0000000..27de6f8
+--- /dev/null
++++ b/wcsmbs/test-wcsncpy.c
+@@ -0,0 +1,20 @@
++/* Test wcsncpy functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-strncpy.c"
+diff --git a/wcsmbs/wcsncpy.c b/wcsmbs/wcsncpy.c
+index f134c36..2e3cebe 100644
+--- a/wcsmbs/wcsncpy.c
++++ b/wcsmbs/wcsncpy.c
+@@ -18,6 +18,9 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WCSNCPY
++# define __wcsncpy WCSNCPY
++#endif
+ 
+ /* Copy no more than N wide-characters of SRC to DEST.	*/
+ wchar_t *
+@@ -83,4 +86,6 @@ __wcsncpy (dest, src, n)
+ 
+   return s;
+ }
++#ifndef WCSNCPY
+ weak_alias (__wcsncpy, wcsncpy)
++#endif
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-15.patch b/SOURCES/glibc-rh1268008-15.patch
new file mode 100644
index 0000000..70454f9
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-15.patch
@@ -0,0 +1,915 @@
+From b403bd489e63561185fda4d7d1de2b1f627608d9 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 11:10:59 +0200
+Subject: [PATCH 15/30] S390: Optimize stpncpy and wcpncpy.
+
+upstream-commit-id: b3a0c176d1185621c4dd2bb3a51ec961bdb29123
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00158.html
+
+This patch provides optimized versions of stpncpy and wcpncpy with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/stpncpy-c.c: New File.
+	* sysdeps/s390/multiarch/stpncpy-vx.S: Likewise.
+	* sysdeps/s390/multiarch/stpncpy.c: Likewise.
+	* sysdeps/s390/multiarch/wcpncpy-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcpncpy-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcpncpy.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add stpncpy and
+	wcpncpy functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for stpncpy, wcpncpy.
+	* wcsmbs/wcpncpy.c: Use WCPNCPY if defined.
+	* string/test-stpncpy.c: Add wcpncpy support.
+	* wcsmbs/test-wcpncpy.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcpncpy.
+	* benchtests/bench-stpncpy.c: Add wcpncpy support.
+	* benchtests/bench-wcpncpy.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcpncpy.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-stpncpy.c               |  40 ++++--
+ benchtests/bench-wcpncpy.c               |  20 +++
+ string/test-stpncpy.c                    |  40 ++++--
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/stpncpy-c.c       |  28 ++++
+ sysdeps/s390/multiarch/stpncpy-vx.S      | 200 ++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/stpncpy.c         |  28 ++++
+ sysdeps/s390/multiarch/wcpncpy-c.c       |  25 ++++
+ sysdeps/s390/multiarch/wcpncpy-vx.S      | 222 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcpncpy.c         |  28 ++++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wcpncpy-ifunc.c              |  20 +++
+ wcsmbs/test-wcpncpy.c                    |  20 +++
+ wcsmbs/wcpncpy.c                         |   5 +
+ 16 files changed, 663 insertions(+), 26 deletions(-)
+ create mode 100644 benchtests/bench-wcpncpy.c
+ create mode 100644 sysdeps/s390/multiarch/stpncpy-c.c
+ create mode 100644 sysdeps/s390/multiarch/stpncpy-vx.S
+ create mode 100644 sysdeps/s390/multiarch/stpncpy.c
+ create mode 100644 sysdeps/s390/multiarch/wcpncpy-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcpncpy-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcpncpy.c
+ create mode 100644 wcsmbs/test-wcpncpy-ifunc.c
+ create mode 100644 wcsmbs/test-wcpncpy.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index f898258..dfab95f 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -38,7 +38,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+-wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy
++wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-stpncpy.c b/benchtests/bench-stpncpy.c
+index 65ed800..e428102 100644
+--- a/benchtests/bench-stpncpy.c
++++ b/benchtests/bench-stpncpy.c
+@@ -18,18 +18,36 @@
+ 
+ #define STRNCPY_RESULT(dst, len, n) ((dst) + ((len) > (n) ? (n) : (len)))
+ #define TEST_MAIN
+-#define TEST_NAME "stpncpy"
++#ifndef WIDE
++# define TEST_NAME "stpncpy"
++#else
++# define TEST_NAME "wcpncpy"
++#endif /* WIDE */
+ #include "bench-string.h"
++#ifndef WIDE
++# define CHAR char
++# define SIMPLE_STPNCPY simple_stpncpy
++# define STUPID_STPNCPY stupid_stpncpy
++# define STPNCPY stpncpy
++# define STRNLEN strnlen
++#else
++# include <wchar.h>
++# define CHAR wchar_t
++# define SIMPLE_STPNCPY simple_wcpncpy
++# define STUPID_STPNCPY stupid_wcpncpy
++# define STPNCPY wcpncpy
++# define STRNLEN wcsnlen
++#endif /* WIDE */
+ 
+-char *simple_stpncpy (char *, const char *, size_t);
+-char *stupid_stpncpy (char *, const char *, size_t);
++CHAR *SIMPLE_STPNCPY (CHAR *, const CHAR *, size_t);
++CHAR *STUPID_STPNCPY (CHAR *, const CHAR *, size_t);
+ 
+-IMPL (stupid_stpncpy, 0)
+-IMPL (simple_stpncpy, 0)
+-IMPL (stpncpy, 1)
++IMPL (STUPID_STPNCPY, 0)
++IMPL (SIMPLE_STPNCPY, 0)
++IMPL (STPNCPY, 1)
+ 
+-char *
+-simple_stpncpy (char *dst, const char *src, size_t n)
++CHAR *
++SIMPLE_STPNCPY (CHAR *dst, const CHAR *src, size_t n)
+ {
+   while (n--)
+     if ((*dst++ = *src++) == '\0')
+@@ -43,10 +61,10 @@ simple_stpncpy (char *dst, const char *src, size_t n)
+   return dst;
+ }
+ 
+-char *
+-stupid_stpncpy (char *dst, const char *src, size_t n)
++CHAR *
++STUPID_STPNCPY (CHAR *dst, const CHAR *src, size_t n)
+ {
+-  size_t nc = strnlen (src, n);
++  size_t nc = STRNLEN (src, n);
+   size_t i;
+ 
+   for (i = 0; i < nc; ++i)
+diff --git a/benchtests/bench-wcpncpy.c b/benchtests/bench-wcpncpy.c
+new file mode 100644
+index 0000000..8aa529e
+--- /dev/null
++++ b/benchtests/bench-wcpncpy.c
+@@ -0,0 +1,20 @@
++/* Measure wcpncpy functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-stpncpy.c"
+diff --git a/string/test-stpncpy.c b/string/test-stpncpy.c
+index 8647299..69c8181 100644
+--- a/string/test-stpncpy.c
++++ b/string/test-stpncpy.c
+@@ -19,18 +19,36 @@
+ 
+ #define STRNCPY_RESULT(dst, len, n) ((dst) + ((len) > (n) ? (n) : (len)))
+ #define TEST_MAIN
+-#define TEST_NAME "stpncpy"
++#ifndef WIDE
++# define TEST_NAME "stpncpy"
++#else
++# define TEST_NAME "wcpncpy"
++#endif /* WIDE */
+ #include "test-string.h"
++#ifndef WIDE
++# define CHAR char
++# define SIMPLE_STPNCPY simple_stpncpy
++# define STUPID_STPNCPY stupid_stpncpy
++# define STPNCPY stpncpy
++# define STRNLEN strnlen
++#else
++# include <wchar.h>
++# define CHAR wchar_t
++# define SIMPLE_STPNCPY simple_wcpncpy
++# define STUPID_STPNCPY stupid_wcpncpy
++# define STPNCPY wcpncpy
++# define STRNLEN wcsnlen
++#endif /* WIDE */
+ 
+-char *simple_stpncpy (char *, const char *, size_t);
+-char *stupid_stpncpy (char *, const char *, size_t);
++CHAR *SIMPLE_STPNCPY (CHAR *, const CHAR *, size_t);
++CHAR *STUPID_STPNCPY (CHAR *, const CHAR *, size_t);
+ 
+-IMPL (stupid_stpncpy, 0)
+-IMPL (simple_stpncpy, 0)
+-IMPL (stpncpy, 1)
++IMPL (STUPID_STPNCPY, 0)
++IMPL (SIMPLE_STPNCPY, 0)
++IMPL (STPNCPY, 1)
+ 
+-char *
+-simple_stpncpy (char *dst, const char *src, size_t n)
++CHAR *
++SIMPLE_STPNCPY (CHAR *dst, const CHAR *src, size_t n)
+ {
+   while (n--)
+     if ((*dst++ = *src++) == '\0')
+@@ -44,10 +62,10 @@ simple_stpncpy (char *dst, const char *src, size_t n)
+   return dst;
+ }
+ 
+-char *
+-stupid_stpncpy (char *dst, const char *src, size_t n)
++CHAR *
++STUPID_STPNCPY (CHAR *dst, const CHAR *src, size_t n)
+ {
+-  size_t nc = strnlen (src, n);
++  size_t nc = STRNLEN (src, n);
+   size_t i;
+ 
+   for (i = 0; i < nc; ++i)
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 0dff2dc..98b588f 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -3,7 +3,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strnlen strnlen-vx strnlen-c \
+ 		   strcpy strcpy-vx \
+ 		   stpcpy stpcpy-vx stpcpy-c \
+-		   strncpy strncpy-vx
++		   strncpy strncpy-vx \
++		   stpncpy stpncpy-vx stpncpy-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -11,5 +12,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcsnlen wcsnlen-vx wcsnlen-c \
+ 		   wcscpy wcscpy-vx wcscpy-c \
+ 		   wcpcpy wcpcpy-vx wcpcpy-c \
+-		   wcsncpy wcsncpy-vx wcsncpy-c
++		   wcsncpy wcsncpy-vx wcsncpy-c \
++		   wcpncpy wcpncpy-vx wcpncpy-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index 940421d..ca69983 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -94,6 +94,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strncpy);
+   IFUNC_VX_IMPL (wcsncpy);
+ 
++  IFUNC_VX_IMPL (stpncpy);
++  IFUNC_VX_IMPL (wcpncpy);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/stpncpy-c.c b/sysdeps/s390/multiarch/stpncpy-c.c
+new file mode 100644
+index 0000000..40dd8bd
+--- /dev/null
++++ b/sysdeps/s390/multiarch/stpncpy-c.c
+@@ -0,0 +1,28 @@
++/* Default stpncpy implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STPNCPY  __stpncpy_c
++# ifdef SHARED
++#  undef libc_hidden_def
++#  define libc_hidden_def(name)  \
++     __hidden_ver1 (__stpncpy_c, __GI___stpncpy, __stpncpy_c);
++# endif /* SHARED */
++
++# include <string/stpncpy.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/stpncpy-vx.S b/sysdeps/s390/multiarch/stpncpy-vx.S
+new file mode 100644
+index 0000000..36f6b93
+--- /dev/null
++++ b/sysdeps/s390/multiarch/stpncpy-vx.S
+@@ -0,0 +1,200 @@
++/* Vector optimized 32/64 bit S/390 version of stpncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char * stpncpy (char *dest, const char *src, size_t n)
++   Copies at most n characters of string src to dest
++   returning a pointer to its end or dest+n
++   if src is smaller than n.
++
++   Register usage:
++   -%r0 = return value
++   -%r1 = zero byte index
++   -%r2 = curr dst pointer
++   -%r3 = curr src pointer
++   -%r4 = n
++   -%r5 = current_len
++   -%r6 = loaded bytes
++   -%r7 = border, tmp
++*/
++ENTRY(__stpncpy_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgfi	%r4,0
++	ber	%r14		/* Nothing to do, if n == 0.  */
++
++	la	%r0,0(%r4,%r2)	/* Save destination pointer + n for return.  */
++	vlvgp	%v31,%r6,%r7	/* Save registers.  */
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r6,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r6,%r6		/* Convert 32bit to 64bit.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	clgrjle	%r4,%r6,.Lremaining_v16 /* If n <= loaded-bytes
++					   -> process remaining.  */
++
++	/* n > loaded-byte-count */
++	vfenezb	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r1,%r6,.Lfound_v16_store /* Found zero within loaded bytes,
++					     copy and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r7,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r7		/* Compute highest index to 16byte boundary.  */
++
++	/* Zero not found and n > loaded-byte-count.  */
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Now we are 16byte aligned, so we can load a full vreg
++	   without page fault.  */
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lloop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	clgijl	%r4,17,.Lremaining_v16	/* If n <= 16, process remaining
++					   bytes.  */
++.Llt64:
++	lgr	%r7,%r4
++	slgfi	%r7,16		/* border_len = n - 16.  */
++
++	clgrjhe	%r5,%r7,.Lremaining_v16 /* If current_len >= border
++					   then process remaining bytes.  */
++	vfenezbs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Save previous part without zero to dst.  */
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lremaining_v18
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18
++	vl	%v16,16(%r5,%r3)
++	vst	%v18,0(%r5,%r2)
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lremaining_v16
++	vfenezbs %v17,%v16,%v16
++	je	.Lfound_v16
++	vl	%v18,16(%r5,%r3)
++	vst	%v16,0(%r5,%r2)
++	aghi	%r5,16
++
++.Lremaining_v18:
++	vlr	%v16,%v18
++.Lremaining_v16:
++	/* v16 contains the remaining bytes [1...16].
++	   Store remaining bytes and append string-termination.  */
++	vfenezb	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	slgrk	%r7,%r4,%r5	/* Remaining bytes = maxlen - current_len  */
++	aghi	%r7,-1		/* vstl needs highest index.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no index register.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	/* Zero in remaining bytes? -> jump away (zero-index <= max-index).  */
++	clrjle	%r1,%r7,.Lfound_v16_store
++	vstl	%v16,%r7,0(%r2)	/* Store remaining bytes without null
++				   termination!  */
++.Lend:
++	/* Restore saved registers.  */
++	vlgvg	%r6,%v31,0
++	vlgvg	%r7,%v31,1
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++.Lfound_v16_32:
++	aghi	%r5,32
++	j	.Lfound_v16
++.Lfound_v18_48:
++	aghi	%r5,32
++.Lfound_v18_16:
++	aghi	%r5,16
++.Lfound_v18:
++	vlr	%v16,%v18
++.Lfound_v16:
++	/* v16 contains a zero. Store remaining bytes to zero. current_len
++	   has not reached border, thus checking for n is not needed!  */
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no support for index-register.  */
++.Lfound_v16_store:
++	vstl	%v16,%r1,0(%r2)	/* Copy characters including zero.  */
++	/* Fill remaining bytes with zero - remaining count always > 0.  */
++	algr	%r5,%r1		/* Remaining bytes (=%r4) = ...  */
++	slgr	%r4,%r5		/* = maxlen - (currlen + zero_index + 1) */
++	la	%r2,0(%r1,%r2)	/* Pointer to zero. start filling beyond.  */
++	lgr	%r0,%r2		/* Save return-pointer to found zero.  */
++	clgije	%r4,1,.Lend	/* Skip zero-filling, if found zero is last
++				   possible character.
++				   (1 is substracted from r4 below!).  */
++	aghi	%r4,-2		/* mvc with exrl needs count - 1.
++				   (additional -1, see remaining bytes above) */
++	srlg	%r6,%r4,8	/* Split into 256 byte blocks.  */
++	ltgr	%r6,%r6
++	je	.Lzero_lt256
++.Lzero_loop256:
++	mvc	1(256,%r2),0(%r2) /* Fill 256 zeros at once.  */
++	la	%r2,256(%r2)
++	brctg	%r6,.Lzero_loop256 /* Loop until all blocks are processed.  */
++.Lzero_lt256:
++	exrl	%r4,.Lmvc_lt256
++	j	.Lend
++.Lmvc_lt256:
++	mvc	1(1,%r2),0(%r2)
++
++.Lloop64:
++	vl	%v16,0(%r5,%r3)
++	vfenezbs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Save previous part without zero to dst.  */
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezbs %v17,%v16,%v16
++	je	.Lfound_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezbs %v17,%v18,%v18
++	je	.Lfound_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lloop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	j	.Llt64
++END(__stpncpy_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/stpncpy.c b/sysdeps/s390/multiarch/stpncpy.c
+new file mode 100644
+index 0000000..894a33b
+--- /dev/null
++++ b/sysdeps/s390/multiarch/stpncpy.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of stpncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__stpncpy)
++weak_alias (__stpncpy, stpncpy)
++
++#else
++# include <string/stpncpy.c>
++#endif  /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcpncpy-c.c b/sysdeps/s390/multiarch/wcpncpy-c.c
+new file mode 100644
+index 0000000..e49b2ef
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcpncpy-c.c
+@@ -0,0 +1,25 @@
++/* Default wcsncpy implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCPNCPY  __wcpncpy_c
++
++# include <wchar.h>
++extern __typeof (__wcpncpy) __wcpncpy_c;
++# include <wcsmbs/wcpncpy.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcpncpy-vx.S b/sysdeps/s390/multiarch/wcpncpy-vx.S
+new file mode 100644
+index 0000000..335ea58
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcpncpy-vx.S
+@@ -0,0 +1,222 @@
++/* Vector optimized 32/64 bit S/390 version of wcpncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t * wcpncpy (wchar_t *dest, const wchar_t *src, size_t n)
++   Copies at most n characters of string src to dest
++   returning a pointer to its end or dest+n
++   if src is smaller than n.
++
++   Register usage:
++   -%r0 = return value
++   -%r1 = zero byte index
++   -%r2 = curr dst pointer
++   -%r3 = curr src pointer
++   -%r4 = n
++   -%r5 = current_len
++   -%r6 = loaded bytes
++   -%r7 = border, tmp
++*/
++ENTRY(__wcpncpy_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgfi	%r4,0
++	ber	%r14		/* Nothing to do, if n == 0.  */
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++
++	tmll	%r3,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	vlvgp	%v31,%r6,%r7	/* Save registers.  */
++	lghi	%r5,0		/* current_len = 0.  */
++
++	lcbb	%r6,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r6,%r6		/* Convert 32bit to 64bit.  */
++
++	/* Check range of maxlen and convert to byte-count.  */
++# ifdef __s390x__
++	tmhh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	lghi	%r1,-4		/* Max byte-count is 18446744073709551612.  */
++# else
++	tmlh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	llilf	%r1,4294967292	/* Max byte-count is 4294967292.  */
++# endif /* !__s390x__ */
++	sllg	%r4,%r4,2	/* Convert character-count to byte-count.  */
++	locgrne	%r4,%r1		/* Use max byte-count, if bit 0/1 was one.  */
++
++	la	%r0,0(%r4,%r2)	/* Save destination pointer + n for return.  */
++
++	clgrjle	%r4,%r6,.Lremaining_v16 /* If n <= loaded-bytes
++					   -> process remaining.  */
++
++	/* n > loaded-byte-count */
++	vfenezf	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	clrjl	%r1,%r6,.Lfound_v16_store /* Found zero within loaded bytes,
++					     copy and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r7,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r7		/* Compute highest index to 16byte boundary.  */
++
++	/* Zero not found and n > loaded-byte-count.  */
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Now we are 16byte aligned, so we can load a full vreg
++	   without page fault.  */
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lloop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	clgijl	%r4,17,.Lremaining_v16	/* If n <=16,
++					   process remaining bytes.  */
++.Llt64:
++	lgr	%r7,%r4
++	slgfi	%r7,16		/* border_len = n - 16.  */
++
++	clgrjhe	%r5,%r7,.Lremaining_v16 /* If current_len >= border
++					   then process remaining bytes.  */
++	vfenezfs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lremaining_v18
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18
++	vl	%v16,16(%r5,%r3)
++	vst	%v18,0(%r5,%r2)
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lremaining_v16
++	vfenezfs %v17,%v16,%v16
++	je	.Lfound_v16
++	vl	%v18,16(%r5,%r3)
++	vst	%v16,0(%r5,%r2)
++	aghi	%r5,16
++
++.Lremaining_v18:
++	vlr	%v16,%v18
++.Lremaining_v16:
++	/* v16 contains the remaining bytes [1...16].
++	   Store remaining bytes and append string-termination.  */
++	vfenezf	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	slgrk	%r7,%r4,%r5	/* Remaining bytes = maxlen - current_len  */
++	aghi	%r7,-1		/* vstl needs highest index.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no index register.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	/* Zero in remaining bytes? -> jump away (zero-index <= max-index).  */
++	clrjle	%r1,%r7,.Lfound_v16_store
++	vstl	%v16,%r7,0(%r2)	/* Store remaining bytes without null
++				   termination!  */
++.Lend:
++	/* Restore saved registers.  */
++	vlgvg	%r6,%v31,0
++	vlgvg	%r7,%v31,1
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++.Lfound_v16_32:
++	aghi	%r5,32
++	j	.Lfound_v16
++.Lfound_v18_48:
++	aghi	%r5,32
++.Lfound_v18_16:
++	aghi	%r5,16
++.Lfound_v18:
++	vlr	%v16,%v18
++.Lfound_v16:
++	/* v16 contains a zero. Store remaining bytes to zero. current_len
++	   has not reached border, thus checking for n is not needed!  */
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no support for index-register.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++.Lfound_v16_store:
++	vstl	%v16,%r1,0(%r2)	/* Copy characters including zero.  */
++	/* Fill remaining bytes with zero - remaining byte count always > 0.  */
++	algr	%r5,%r1		/* Remaining bytes (=%r4) = ...  */
++	slgr	%r4,%r5		/* = n - (currlen + zero_index + 1) */
++	la	%r2,0(%r1,%r2)	/* Pointer to zero. start filling beyond.  */
++	lay	%r0,-3(%r2)	/* Save return-pointer to found zero.  */
++	clgije	%r4,1,.Lend	/* Skip zero-filling, if found-zero is last
++				   possible character.
++				   (1 is substracted from r4 below!).  */
++	aghi	%r4,-2		/* mvc with exrl needs count - 1.
++				   (additional -1, see remaining bytes above) */
++	srlg	%r6,%r4,8	/* Split into 256 byte blocks.  */
++	ltgr	%r6,%r6
++	je	.Lzero_lt256
++.Lzero_loop256:
++	mvc	1(256,%r2),0(%r2) /* Fill 256 zeros at once.  */
++	la	%r2,256(%r2)
++	brctg	%r6,.Lzero_loop256 /* Loop until all blocks are processed.  */
++.Lzero_lt256:
++	exrl	%r4,.Lmvc_lt256
++	j	.Lend
++.Lmvc_lt256:
++	mvc	1(1,%r2),0(%r2)
++
++	/* Find zero in 16byte aligned loop.  */
++.Lloop64:
++	vl	%v16,0(%r5,%r3)
++	vfenezfs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lfound_v16	/* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezfs %v17,%v16,%v16
++	je	.Lfound_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezfs %v17,%v18,%v18
++	je	.Lfound_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lloop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	j	.Llt64
++
++.Lfallback:
++	jg	__wcpncpy_c
++END(__wcpncpy_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcpncpy.c b/sysdeps/s390/multiarch/wcpncpy.c
+new file mode 100644
+index 0000000..3db7b8b
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcpncpy.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of wcpncpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__wcpncpy)
++weak_alias (__wcpncpy, wcpncpy)
++
++#else
++# include <wcsmbs/wcpncpy.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index c26ab0c..89b5b3b 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -42,7 +42,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    mbrtoc16 c16rtomb
+ 
+ strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+-		wcpcpy wcsncpy
++		wcpcpy wcsncpy wcpncpy
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcpncpy-ifunc.c b/wcsmbs/test-wcpncpy-ifunc.c
+new file mode 100644
+index 0000000..0685487
+--- /dev/null
++++ b/wcsmbs/test-wcpncpy-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcpncpy function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcpncpy.c"
+diff --git a/wcsmbs/test-wcpncpy.c b/wcsmbs/test-wcpncpy.c
+new file mode 100644
+index 0000000..de302b4
+--- /dev/null
++++ b/wcsmbs/test-wcpncpy.c
+@@ -0,0 +1,20 @@
++/* Test wcpncpy functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-stpncpy.c"
+diff --git a/wcsmbs/wcpncpy.c b/wcsmbs/wcpncpy.c
+index 2fab857..6337a87 100644
+--- a/wcsmbs/wcpncpy.c
++++ b/wcsmbs/wcpncpy.c
+@@ -18,6 +18,9 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WCPNCPY
++# define __wcpncpy WCPNCPY
++#endif
+ 
+ /* Copy no more than N wide-characters of SRC to DEST, returning the
+    address of the last character written into DEST.  */
+@@ -82,4 +85,6 @@ __wcpncpy (dest, src, n)
+   return dest - 1;
+ }
+ 
++#ifndef WCPNCPY
+ weak_alias (__wcpncpy, wcpncpy)
++#endif
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-16.patch b/SOURCES/glibc-rh1268008-16.patch
new file mode 100644
index 0000000..350acf4
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-16.patch
@@ -0,0 +1,1101 @@
+From 43b14a5489db870aeeda0766bde25e29747f6864 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 11:13:14 +0200
+Subject: [PATCH 16/30] S390: Optimize strcat and wcscat.
+
+upstream-commit-id: d626a24f235dbd4c446b241211a9a264a1eedb9e
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00155.html
+
+This patch provides optimized versions of strcat and wcscat with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strcat-c.c: New File.
+	* sysdeps/s390/multiarch/strcat-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strcat.c: Likewise.
+	* sysdeps/s390/multiarch/wcscat-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcscat-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcscat.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strcat and
+	wcscat functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strcat, wcscat.
+	* string/strcat.c (STRCAT): Define and use macro.
+	* wcsmbs/wcscat.c: Use WCSCAT if defined.
+	* string/test-strcat.c: Add wcscat support.
+	* wcsmbs/test-wcscat.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcscat.
+	* benchtests/bench-strcat.c: Add wcscat support.
+	* benchtests/bench-wcscat.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcscat.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-strcat.c                |  90 ++++++++++------
+ benchtests/bench-wcscat.c                |  20 ++++
+ string/strcat.c                          |   8 +-
+ string/test-strcat.c                     | 124 ++++++++++++++--------
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strcat-c.c        |  28 +++++
+ sysdeps/s390/multiarch/strcat-vx.S       | 161 ++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strcat.c          |  27 +++++
+ sysdeps/s390/multiarch/wcscat-c.c        |  25 +++++
+ sysdeps/s390/multiarch/wcscat-vx.S       | 175 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcscat.c          |  28 +++++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wcscat-ifunc.c               |  20 ++++
+ wcsmbs/test-wcscat.c                     |  20 ++++
+ wcsmbs/wcscat.c                          |   5 +
+ 17 files changed, 660 insertions(+), 84 deletions(-)
+ create mode 100644 benchtests/bench-wcscat.c
+ create mode 100644 sysdeps/s390/multiarch/strcat-c.c
+ create mode 100644 sysdeps/s390/multiarch/strcat-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strcat.c
+ create mode 100644 sysdeps/s390/multiarch/wcscat-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcscat-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcscat.c
+ create mode 100644 wcsmbs/test-wcscat-ifunc.c
+ create mode 100644 wcsmbs/test-wcscat.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index dfab95f..91db23c 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -38,7 +38,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+-wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy
++wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-strcat.c b/benchtests/bench-strcat.c
+index 6602009..1abf6d3 100644
+--- a/benchtests/bench-strcat.c
++++ b/benchtests/bench-strcat.c
+@@ -1,5 +1,5 @@
+ /* Measure strcat functions.
+-   Copyright (C) 2013 Free Software Foundation, Inc.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -17,19 +17,45 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strcat"
++#ifndef WIDE
++# define TEST_NAME "strcat"
++#else
++# define TEST_NAME "wcscat"
++#endif /* WIDE */
+ #include "bench-string.h"
+ 
+-typedef char *(*proto_t) (char *, const char *);
+-char *simple_strcat (char *, const char *);
+-
+-IMPL (simple_strcat, 0)
+-IMPL (strcat, 1)
+-
+-char *
+-simple_strcat (char *dst, const char *src)
++#ifndef WIDE
++# define STRCAT strcat
++# define CHAR char
++# define sfmt "s"
++# define SIMPLE_STRCAT simple_strcat
++# define STRLEN strlen
++# define STRCMP strcmp
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define STRCAT wcscat
++# define CHAR wchar_t
++# define sfmt "ls"
++# define SIMPLE_STRCAT simple_wcscat
++# define STRLEN wcslen
++# define STRCMP wcscmp
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++#endif /* WIDE */
++
++
++typedef CHAR *(*proto_t) (CHAR *, const CHAR *);
++CHAR *SIMPLE_STRCAT (CHAR *, const CHAR *);
++
++IMPL (SIMPLE_STRCAT, 0)
++IMPL (STRCAT, 1)
++
++CHAR *
++SIMPLE_STRCAT (CHAR *dst, const CHAR *src)
+ {
+-  char *ret = dst;
++  CHAR *ret = dst;
+   while (*dst++ != '\0');
+   --dst;
+   while ((*dst++ = *src++) != '\0');
+@@ -37,9 +63,9 @@ simple_strcat (char *dst, const char *src)
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, char *dst, const char *src)
++do_one_test (impl_t *impl, CHAR *dst, const CHAR *src)
+ {
+-  size_t k = strlen (dst), i, iters = INNER_LOOP_ITERS;
++  size_t k = STRLEN (dst), i, iters = INNER_LOOP_ITERS;
+   timing_t start, stop, cur;
+ 
+   if (CALL (impl, dst, src) != dst)
+@@ -50,9 +76,9 @@ do_one_test (impl_t *impl, char *dst, const char *src)
+       return;
+     }
+ 
+-  if (strcmp (dst + k, src) != 0)
++  if (STRCMP (dst + k, src) != 0)
+     {
+-      error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"",
++      error (0, 0, "Wrong result in function %s dst \"%" sfmt "\" src \"%" sfmt "\"",
+ 	     impl->name, dst, src);
+       ret = 1;
+       return;
+@@ -75,18 +101,18 @@ static void
+ do_test (size_t align1, size_t align2, size_t len1, size_t len2, int max_char)
+ {
+   size_t i;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+   align1 &= 7;
+-  if (align1 + len1 >= page_size)
++  if ((align1 + len1) * sizeof (CHAR) >= page_size)
+     return;
+ 
+   align2 &= 7;
+-  if (align2 + len1 + len2 >= page_size)
++  if ((align2 + len1 + len2) * sizeof (CHAR) >= page_size)
+     return;
+ 
+-  s1 = (char *) (buf1 + align1);
+-  s2 = (char *) (buf2 + align2);
++  s1 = (CHAR *) (buf1) + align1;
++  s2 = (CHAR *) (buf2) + align2;
+ 
+   for (i = 0; i < len1; ++i)
+     s1[i] = 32 + 23 * i % (max_char - 32);
+@@ -120,26 +146,26 @@ test_main (void)
+ 
+   for (i = 0; i < 16; ++i)
+     {
+-      do_test (0, 0, i, i, 127);
+-      do_test (0, 0, i, i, 255);
+-      do_test (0, i, i, i, 127);
+-      do_test (i, 0, i, i, 255);
++      do_test (0, 0, i, i, SMALL_CHAR);
++      do_test (0, 0, i, i, BIG_CHAR);
++      do_test (0, i, i, i, SMALL_CHAR);
++      do_test (i, 0, i, i, BIG_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (0, 0, 8 << i, 8 << i, 127);
+-      do_test (8 - i, 2 * i, 8 << i, 8 << i, 127);
+-      do_test (0, 0, 8 << i, 2 << i, 127);
+-      do_test (8 - i, 2 * i, 8 << i, 2 << i, 127);
++      do_test (0, 0, 8 << i, 8 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 8 << i, 8 << i, SMALL_CHAR);
++      do_test (0, 0, 8 << i, 2 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 8 << i, 2 << i, SMALL_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (i, 2 * i, 8 << i, 1, 127);
+-      do_test (2 * i, i, 8 << i, 1, 255);
+-      do_test (i, i, 8 << i, 10, 127);
+-      do_test (i, i, 8 << i, 10, 255);
++      do_test (i, 2 * i, 8 << i, 1, SMALL_CHAR);
++      do_test (2 * i, i, 8 << i, 1, BIG_CHAR);
++      do_test (i, i, 8 << i, 10, SMALL_CHAR);
++      do_test (i, i, 8 << i, 10, BIG_CHAR);
+     }
+ 
+   return ret;
+diff --git a/benchtests/bench-wcscat.c b/benchtests/bench-wcscat.c
+new file mode 100644
+index 0000000..cd0dbc0
+--- /dev/null
++++ b/benchtests/bench-wcscat.c
+@@ -0,0 +1,20 @@
++/* Measure wcscat functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strcat.c"
+diff --git a/string/strcat.c b/string/strcat.c
+index f9e4bc6..017bb41 100644
+--- a/string/strcat.c
++++ b/string/strcat.c
+@@ -20,11 +20,13 @@
+ 
+ #undef strcat
+ 
++#ifndef STRCAT
++# define STRCAT strcat
++#endif
++
+ /* Append SRC on the end of DEST.  */
+ char *
+-strcat (dest, src)
+-     char *dest;
+-     const char *src;
++STRCAT (char *dest, const char *src)
+ {
+   char *s1 = dest;
+   const char *s2 = src;
+diff --git a/string/test-strcat.c b/string/test-strcat.c
+index 2dc189a..a822733 100644
+--- a/string/test-strcat.c
++++ b/string/test-strcat.c
+@@ -18,19 +18,52 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strcat"
++#ifndef WIDE
++# define TEST_NAME "strcat"
++#else
++# define TEST_NAME "wcscat"
++#endif /* WIDE */
+ #include "test-string.h"
+ 
+-typedef char *(*proto_t) (char *, const char *);
+-char *simple_strcat (char *, const char *);
++#ifndef WIDE
++# define STRCAT strcat
++# define CHAR char
++# define UCHAR unsigned char
++# define sfmt "s"
++# define SIMPLE_STRCAT simple_strcat
++# define STRLEN strlen
++# define STRCMP strcmp
++# define MEMSET memset
++# define MEMCPY memcpy
++# define MEMCMP memcmp
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define STRCAT wcscat
++# define CHAR wchar_t
++# define UCHAR wchar_t
++# define sfmt "ls"
++# define SIMPLE_STRCAT simple_wcscat
++# define STRLEN wcslen
++# define STRCMP wcscmp
++# define MEMSET wmemset
++# define MEMCPY wmemcpy
++# define MEMCMP wmemcmp
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++#endif /* WIDE */
+ 
+-IMPL (simple_strcat, 0)
+-IMPL (strcat, 1)
++typedef CHAR *(*proto_t) (CHAR *, const CHAR *);
++CHAR *SIMPLE_STRCAT (CHAR *, const CHAR *);
+ 
+-char *
+-simple_strcat (char *dst, const char *src)
++IMPL (SIMPLE_STRCAT, 0)
++IMPL (STRCAT, 1)
++
++CHAR *
++SIMPLE_STRCAT (CHAR *dst, const CHAR *src)
+ {
+-  char *ret = dst;
++  CHAR *ret = dst;
+   while (*dst++ != '\0');
+   --dst;
+   while ((*dst++ = *src++) != '\0');
+@@ -38,9 +71,9 @@ simple_strcat (char *dst, const char *src)
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, char *dst, const char *src)
++do_one_test (impl_t *impl, CHAR *dst, const char *src)
+ {
+-  size_t k = strlen (dst);
++  size_t k = STRLEN (dst);
+   if (CALL (impl, dst, src) != dst)
+     {
+       error (0, 0, "Wrong result in function %s %p %p", impl->name,
+@@ -49,9 +82,9 @@ do_one_test (impl_t *impl, char *dst, const char *src)
+       return;
+     }
+ 
+-  if (strcmp (dst + k, src) != 0)
++  if (STRCMP (dst + k, src) != 0)
+     {
+-      error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"",
++      error (0, 0, "Wrong result in function %s dst \"%" sfmt "\" src \"%" sfmt "\"",
+ 	     impl->name, dst, src);
+       ret = 1;
+       return;
+@@ -62,18 +95,18 @@ static void
+ do_test (size_t align1, size_t align2, size_t len1, size_t len2, int max_char)
+ {
+   size_t i;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+   align1 &= 7;
+-  if (align1 + len1 >= page_size)
++  if ((align1 + len1) * sizeof (CHAR) >= page_size)
+     return;
+ 
+   align2 &= 7;
+-  if (align2 + len1 + len2 >= page_size)
++  if ((align2 + len1 + len2) * sizeof (CHAR) >= page_size)
+     return;
+ 
+-  s1 = (char *) (buf1 + align1);
+-  s2 = (char *) (buf2 + align2);
++  s1 = (CHAR *) (buf1) + align1;
++  s2 = (CHAR *) (buf2) + align2;
+ 
+   for (i = 0; i < len1; ++i)
+     s1[i] = 32 + 23 * i % (max_char - 32);
+@@ -93,9 +126,10 @@ static void
+ do_random_tests (void)
+ {
+   size_t i, j, n, align1, align2, len1, len2;
+-  unsigned char *p1 = buf1 + page_size - 512;
+-  unsigned char *p2 = buf2 + page_size - 512;
+-  unsigned char *res;
++  UCHAR *p1 = (UCHAR *) (buf1 + page_size) - 512;
++  UCHAR *p2 = (UCHAR *) (buf2 + page_size) - 512;
++  UCHAR *p3 = (UCHAR *) buf1;
++  UCHAR *res;
+ 
+   for (n = 0; n < ITERATIONS; n++)
+     {
+@@ -132,26 +166,26 @@ do_random_tests (void)
+ 	    p1[i] = 0;
+ 	  else
+ 	    {
+-	      p1[i] = random () & 255;
++	      p1[i] = random () & BIG_CHAR;
+ 	      if (i >= align1 && i < len1 + align1 && !p1[i])
+-		p1[i] = (random () & 127) + 3;
++		p1[i] = (random () & SMALL_CHAR) + 3;
+ 	    }
+ 	}
+       for (i = 0; i < len2; i++)
+ 	{
+-	  buf1[i] = random () & 255;
+-	  if (!buf1[i])
+-	    buf1[i] = (random () & 127) + 3;
++	  p3[i] = random () & BIG_CHAR;
++	  if (!p3[i])
++	    p3[i] = (random () & SMALL_CHAR) + 3;
+ 	}
+-      buf1[len2] = 0;
++      p3[len2] = 0;
+ 
+       FOR_EACH_IMPL (impl, 1)
+ 	{
+-	  memset (p2 - 64, '\1', align2 + 64);
+-	  memset (p2 + align2 + len2 + 1, '\1', 512 - align2 - len2 - 1);
+-	  memcpy (p2 + align2, buf1, len2 + 1);
+-	  res = (unsigned char *) CALL (impl, (char *) (p2 + align2),
+-					(char *) (p1 + align1));
++	  MEMSET (p2 - 64, '\1', align2 + 64);
++	  MEMSET (p2 + align2 + len2 + 1, '\1', 512 - align2 - len2 - 1);
++	  MEMCPY (p2 + align2, p3, len2 + 1);
++	  res = (UCHAR *) CALL (impl, (CHAR *) (p2 + align2),
++				(CHAR *) (p1 + align1));
+ 	  if (res != p2 + align2)
+ 	    {
+ 	      error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd %zd) %p != %p",
+@@ -169,7 +203,7 @@ do_random_tests (void)
+ 		  break;
+ 		}
+ 	    }
+-	  if (memcmp (p2 + align2, buf1, len2))
++	  if (MEMCMP (p2 + align2, p3, len2))
+ 	    {
+ 	      error (0, 0, "Iteration %zd - garbage in string before, %s (%zd, %zd, %zd, %zd)",
+ 		     n, impl->name, align1, align2, len1, len2);
+@@ -185,7 +219,7 @@ do_random_tests (void)
+ 		  break;
+ 		}
+ 	    }
+-	  if (memcmp (p1 + align1, p2 + align2 + len2, len1 + 1))
++	  if (MEMCMP (p1 + align1, p2 + align2 + len2, len1 + 1))
+ 	    {
+ 	      error (0, 0, "Iteration %zd - different strings, %s (%zd, %zd, %zd, %zd)",
+ 		     n, impl->name, align1, align2, len1, len2);
+@@ -209,26 +243,26 @@ test_main (void)
+ 
+   for (i = 0; i < 16; ++i)
+     {
+-      do_test (0, 0, i, i, 127);
+-      do_test (0, 0, i, i, 255);
+-      do_test (0, i, i, i, 127);
+-      do_test (i, 0, i, i, 255);
++      do_test (0, 0, i, i, SMALL_CHAR);
++      do_test (0, 0, i, i, BIG_CHAR);
++      do_test (0, i, i, i, SMALL_CHAR);
++      do_test (i, 0, i, i, BIG_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (0, 0, 8 << i, 8 << i, 127);
+-      do_test (8 - i, 2 * i, 8 << i, 8 << i, 127);
+-      do_test (0, 0, 8 << i, 2 << i, 127);
+-      do_test (8 - i, 2 * i, 8 << i, 2 << i, 127);
++      do_test (0, 0, 8 << i, 8 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 8 << i, 8 << i, SMALL_CHAR);
++      do_test (0, 0, 8 << i, 2 << i, SMALL_CHAR);
++      do_test (8 - i, 2 * i, 8 << i, 2 << i, SMALL_CHAR);
+     }
+ 
+   for (i = 1; i < 8; ++i)
+     {
+-      do_test (i, 2 * i, 8 << i, 1, 127);
+-      do_test (2 * i, i, 8 << i, 1, 255);
+-      do_test (i, i, 8 << i, 10, 127);
+-      do_test (i, i, 8 << i, 10, 255);
++      do_test (i, 2 * i, 8 << i, 1, SMALL_CHAR);
++      do_test (2 * i, i, 8 << i, 1, BIG_CHAR);
++      do_test (i, i, 8 << i, 10, SMALL_CHAR);
++      do_test (i, i, 8 << i, 10, BIG_CHAR);
+     }
+ 
+   do_random_tests ();
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 98b588f..6283999 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -4,7 +4,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strcpy strcpy-vx \
+ 		   stpcpy stpcpy-vx stpcpy-c \
+ 		   strncpy strncpy-vx \
+-		   stpncpy stpncpy-vx stpncpy-c
++		   stpncpy stpncpy-vx stpncpy-c \
++		   strcat strcat-vx strcat-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -13,5 +14,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcscpy wcscpy-vx wcscpy-c \
+ 		   wcpcpy wcpcpy-vx wcpcpy-c \
+ 		   wcsncpy wcsncpy-vx wcsncpy-c \
+-		   wcpncpy wcpncpy-vx wcpncpy-c
++		   wcpncpy wcpncpy-vx wcpncpy-c \
++		   wcscat wcscat-vx wcscat-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index ca69983..ccf4dea 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -97,6 +97,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (stpncpy);
+   IFUNC_VX_IMPL (wcpncpy);
+ 
++  IFUNC_VX_IMPL (strcat);
++  IFUNC_VX_IMPL (wcscat);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strcat-c.c b/sysdeps/s390/multiarch/strcat-c.c
+new file mode 100644
+index 0000000..da4fad8
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcat-c.c
+@@ -0,0 +1,28 @@
++/* Default strcat implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRCAT  __strcat_c
++# ifdef SHARED
++#  undef libc_hidden_builtin_def
++#  define libc_hidden_builtin_def(name)				\
++     __hidden_ver1 (__strcat_c, __GI_strcat, __strcat_c);
++# endif /* SHARED */
++
++# include <string/strcat.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strcat-vx.S b/sysdeps/s390/multiarch/strcat-vx.S
+new file mode 100644
+index 0000000..3915097
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcat-vx.S
+@@ -0,0 +1,161 @@
++/* Vector optimized 32/64 bit S/390 version of strcat.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char * strcat (const char *dest, const char *src)
++   Concatenate two strings.
++
++   Register usage:
++   -r0=saved dest pointer for return
++   -r1=tmp
++   -r2=dest
++   -r3=src
++   -r4=tmp
++   -r5=current_len
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++*/
++ENTRY(__strcat_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	lgr	%r0,%r2		/* Save destination pointer for return.  */
++
++	/* STRLEN
++	   r1 = loaded bytes (tmp)
++	   r4 = zero byte index (tmp)
++	   r2 = dst
++	*/
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfenezb	%v16,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v16,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Llen_end /* Found zero within loaded bytes, end.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r1,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r1		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Llen_loop:
++	vl	%v16,0(%r5,%r2)	/* Load s.  */
++	vfenezbs %v16,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Llen_found	/* Jump away if zero was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Llen_found16
++	vl	%v16,32(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Llen_found32
++	vl	%v16,48(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Llen_found48
++
++	aghi	%r5,64
++	j	.Llen_loop	/* No zero -> loop.  */
++
++.Llen_found48:
++	aghi	%r5,16
++.Llen_found32:
++	aghi	%r5,16
++.Llen_found16:
++	aghi	%r5,16
++.Llen_found:
++	vlgvb	%r4,%v16,7	/* Load byte index of zero.  */
++	algr	%r5,%r4
++
++.Llen_end:
++	/* STRCPY
++	   %r1 = loaded bytes (tmp)
++	   %r4 = zero byte index (tmp)
++	   %r3 = curr src pointer
++	   %r2 = curr dst pointer
++	 */
++	la	%r2,0(%r5,%r2)	/* strcpy at end of dst-string.   */
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfenezb	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Lcpy_found_align /* If found zero within loaded bytes,
++					     copy bytes before and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r4		/* Compute highest index to 16byte boundary.  */
++
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Lcpy_loop:
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	vfenezbs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lcpy_found_v16_0 /* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3)/* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	vfenezbs %v17,%v18,%v18
++	je	.Lcpy_found_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezbs %v17,%v16,%v16
++	je	.Lcpy_found_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezbs %v17,%v18,%v18
++	je	.Lcpy_found_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	j	.Lcpy_loop	/* No zero -> loop.  */
++
++.Lcpy_found_v16_32:
++	aghi	%r5,32
++.Lcpy_found_v16_0:
++	la	%r4,0(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	vstl	%v16,%r1,0(%r4)	/* Copy characters including zero.  */
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++.Lcpy_found_v18_48:
++	aghi	%r5,32
++.Lcpy_found_v18_16:
++	la	%r4,16(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	vstl	%v18,%r1,0(%r4)	/* Copy characters including zero.  */
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++.Lcpy_found_align:
++	vstl	%v16,%r5,0(%r2)	/* Copy characters including zero.  */
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++END(__strcat_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strcat.c b/sysdeps/s390/multiarch/strcat.c
+new file mode 100644
+index 0000000..8b5c47e
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcat.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of strcat.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strcat, strcat)
++
++#else
++# include <string/strcat.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcscat-c.c b/sysdeps/s390/multiarch/wcscat-c.c
+new file mode 100644
+index 0000000..49fb64b
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscat-c.c
+@@ -0,0 +1,25 @@
++/* Default wcscat implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSCAT  __wcscat_c
++
++# include <wchar.h>
++extern __typeof (__wcscat) __wcscat_c;
++# include <wcsmbs/wcscat.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcscat-vx.S b/sysdeps/s390/multiarch/wcscat-vx.S
+new file mode 100644
+index 0000000..7ee185f
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscat-vx.S
+@@ -0,0 +1,175 @@
++/* Vector optimized 32/64 bit S/390 version of wcscat.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t * wcscat (wchar_t *dest, const wchar_t *src)
++   Concatenate two strings.
++
++   Register usage:
++   -r0=saved dest pointer for return
++   -r1=tmp
++   -r2=dest
++   -r3=src
++   -r4=tmp
++   -r5=current_len
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++*/
++ENTRY(__wcscat_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	/* __wcslen_c can handle non 4byte aligned pointers,
++	   but __wcscpy_c not. Thus if either src or dest is
++	   not 4byte aligned, use __wcscat_c.  */
++	tmll	%r2,3		/* Test if s is 4-byte aligned?   */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++	tmll	%r3,3		/* Test if src is 4-byte aligned?   */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	lgr	%r0,%r2		/* Save destination pointer for return.  */
++
++	/* WCSLEN
++	   r1 = loaded bytes (tmp)
++	   r4 = zero byte index (tmp)
++	   r2 = dst
++	*/
++
++	vfenezf	%v16,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v16,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Llen_end /* Found zero within loaded bytes, end.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r1,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r1		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Llen_loop:
++	vl	%v16,0(%r5,%r2)	/* Load s.  */
++	vfenezfs %v16,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Llen_found	/* Jump away if zero was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Llen_found16
++	vl	%v16,32(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Llen_found32
++	vl	%v16,48(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Llen_found48
++
++	aghi	%r5,64
++	j	.Llen_loop	/* No zero -> loop.  */
++
++.Llen_found48:
++	aghi	%r5,16
++.Llen_found32:
++	aghi	%r5,16
++.Llen_found16:
++	aghi	%r5,16
++.Llen_found:
++	vlgvb	%r4,%v16,7	/* Load byte index of zero.  */
++	algr	%r5,%r4
++
++.Llen_end:
++	/* WCSCPY
++	   %r1 = loaded bytes (tmp)
++	   %r4 = zero byte index (tmp)
++	   %r3 = curr src pointer
++	   %r2 = curr dst pointer
++	 */
++	la	%r2,0(%r5,%r2)	/* strcpy at end of dst-string.   */
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfenezf	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Lcpy_found_align /* If found zero within loaded bytes,
++					     copy bytes before and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r4		/* Compute highest index to 16byte boundary.  */
++
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Lcpy_loop:
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	vfenezfs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lcpy_found_v16_0 /* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Save previous part without zero to dst.  */
++	vfenezfs %v17,%v18,%v18
++	je	.Lcpy_found_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezfs %v17,%v16,%v16
++	je	.Lcpy_found_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezfs %v17,%v18,%v18
++	je	.Lcpy_found_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	j	.Lcpy_loop	/* No zero -> loop.  */
++
++.Lcpy_found_v16_32:
++	aghi	%r5,32
++.Lcpy_found_v16_0:
++	la	%r4,0(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	vstl	%v16,%r1,0(%r4)	/* Copy characters including zero.  */
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++.Lcpy_found_v18_48:
++	aghi	%r5,32
++.Lcpy_found_v18_16:
++	la	%r4,16(%r5,%r2)
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	vstl	%v18,%r1,0(%r4)	/* Copy characters including zero.  */
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++.Lcpy_found_align:
++	aghi	%r5,3		/* Also copy remaining bytes of found zero.  */
++	vstl	%v16,%r5,0(%r2)	/* Copy characters including zero.  */
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++.Lfallback:
++	jg	__wcscat_c
++END(__wcscat_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcscat.c b/sysdeps/s390/multiarch/wcscat.c
+new file mode 100644
+index 0000000..c6fdaa7
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscat.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of wcscat.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__wcscat)
++weak_alias (__wcscat, wcscat)
++
++#else
++# include <wcsmbs/wcscat.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index 89b5b3b..9bfc78c 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -42,7 +42,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    mbrtoc16 c16rtomb
+ 
+ strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+-		wcpcpy wcsncpy wcpncpy
++		wcpcpy wcsncpy wcpncpy wcscat
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcscat-ifunc.c b/wcsmbs/test-wcscat-ifunc.c
+new file mode 100644
+index 0000000..53305c6
+--- /dev/null
++++ b/wcsmbs/test-wcscat-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcscat function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcscat.c"
+diff --git a/wcsmbs/test-wcscat.c b/wcsmbs/test-wcscat.c
+new file mode 100644
+index 0000000..9bab33b
+--- /dev/null
++++ b/wcsmbs/test-wcscat.c
+@@ -0,0 +1,20 @@
++/* Test wcscat functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-strcat.c"
+diff --git a/wcsmbs/wcscat.c b/wcsmbs/wcscat.c
+index 0d34d76..4eb2d93 100644
+--- a/wcsmbs/wcscat.c
++++ b/wcsmbs/wcscat.c
+@@ -18,6 +18,9 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WCSCAT
++# define __wcscat WCSCAT
++#endif
+ 
+ /* Append SRC on the end of DEST.  */
+ wchar_t *
+@@ -47,4 +50,6 @@ __wcscat (dest, src)
+ 
+   return dest;
+ }
++#ifndef WCSCAT
+ weak_alias (__wcscat, wcscat)
++#endif
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-17.patch b/SOURCES/glibc-rh1268008-17.patch
new file mode 100644
index 0000000..6379a13
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-17.patch
@@ -0,0 +1,1257 @@
+From 712d46fa89e1341b3bffc27ca2ab5d892e4b14e1 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 11:16:05 +0200
+Subject: [PATCH 17/30] S390: Optimize strncat wcsncat.
+
+upstream-commit-id: e1fe91180e4e29549f35f8ecd705b0bb4f208606
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00162.html
+
+This patch provides optimized versions of strncat and wcsncat with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strncat-c.c: New File.
+	* sysdeps/s390/multiarch/strncat-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strncat.c: Likewise.
+	* sysdeps/s390/multiarch/wcsncat-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcsncat-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcsncat.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strncat and
+	wcsncat functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strncat, wcsncat.
+	* wcsmbs/wcsncat.c (WCSNCAT): Define and use macro.
+	* string/test-strncat.c: Add wcsncat support.
+	* wcsmbs/test-wcsncat.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcsncat.
+	* benchtests/bench-strncat.c: Add wcsncat support.
+	* benchtests/bench-wcsncat.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcsncat.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-strncat.c               |  99 +++++++-----
+ benchtests/bench-wcsncat.c               |  20 +++
+ string/test-strncat.c                    | 132 +++++++++------
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strncat-c.c       |  23 +++
+ sysdeps/s390/multiarch/strncat-vx.S      | 239 ++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strncat.c         |  27 ++++
+ sysdeps/s390/multiarch/wcsncat-c.c       |  25 +++
+ sysdeps/s390/multiarch/wcsncat-vx.S      | 265 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcsncat.c         |  27 ++++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wcsncat-ifunc.c              |  20 +++
+ wcsmbs/test-wcsncat.c                    |  20 +++
+ wcsmbs/wcsncat.c                         |   5 +-
+ 16 files changed, 823 insertions(+), 92 deletions(-)
+ create mode 100644 benchtests/bench-wcsncat.c
+ create mode 100644 sysdeps/s390/multiarch/strncat-c.c
+ create mode 100644 sysdeps/s390/multiarch/strncat-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strncat.c
+ create mode 100644 sysdeps/s390/multiarch/wcsncat-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcsncat-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcsncat.c
+ create mode 100644 wcsmbs/test-wcsncat-ifunc.c
+ create mode 100644 wcsmbs/test-wcsncat.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 91db23c..fd8b7ee 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -38,7 +38,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+-wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat
++wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-strncat.c b/benchtests/bench-strncat.c
+index 2a17817..8f3339d 100644
+--- a/benchtests/bench-strncat.c
++++ b/benchtests/bench-strncat.c
+@@ -1,5 +1,5 @@
+ /* Measure strncat functions.
+-   Copyright (C) 2013 Free Software Foundation, Inc.
++   Copyright (C) 2013-2015 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -17,33 +17,58 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strncat"
++#ifndef WIDE
++# define TEST_NAME "strncat"
++#else
++# define TEST_NAME "wcsncat"
++#endif /* WIDE */
+ #include "bench-string.h"
+ 
+-typedef char *(*proto_t) (char *, const char *, size_t);
+-char *stupid_strncat (char *, const char *, size_t);
+-char *simple_strncat (char *, const char *, size_t);
+-
+-IMPL (stupid_strncat, 0)
+-IMPL (strncat, 2)
+-
+-char *
+-stupid_strncat (char *dst, const char *src, size_t n)
++#ifndef WIDE
++# define STRNCAT strncat
++# define CHAR char
++# define SIMPLE_STRNCAT simple_strncat
++# define STUPID_STRNCAT stupid_strncat
++# define STRLEN strlen
++# define MEMCMP memcmp
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define STRNCAT wcsncat
++# define CHAR wchar_t
++# define SIMPLE_STRNCAT simple_wcsncat
++# define STUPID_STRNCAT stupid_wcsncat
++# define STRLEN wcslen
++# define MEMCMP wmemcmp
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++#endif /* WIDE */
++
++typedef CHAR *(*proto_t) (CHAR *, const CHAR *, size_t);
++CHAR *STUPID_STRNCAT (CHAR *, const CHAR *, size_t);
++CHAR *SIMPLE_STRNCAT (CHAR *, const CHAR *, size_t);
++
++IMPL (STUPID_STRNCAT, 0)
++IMPL (STRNCAT, 2)
++
++CHAR *
++STUPID_STRNCAT (CHAR *dst, const CHAR *src, size_t n)
+ {
+-  char *ret = dst;
++  CHAR *ret = dst;
+   while (*dst++ != '\0');
+   --dst;
+   while (n--)
+-    if ( (*dst++ = *src++) == '\0')
++    if ((*dst++ = *src++) == '\0')
+       return ret;
+   *dst = '\0';
+   return ret;
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, char *dst, const char *src, size_t n)
++do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, size_t n)
+ {
+-  size_t k = strlen (dst), i, iters = INNER_LOOP_ITERS;
++  size_t k = STRLEN (dst), i, iters = INNER_LOOP_ITERS;
+   timing_t start, stop, cur;
+ 
+   if (CALL (impl, dst, src, n) != dst)
+@@ -54,10 +79,10 @@ do_one_test (impl_t *impl, char *dst, const char *src, size_t n)
+       return;
+     }
+ 
+-  size_t len = strlen (src);
+-  if (memcmp (dst + k, src, len + 1 > n ? n : len + 1) != 0)
++  size_t len = STRLEN (src);
++  if (MEMCMP (dst + k, src, len + 1 > n ? n : len + 1) != 0)
+     {
+-      error (0, 0, "Incorrect cancatination in function %s",
++      error (0, 0, "Incorrect concatenation in function %s",
+ 	     impl->name);
+       ret = 1;
+       return;
+@@ -88,20 +113,20 @@ do_test (size_t align1, size_t align2, size_t len1, size_t len2,
+ 	 size_t n, int max_char)
+ {
+   size_t i;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+   align1 &= 7;
+-  if (align1 + len1 >= page_size)
++  if ((align1 + len1) * sizeof (CHAR) >= page_size)
+     return;
+-  if (align1 + n > page_size)
++  if ((align1 + n) * sizeof (CHAR) > page_size)
+     return;
+   align2 &= 7;
+-  if (align2 + len1 + len2 >= page_size)
++  if ((align2 + len1 + len2) * sizeof (CHAR) >= page_size)
+     return;
+-  if (align2 + len1 + n > page_size)
++  if ((align2 + len1 + n) * sizeof (CHAR) > page_size)
+     return;
+-  s1 = (char *) (buf1 + align1);
+-  s2 = (char *) (buf2 + align2);
++  s1 = (CHAR *) (buf1) + align1;
++  s2 = (CHAR *) (buf2) + align2;
+ 
+   for (i = 0; i < len1; ++i)
+     s1[i] = 32 + 23 * i % (max_char - 32);
+@@ -136,25 +161,25 @@ main (void)
+ 
+   for (n = 2; n <= 2048; n*=4)
+     {
+-      do_test (0, 2, 2, 2, n, 127);
+-      do_test (0, 0, 4, 4, n, 127);
+-      do_test (4, 0, 4, 4, n, 255);
+-      do_test (0, 0, 8, 8, n, 127);
+-      do_test (0, 8, 8, 8, n, 127);
++      do_test (0, 2, 2, 2, n, SMALL_CHAR);
++      do_test (0, 0, 4, 4, n, SMALL_CHAR);
++      do_test (4, 0, 4, 4, n, BIG_CHAR);
++      do_test (0, 0, 8, 8, n, SMALL_CHAR);
++      do_test (0, 8, 8, 8, n, SMALL_CHAR);
+ 
+       for (i = 1; i < 8; ++i)
+ 	{
+-	  do_test (0, 0, 8 << i, 8 << i, n, 127);
+-	  do_test (8 - i, 2 * i, 8 << i, 8 << i, n, 127);
+-	  do_test (0, 0, 8 << i, 2 << i, n, 127);
+-	  do_test (8 - i, 2 * i, 8 << i, 2 << i, n, 127);
++	  do_test (0, 0, 8 << i, 8 << i, n, SMALL_CHAR);
++	  do_test (8 - i, 2 * i, 8 << i, 8 << i, n, SMALL_CHAR);
++	  do_test (0, 0, 8 << i, 2 << i, n, SMALL_CHAR);
++	  do_test (8 - i, 2 * i, 8 << i, 2 << i, n, SMALL_CHAR);
+ 	}
+ 
+       for (i = 1; i < 8; ++i)
+ 	{
+-	  do_test (i, 2 * i, 8 << i, 1, n, 127);
+-	  do_test (2 * i, i, 8 << i, 1, n, 255);
+-	  do_test (i, i, 8 << i, 10, n, 127);
++	  do_test (i, 2 * i, 8 << i, 1, n, SMALL_CHAR);
++	  do_test (2 * i, i, 8 << i, 1, n, BIG_CHAR);
++	  do_test (i, i, 8 << i, 10, n, SMALL_CHAR);
+ 	}
+     }
+ 
+diff --git a/benchtests/bench-wcsncat.c b/benchtests/bench-wcsncat.c
+new file mode 100644
+index 0000000..b9d7c3f
+--- /dev/null
++++ b/benchtests/bench-wcsncat.c
+@@ -0,0 +1,20 @@
++/* Measure wcsncat functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strncat.c"
+diff --git a/string/test-strncat.c b/string/test-strncat.c
+index 2bfe25f..790d8aa 100644
+--- a/string/test-strncat.c
++++ b/string/test-strncat.c
+@@ -17,33 +17,64 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strncat"
++#ifndef WIDE
++# define TEST_NAME "strncat"
++#else
++# define TEST_NAME "wcsncat"
++#endif /* WIDE */
+ #include "test-string.h"
+ 
+-typedef char *(*proto_t) (char *, const char *, size_t);
+-char *stupid_strncat (char *, const char *, size_t);
+-char *simple_strncat (char *, const char *, size_t);
++#ifndef WIDE
++# define STRNCAT strncat
++# define CHAR char
++# define UCHAR unsigned char
++# define SIMPLE_STRNCAT simple_strncat
++# define STUPID_STRNCAT stupid_strncat
++# define STRLEN strlen
++# define MEMSET memset
++# define MEMCPY memcpy
++# define MEMCMP memcmp
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define STRNCAT wcsncat
++# define CHAR wchar_t
++# define UCHAR wchar_t
++# define SIMPLE_STRNCAT simple_wcsncat
++# define STUPID_STRNCAT stupid_wcsncat
++# define STRLEN wcslen
++# define MEMSET wmemset
++# define MEMCPY wmemcpy
++# define MEMCMP wmemcmp
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++#endif /* WIDE */
+ 
+-IMPL (stupid_strncat, 0)
+-IMPL (strncat, 2)
++typedef CHAR *(*proto_t) (CHAR *, const CHAR *, size_t);
++CHAR *STUPID_STRNCAT (CHAR *, const CHAR *, size_t);
++CHAR *SIMPLE_STRNCAT (CHAR *, const CHAR *, size_t);
+ 
+-char *
+-stupid_strncat (char *dst, const char *src, size_t n)
++IMPL (STUPID_STRNCAT, 0)
++IMPL (STRNCAT, 2)
++
++CHAR *
++STUPID_STRNCAT (CHAR *dst, const CHAR *src, size_t n)
+ {
+-  char *ret = dst;
++  CHAR *ret = dst;
+   while (*dst++ != '\0');
+   --dst;
+   while (n--)
+-    if ( (*dst++ = *src++) == '\0')
++    if ((*dst++ = *src++) == '\0')
+       return ret;
+   *dst = '\0';
+   return ret;
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, char *dst, const char *src, size_t n)
++do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, size_t n)
+ {
+-  size_t k = strlen (dst);
++  size_t k = STRLEN (dst);
+   if (CALL (impl, dst, src, n) != dst)
+     {
+       error (0, 0, "Wrong result in function %s %p != %p", impl->name,
+@@ -52,10 +83,10 @@ do_one_test (impl_t *impl, char *dst, const char *src, size_t n)
+       return;
+     }
+ 
+-  size_t len = strlen (src);
+-  if (memcmp (dst + k, src, len + 1 > n ? n : len + 1) != 0)
++  size_t len = STRLEN (src);
++  if (MEMCMP (dst + k, src, len + 1 > n ? n : len + 1) != 0)
+     {
+-      error (0, 0, "Incorrect cancatination in function %s",
++      error (0, 0, "Incorrect concatenation in function %s",
+ 	     impl->name);
+       ret = 1;
+       return;
+@@ -74,20 +105,20 @@ do_test (size_t align1, size_t align2, size_t len1, size_t len2,
+ 	 size_t n, int max_char)
+ {
+   size_t i;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+   align1 &= 7;
+-  if (align1 + len1 >= page_size)
++  if ((align1 + len1) * sizeof (CHAR) >= page_size)
+     return;
+-  if (align1 + n > page_size)
++  if ((align1 + n) * sizeof (CHAR) > page_size)
+     return;
+   align2 &= 7;
+-  if (align2 + len1 + len2 >= page_size)
++  if ((align2 + len1 + len2) * sizeof (CHAR) >= page_size)
+     return;
+-  if (align2 + len1 + n > page_size)
++  if ((align2 + len1 + n) * sizeof (CHAR) > page_size)
+     return;
+-  s1 = (char *) (buf1 + align1);
+-  s2 = (char *) (buf2 + align2);
++  s1 = (CHAR *) (buf1) + align1;
++  s2 = (CHAR *) (buf2) + align2;
+ 
+   for (i = 0; i < len1; ++i)
+     s1[i] = 32 + 23 * i % (max_char - 32);
+@@ -107,9 +138,10 @@ static void
+ do_random_tests (void)
+ {
+   size_t i, j, n, align1, align2, len1, len2, N;
+-  unsigned char *p1 = buf1 + page_size - 512;
+-  unsigned char *p2 = buf2 + page_size - 512;
+-  unsigned char *res;
++  UCHAR *p1 = (UCHAR *) (buf1 + page_size) - 512;
++  UCHAR *p2 = (UCHAR *) (buf2 + page_size) - 512;
++  UCHAR *p3 = (UCHAR *) buf1;
++  UCHAR *res;
+   fprintf (stdout, "Number of iterations in random test = %zd\n",
+ 	   ITERATIONS);
+   for (n = 0; n < ITERATIONS; n++)
+@@ -148,26 +180,26 @@ do_random_tests (void)
+ 	    p1[i] = 0;
+ 	  else
+ 	    {
+-	      p1[i] = random () & 255;
++	      p1[i] = random () & BIG_CHAR;
+ 	      if (i >= align1 && i < len1 + align1 && !p1[i])
+-		p1[i] = (random () & 127) + 3;
++		p1[i] = (random () & SMALL_CHAR) + 3;
+ 	    }
+ 	}
+       for (i = 0; i < len2; i++)
+ 	{
+-	  buf1[i] = random () & 255;
+-	  if (!buf1[i])
+-	    buf1[i] = (random () & 127) + 3;
++	  p3[i] = random () & BIG_CHAR;
++	  if (!p3[i])
++	    p3[i] = (random () & SMALL_CHAR) + 3;
+ 	}
+-      buf1[len2] = 0;
++      p3[len2] = 0;
+ 
+       FOR_EACH_IMPL (impl, 1)
+ 	{
+-	  memset (p2 - 64, '\1', align2 + 64);
+-	  memset (p2 + align2 + len2 + 1, '\1', 512 - align2 - len2 - 1);
+-	  memcpy (p2 + align2, buf1, len2 + 1);
+-	  res = (unsigned char *) CALL (impl, (char *) (p2 + align2),
+-					(char *) (p1 + align1), N);
++	  MEMSET (p2 - 64, '\1', align2 + 64);
++	  MEMSET (p2 + align2 + len2 + 1, '\1', 512 - align2 - len2 - 1);
++	  MEMCPY (p2 + align2, p3, len2 + 1);
++	  res = (UCHAR *) CALL (impl, (CHAR *) (p2 + align2),
++				(CHAR *) (p1 + align1), N);
+ 	  if (res != p2 + align2)
+ 	    {
+ 	      error (0, 0, "Iteration %zd - wrong result in function %s "
+@@ -187,7 +219,7 @@ do_random_tests (void)
+ 		  break;
+ 		}
+ 	    }
+-	  if (memcmp (p2 + align2, buf1, len2))
++	  if (MEMCMP (p2 + align2, p3, len2))
+ 	    {
+ 	      error (0, 0, "Iteration %zd - garbage in string before, %s "
+ 		     "(%zd, %zd, %zd, %zd, %zd)",
+@@ -220,7 +252,7 @@ do_random_tests (void)
+ 		  ret = 1;
+ 		}
+ 	    }
+-	  if (memcmp (p1 + align1, p2 + align2 + len2,
++	  if (MEMCMP (p1 + align1, p2 + align2 + len2,
+ 		      (len1 + 1) > N ? N : len1 + 1))
+ 	    {
+ 	      error (0, 0, "Iteration %zd - different strings, %s "
+@@ -246,25 +278,25 @@ main (void)
+ 
+   for (n = 2; n <= 2048; n*=4)
+     {
+-      do_test (0, 2, 2, 2, n, 127);
+-      do_test (0, 0, 4, 4, n, 127);
+-      do_test (4, 0, 4, 4, n, 255);
+-      do_test (0, 0, 8, 8, n, 127);
+-      do_test (0, 8, 8, 8, n, 127);
++      do_test (0, 2, 2, 2, n, SMALL_CHAR);
++      do_test (0, 0, 4, 4, n, SMALL_CHAR);
++      do_test (4, 0, 4, 4, n, BIG_CHAR);
++      do_test (0, 0, 8, 8, n, SMALL_CHAR);
++      do_test (0, 8, 8, 8, n, SMALL_CHAR);
+ 
+       for (i = 1; i < 8; ++i)
+ 	{
+-	  do_test (0, 0, 8 << i, 8 << i, n, 127);
+-	  do_test (8 - i, 2 * i, 8 << i, 8 << i, n, 127);
+-	  do_test (0, 0, 8 << i, 2 << i, n, 127);
+-	  do_test (8 - i, 2 * i, 8 << i, 2 << i, n, 127);
++	  do_test (0, 0, 8 << i, 8 << i, n, SMALL_CHAR);
++	  do_test (8 - i, 2 * i, 8 << i, 8 << i, n, SMALL_CHAR);
++	  do_test (0, 0, 8 << i, 2 << i, n, SMALL_CHAR);
++	  do_test (8 - i, 2 * i, 8 << i, 2 << i, n, SMALL_CHAR);
+ 	}
+ 
+       for (i = 1; i < 8; ++i)
+ 	{
+-	  do_test (i, 2 * i, 8 << i, 1, n, 127);
+-	  do_test (2 * i, i, 8 << i, 1, n, 255);
+-	  do_test (i, i, 8 << i, 10, n, 127);
++	  do_test (i, 2 * i, 8 << i, 1, n, SMALL_CHAR);
++	  do_test (2 * i, i, 8 << i, 1, n, BIG_CHAR);
++	  do_test (i, i, 8 << i, 10, n, SMALL_CHAR);
+ 	}
+     }
+ 
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 6283999..33c1398 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -5,7 +5,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   stpcpy stpcpy-vx stpcpy-c \
+ 		   strncpy strncpy-vx \
+ 		   stpncpy stpncpy-vx stpncpy-c \
+-		   strcat strcat-vx strcat-c
++		   strcat strcat-vx strcat-c \
++		   strncat strncat-vx strncat-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -15,5 +16,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcpcpy wcpcpy-vx wcpcpy-c \
+ 		   wcsncpy wcsncpy-vx wcsncpy-c \
+ 		   wcpncpy wcpncpy-vx wcpncpy-c \
+-		   wcscat wcscat-vx wcscat-c
++		   wcscat wcscat-vx wcscat-c \
++		   wcsncat wcsncat-vx wcsncat-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index ccf4dea..1e57c0e 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -100,6 +100,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strcat);
+   IFUNC_VX_IMPL (wcscat);
+ 
++  IFUNC_VX_IMPL (strncat);
++  IFUNC_VX_IMPL (wcsncat);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strncat-c.c b/sysdeps/s390/multiarch/strncat-c.c
+new file mode 100644
+index 0000000..f90f0e0
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strncat-c.c
+@@ -0,0 +1,23 @@
++/* Default strncat implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRNCAT  __strncat_c
++
++# include <string/strncat.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/strncat-vx.S b/sysdeps/s390/multiarch/strncat-vx.S
+new file mode 100644
+index 0000000..7f35696
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strncat-vx.S
+@@ -0,0 +1,239 @@
++/* Vector optimized 32/64 bit S/390 version of strncat.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char * strncat (const char *dest, const char *src, size_t n)
++   Concatenate two strings - at most n characters of src.
++
++   Register usage:
++   -r0=saved dest pointer for return
++   -r1=tmp
++   -r2=dest
++   -r3=src
++   -r4=n
++   -r5=current_len
++   -r6=tmp
++   -r7=tmp
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++   -v31=register save area for r6, r7
++*/
++ENTRY(__strncat_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgfi	%r4,0
++	ber	%r14		/* Nothing to do, if n == 0.  */
++	lgr	%r0,%r2		/* Save destination pointer for return.  */
++	vlvgp	%v31,%r6,%r7	/* Save registers.  */
++
++	/* STRLEN
++	   %r1 = loaded bytes (tmp)
++	   %r6 = zero byte index (tmp)
++	   %r2 = dst
++	*/
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfenezb	%v16,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v16,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Llen_end /* Found zero within loaded bytes, end.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r1,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r1		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Llen_loop:
++	vl	%v16,0(%r5,%r2)	/* Load s.  */
++	vfenezbs %v16,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Llen_found	/* Jump away if zero was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Llen_found16
++	vl	%v16,32(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Llen_found32
++	vl	%v16,48(%r5,%r2)
++	vfenezbs %v16,%v16,%v16
++	je	.Llen_found48
++
++	aghi	%r5,64
++	j	.Llen_loop	/* No zero -> loop.  */
++
++.Llen_found48:
++	aghi	%r5,16
++.Llen_found32:
++	aghi	%r5,16
++.Llen_found16:
++	aghi	%r5,16
++.Llen_found:
++	vlgvb	%r1,%v16,7	/* Load byte index of zero.  */
++	algr	%r5,%r1
++
++.Llen_end:
++	/* STRCPY
++	   %r1 = zero byte index (tmp)
++	   %r6 = loaded bytes (tmp)
++	   %r3 = curr src pointer
++	   %r2 = curr dst pointer
++	   %r7 = border, tmp
++	*/
++	la	%r2,0(%r5,%r2)	/* strcpy at end of dst-string.  */
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r6,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r6,%r6		/* Convert 32bit to 64bit.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	clgrjle	%r4,%r6,.Lcpy_remaining_v16 /* If n <= loaded-bytes
++					       -> process remaining.  */
++
++	/* n > loaded-byte-count.  */
++	vfenezb	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r1,%r6,.Lcpy_found_v16_store /* Found zero within loaded
++						 bytes, copy and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r7,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r7		/* Compute highest index to 16byte boundary.  */
++
++	/* Zero not found and n > loaded-byte-count.  */
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/*
++	  Now we are 16byte aligned, so we can load a full vreg
++	  without page fault.
++	 */
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lcpy_loop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	clgijl	%r4,17,.Lcpy_remaining_v16 /* If n <=16,
++					       process remaining bytes.  */
++.Lcpy_lt64:
++	lgr	%r7,%r4
++	slgfi	%r7,16		/* border_len = n - 16.  */
++
++	/* If current_len >= border then process remaining bytes.  */
++	clgrjhe	%r5,%r7,.Lcpy_remaining_v16
++	vfenezbs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lcpy_found_v16 /* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lcpy_remaining_v18
++	vfenezbs %v17,%v18,%v18
++	je	.Lcpy_found_v18
++	vl	%v16,16(%r5,%r3)
++	vst	%v18,0(%r5,%r2)
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lcpy_remaining_v16
++	vfenezbs %v17,%v16,%v16
++	je	.Lcpy_found_v16
++	vl	%v18,16(%r5,%r3)
++	vst	%v16,0(%r5,%r2)
++	aghi	%r5,16
++
++.Lcpy_remaining_v18:
++	vlr	%v16,%v18
++.Lcpy_remaining_v16:
++	/* v16 contains the remaining bytes [1...16].
++	   Store remaining bytes and append string-termination.  */
++	vfenezb	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	slgrk	%r7,%r4,%r5	/* Remaining bytes = maxlen - current_len.  */
++	aghi	%r7,-1		/* vstl needs highest index.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no index register.  */
++	/* Zero-index within remaining-bytes, store up to zero and end.  */
++	clgrjle	%r1,%r7,.Lcpy_found_v16_store
++	vstl	%v16,%r7,0(%r2)	/* Store remaining bytes.  */
++	lghi	%r1,0
++	stc	%r1,1(%r7,%r2)	/* Store string-null-termination beyond n.  */
++.Lcpy_end:
++	/* Restore saved registers.  */
++	vlgvg	%r6,%v31,0
++	vlgvg	%r7,%v31,1
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++.Lcpy_found_v16_32:
++	aghi	%r5,32
++	j	.Lcpy_found_v16
++.Lcpy_found_v18_48:
++	aghi	%r5,32
++.Lcpy_found_v18_16:
++	aghi	%r5,16
++.Lcpy_found_v18:
++	vlr	%v16,%v18
++.Lcpy_found_v16:
++	/* v16 contains a zero. Store remaining bytes to zero. current_len
++	   has not reached border, thus checking for n is not needed!  */
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	la	%r2,0(%r5,%r2)
++.Lcpy_found_v16_store:
++	vstl	%v16,%r1,0(%r2)	/* Copy characters including zero.  */
++	j	.Lcpy_end
++
++	/* Find zero in 16byte aligned loop.  */
++.Lcpy_loop64:
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	vfenezbs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lcpy_found_v16 /* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Store previous part without zero to dst.  */
++	vfenezbs %v17,%v18,%v18
++	je	.Lcpy_found_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezbs %v17,%v16,%v16
++	je	.Lcpy_found_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezbs %v17,%v18,%v18
++	je	.Lcpy_found_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lcpy_loop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	j	.Lcpy_lt64
++END(__strncat_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strncat.c b/sysdeps/s390/multiarch/strncat.c
+new file mode 100644
+index 0000000..82e87ad
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strncat.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of strncat.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strncat, strncat)
++
++#else
++# include <string/strncat.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcsncat-c.c b/sysdeps/s390/multiarch/wcsncat-c.c
+new file mode 100644
+index 0000000..4938ef2
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsncat-c.c
+@@ -0,0 +1,25 @@
++/* Default wcsncat implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSNCAT  __wcsncat_c
++
++# include <wchar.h>
++extern __typeof (wcsncat) __wcsncat_c;
++# include <wcsmbs/wcsncat.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcsncat-vx.S b/sysdeps/s390/multiarch/wcsncat-vx.S
+new file mode 100644
+index 0000000..7e0653e
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsncat-vx.S
+@@ -0,0 +1,265 @@
++/* Vector optimized 32/64 bit S/390 version of wcsncat.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t * wcsncat (wchar_t *dest, const wchar_t *src, size_t n)
++   Concatenate two strings - at most n characters of src.
++
++   Register usage:
++   -r0=saved dest pointer for return
++   -r1=tmp
++   -r2=dest
++   -r3=src
++   -r4=n
++   -r5=current_len
++   -r6=tmp
++   -r7=tmp
++   -v16=part of src
++   -v17=index of zero
++   -v18=part of src
++   -v31=register save area for r6, r7
++*/
++ENTRY(__wcsncat_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgfi	%r4,0
++	ber	%r14		/* Nothing to do, if n == 0.  */
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	/* If either src or dest is not 4byte aligned, use __wcsncat_c.  */
++	tmll	%r2,3		/* Test if s is 4-byte aligned?   */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++	tmll	%r3,3		/* Test if src is 4-byte aligned?   */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	lgr	%r0,%r2		/* Save destination pointer for return.  */
++	vlvgp	%v31,%r6,%r7	/* Save registers.  */
++
++	/* WCSLEN
++	   %r1 = loaded bytes (tmp)
++	   %r6 = zero byte index (tmp)
++	   %r2 = dst
++	*/
++	vfenezf	%v16,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r5,%v16,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r5,%r1,.Llen_end /* Found zero within loaded bytes, end.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r1,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r1		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find zero in 16byte aligned loop.  */
++.Llen_loop:
++	vl	%v16,0(%r5,%r2)	/* Load s.  */
++	vfenezfs %v16,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Llen_found	/* Jump away if zero was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Llen_found16
++	vl	%v16,32(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Llen_found32
++	vl	%v16,48(%r5,%r2)
++	vfenezfs %v16,%v16,%v16
++	je	.Llen_found48
++
++	aghi	%r5,64
++	j	.Llen_loop	/* No zero -> loop.  */
++
++.Llen_found48:
++	aghi	%r5,16
++.Llen_found32:
++	aghi	%r5,16
++.Llen_found16:
++	aghi	%r5,16
++.Llen_found:
++	vlgvb	%r1,%v16,7	/* Load byte index of zero.  */
++	algr	%r5,%r1
++
++.Llen_end:
++	/* WCSNCPY
++	   %r1 = zero byte index (tmp)
++	   %r6 = loaded bytes (tmp)
++	   %r3 = curr src pointer
++	   %r2 = curr dst pointer
++	   %r7 = border, tmp
++	*/
++	la	%r2,0(%r5,%r2)	/* strcpy at end of dst-string.  */
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r6,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r6,%r6		/* Convert 32bit to 64bit.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	/* Check range of maxlen and convert to byte-count.  */
++# ifdef __s390x__
++	tmhh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	lghi	%r1,-4		/* Max byte-count is 18446744073709551612.  */
++# else
++	tmlh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	llilf	%r1,4294967292	/* Max byte-count is 4294967292.  */
++# endif /* !__s390x__ */
++	sllg	%r4,%r4,2	/* Convert character-count to byte-count.  */
++	locgrne	%r4,%r1		/* Use max byte-count, if bit 0/1 was one.  */
++
++	clgrjle	%r4,%r6,.Lcpy_remaining_v16 /* If n <= loaded-bytes
++					       -> process remaining.  */
++
++	/* n > loaded-byte-count.  */
++	vfenezf	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	clrjl	%r1,%r6,.Lcpy_found_v16_store /* Found zero within loaded bytes,
++					         copy and return.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r1,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,15		/* current_len = 15.  */
++	slr	%r5,%r1		/* Compute highest index to 16byte boundary.  *
++
++	/* Zero not found and maxlen > loaded-byte-count.  */
++	vstl	%v16,%r5,0(%r2)	/* Copy loaded characters - no zero.  */
++	ahi	%r5,1		/* Start loop at next character.  */
++
++	/*
++	  Now we are 16byte aligned, so we can load a full vreg
++	  without page fault.
++	 */
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lcpy_loop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	clgijl	%r4,17,.Lcpy_remaining_v16 /* If n <=16,
++					       process remaining bytes.  */
++.Lcpy_lt64:
++	lgr	%r7,%r4
++	slgfi	%r7,16		/* border_len = n - 16.  */
++
++	clgrjhe	%r5,%r7,.Lcpy_remaining_v16
++	vfenezfs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lcpy_found_v16 /* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Save previous part without zero to dst.  */
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lcpy_remaining_v18
++	vfenezfs %v17,%v18,%v18
++	je	.Lcpy_found_v18
++	vl	%v16,16(%r5,%r3)
++	vst	%v18,0(%r5,%r2)
++	aghi	%r5,16
++
++	clgrjhe	%r5,%r7,.Lcpy_remaining_v16
++	vfenezfs %v17,%v16,%v16
++	je	.Lcpy_found_v16
++	vl	%v18,16(%r5,%r3)
++	vst	%v16,0(%r5,%r2)
++	aghi	%r5,16
++
++.Lcpy_remaining_v18:
++	vlr	%v16,%v18
++.Lcpy_remaining_v16:
++	/* v16 contains the remaining bytes [1...16].
++	   Store remaining bytes and append string-termination.  */
++	vfenezf	%v17,%v16,%v16	/* Find element not equal with zero search.  */
++	slgrk	%r7,%r4,%r5	/* Remaining bytes = maxlen - current_len.  */
++	aghi	%r7,-1		/* vstl needs highest index.  */
++	vlgvb	%r1,%v17,7	/* Load zero index or 16 if not found.  */
++	la	%r2,0(%r5,%r2)	/* vstl has no index register.  */
++	/* Zero-index within remaining-bytes, store up to zero and end.  */
++	clgrjle	%r1,%r7,.Lcpy_found_v16_store
++	vstl	%v16,%r7,0(%r2)	/* Store remaining bytes.  */
++	lghi	%r1,0
++	st	%r1,1(%r7,%r2)	/* Store string-null-termination beyond n.  */
++.Lcpy_end:
++	/* Restore saved registers.  */
++	vlgvg	%r6,%v31,0
++	vlgvg	%r7,%v31,1
++	lgr	%r2,%r0		/* Load saved dest-ptr.  */
++	br	%r14
++
++.Lcpy_found_v16_32:
++	aghi	%r5,32
++	j	.Lcpy_found_v16
++.Lcpy_found_v18_48:
++	aghi	%r5,32
++.Lcpy_found_v18_16:
++	aghi	%r5,16
++.Lcpy_found_v18:
++	vlr	%v16,%v18
++.Lcpy_found_v16:
++	/* v16 contains a zero. Store remaining bytes to zero. current_len
++	   has not reached border, thus checking for n is not needed!  */
++	vlgvb	%r1,%v17,7	/* Load byte index of zero.  */
++	la	%r2,0(%r5,%r2)
++.Lcpy_found_v16_store:
++	aghi	%r1,3		/* Also copy remaining bytes of zero.  */
++	vstl	%v16,%r1,0(%r2)	/* Copy characters including zero.  */
++	j	.Lcpy_end
++
++	/* Find zero in 16byte aligned loop.  */
++.Lcpy_loop2:
++	vl	%v16,16(%r5,%r3)
++	vst	%v18,0(%r5,%r2)
++	aghi	%r5,16
++
++.Lcpy_loop64:
++	vl	%v16,0(%r5,%r3)
++	vfenezfs %v17,%v16,%v16	/* Find element not equal with zero search.  */
++	je	.Lcpy_found_v16 /* Jump away if zero was found.  */
++	vl	%v18,16(%r5,%r3) /* Load next part of s.  */
++	vst	%v16,0(%r5,%r2)	/* Save previous part without zero to dst.  */
++	vfenezfs %v17,%v18,%v18
++	je	.Lcpy_found_v18_16
++	vl	%v16,32(%r5,%r3)
++	vst	%v18,16(%r5,%r2)
++	vfenezfs %v17,%v16,%v16
++	je	.Lcpy_found_v16_32
++	vl	%v18,48(%r5,%r3)
++	vst	%v16,32(%r5,%r2)
++	vfenezfs %v17,%v18,%v18
++	je	.Lcpy_found_v18_48
++	vst	%v18,48(%r5,%r2)
++
++	aghi	%r5,64
++	lgr	%r1,%r5		/* If %r5 + 64 < maxlen? -> loop64.  */
++	aghi	%r1,64
++	clgrjl	%r1,%r4,.Lcpy_loop64
++
++	vl	%v16,0(%r5,%r3)	/* Load s.  */
++	j	.Lcpy_lt64
++
++.Lfallback:
++	jg	__wcsncat_c
++END(__wcsncat_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcsncat.c b/sysdeps/s390/multiarch/wcsncat.c
+new file mode 100644
+index 0000000..621444d
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsncat.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wcsncat.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wcsncat, wcsncat)
++
++#else
++# include <wcsmbs/wcsncat.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index 9bfc78c..44b1502 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -42,7 +42,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    mbrtoc16 c16rtomb
+ 
+ strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+-		wcpcpy wcsncpy wcpncpy wcscat
++		wcpcpy wcsncpy wcpncpy wcscat wcsncat
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcsncat-ifunc.c b/wcsmbs/test-wcsncat-ifunc.c
+new file mode 100644
+index 0000000..5497f7d
+--- /dev/null
++++ b/wcsmbs/test-wcsncat-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcsncat function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcsncat.c"
+diff --git a/wcsmbs/test-wcsncat.c b/wcsmbs/test-wcsncat.c
+new file mode 100644
+index 0000000..8b91a18
+--- /dev/null
++++ b/wcsmbs/test-wcsncat.c
+@@ -0,0 +1,20 @@
++/* Test wcsncat functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-strncat.c"
+diff --git a/wcsmbs/wcsncat.c b/wcsmbs/wcsncat.c
+index 2131466..21a3a1e 100644
+--- a/wcsmbs/wcsncat.c
++++ b/wcsmbs/wcsncat.c
+@@ -18,10 +18,13 @@
+ 
+ #include <wchar.h>
+ 
++#ifndef WCSNCAT
++# define WCSNCAT wcsncat
++#endif
+ 
+ /* Append no more than N wide-character of SRC onto DEST.  */
+ wchar_t *
+-wcsncat (dest, src, n)
++WCSNCAT (dest, src, n)
+      wchar_t *dest;
+      const wchar_t *src;
+      size_t n;
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-18.patch b/SOURCES/glibc-rh1268008-18.patch
new file mode 100644
index 0000000..0ff8f31
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-18.patch
@@ -0,0 +1,586 @@
+From 111012ea9031349ebbd7cc992b71662bdd10397c Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 11:18:25 +0200
+Subject: [PATCH 18/30] S390: Optimize strcmp and wcscmp.
+
+upstream-commit-id: 63724a6db60f98e91da474d11d83a19aa10fc54e
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00084.html
+
+This patch provides optimized versions of strcmp and wcscmp with the z13
+vector instructions.
+
+The architecture specific string.h had a typo, which leads to ommiting the
+inline version in this file if __USE_STRING_INLINES is defined.
+Tested this inline version by tweaking test-strcmp.c.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strcmp-vx.S: New File.
+	* sysdeps/s390/multiarch/strcmp.c: Likewise.
+	* sysdeps/s390/multiarch/wcscmp-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcscmp-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcscmp.c: Likewise.
+	* sysdeps/s390/s390-32/multiarch/strcmp.c: Likewise.
+	* sysdeps/s390/s390-64/multiarch/strcmp.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strcmp and
+	wcscmp functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strcmp, wcscmp.
+	* string/strcmp.c (STRCMP): Define and use macro.
+	* benchtests/bench-wcscmp.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcscmp.
+	* sysdeps/s390/bits/string.h: Fix typo: _HAVE_STRING_ARCH_strcmp
+	instead of _HAVE_STRING_ARCH_memchr.
+---
+ benchtests/Makefile                      |   3 +-
+ benchtests/bench-wcscmp.c                |  20 +++++
+ string/strcmp.c                          |   6 +-
+ sysdeps/s390/bits/string.h               |   4 +-
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strcmp-vx.S       | 116 +++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strcmp.c          |  26 ++++++
+ sysdeps/s390/multiarch/wcscmp-c.c        |  30 +++++++
+ sysdeps/s390/multiarch/wcscmp-vx.S       | 131 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcscmp.c          |  27 +++++++
+ sysdeps/s390/s390-32/multiarch/strcmp.c  |  21 +++++
+ sysdeps/s390/s390-64/multiarch/strcmp.c  |  21 +++++
+ 13 files changed, 408 insertions(+), 6 deletions(-)
+ create mode 100644 benchtests/bench-wcscmp.c
+ create mode 100644 sysdeps/s390/multiarch/strcmp-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strcmp.c
+ create mode 100644 sysdeps/s390/multiarch/wcscmp-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcscmp-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcscmp.c
+ create mode 100644 sysdeps/s390/s390-32/multiarch/strcmp.c
+ create mode 100644 sysdeps/s390/s390-64/multiarch/strcmp.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index fd8b7ee..f6333eb 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -38,7 +38,8 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strcat strchr strchrnul strcmp strcpy strcspn strlen \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+-wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat
++wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
++		wcsncmp
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-wcscmp.c b/benchtests/bench-wcscmp.c
+new file mode 100644
+index 0000000..bd483a2
+--- /dev/null
++++ b/benchtests/bench-wcscmp.c
+@@ -0,0 +1,20 @@
++/* Measure wcscmp functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strcmp.c"
+diff --git a/string/strcmp.c b/string/strcmp.c
+index 8229d7c..5384db9 100644
+--- a/string/strcmp.c
++++ b/string/strcmp.c
+@@ -20,11 +20,15 @@
+ 
+ #undef strcmp
+ 
++#ifndef STRCMP
++# define STRCMP strcmp
++#endif
++
+ /* Compare S1 and S2, returning less than, equal to or
+    greater than zero if S1 is lexicographically less than,
+    equal to or greater than S2.  */
+ int
+-strcmp (p1, p2)
++STRCMP (p1, p2)
+      const char *p1;
+      const char *p2;
+ {
+diff --git a/sysdeps/s390/bits/string.h b/sysdeps/s390/bits/string.h
+index f3070f1..037aa71 100644
+--- a/sysdeps/s390/bits/string.h
++++ b/sysdeps/s390/bits/string.h
+@@ -226,8 +226,8 @@ memchr (const void *__str, int __c, size_t __n)
+ }
+ #endif
+ 
+-/* Search N bytes of S for C.  */
+-#define _HAVE_STRING_ARCH_memchr 1
++/* Compare S1 and S2.  */
++#define _HAVE_STRING_ARCH_strchr 1
+ #ifndef _FORCE_INLINES
+ __STRING_INLINE int
+ strcmp (const char *__s1, const char *__s2)
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 33c1398..d8fbd55 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -6,7 +6,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strncpy strncpy-vx \
+ 		   stpncpy stpncpy-vx stpncpy-c \
+ 		   strcat strcat-vx strcat-c \
+-		   strncat strncat-vx strncat-c
++		   strncat strncat-vx strncat-c \
++		   strcmp strcmp-vx
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -17,5 +18,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcsncpy wcsncpy-vx wcsncpy-c \
+ 		   wcpncpy wcpncpy-vx wcpncpy-c \
+ 		   wcscat wcscat-vx wcscat-c \
+-		   wcsncat wcsncat-vx wcsncat-c
++		   wcsncat wcsncat-vx wcsncat-c \
++		   wcscmp wcscmp-vx wcscmp-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index 1e57c0e..196d3ec 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -103,6 +103,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strncat);
+   IFUNC_VX_IMPL (wcsncat);
+ 
++  IFUNC_VX_IMPL (strcmp);
++  IFUNC_VX_IMPL (wcscmp);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strcmp-vx.S b/sysdeps/s390/multiarch/strcmp-vx.S
+new file mode 100644
+index 0000000..57fce75
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcmp-vx.S
+@@ -0,0 +1,116 @@
++/* Vector optimized 32/64 bit S/390 version of strcmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* int strcmp (const char *s1, const char *s2)
++   Compare two strings
++
++   Register usage:
++   -r1=loaded byte count s1
++   -r2=s1
++   -r3=s2
++   -r4=loaded byte coutn s2, tmp
++   -r5=current_len
++   -v16=part of s1
++   -v17=part of s2
++   -v18=index of unequal
++*/
++ENTRY(__strcmp_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++.Lloop:
++	vlbb	%v16,0(%r5,%r2),6 /* Load s1 to block boundary.  */
++	vlbb	%v17,0(%r5,%r3),6 /* Load s2 to block boundary.  */
++	lcbb	%r1,0(%r5,%r2),6 /* Get loaded byte count of s1.  */
++	jo	.Llt16_1	/* Jump away if vr is not fully loaded.  */
++	lcbb	%r4,0(%r5,%r3),6
++	jo	.Llt16_2	/* Jump away if vr is not fully loaded.  */
++	/* Both vrs are fully loaded.  */
++	aghi	%r5,16
++	vfenezbs %v18,%v16,%v17	/* Compare not equal with zero search.  */
++	jno	.Lfound
++
++	vlbb	%v16,0(%r5,%r2),6
++	vlbb	%v17,0(%r5,%r3),6
++	lcbb	%r1,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r4,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	vfenezbs %v18,%v16,%v17
++	jno	.Lfound
++
++	vlbb	%v16,0(%r5,%r2),6
++	vlbb	%v17,0(%r5,%r3),6
++	lcbb	%r1,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r4,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	vfenezbs %v18,%v16,%v17
++	jno	.Lfound
++
++	vlbb	%v16,0(%r5,%r2),6
++	vlbb	%v17,0(%r5,%r3),6
++	lcbb	%r1,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r4,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	vfenezbs %v18,%v16,%v17
++	jno	.Lfound
++	j	.Lloop
++
++.Llt16_1:
++	lcbb	%r4,0(%r5,%r3),6 /* Get loaded byte count of s2.  */
++.Llt16_2:
++	clr	%r1,%r4
++	locrh	%r1,%r4		/* Get minimum of bytes loaded in s1/2.  */
++	algfr	%r5,%r1		/* Add smallest loaded bytes to current_len.  */
++	vfenezbs %v18,%v16,%v17	/* Compare not equal with zero search.  */
++	vlgvb	%r4,%v18,7	/* Get not equal index or 16 if all equal.  */
++	clrjl	%r4,%r1,.Lfound /* Jump away if miscompare is within loaded
++				    bytes.  */
++	j	.Lloop
++
++.Lfound:
++	je	.Lend_equal
++	lghi	%r2,1
++	lghi	%r1,-1
++	locgrl	%r2,%r1
++	br	%r14
++.Lend_equal:
++	lghi	%r2,0
++	br	%r14
++END(__strcmp_vx)
++
++# define strcmp __strcmp_c
++# undef libc_hidden_builtin_def
++# define libc_hidden_builtin_def(name) strong_alias(__strcmp_c, __GI_strcmp)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++
++#include <strcmp.S>
+diff --git a/sysdeps/s390/multiarch/strcmp.c b/sysdeps/s390/multiarch/strcmp.c
+new file mode 100644
+index 0000000..dd462a2
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcmp.c
+@@ -0,0 +1,26 @@
++/* Multiple versions of strcmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++
++# undef strcmp
++s390_vx_libc_ifunc2 (__strcmp, strcmp)
++#endif
+diff --git a/sysdeps/s390/multiarch/wcscmp-c.c b/sysdeps/s390/multiarch/wcscmp-c.c
+new file mode 100644
+index 0000000..8358e1f
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscmp-c.c
+@@ -0,0 +1,30 @@
++/* Default wcscmp implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSCMP  __wcscmp_c
++
++# include <wchar.h>
++extern __typeof (wcscmp) __wcscmp_c;
++# ifdef SHARED
++#  undef libc_hidden_def
++#  define libc_hidden_def(name)				\
++  __hidden_ver1 (__wcscmp_c, __GI_wcscmp, __wcscmp_c);
++# endif /* SHARED */
++# include <wcsmbs/wcscmp.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcscmp-vx.S b/sysdeps/s390/multiarch/wcscmp-vx.S
+new file mode 100644
+index 0000000..2c9e610
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscmp-vx.S
+@@ -0,0 +1,131 @@
++/* Vector optimized 32/64 bit S/390 version of wcscmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* int wcscmp (const wchar_t *s1, const wchar_t *s2)
++   Compare two strings
++
++   Register usage:
++   -r1=loaded byte count s1
++   -r2=s1
++   -r3=s2
++   -r4=loaded byte coutn s2, tmp
++   -r5=current_len
++   -v16=part of s1
++   -v17=part of s2
++   -v18=index of unequal
++*/
++ENTRY(__wcscmp_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++.Lloop:
++	vlbb	%v16,0(%r5,%r2),6 /* Load s1 to block boundary.  */
++	vlbb	%v17,0(%r5,%r3),6 /* Load s2 to block boundary.  */
++	lcbb	%r1,0(%r5,%r2),6 /* Get loaded byte count of s1.  */
++	jo	.Llt16_1	/* Jump away if vr is not fully loaded.  */
++	lcbb	%r4,0(%r5,%r3),6
++	jo	.Llt16_2	/* Jump away if vr is not fully loaded.  */
++	/* Both vrs are fully loaded.  */
++	aghi	%r5,16
++	vfenezfs %v18,%v16,%v17	/* Compare not equal with zero search.  */
++	jno	.Lfound
++
++	vlbb	%v16,0(%r5,%r2),6
++	vlbb	%v17,0(%r5,%r3),6
++	lcbb	%r1,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r4,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	vfenezfs %v18,%v16,%v17
++	jno	.Lfound
++
++	vlbb	%v16,0(%r5,%r2),6
++	vlbb	%v17,0(%r5,%r3),6
++	lcbb	%r1,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r4,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	vfenezfs %v18,%v16,%v17
++	jno	.Lfound
++
++	vlbb	%v16,0(%r5,%r2),6
++	vlbb	%v17,0(%r5,%r3),6
++	lcbb	%r1,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r4,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	vfenezfs %v18,%v16,%v17
++	jno	.Lfound
++	j	.Lloop
++
++.Lcmp_one_char:
++	/* At least one of both strings is not 4-byte aligned
++	   and there is no full character before next block-boundary.
++	   Compare one character to get over the boundary and
++	   proceed with normal loop!  */
++	vlef	%v16,0(%r5,%r2),0 /* Load one character.  */
++	vlef	%v17,0(%r5,%r3),0
++	lghi	%r1,4		/* Loaded byte count is 4.  */
++	j	.Llt_cmp	/* Proceed with comparision.  */
++
++.Llt16_1:
++	lcbb	%r4,0(%r5,%r3),6 /* Get loaded byte count of s2.  */
++.Llt16_2:
++	clr	%r1,%r4
++	locrh	%r1,%r4		/* Get minimum of bytes loaded in s1/2.  */
++	nill	%r1,65532	/* Align bytes loaded to full characters.  */
++	jz	.Lcmp_one_char	/* Jump away if no full char is available.  */
++.Llt_cmp:
++	algfr	%r5,%r1		/* Add smallest loaded bytes to current_len.  */
++	vfenezfs %v18,%v16,%v17	/* Compare not equal with zero search.  */
++	vlgvb	%r4,%v18,7	/* Get not equal index or 16 if all equal.  */
++	clrjl	%r4,%r1,.Lfound /* Jump away if miscompare is within loaded
++				    bytes.  */
++	j	.Lloop
++
++.Lfound:
++	/* vfenezf found an unequal element or zero.
++	   This instruction compares unsigned words, but wchar_t is signed.
++	   Thus we have to compare the found element again.  */
++	vlgvb	%r4,%v18,7	/* Extract not equal byte-index,  */
++	srl	%r4,2		/* Convert it to character-index.  */
++	vlgvf	%r3,%v16,0(%r4)	/* Load character-values.  */
++	vlgvf	%r4,%v17,0(%r4)
++	cr	%r3,%r4
++	je	.Lend_equal
++	lghi	%r2,1
++	lghi	%r1,-1
++	locgrl	%r2,%r1
++	br	%r14
++.Lend_equal:
++	lghi	%r2,0
++	br	%r14
++END(__wcscmp_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcscmp.c b/sysdeps/s390/multiarch/wcscmp.c
+new file mode 100644
+index 0000000..99bae4f
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscmp.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wcscmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wcscmp, wcscmp)
++
++#else
++# include <wcsmbs/wcscmp.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/s390-32/multiarch/strcmp.c b/sysdeps/s390/s390-32/multiarch/strcmp.c
+new file mode 100644
+index 0000000..1598bbc
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/strcmp.c
+@@ -0,0 +1,21 @@
++/* Multiple versions of strcmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This wrapper-file is needed, because otherwise file
++   sysdeps/s390/s390-[32|64]/strcmp.S will be used.  */
++#include <sysdeps/s390/multiarch/strcmp.c>
+diff --git a/sysdeps/s390/s390-64/multiarch/strcmp.c b/sysdeps/s390/s390-64/multiarch/strcmp.c
+new file mode 100644
+index 0000000..1598bbc
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/strcmp.c
+@@ -0,0 +1,21 @@
++/* Multiple versions of strcmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This wrapper-file is needed, because otherwise file
++   sysdeps/s390/s390-[32|64]/strcmp.S will be used.  */
++#include <sysdeps/s390/multiarch/strcmp.c>
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-19.patch b/SOURCES/glibc-rh1268008-19.patch
new file mode 100644
index 0000000..eb308c8
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-19.patch
@@ -0,0 +1,1314 @@
+From 1026f1e15a84134fd19f58c98af85ec9474f7722 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 11:21:50 +0200
+Subject: [PATCH 19/30] S390: Optimize strncmp and wcsncmp. (AND COMMON-CODE
+ WCSNCMP - picked form upstream)
+
+upstream-commit-id: cee82e70ccb7b2f054cd781b0a603ae244523e72
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00087.html
+
+common-code wcsncmp:
+upstream-commit-id: 920a0395ba9fa5949ec87aaf5daa0259da16749d
+https://www.sourceware.org/ml/libc-alpha/2015-04/msg00098.html
+
+This patch provides optimized versions of strncmp and wcsncmp with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strncmp-c.c: New File.
+	* sysdeps/s390/multiarch/strncmp-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strncmp.c: Likewise.
+	* sysdeps/s390/multiarch/wcsncmp-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcsncmp-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcsncmp.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strncmp and
+	wcsncmp functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strncmp, wcsncmp.
+	* wcsmbs/wcsncmp.c (WCSNCMP): Define and use macro.
+	* benchtests/bench-strncmp.c: Add wcsncmp support.
+	* benchtests/bench-wcsncmp.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcsncmp.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-strncmp.c               | 104 +++++++++++++-----
+ benchtests/bench-wcsncmp.c               |  20 ++++
+ localedata/tests-mbwc/dat_wcsncmp.c      |  18 ++--
+ localedata/tests-mbwc/tst_wcsncmp.c      |   2 +
+ string/strncmp.c                         |   2 +-
+ string/test-strncmp.c                    | 175 +++++++++++++++++++++---------
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strncmp-c.c       |  28 +++++
+ sysdeps/s390/multiarch/strncmp-vx.S      | 137 ++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strncmp.c         |  30 ++++++
+ sysdeps/s390/multiarch/wcsncmp-c.c       |  25 +++++
+ sysdeps/s390/multiarch/wcsncmp-vx.S      | 177 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcsncmp.c         |  27 +++++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wcsncmp-ifunc.c              |  20 ++++
+ wcsmbs/test-wcsncmp.c                    |   2 +
+ wcsmbs/wcsncmp.c                         |  41 +++----
+ 19 files changed, 716 insertions(+), 105 deletions(-)
+ create mode 100644 benchtests/bench-wcsncmp.c
+ create mode 100644 sysdeps/s390/multiarch/strncmp-c.c
+ create mode 100644 sysdeps/s390/multiarch/strncmp-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strncmp.c
+ create mode 100644 sysdeps/s390/multiarch/wcsncmp-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcsncmp-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcsncmp.c
+ create mode 100644 wcsmbs/test-wcsncmp-ifunc.c
+ create mode 100644 wcsmbs/test-wcsncmp.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index f6333eb..f6342da 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -39,7 +39,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+-		wcsncmp
++		wcsncmp wcsncmp
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-strncmp.c b/benchtests/bench-strncmp.c
+index 25df3db..496ed68 100644
+--- a/benchtests/bench-strncmp.c
++++ b/benchtests/bench-strncmp.c
+@@ -17,17 +17,66 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strncmp"
++#ifdef WIDE
++# define TEST_NAME "wcsncmp"
++#else
++# define TEST_NAME "strncmp"
++#endif /* !WIDE */
+ #include "bench-string.h"
+ 
+-typedef int (*proto_t) (const char *, const char *, size_t);
+-int simple_strncmp (const char *, const char *, size_t);
+-int stupid_strncmp (const char *, const char *, size_t);
++#ifdef WIDE
++# include <wchar.h>
++
++# define L(str) L##str
++# define STRNCMP wcsncmp
++# define SIMPLE_STRNCMP simple_wcsncmp
++# define STUPID_STRNCMP stupid_wcsncmp
++# define CHAR wchar_t
++# define CHARBYTES 4
++/* Wcsncmp uses signed semantics for comparison, not unsigned.
++   Avoid using substraction since possible overflow.  */
++int
++simple_wcsncmp (const CHAR *s1, const CHAR *s2, size_t n)
++{
++  wchar_t c1, c2;
++  while (n--)
++    {
++      c1 = *s1++;
++      c2 = *s2++;
++      if (c1 == L ('\0') || c1 != c2)
++	return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0);
++    }
++  return 0;
++}
+ 
+-IMPL (stupid_strncmp, 0)
+-IMPL (simple_strncmp, 0)
+-IMPL (strncmp, 1)
++int
++stupid_wcsncmp (const CHAR *s1, const CHAR *s2, size_t n)
++{
++  wchar_t c1, c2;
++  size_t ns1 = wcsnlen (s1, n) + 1, ns2 = wcsnlen (s2, n) + 1;
++
++  n = ns1 < n ? ns1 : n;
++  n = ns2 < n ? ns2 : n;
+ 
++  while (n--)
++    {
++      c1 = *s1++;
++      c2 = *s2++;
++      if (c1 != c2)
++	return c1 > c2 ? 1 : -1;
++    }
++  return 0;
++}
++
++#else
++# define L(str) str
++# define STRNCMP strncmp
++# define SIMPLE_STRNCMP simple_strncmp
++# define STUPID_STRNCMP stupid_strncmp
++# define CHAR char
++# define CHARBYTES 1
++
++/* Strncmp uses unsigned semantics for comparison.  */
+ int
+ simple_strncmp (const char *s1, const char *s2, size_t n)
+ {
+@@ -49,9 +98,16 @@ stupid_strncmp (const char *s1, const char *s2, size_t n)
+   while (n-- && (ret = *(unsigned char *) s1++ - * (unsigned char *) s2++) == 0);
+   return ret;
+ }
++#endif /* !WIDE */
++
++typedef int (*proto_t) (const CHAR *, const CHAR *, size_t);
++
++IMPL (STUPID_STRNCMP, 0)
++IMPL (SIMPLE_STRNCMP, 0)
++IMPL (STRNCMP, 1)
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n,
++do_one_test (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t n,
+ 	     int exp_result)
+ {
+   size_t i, iters = INNER_LOOP_ITERS;
+@@ -74,12 +130,12 @@ do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+ 	 int exp_result)
+ {
+   size_t i, align_n;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+   if (n == 0)
+     {
+-      s1 = (char*)(buf1 + page_size);
+-      s2 = (char*)(buf2 + page_size);
++      s1 = (CHAR*)(buf1 + page_size);
++      s2 = (CHAR*)(buf2 + page_size);
+       printf ("Length %4zd/%4zd:", len, n);
+ 
+       FOR_EACH_IMPL (impl, 0)
+@@ -92,16 +148,16 @@ do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+ 
+   align1 &= 15;
+   align2 &= 15;
+-  align_n = (page_size - n) & 15;
++  align_n = (page_size - n * CHARBYTES) & 15;
+ 
+-  s1 = (char*)(buf1 + page_size - n);
+-  s2 = (char*)(buf2 + page_size - n);
++  s1 = (CHAR*)(buf1 + page_size - n * CHARBYTES);
++  s2 = (CHAR*)(buf2 + page_size - n * CHARBYTES);
+ 
+   if (align1 < align_n)
+-    s1 -= (align_n - align1);
++    s1 = (CHAR *) ((char *) s1 - (align_n - align1));
+ 
+   if (align2 < align_n)
+-    s2 -= (align_n - align2);
++    s2 = (CHAR *) ((char *) s2 - (align_n - align2));
+ 
+   for (i = 0; i < n; i++)
+     s1[i] = s2[i] = 1 + 23 * i % max_char;
+@@ -129,24 +185,24 @@ do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+ 	 int exp_result)
+ {
+   size_t i;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+   if (n == 0)
+     return;
+ 
+-  align1 &= 7;
+-  if (align1 + n + 1 >= page_size)
++  align1 &= 63;
++  if (align1 + (n + 1) * CHARBYTES >= page_size)
+     return;
+ 
+   align2 &= 7;
+-  if (align2 + n + 1 >= page_size)
++  if (align2 + (n + 1) * CHARBYTES >= page_size)
+     return;
+ 
+-  s1 = (char*)(buf1 + align1);
+-  s2 = (char*)(buf2 + align2);
++  s1 = (CHAR*)(buf1 + align1);
++  s2 = (CHAR*)(buf2 + align2);
+ 
+   for (i = 0; i < n; i++)
+-    s1[i] = s2[i] = 1 + 23 * i % max_char;
++    s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char;
+ 
+   s1[n] = 24 + exp_result;
+   s2[n] = 23;
+@@ -162,7 +218,7 @@ do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+   printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2);
+ 
+   FOR_EACH_IMPL (impl, 0)
+-    do_one_test (impl, (char*)s1, (char*)s2, n, exp_result);
++    do_one_test (impl, s1, s2, n, exp_result);
+ 
+   putchar ('\n');
+ }
+diff --git a/benchtests/bench-wcsncmp.c b/benchtests/bench-wcsncmp.c
+new file mode 100644
+index 0000000..8720060
+--- /dev/null
++++ b/benchtests/bench-wcsncmp.c
+@@ -0,0 +1,20 @@
++/* Measure wcsncmp functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strncmp.c"
+diff --git a/localedata/tests-mbwc/dat_wcsncmp.c b/localedata/tests-mbwc/dat_wcsncmp.c
+index 167ce48..f468a8b 100644
+--- a/localedata/tests-mbwc/dat_wcsncmp.c
++++ b/localedata/tests-mbwc/dat_wcsncmp.c
+@@ -33,7 +33,7 @@ TST_WCSNCMP tst_wcsncmp_loc [] = {
+       },
+       { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+ 		     { 0x0000,0x00D2,0x00D3,0x0000 }, 3 },  /* #06 */
+-	/*expect*/ { 0,1,0x00D1,			},
++	/*expect*/ { 0,1,1,			},
+       },
+       { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+ 		     { 0x00D1,0x00D2,0x00D9,0x0000 }, 2 },  /* #07 */
+@@ -41,11 +41,11 @@ TST_WCSNCMP tst_wcsncmp_loc [] = {
+       },
+       { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+ 		     { 0x00D1,0x00D2,0x00D9,0x0000 }, 3 },  /* #08 */
+-	/*expect*/ { 0,1,-0x0006,			},
++	/*expect*/ { 0,1,-1,			},
+       },
+       { /*input.*/ { { 0x00D1,0x00D2,0x00D3,0x0000 },
+ 		     { 0x00D1,0x00D2,0x0000	   }, 4 },  /* #09 */
+-	/*expect*/ { 0,1,0x00D3,			},
++	/*expect*/ { 0,1,1,			},
+       },
+       { .is_last = 1 }
+     }
+@@ -75,7 +75,7 @@ TST_WCSNCMP tst_wcsncmp_loc [] = {
+       },
+       { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+ 		     { 0x0000,0x0042,0x0043,0x0000 }, 3 },  /* #06 */
+-	/*expect*/ { 0,1,0x0041,			},
++	/*expect*/ { 0,1,1,			},
+       },
+       { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+ 		     { 0x0041,0x0042,0x0049,0x0000 }, 2 },  /* #07 */
+@@ -83,11 +83,11 @@ TST_WCSNCMP tst_wcsncmp_loc [] = {
+       },
+       { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+ 		     { 0x0041,0x0042,0x0049,0x0000 }, 3 },  /* #08 */
+-	/*expect*/ { 0,1,-0x0006,			},
++	/*expect*/ { 0,1,-1,			},
+       },
+       { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 },
+ 		     { 0x0041,0x0042,0x0000	   }, 4 },  /* #09 */
+-	/*expect*/ { 0,1,0x0043,			},
++	/*expect*/ { 0,1,1,			},
+       },
+       { .is_last = 1 }
+     }
+@@ -117,7 +117,7 @@ TST_WCSNCMP tst_wcsncmp_loc [] = {
+       },
+       { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+ 		     { 0x0000,0x3042,0x3043,0x0000 }, 3 },  /* #06 */
+-	/*expect*/ { 0,1,0x3041,			},
++	/*expect*/ { 0,1,1,			},
+       },
+       { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+ 		     { 0x3041,0x3042,0x3049,0x0000 }, 2 },  /* #07 */
+@@ -125,11 +125,11 @@ TST_WCSNCMP tst_wcsncmp_loc [] = {
+       },
+       { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+ 		     { 0x3041,0x3042,0x3049,0x0000 }, 3 },  /* #08 */
+-	/*expect*/ { 0,1,-0x0006,			},
++	/*expect*/ { 0,1,-1,			},
+       },
+       { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 },
+ 		     { 0x3041,0x3042,0x0000	   }, 4 },  /* #09 */
+-	/*expect*/ { 0,1,0x3043,			},
++	/*expect*/ { 0,1,1,			},
+       },
+       { .is_last = 1 }
+     }
+diff --git a/localedata/tests-mbwc/tst_wcsncmp.c b/localedata/tests-mbwc/tst_wcsncmp.c
+index d046ecd..e378efb 100644
+--- a/localedata/tests-mbwc/tst_wcsncmp.c
++++ b/localedata/tests-mbwc/tst_wcsncmp.c
+@@ -24,6 +24,8 @@ tst_wcsncmp (FILE * fp, int debug_flg)
+       ws2 = TST_INPUT (wcsncmp).ws2;
+       n = TST_INPUT (wcsncmp).n;
+       ret = wcsncmp (ws1, ws2, n);
++      ret = (ret > 0 ? 1 : ret < 0 ? -1 : 0);
++
+ 
+       if (debug_flg)
+ 	{
+diff --git a/string/strncmp.c b/string/strncmp.c
+index d79305a..bd52138 100644
+--- a/string/strncmp.c
++++ b/string/strncmp.c
+@@ -21,7 +21,7 @@
+ #undef strncmp
+ 
+ #ifndef STRNCMP
+-#define STRNCMP strncmp
++# define STRNCMP strncmp
+ #endif
+ 
+ /* Compare no more than N characters of S1 and S2,
+diff --git a/string/test-strncmp.c b/string/test-strncmp.c
+index 7169593..950bf24 100644
+--- a/string/test-strncmp.c
++++ b/string/test-strncmp.c
+@@ -1,5 +1,5 @@
+ /* Test and measure strncmp functions.
+-   Copyright (C) 1999-2012 Free Software Foundation, Inc.
++   Copyright (C) 1999-2015 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+    Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+ 
+@@ -18,18 +18,82 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strncmp"
++#ifdef WIDE
++# define TEST_NAME "wcsncmp"
++#else
++# define TEST_NAME "strncmp"
++#endif
+ #include "test-string.h"
+ 
+-typedef int (*proto_t) (const char *, const char *, size_t);
+-int simple_strncmp (const char *, const char *, size_t);
+-int stupid_strncmp (const char *, const char *, size_t);
++#ifdef WIDE
++# include <wchar.h>
++
++# define L(str) L##str
++# define STRNCMP wcsncmp
++# define STRCPY wcscpy
++# define STRDUP wcsdup
++# define MEMCPY wmemcpy
++# define SIMPLE_STRNCMP simple_wcsncmp
++# define STUPID_STRNCMP stupid_wcsncmp
++# define CHAR wchar_t
++# define UCHAR wchar_t
++# define CHARBYTES 4
++# define CHAR__MAX WCHAR_MAX
++# define CHAR__MIN WCHAR_MIN
++
++/* Wcsncmp uses signed semantics for comparison, not unsigned.
++   Avoid using substraction since possible overflow */
++int
++simple_wcsncmp (const CHAR *s1, const CHAR *s2, size_t n)
++{
++  wchar_t c1, c2;
++
++  while (n--)
++    {
++      c1 = *s1++;
++      c2 = *s2++;
++      if (c1 == L('\0') || c1 != c2)
++	return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0);
++    }
++  return 0;
++}
+ 
+-IMPL (stupid_strncmp, 0)
+-IMPL (simple_strncmp, 0)
+-IMPL (strncmp, 1)
+ 
+ int
++stupid_wcsncmp (const CHAR *s1, const CHAR *s2, size_t n)
++{
++  wchar_t c1, c2;
++  size_t ns1 = wcsnlen (s1, n) + 1, ns2 = wcsnlen (s2, n) + 1;
++
++  n = ns1 < n ? ns1 : n;
++  n = ns2 < n ? ns2 : n;
++
++  while (n--)
++    {
++      c1 = *s1++;
++      c2 = *s2++;
++      if (c1 != c2)
++	return c1 > c2 ? 1 : -1;
++    }
++  return 0;
++}
++
++#else
++# define L(str) str
++# define STRNCMP strncmp
++# define STRCPY strcpy
++# define STRDUP strdup
++# define MEMCPY memcpy
++# define SIMPLE_STRNCMP simple_strncmp
++# define STUPID_STRNCMP stupid_strncmp
++# define CHAR char
++# define UCHAR unsigned char
++# define CHARBYTES 1
++# define CHAR__MAX CHAR_MAX
++# define CHAR__MIN CHAR_MIN
++
++/* Strncmp uses unsigned semantics for comparison. */
++int
+ simple_strncmp (const char *s1, const char *s2, size_t n)
+ {
+   int ret = 0;
+@@ -50,9 +114,16 @@ stupid_strncmp (const char *s1, const char *s2, size_t n)
+   while (n-- && (ret = *(unsigned char *) s1++ - * (unsigned char *) s2++) == 0);
+   return ret;
+ }
++#endif
++
++typedef int (*proto_t) (const CHAR *, const CHAR *, size_t);
++
++IMPL (STUPID_STRNCMP, 0)
++IMPL (SIMPLE_STRNCMP, 0)
++IMPL (STRNCMP, 1)
+ 
+ static int
+-check_result (impl_t *impl, const char *s1, const char *s2, size_t n,
++check_result (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t n,
+ 	     int exp_result)
+ {
+   int result = CALL (impl, s1, s2, n);
+@@ -70,7 +141,7 @@ check_result (impl_t *impl, const char *s1, const char *s2, size_t n,
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n,
++do_one_test (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t n,
+ 	     int exp_result)
+ {
+   if (check_result (impl, s1, s2, n, exp_result) < 0)
+@@ -82,12 +153,12 @@ do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+ 	 int exp_result)
+ {
+   size_t i, align_n;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+   if (n == 0)
+     {
+-      s1 = (char*)(buf1 + page_size);
+-      s2 = (char*)(buf2 + page_size);
++      s1 = (CHAR*) (buf1 + page_size);
++      s2 = (CHAR*) (buf2 + page_size);
+ 
+       FOR_EACH_IMPL (impl, 0)
+ 	do_one_test (impl, s1, s2, n, 0);
+@@ -97,16 +168,16 @@ do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+ 
+   align1 &= 15;
+   align2 &= 15;
+-  align_n = (page_size - n) & 15;
++  align_n = (page_size - n * CHARBYTES) & 15;
+ 
+-  s1 = (char*)(buf1 + page_size - n);
+-  s2 = (char*)(buf2 + page_size - n);
++  s1 = (CHAR*) (buf1 + page_size - n * CHARBYTES);
++  s2 = (CHAR*) (buf2 + page_size - n * CHARBYTES);
+ 
+   if (align1 < align_n)
+-    s1 -= (align_n - align1);
++    s1 = (CHAR *) ((char *) s1 - (align_n - align1));
+ 
+   if (align2 < align_n)
+-    s2 -= (align_n - align2);
++    s2 = (CHAR *) ((char *) s2 - (align_n - align2));
+ 
+   for (i = 0; i < n; i++)
+     s1[i] = s2[i] = 1 + 23 * i % max_char;
+@@ -130,24 +201,24 @@ do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+ 	 int exp_result)
+ {
+   size_t i;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+   if (n == 0)
+     return;
+ 
+-  align1 &= 7;
+-  if (align1 + n + 1 >= page_size)
++  align1 &= 63;
++  if (align1 + (n + 1) * CHARBYTES >= page_size)
+     return;
+ 
+   align2 &= 7;
+-  if (align2 + n + 1 >= page_size)
++  if (align2 + (n + 1) * CHARBYTES >= page_size)
+     return;
+ 
+-  s1 = (char*)(buf1 + align1);
+-  s2 = (char*)(buf2 + align2);
++  s1 = (CHAR*) (buf1 + align1);
++  s2 = (CHAR*) (buf2 + align2);
+ 
+   for (i = 0; i < n; i++)
+-    s1[i] = s2[i] = 1 + 23 * i % max_char;
++    s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char;
+ 
+   s1[n] = 24 + exp_result;
+   s2[n] = 23;
+@@ -161,19 +232,20 @@ do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+     s2[n - 1] -= exp_result;
+ 
+   FOR_EACH_IMPL (impl, 0)
+-    do_one_test (impl, (char*)s1, (char*)s2, n, exp_result);
++    do_one_test (impl, s1, s2, n, exp_result);
+ }
+ 
+ static void
+-do_page_test (size_t offset1, size_t offset2, char *s2)
++do_page_test (size_t offset1, size_t offset2, CHAR *s2)
+ {
+-  char *s1;
++  CHAR *s1;
+   int exp_result;
+ 
+-  if (offset1 >= page_size || offset2 >= page_size)
++  if (offset1 * CHARBYTES >= page_size || offset2 * CHARBYTES >= page_size)
+     return;
+ 
+-  s1 = (char *) (buf1 + offset1);
++  s1 = (CHAR *) buf1;
++  s1 += offset1;
+   s2 += offset2;
+ 
+   exp_result= *s1;
+@@ -191,8 +263,8 @@ do_random_tests (void)
+   size_t i, j, n, align1, align2, pos, len1, len2, size;
+   int result;
+   long r;
+-  unsigned char *p1 = buf1 + page_size - 512;
+-  unsigned char *p2 = buf2 + page_size - 512;
++  UCHAR *p1 = (UCHAR *) (buf1 + page_size - 512 * CHARBYTES);
++  UCHAR *p2 = (UCHAR *) (buf2 + page_size - 512 * CHARBYTES);
+ 
+   for (n = 0; n < ITERATIONS; n++)
+     {
+@@ -240,7 +312,7 @@ do_random_tests (void)
+ 	}
+ 
+       result = 0;
+-      memcpy (p2 + align2, p1 + align1, pos);
++      MEMCPY (p2 + align2, p1 + align1, pos);
+       if (pos < len1)
+ 	{
+ 	  if (p2[align2 + pos] == p1[align1 + pos])
+@@ -263,7 +335,7 @@ do_random_tests (void)
+ 
+       FOR_EACH_IMPL (impl, 1)
+ 	{
+-	  r = CALL (impl, (char*)(p1 + align1), (char*)(p2 + align2), size);
++	  r = CALL (impl, (CHAR *)(p1 + align1), (CHAR *)(p2 + align2), size);
+ 	  /* Test whether on 64-bit architectures where ABI requires
+ 	     callee to promote has the promotion been done.  */
+ 	  asm ("" : "=g" (r) : "0" (r));
+@@ -282,19 +354,26 @@ do_random_tests (void)
+ static void
+ check1 (void)
+ {
+-  char *s1 = (char *)(buf1 + 0xb2c);
+-  char *s2 = (char *)(buf1 + 0xfd8);
+-  size_t i;
++  CHAR *s1 = (CHAR *)(buf1 + 0xb2c);
++  CHAR *s2 = (CHAR *)(buf1 + 0xfd8);
++  size_t i, offset;
+   int exp_result;
+ 
+-  strcpy(s1, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrs");
+-  strcpy(s2, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkLMNOPQRSTUV");
++  strcpy(s1, L("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrs"));
++  strcpy(s2, L("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkLMNOPQRSTUV"));
++
++  /* Check possible overflow bug for wcsncmp */
++  s1[4] = CHAR__MAX;
++  s2[4] = CHAR__MIN;
+ 
+-  for (i = 0; i < 80; i++)
++  for (offset = 0; offset < 6; offset++)
+     {
+-      exp_result = simple_strncmp (s1, s2, i);
+-      FOR_EACH_IMPL (impl, 0)
+-	 check_result (impl, s1, s2, i, exp_result);
++      for (i = 0; i < 80; i++)
++	{
++	  exp_result = SIMPLE_STRNCMP (s1 + offset, s2 + offset, i);
++	  FOR_EACH_IMPL (impl, 0)
++	    check_result (impl, s1 + offset, s2 + offset, i, exp_result);
++	}
+     }
+ }
+ 
+@@ -302,17 +381,17 @@ static void
+ check2 (void)
+ {
+   size_t i;
+-  char *s1, *s2;
++  CHAR *s1, *s2;
+ 
+-  s1 = (char *) buf1;
+-  for (i = 0; i < page_size - 1; i++)
++  s1 = (CHAR *) buf1;
++  for (i = 0; i < (page_size / CHARBYTES) - 1; i++)
+     s1[i] = 23;
+   s1[i] = 0;
+ 
+-  s2 = strdup (s1);
++  s2 = STRDUP (s1);
+ 
+   for (i = 0; i < 64; ++i)
+-    do_page_test (3990 + i, 2635, s2);
++    do_page_test ((3988 / CHARBYTES) + i, (2636 / CHARBYTES), s2);
+ 
+   free (s2);
+ }
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index d8fbd55..d77bee5 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -7,7 +7,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   stpncpy stpncpy-vx stpncpy-c \
+ 		   strcat strcat-vx strcat-c \
+ 		   strncat strncat-vx strncat-c \
+-		   strcmp strcmp-vx
++		   strcmp strcmp-vx \
++		   strncmp strncmp-vx strncmp-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -19,5 +20,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcpncpy wcpncpy-vx wcpncpy-c \
+ 		   wcscat wcscat-vx wcscat-c \
+ 		   wcsncat wcsncat-vx wcsncat-c \
+-		   wcscmp wcscmp-vx wcscmp-c
++		   wcscmp wcscmp-vx wcscmp-c \
++		   wcsncmp wcsncmp-vx wcsncmp-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index 196d3ec..5bfc493 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -106,6 +106,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strcmp);
+   IFUNC_VX_IMPL (wcscmp);
+ 
++  IFUNC_VX_IMPL (strncmp);
++  IFUNC_VX_IMPL (wcsncmp);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strncmp-c.c b/sysdeps/s390/multiarch/strncmp-c.c
+new file mode 100644
+index 0000000..75da859
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strncmp-c.c
+@@ -0,0 +1,28 @@
++/* Default strncmp implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRNCMP  __strncmp_c
++# ifdef SHARED
++#  undef libc_hidden_builtin_def
++#  define libc_hidden_builtin_def(name)			\
++  __hidden_ver1 (__strncmp_c, __GI_strncmp, __strncmp_c);
++# endif /* SHARED */
++
++# include <string/strncmp.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strncmp-vx.S b/sysdeps/s390/multiarch/strncmp-vx.S
+new file mode 100644
+index 0000000..36e99b8
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strncmp-vx.S
+@@ -0,0 +1,137 @@
++/* Vector optimized 32/64 bit S/390 version of strncmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* int strncmp (const char *s1, const char *s2, size_t n)
++   Compare at most n characters of two strings.
++
++   Register usage:
++   -r0=tmp
++   -r1=tmp
++   -r2=s1
++   -r3=s2
++   -r4=n
++   -r5=current_len
++   -v16=part of s1
++   -v17=part of s2
++   -v18=index of unequal
++*/
++ENTRY(__strncmp_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgije	%r4,0,.Lend_equal /* Nothing to do if n == 0,  */
++	lghi	%r5,0		/* current_len = 0.  */
++
++.Lloop:
++	vlbb	%v16,0(%r5,%r2),6 /* Load s1 to block boundary.  */
++	vlbb	%v17,0(%r5,%r3),6 /* Load s2 to block boundary.  */
++	lcbb	%r0,0(%r5,%r2),6 /* Get loaded byte count of s1.  */
++	jo	.Llt16_1	/* Jump away if vr is not fully loaded.  */
++	lcbb	%r1,0(%r5,%r3),6 /* Get loaded byte count of s2.  */
++	jo	.Llt16_2	/* Jump away if vr is not fully loaded.  */
++	aghi	%r5,16		/* Both vrs are fully loaded.  */
++	clgrjhe	%r5,%r4,.Llastcmp /* If current_len >= n ->last compare.  */
++	vfenezbs %v18,%v16,%v17	/* Compare not equal with zero search.  */
++	jno	.Lfound
++
++	vlbb	%v16,0(%r5,%r2),6
++	vlbb	%v17,0(%r5,%r3),6
++	lcbb	%r0,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r1,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	clgrjhe	%r5,%r4,.Llastcmp
++	vfenezbs %v18,%v16,%v17
++	jno	.Lfound
++
++	vlbb	%v16,0(%r5,%r2),6
++	vlbb	%v17,0(%r5,%r3),6
++	lcbb	%r0,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r1,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	clgrjhe	%r5,%r4,.Llastcmp
++	vfenezbs %v18,%v16,%v17
++	jno	.Lfound
++
++	vlbb	%v16,0(%r5,%r2),6
++	vlbb	%v17,0(%r5,%r3),6
++	lcbb	%r0,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r1,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	clgrjhe	%r5,%r4,.Llastcmp
++	vfenezbs %v18,%v16,%v17
++	jno	.Lfound
++	j	.Lloop
++
++.Llt16_1:
++	lcbb	%r1,0(%r5,%r3),6 /* Get loaded byte count ofs2.  */
++.Llt16_2:
++	clr	%r0,%r1		/* Compare logical.  */
++	locrh	%r0,%r1		/* Compute minimum of bytes loaded.  */
++	algfr	%r5,%r0		/* Add smallest loaded bytes to current_len.  */
++	clgrj	%r5,%r4,10,.Llastcmp /* If current_len >= n ->last compare.  */
++	vfenezbs %v18,%v16,%v17	/* Compare not equal with zero search.  */
++	vlgvb	%r1,%v18,7	/* Get not equal index or 16 if all equal.  */
++	clrjl	%r1,%r0,.Lfound /* Jump away if miscompare is within
++				    loaded bytes (index < loaded-bytes) */
++	j	.Lloop
++
++.Llastcmp:
++	/* Use comparision result only if located within first n characters.
++	   %r0: loaded byte count in vreg;
++	   %r5: current_len;
++	   %r4: n;
++	   (current_len - n): [0...16[
++	   First ignored match index: loaded bytes - (current_len-n): ]0...16]
++	*/
++	slgr	%r5,%r4		/* %r5 = current_len - n.  */
++	slr	%r0,%r5		/* %r0 = first ignored match index.  */
++	vfenezbs %v18,%v16,%v17	/* Compare not equal with zero search.  */
++	vlgvb	%r1,%v18,7	/* Get not equal index or 16 if all equal.  */
++	clrjl	%r1,%r0,.Lfound /* Jump away if miscompare is within
++				    loaded bytes and below n bytes.  */
++	j	.Lend_equal	/* Miscompare after n-bytes -> end equal.  */
++
++.Lfound:
++	/* Difference or end of string.  */
++	je	.Lend_equal
++	lghi	%r2,1
++	lghi	%r1,-1
++	locgrl	%r2,%r1
++	br	%r14
++.Lend_equal:
++	lghi	%r2,0
++	br	%r14
++END(__strncmp_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strncmp.c b/sysdeps/s390/multiarch/strncmp.c
+new file mode 100644
+index 0000000..1e1e05a
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strncmp.c
+@@ -0,0 +1,30 @@
++/* Multiple versions of strncmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++
++# undef strcmp
++extern __typeof (strncmp) __strncmp;
++s390_vx_libc_ifunc2 (__strncmp, strncmp)
++
++#else
++# include <string/strncmp.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcsncmp-c.c b/sysdeps/s390/multiarch/wcsncmp-c.c
+new file mode 100644
+index 0000000..058cd0c
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsncmp-c.c
+@@ -0,0 +1,25 @@
++/* Default wcsncmp implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSNCMP  __wcsncmp_c
++
++# include <wchar.h>
++extern __typeof (wcsncmp) __wcsncmp_c;
++# include <wcsmbs/wcsncmp.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcsncmp-vx.S b/sysdeps/s390/multiarch/wcsncmp-vx.S
+new file mode 100644
+index 0000000..9a44424
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsncmp-vx.S
+@@ -0,0 +1,177 @@
++/* Vector optimized 32/64 bit S/390 version of wcsncmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* int wcsncmp (const wchar_t *s1, const wchar_t *s2, size_t n)
++   Compare at most n characters of two strings.
++
++   Register usage:
++   -r0=tmp
++   -r1=tmp
++   -r2=s1
++   -r3=s2
++   -r4=n
++   -r5=current_len
++   -v16=part of s1
++   -v17=part of s2
++   -v18=index of unequal
++*/
++ENTRY(__wcsncmp_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgije	%r4,0,.Lend_equal /* Nothing to do if n == 0.  */
++
++	/* Check range of n and convert to byte-count.  */
++# ifdef __s390x__
++	tmhh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	lghi	%r1,-4		/* Max byte-count is 18446744073709551612.  */
++# else
++	tmlh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	llilf	%r1,4294967292	/* Max byte-count is 4294967292.  */
++# endif /* !__s390x__ */
++	sllg	%r4,%r4,2	/* Convert character-count to byte-count.  */
++	locgrne	%r4,%r1		/* Use max byte-count, if bit 0/1 was one.  */
++
++	/* Check first character without vector load.  */
++	lghi	%r5,4		/* current_len = 4 bytes.  */
++	/* Check s1/2[0].  */
++	lt	%r0,0(%r2)
++	l	%r1,0(%r3)
++	je	.Lend_cmp_one_char
++	crjne	%r0,%r1,.Lend_cmp_one_char
++
++.Lloop:
++	vlbb	%v17,0(%r5,%r3),6 /* Load s2 to block boundary.  */
++	vlbb	%v16,0(%r5,%r2),6 /* Load s1 to block boundary.  */
++	lcbb	%r0,0(%r5,%r2),6 /* Get loaded byte count of s1.  */
++	jo	.Llt16_1	/* Jump away if vector not fully loaded.  */
++	lcbb	%r1,0(%r5,%r3),6 /* Get loaded byte count of s2.  */
++	jo	.Llt16_2	/* Jump away if vector not fully loaded.  */
++	aghi	%r5,16		/* Both vectors are fully loaded.  */
++	vfenezfs %v18,%v16,%v17	/* Compare not equal with zero search.  */
++	clgrjhe	%r5,%r4,.Llastcmp /* If current_len >= n ->last compare.  */
++	jno	.Lfound
++
++	vlbb	%v17,0(%r5,%r3),6
++	vlbb	%v16,0(%r5,%r2),6
++	lcbb	%r0,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r1,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	vfenezfs %v18,%v16,%v17
++	clgrjhe	%r5,%r4,.Llastcmp
++	jno	.Lfound
++
++	vlbb	%v17,0(%r5,%r3),6
++	vlbb	%v16,0(%r5,%r2),6
++	lcbb	%r0,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r1,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	vfenezfs %v18,%v16,%v17
++	clgrjhe	%r5,%r4,.Llastcmp
++	jno	.Lfound
++
++	vlbb	%v17,0(%r5,%r3),6
++	vlbb	%v16,0(%r5,%r2),6
++	lcbb	%r0,0(%r5,%r2),6
++	jo	.Llt16_1
++	lcbb	%r1,0(%r5,%r3),6
++	jo	.Llt16_2
++	aghi	%r5,16
++	vfenezfs %v18,%v16,%v17
++	clgrjhe	%r5,%r4,.Llastcmp
++	jno	.Lfound
++
++	j	.Lloop
++
++.Llt16_1:
++	lcbb	%r1,0(%r5,%r3),6 /* Get loaded byte count of s2.  */
++.Llt16_2:
++	clr	%r0,%r1		/* Compare logical.  */
++	locrh	%r0,%r1		/* Compute minimum of bytes loaded.  */
++	nill	%r0,65532	/* Align bytes loaded to full characters.  */
++	jz	.Lcmp_one_char	/* Jump away if no full char is available.  */
++.Llt_cmp:
++	algfr	%r5,%r0		/* Add smallest loaded bytes to current_len.  */
++	vfenezfs %v18,%v16,%v17	/* Compare not equal with zero search.  */
++	clgrj	%r5,%r4,10,.Llastcmp /* If current_len >= n -> last compare  */
++	vlgvb	%r1,%v18,7	/* Get not equal index or 16 if all equal.  */
++	clrjl	%r1,%r0,.Lfound /* Jump away if miscompare is within
++				   loaded bytes; (index < loaded-bytes) */
++	j	.Lloop
++
++.Lcmp_one_char:
++	/* At least one of both strings is not 4-byte aligned
++	   and there is no full character before next block-boundary.
++	   Compare one character to get over the boundary and
++	   proceed with normal loop!  */
++	vlef	%v16,0(%r5,%r2),0 /* Load one character.  */
++	lghi	%r0,4		/* Loaded byte count is 4.  */
++	vlef	%v17,0(%r5,%r3),0
++	j	.Llt_cmp	/* Proceed with comparision.  */
++
++.Llastcmp:
++	/* Use comparision result only if located within first n characters.
++	   %r0: loaded byte count in vreg;
++	   %r5: current_len;
++	   %r4: n;
++	   (current_len - n): [0...16[
++	   First ignored match index: loaded bytes - (current_len-n): ]0...16]
++	*/
++	slgr	%r5,%r4		/* %r5 = current_len - n.  */
++	slr	%r0,%r5		/* %r0 = first ignored match index.  */
++	vlgvb	%r4,%v18,7	/* Get not equal index or 16 if all equal.  */
++	clrjl	%r4,%r0,.Lfound2 /* Jump away if miscompare is within
++				     loaded bytes and below n bytes.  */
++.Lend_equal:
++	lghi	%r2,0
++	br	%r14
++
++.Lfound:
++	/* Difference or end of string.  */
++	/* vfenezf found an unequal element or zero.
++	   This instruction compares unsigned words, but wchar_t is signed.
++	   Thus we have to compare the found element again.  */
++	vlgvb	%r4,%v18,7	/* Extract not equal byte-index.  */
++.Lfound2:
++	srl	%r4,2		/* And convert it to character-index.  */
++	vlgvf	%r0,%v16,0(%r4)	/* Load character-values.  */
++	vlgvf	%r1,%v17,0(%r4)
++.Lend_cmp_one_char:
++	cr	%r0,%r1
++	je	.Lend_equal
++	lghi	%r2,1
++	lghi	%r1,-1
++	locgrl	%r2,%r1
++	br	%r14
++END(__wcsncmp_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcsncmp.c b/sysdeps/s390/multiarch/wcsncmp.c
+new file mode 100644
+index 0000000..0d79661
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsncmp.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wcsncmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wcsncmp, wcsncmp)
++
++#else
++# include <wcsmbs/wcsncmp.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index 44b1502..611b2c9 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -41,7 +41,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    isoc99_swscanf isoc99_vswscanf \
+ 	    mbrtoc16 c16rtomb
+ 
+-strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
++strop-tests :=  wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+ 		wcpcpy wcsncpy wcpncpy wcscat wcsncat
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+diff --git a/wcsmbs/test-wcsncmp-ifunc.c b/wcsmbs/test-wcsncmp-ifunc.c
+new file mode 100644
+index 0000000..35176f0
+--- /dev/null
++++ b/wcsmbs/test-wcsncmp-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcsncmp function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcsncmp.c"
+diff --git a/wcsmbs/test-wcsncmp.c b/wcsmbs/test-wcsncmp.c
+new file mode 100644
+index 0000000..07757d8
+--- /dev/null
++++ b/wcsmbs/test-wcsncmp.c
+@@ -0,0 +1,2 @@
++#define WIDE 1
++#include "../string/test-strncmp.c"
+diff --git a/wcsmbs/wcsncmp.c b/wcsmbs/wcsncmp.c
+index 7f1704f..1522b6f 100644
+--- a/wcsmbs/wcsncmp.c
++++ b/wcsmbs/wcsncmp.c
+@@ -18,53 +18,56 @@
+ 
+ #include <wchar.h>
+ 
++#ifndef WCSNCMP
++# define WCSNCMP wcsncmp
++#endif
+ 
+ /* Compare no more than N characters of S1 and S2,
+    returning less than, equal to or greater than zero
+    if S1 is lexicographically less than, equal to or
+    greater than S2.  */
+ int
+-wcsncmp (s1, s2, n)
++WCSNCMP (s1, s2, n)
+      const wchar_t *s1;
+      const wchar_t *s2;
+      size_t n;
+ {
+-  wint_t c1 = L'\0';
+-  wint_t c2 = L'\0';
++  wchar_t c1 = L'\0';
++  wchar_t c2 = L'\0';
+ 
+   if (n >= 4)
+     {
+       size_t n4 = n >> 2;
+       do
+ 	{
+-	  c1 = (wint_t) *s1++;
+-	  c2 = (wint_t) *s2++;
++	  c1 = *s1++;
++	  c2 = *s2++;
+ 	  if (c1 == L'\0' || c1 != c2)
+-	    return c1 - c2;
+-	  c1 = (wint_t) *s1++;
+-	  c2 = (wint_t) *s2++;
++	    return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0);
++	  c1 = *s1++;
++	  c2 = *s2++;
+ 	  if (c1 == L'\0' || c1 != c2)
+-	    return c1 - c2;
+-	  c1 = (wint_t) *s1++;
+-	  c2 = (wint_t) *s2++;
++	    return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0);
++	  c1 = *s1++;
++	  c2 = *s2++;
+ 	  if (c1 == L'\0' || c1 != c2)
+-	    return c1 - c2;
+-	  c1 = (wint_t) *s1++;
+-	  c2 = (wint_t) *s2++;
++	    return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0);
++	  c1 = *s1++;
++	  c2 = *s2++;
+ 	  if (c1 == L'\0' || c1 != c2)
+-	    return c1 - c2;
++	    return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0);
+ 	} while (--n4 > 0);
+       n &= 3;
+     }
+ 
+   while (n > 0)
+     {
+-      c1 = (wint_t) *s1++;
+-      c2 = (wint_t) *s2++;
++      c1 = *s1++;
++      c2 = *s2++;
+       if (c1 == L'\0' || c1 != c2)
+-	return c1 - c2;
++	return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0);
+       n--;
+     }
+ 
+-  return c1 - c2;
++  return 0;
+ }
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-2.patch b/SOURCES/glibc-rh1268008-2.patch
new file mode 100644
index 0000000..4eeb4b2
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-2.patch
@@ -0,0 +1,53 @@
+From 0d53b09f7052ae07d4e1dd96908a406d7841eab2 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:28:40 +0200
+Subject: [PATCH 02/30] S/390: Use attribute_hidden in ifunc-resolve.c
+
+upstream-commit-id: 5f67c04f5e076d3cfc4d810e7f5d65ce1788b749
+https://sourceware.org/ml/libc-alpha/2013-03/msg00085.html
+
+This patch is needed to prepare for the optimized string function patchset.
+Make the declarations of the optimized functions hidden in order to prevent
+GOT slots being generated for them.
+---
+ sysdeps/s390/s390-32/multiarch/ifunc-resolve.c | 6 +++---
+ sysdeps/s390/s390-64/multiarch/ifunc-resolve.c | 6 +++---
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c b/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
+index f1bf8a3..42ca8da 100644
+--- a/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
++++ b/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
+@@ -34,9 +34,9 @@
+ 									\
+   /* Make the declarations of the optimized functions hidden in order
+      to prevent GOT slots being generated for them. */			\
+-  extern __attribute__((visibility("hidden"))) void *FUNC##_z196;	\
+-  extern __attribute__((visibility("hidden"))) void *FUNC##_z10;	\
+-  extern __attribute__((visibility("hidden"))) void *FUNC##_g5;		\
++  extern void *FUNC##_z196 attribute_hidden;				\
++  extern void *FUNC##_z10 attribute_hidden;				\
++  extern void *FUNC##_g5 attribute_hidden;				\
+ 									\
+   void *resolve_##FUNC (unsigned long int dl_hwcap)			\
+   {									\
+diff --git a/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c b/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
+index 5f56764..8db2c38 100644
+--- a/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
++++ b/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
+@@ -34,9 +34,9 @@
+ 									\
+   /* Make the declarations of the optimized functions hidden in order
+      to prevent GOT slots being generated for them. */			\
+-  extern __attribute__((visibility("hidden"))) void *FUNC##_z196;	\
+-  extern __attribute__((visibility("hidden"))) void *FUNC##_z10;	\
+-  extern __attribute__((visibility("hidden"))) void *FUNC##_z900;	\
++  extern void *FUNC##_z196 attribute_hidden;				\
++  extern void *FUNC##_z10 attribute_hidden;				\
++  extern void *FUNC##_z900 attribute_hidden;				\
+ 									\
+   void *resolve_##FUNC (unsigned long int dl_hwcap)			\
+   {									\
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-20.patch b/SOURCES/glibc-rh1268008-20.patch
new file mode 100644
index 0000000..917dc1d
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-20.patch
@@ -0,0 +1,500 @@
+From 0b3ff29b298c488ab995d4224da2cc36fb56ddce Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 11:25:00 +0200
+Subject: [PATCH 20/30] S390: Optimize strchr and wcschr.
+
+upstream-commit-id: cf150d45a97c6bb8410d6d3acf6e1560e8fe96cc
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00094.html
+
+This patch provides optimized versions of strchr and wcschr with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strchr-c.c: New File.
+	* sysdeps/s390/multiarch/strchr-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strchr.c: Likewise.
+	* sysdeps/s390/multiarch/wcschr-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcschr-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcschr.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strchr and
+	wcschr functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strchr, wcschr.
+	* string/strchr.c (STRCHR): Define and use macro.
+	* benchtests/bench-wcschr.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcschr.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-wcschr.c                |  20 ++++++
+ string/strchr.c                          |   8 ++-
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strchr-c.c        |  29 +++++++++
+ sysdeps/s390/multiarch/strchr-vx.S       | 100 ++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strchr.c          |  28 +++++++++
+ sysdeps/s390/multiarch/wcschr-c.c        |  31 ++++++++++
+ sysdeps/s390/multiarch/wcschr-vx.S       | 103 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcschr.c          |  27 ++++++++
+ 11 files changed, 351 insertions(+), 6 deletions(-)
+ create mode 100644 benchtests/bench-wcschr.c
+ create mode 100644 sysdeps/s390/multiarch/strchr-c.c
+ create mode 100644 sysdeps/s390/multiarch/strchr-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strchr.c
+ create mode 100644 sysdeps/s390/multiarch/wcschr-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcschr-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcschr.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index f6342da..bcb0288 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -39,7 +39,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+-		wcsncmp wcsncmp
++		wcsncmp wcsncmp wcschr
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-wcschr.c b/benchtests/bench-wcschr.c
+new file mode 100644
+index 0000000..4287724
+--- /dev/null
++++ b/benchtests/bench-wcschr.c
+@@ -0,0 +1,20 @@
++/* Measure wcschr functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strchr.c"
+diff --git a/string/strchr.c b/string/strchr.c
+index 9d18b7e..69a9cd9 100644
+--- a/string/strchr.c
++++ b/string/strchr.c
+@@ -27,11 +27,13 @@
+ 
+ #undef strchr
+ 
++#ifndef STRCHR
++# define STRCHR strchr
++#endif
++
+ /* Find the first occurrence of C in S.  */
+ char *
+-strchr (s, c_in)
+-     const char *s;
+-     int c_in;
++STRCHR (const char *s, int c_in)
+ {
+   const unsigned char *char_ptr;
+   const unsigned long int *longword_ptr;
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index d77bee5..1a3673b 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -8,7 +8,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strcat strcat-vx strcat-c \
+ 		   strncat strncat-vx strncat-c \
+ 		   strcmp strcmp-vx \
+-		   strncmp strncmp-vx strncmp-c
++		   strncmp strncmp-vx strncmp-c \
++		   strchr strchr-vx strchr-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -21,5 +22,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcscat wcscat-vx wcscat-c \
+ 		   wcsncat wcsncat-vx wcsncat-c \
+ 		   wcscmp wcscmp-vx wcscmp-c \
+-		   wcsncmp wcsncmp-vx wcsncmp-c
++		   wcsncmp wcsncmp-vx wcsncmp-c \
++		   wcschr wcschr-vx wcschr-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index 5bfc493..b0782ff 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -109,6 +109,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strncmp);
+   IFUNC_VX_IMPL (wcsncmp);
+ 
++  IFUNC_VX_IMPL (strchr);
++  IFUNC_VX_IMPL (wcschr);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strchr-c.c b/sysdeps/s390/multiarch/strchr-c.c
+new file mode 100644
+index 0000000..4384e6b
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strchr-c.c
+@@ -0,0 +1,29 @@
++/* Default strchr implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRCHR  __strchr_c
++# undef weak_alias
++# ifdef SHARED
++#  undef libc_hidden_builtin_def
++#  define libc_hidden_builtin_def(name)				\
++     __hidden_ver1 (__strchr_c, __GI_strchr, __strchr_c);
++# endif /* SHARED */
++
++# include <string/strchr.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strchr-vx.S b/sysdeps/s390/multiarch/strchr-vx.S
+new file mode 100644
+index 0000000..26180df
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strchr-vx.S
+@@ -0,0 +1,100 @@
++/* Vector optimized 32/64 bit S/390 version of strchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char *strchr (const char *s, int c)
++   Locate character in string.
++
++   Register usage:
++   -r1=tmp
++   -r2=s
++   -r3=c
++   -r4=tmp
++   -r5=current_len
++   -v16=part of s
++   -v17=index of unequal
++   -v18=replicated c
++*/
++ENTRY(__strchr_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	vlvgb	%v18,%r3,0	/* Generate vector which elements are all c.
++				   If c > 255, c will be truncated.  */
++	vrepb	%v18,%v18,0
++
++	vfeezbs	%v16,%v16,%v18	/* Find element equal with zero search.  */
++	vlgvb	%r4,%v16,7	/* Load byte index of character or zero.  */
++	clrjl	%r4,%r1,.Lfound /* Return if c/zero is in loaded bytes.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r4		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find c/zero in 16 byte aligned loop */
++.Lloop:
++	vl	%v16,0(%r5,%r2) /* Load s.  */
++	vfeezbs	%v16,%v16,%v18	/* Find element equal with zero search.  */
++	jno	.Lfound		/* Found c/zero (cc=0|1|2).  */
++	vl	%v16,16(%r5,%r2)
++	vfeezbs	%v16,%v16,%v18
++	jno	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfeezbs	%v16,%v16,%v18
++	jno	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfeezbs	%v16,%v16,%v18
++	jno	.Lfound48
++
++	aghi	%r5,64
++	j	.Lloop		/* No character and no zero -> loop.  */
++
++.Lfound48:
++	la	%r5,16(%r5)	/* Use la since aghi would clobber cc.  */
++.Lfound32:
++	la	%r5,16(%r5)
++.Lfound16:
++	la	%r5,16(%r5)
++.Lfound:
++	je	.Lzero		/* Found zero, but no c before that zero.  */
++
++.Lcharacter:
++	vlgvb	%r4,%v16,7	/* Load byte index of character.  */
++	algr	%r5,%r4
++	la	%r2,0(%r5,%r2)	/* Return pointer to character.  */
++	br	%r14
++
++.Lzero:
++	llgcr	%r3,%r3		/* char c_char = (char) c.  */
++	clije	%r3,0,.Lcharacter /* Found zero and c is zero.  */
++	lghi	%r2,0		/* Return null if character not found.  */
++	br	%r14
++END(__strchr_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strchr.c b/sysdeps/s390/multiarch/strchr.c
+new file mode 100644
+index 0000000..e2a310f
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strchr.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of strchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strchr, strchr)
++weak_alias (strchr, index)
++
++#else
++# include <string/strchr.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcschr-c.c b/sysdeps/s390/multiarch/wcschr-c.c
+new file mode 100644
+index 0000000..ad7415e
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcschr-c.c
+@@ -0,0 +1,31 @@
++/* Default wcschr implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSCHR  __wcschr_c
++
++# include <wchar.h>
++extern __typeof (wcschr) __wcschr_c;
++# ifdef SHARED
++#  undef libc_hidden_def
++#  define libc_hidden_def(name)					\
++  __hidden_ver1 (__wcschr_c, __GI_wcschr, __wcschr_c);
++# endif /* SHARED */
++
++# include <wcsmbs/wcschr.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcschr-vx.S b/sysdeps/s390/multiarch/wcschr-vx.S
+new file mode 100644
+index 0000000..c1b3f6b
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcschr-vx.S
+@@ -0,0 +1,103 @@
++/* Vector optimized 32/64 bit S/390 version of wcschr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t *wcschr (const wchar_t *s, wchar_t c)
++   Locate character in string.
++
++   Register usage:
++   -r1=tmp
++   -r2=s
++   -r3=c
++   -r4=tmp
++   -r5=current_len
++   -v16=part of s
++   -v17=index of unequal
++   -v18=replicated c
++*/
++ENTRY(__wcschr_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	tmll	%r2,3		/* Test if s is 4-byte aligned?   */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	vlvgf	%v18,%r3,0	/* Generate vector which elements are all c.  */
++	vrepf	%v18,%v18,0
++
++	vfeezfs	%v16,%v16,%v18	/* Find element equal with zero search.  */
++	vlgvb	%r4,%v16,7	/* Load byte index of character or zero.  */
++	clrjl	%r4,%r1,.Lfound /* Return if c/zero is in loaded bytes.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r4		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find c/zero in 16byte aligned loop */
++.Lloop:
++	vl	%v16,0(%r5,%r2) /* Load s.  */
++	vfeezfs	%v16,%v16,%v18	/* Find element equal with zero search.  */
++	jno	.Lfound		/* Found c/zero (cc=0|1|2).  */
++	vl	%v16,16(%r5,%r2)
++	vfeezfs	%v16,%v16,%v18
++	jno	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfeezfs	%v16,%v16,%v18
++	jno	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfeezfs	%v16,%v16,%v18
++	jno	.Lfound48
++
++	aghi	%r5,64
++	j	.Lloop		/* No character and no zero -> loop.  */
++
++.Lfound48:
++	la	%r5,16(%r5)	/* Use la since aghi would clobber cc.  */
++.Lfound32:
++	la	%r5,16(%r5)
++.Lfound16:
++	la	%r5,16(%r5)
++.Lfound:
++	je	.Lzero		/* Found zero, but no c before that zero.  */
++
++.Lcharacter:
++	vlgvb	%r4,%v16,7	/* Load byte index of character.  */
++	algr	%r5,%r4
++	la	%r2,0(%r5,%r2)	/* Return pointer to character.  */
++	br	%r14
++
++.Lzero:
++	clije	%r3,0,.Lcharacter /* Found zero and c is zero.  */
++	lghi	%r2,0		/* Return null if character not found.  */
++	br	%r14
++.Lfallback:
++	jg	__wcschr_c
++END(__wcschr_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcschr.c b/sysdeps/s390/multiarch/wcschr.c
+new file mode 100644
+index 0000000..9c8c097
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcschr.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wcschr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wcschr, wcschr)
++
++#else
++# include <wcsmbs/wcschr.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-21.patch b/SOURCES/glibc-rh1268008-21.patch
new file mode 100644
index 0000000..b07aa73
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-21.patch
@@ -0,0 +1,664 @@
+From 24020ef9258267c5d65ab37dbf118bf52e4995d2 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 12:40:02 +0200
+Subject: [PATCH 21/30] S390: Optimize strchrnul and wcschrnul.
+
+upstream-commit-id: d23d4ef19f1f5463745f2af205acb8c4975fd680
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00098.html
+
+This patch provides optimized versions of strchrnul and wcschrnul with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strchrnul-c.c: New File.
+	* sysdeps/s390/multiarch/strchrnul-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strchrnul.c: Likewise.
+	* sysdeps/s390/multiarch/wcschrnul-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcschrnul-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcschrnul.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strchrnul and
+	wcschrnul functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strchrnul, wcschrnul.
+	* wcsmbs/wcschrnul.c: Use WCSCHRNUL if defined.
+	* string/test-strchr.c: Add wcschrnul support.
+	* wcsmbs/test-wcschrnul.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcschrnul.
+	* benchtests/bench-strchr.c: Add wcschrnul support.
+	* benchtests/bench-wcschrnul.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcschrnul.
+---
+ benchtests/Makefile                      |  2 +-
+ benchtests/bench-strchr.c                | 22 ++++++--
+ benchtests/bench-wcschrnul.c             | 20 +++++++
+ string/test-strchr.c                     | 24 ++++++--
+ sysdeps/s390/multiarch/Makefile          |  6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |  3 +
+ sysdeps/s390/multiarch/strchrnul-c.c     | 26 +++++++++
+ sysdeps/s390/multiarch/strchrnul-vx.S    | 93 ++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strchrnul.c       | 28 +++++++++
+ sysdeps/s390/multiarch/wcschrnul-c.c     | 25 ++++++++
+ sysdeps/s390/multiarch/wcschrnul-vx.S    | 97 ++++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcschrnul.c       | 28 +++++++++
+ wcsmbs/Makefile                          |  2 +-
+ wcsmbs/test-wcschrnul-ifunc.c            | 20 +++++++
+ wcsmbs/test-wcschrnul.c                  | 20 +++++++
+ wcsmbs/wcschrnul.c                       |  5 ++
+ 16 files changed, 405 insertions(+), 16 deletions(-)
+ create mode 100644 benchtests/bench-wcschrnul.c
+ create mode 100644 sysdeps/s390/multiarch/strchrnul-c.c
+ create mode 100644 sysdeps/s390/multiarch/strchrnul-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strchrnul.c
+ create mode 100644 sysdeps/s390/multiarch/wcschrnul-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcschrnul-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcschrnul.c
+ create mode 100644 wcsmbs/test-wcschrnul-ifunc.c
+ create mode 100644 wcsmbs/test-wcschrnul.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index bcb0288..d34bb3d 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -39,7 +39,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+-		wcsncmp wcsncmp wcschr
++		wcsncmp wcsncmp wcschr wcschrnul
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-strchr.c b/benchtests/bench-strchr.c
+index d432ba5..9b1aaf9 100644
+--- a/benchtests/bench-strchr.c
++++ b/benchtests/bench-strchr.c
+@@ -22,10 +22,14 @@
+ #  define TEST_NAME "strchrnul"
+ # else
+ #  define TEST_NAME "strchr"
+-# endif
++# endif /* !USE_FOR_STRCHRNUL */
+ #else
+-# define TEST_NAME "wcschr"
+-#endif
++# ifdef USE_FOR_STRCHRNUL
++#  define TEST_NAME "wcschrnul"
++# else
++#  define TEST_NAME "wcschr"
++# endif /* !USE_FOR_STRCHRNUL */
++#endif /* WIDE */
+ #include "bench-string.h"
+ 
+ #ifndef WIDE
+@@ -44,20 +48,26 @@
+ # define UCHAR unsigned char
+ #else
+ # include <wchar.h>
+-# define STRCHR wcschr
++# ifdef USE_FOR_STRCHRNUL
++#  define STRCHR wcschrnul
++#  define stupid_STRCHR stupid_WCSCHRNUL
++#  define simple_STRCHR simple_WCSCHRNUL
++# else
++#  define STRCHR wcschr
++# endif /* !USE_FOR_STRCHRNUL */
+ # define STRLEN wcslen
+ # define CHAR wchar_t
+ # define BIG_CHAR WCHAR_MAX
+ # define MIDDLE_CHAR 1121
+ # define SMALL_CHAR 851
+ # define UCHAR wchar_t
+-#endif
++#endif /* WIDE */
+ 
+ #ifdef USE_FOR_STRCHRNUL
+ # define NULLRET(endptr) endptr
+ #else
+ # define NULLRET(endptr) NULL
+-#endif
++#endif /* !USE_FOR_STRCHRNUL */
+ 
+ 
+ typedef CHAR *(*proto_t) (const CHAR *, int);
+diff --git a/benchtests/bench-wcschrnul.c b/benchtests/bench-wcschrnul.c
+new file mode 100644
+index 0000000..124b602
+--- /dev/null
++++ b/benchtests/bench-wcschrnul.c
+@@ -0,0 +1,20 @@
++/* Measure wcschrnul functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strchrnul.c"
+diff --git a/string/test-strchr.c b/string/test-strchr.c
+index b84e138..1cd14d7 100644
+--- a/string/test-strchr.c
++++ b/string/test-strchr.c
+@@ -26,8 +26,12 @@
+ #  define TEST_NAME "strchr"
+ # endif
+ #else
+-# define TEST_NAME "wcschr"
+-#endif
++# ifdef USE_FOR_STRCHRNUL
++#  define TEST_NAME "wcschrnul"
++# else
++#  define TEST_NAME "wcschr"
++# endif /* !USE_FOR_STRCHRNUL */
++#endif /* WIDE */
+ #include "test-string.h"
+ 
+ #ifndef WIDE
+@@ -44,15 +48,23 @@
+ # define MIDDLE_CHAR 127
+ # define SMALL_CHAR 23
+ # define UCHAR unsigned char
++# define L(s) s
+ #else
+ # include <wchar.h>
+-# define STRCHR wcschr
++# ifdef USE_FOR_STRCHRNUL
++#  define STRCHR wcschrnul
++#  define stupid_STRCHR stupid_WCSCHRNUL
++#  define simple_STRCHR simple_WCSCHRNUL
++# else
++#  define STRCHR wcschr
++# endif /* !USE_FOR_STRCHRNUL */
+ # define STRLEN wcslen
+ # define CHAR wchar_t
+ # define BIG_CHAR WCHAR_MAX
+ # define MIDDLE_CHAR 1121
+ # define SMALL_CHAR 851
+ # define UCHAR wchar_t
++# define L(s) L ## s
+ #endif
+ 
+ #ifdef USE_FOR_STRCHRNUL
+@@ -219,9 +231,9 @@ do_random_tests (void)
+ static void
+ check1 (void)
+ {
+-  char s[] __attribute__((aligned(16))) = "\xff";
+-  char c = '\xfe';
+-  char *exp_result = stupid_STRCHR (s, c);
++  CHAR s[] __attribute__((aligned(16))) = L ("\xff");
++  CHAR c = L ('\xfe');
++  CHAR *exp_result = stupid_STRCHR (s, c);
+ 
+   FOR_EACH_IMPL (impl, 0)
+     check_result (impl, s, c, exp_result);
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 1a3673b..b6b64c9 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -9,7 +9,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strncat strncat-vx strncat-c \
+ 		   strcmp strcmp-vx \
+ 		   strncmp strncmp-vx strncmp-c \
+-		   strchr strchr-vx strchr-c
++		   strchr strchr-vx strchr-c \
++		   strchrnul strchrnul-vx strchrnul-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -23,5 +24,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcsncat wcsncat-vx wcsncat-c \
+ 		   wcscmp wcscmp-vx wcscmp-c \
+ 		   wcsncmp wcsncmp-vx wcsncmp-c \
+-		   wcschr wcschr-vx wcschr-c
++		   wcschr wcschr-vx wcschr-c \
++		   wcschrnul wcschrnul-vx wcschrnul-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index b0782ff..ea474a8 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -112,6 +112,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strchr);
+   IFUNC_VX_IMPL (wcschr);
+ 
++  IFUNC_VX_IMPL (strchrnul);
++  IFUNC_VX_IMPL (wcschrnul);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strchrnul-c.c b/sysdeps/s390/multiarch/strchrnul-c.c
+new file mode 100644
+index 0000000..7615217
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strchrnul-c.c
+@@ -0,0 +1,26 @@
++/* Default strchrnul implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRCHRNUL  __strchrnul_c
++# define __strchrnul STRCHRNUL
++# undef weak_alias
++# define weak_alias(name, alias)
++
++# include <string/strchrnul.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/strchrnul-vx.S b/sysdeps/s390/multiarch/strchrnul-vx.S
+new file mode 100644
+index 0000000..2c5f167
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strchrnul-vx.S
+@@ -0,0 +1,93 @@
++/* Vector optimized 32/64 bit S/390 version of strchrnul.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char *strchrnul (const char *s, int c)
++   Returns pointer to first c or to \0 if c not found.
++
++   Register usage:
++   -r1=tmp
++   -r2=s and return pointer
++   -r3=c
++   -r4=tmp
++   -r5=current_len
++   -v16=part of s
++   -v18=vector with c replicated in every byte
++*/
++ENTRY(__strchrnul_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	vlvgb	%v18,%r3,0	/* Generate vector which elements are all c.
++				   If c > 255, c will be truncated.  */
++	vrepb	%v18,%v18,0
++
++	vfeezbs	%v16,%v16,%v18	/* Find element equal with zero search.  */
++	vlgvb	%r4,%v16,7	/* Load byte index of character or zero.  */
++	clrjl	%r4,%r1,.Lfound /* Return if c/zero is in loaded bytes.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r4		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find c/zero in 16byte aligned loop */
++.Lloop:
++	vl	%v16,0(%r5,%r2) /* Load s */
++	vfeezbs	%v16,%v16,%v18	/* Find element equal with zero search.  */
++	jno	.Lfound		/* Found c/zero (cc=0|1|2).  */
++	vl	%v16,16(%r5,%r2)
++	vfeezbs	%v16,%v16,%v18
++	jno	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfeezbs	%v16,%v16,%v18
++	jno	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfeezbs	%v16,%v16,%v18
++	jno	.Lfound48
++
++	aghi	%r5,64
++	j	.Lloop		/* No character and no zero -> loop.  */
++
++	/* Found character or zero */
++.Lfound48:
++	aghi	%r5,16
++.Lfound32:
++	aghi	%r5,16
++.Lfound16:
++	aghi	%r5,16
++.Lfound:
++	vlgvb	%r1,%v16,7	/* Load byte index of character.  */
++	algr	%r5,%r1
++	la	%r2,0(%r5,%r2)	/* Return pointer to character.  */
++
++.Lend:
++	br	%r14
++END(__strchrnul_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strchrnul.c b/sysdeps/s390/multiarch/strchrnul.c
+new file mode 100644
+index 0000000..73fcf19
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strchrnul.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of strchrnul.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__strchrnul)
++weak_alias (__strchrnul, strchrnul)
++
++#else
++# include <string/strchrnul.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcschrnul-c.c b/sysdeps/s390/multiarch/wcschrnul-c.c
+new file mode 100644
+index 0000000..31fa416
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcschrnul-c.c
+@@ -0,0 +1,25 @@
++/* Default wcschrnul implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSCHRNUL  __wcschrnul_c
++
++# include <wchar.h>
++extern __typeof (__wcschrnul) __wcschrnul_c;
++# include <wcsmbs/wcschrnul.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcschrnul-vx.S b/sysdeps/s390/multiarch/wcschrnul-vx.S
+new file mode 100644
+index 0000000..a89aee0
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcschrnul-vx.S
+@@ -0,0 +1,97 @@
++/* Vector optimized 32/64 bit S/390 version of wcschrnul.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t* wcschrnul (const wchar_t *s, wchar_t c)
++   Returns pointer to first c or to \0 if c not found.
++
++   Register usage:
++   -r1=tmp
++   -r2=s and return pointer
++   -r3=c
++   -r4=tmp
++   -r5=current_len
++   -v16=part of s
++   -v18=vector with c replicated in every byte
++*/
++ENTRY(__wcschrnul_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	tmll	%r2,3		/* Test if s is 4-byte aligned?   */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	vlvgf	%v18,%r3,0	/* Generate vector which elements are all c.  */
++	vrepf	%v18,%v18,0
++
++	vfeezfs	%v16,%v16,%v18	/* Find element equal with zero search.  */
++	vlgvb	%r4,%v16,7	/* Load byte index of character or zero.  */
++	clrjl	%r4,%r1,.Lfound /* Return if c/zero is in loaded bytes.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r4		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find c/zero in 16byte aligned loop */
++.Lloop:
++	vl	%v16,0(%r5,%r2) /* Load s.  */
++	vfeezfs	%v16,%v16,%v18	/* Find element equal with zero search.  */
++	jno	.Lfound		/* Found c/zero (cc=0|1|2).  */
++	vl	%v16,16(%r5,%r2)
++	vfeezfs	%v16,%v16,%v18
++	jno	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfeezfs	%v16,%v16,%v18
++	jno	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfeezfs	%v16,%v16,%v18
++	jno	.Lfound48
++
++	aghi	%r5,64
++	j	.Lloop		/* No character and no zero -> loop.  */
++
++	/* Found character or zero */
++.Lfound48:
++	aghi	%r5,16
++.Lfound32:
++	aghi	%r5,16
++.Lfound16:
++	aghi	%r5,16
++.Lfound:
++	vlgvb	%r1,%v16,7	/* Load byte index of character.  */
++	algr	%r5,%r1
++	la	%r2,0(%r5,%r2)	/* Return pointer to character.  */
++
++.Lend:
++	br	%r14
++.Lfallback:
++	jg	__wcschrnul_c
++END(__wcschrnul_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcschrnul.c b/sysdeps/s390/multiarch/wcschrnul.c
+new file mode 100644
+index 0000000..644258b
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcschrnul.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of wcschrnul.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__wcschrnul)
++weak_alias (__wcschrnul, wcschrnul)
++
++#else
++# include <wcsmbs/wcschrnul.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index 611b2c9..de3635d 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -42,7 +42,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    mbrtoc16 c16rtomb
+ 
+ strop-tests :=  wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+-		wcpcpy wcsncpy wcpncpy wcscat wcsncat
++		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcschrnul-ifunc.c b/wcsmbs/test-wcschrnul-ifunc.c
+new file mode 100644
+index 0000000..e64a1e4
+--- /dev/null
++++ b/wcsmbs/test-wcschrnul-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcschrnul function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcschrnul.c"
+diff --git a/wcsmbs/test-wcschrnul.c b/wcsmbs/test-wcschrnul.c
+new file mode 100644
+index 0000000..baea763
+--- /dev/null
++++ b/wcsmbs/test-wcschrnul.c
+@@ -0,0 +1,20 @@
++/* Test wcschrnul functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-strchrnul.c"
+diff --git a/wcsmbs/wcschrnul.c b/wcsmbs/wcschrnul.c
+index 04db8f1..1e4c44f 100644
+--- a/wcsmbs/wcschrnul.c
++++ b/wcsmbs/wcschrnul.c
+@@ -17,6 +17,9 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WCSCHRNUL
++# define __wcschrnul WCSCHRNUL
++#endif
+ 
+ /* Find the first occurrence of WC in WCS.  */
+ wchar_t *
+@@ -32,4 +35,6 @@ __wcschrnul (wcs, wc)
+ 
+   return (wchar_t *) wcs;
+ }
++#ifndef WCSCHRNUL
+ weak_alias (__wcschrnul, wcschrnul)
++#endif
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-22.patch b/SOURCES/glibc-rh1268008-22.patch
new file mode 100644
index 0000000..0b388fa
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-22.patch
@@ -0,0 +1,658 @@
+From cb5e8d0ec1a4c4eb09da45015755e3d18b3a086b Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 12:43:56 +0200
+Subject: [PATCH 22/30] S390: Optimize strrchr and wcsrchr.
+
+upstream-commit-id: f40132d4bda984479bac89dfcd6968e9ff56e088
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00101.html
+
+This patch provides optimized versions of strrchr and wcsrchr with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strrchr-c.c: New File.
+	* sysdeps/s390/multiarch/strrchr-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strrchr.c: Likewise.
+	* sysdeps/s390/multiarch/wcsrchr-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcsrchr-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcsrchr.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strrchr and
+	wcsrchr functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strrchr, wcsrchr.
+	* benchtests/bench-wcsrchr.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcsrchr.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-wcsrchr.c               |  20 ++++
+ string/strrchr.c                         |   6 +-
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strrchr-c.c       |  29 +++++
+ sysdeps/s390/multiarch/strrchr-vx.S      | 180 +++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strrchr.c         |  28 +++++
+ sysdeps/s390/multiarch/wcsrchr-c.c       |  25 ++++
+ sysdeps/s390/multiarch/wcsrchr-vx.S      | 190 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcsrchr.c         |  27 +++++
+ 11 files changed, 512 insertions(+), 4 deletions(-)
+ create mode 100644 benchtests/bench-wcsrchr.c
+ create mode 100644 sysdeps/s390/multiarch/strrchr-c.c
+ create mode 100644 sysdeps/s390/multiarch/strrchr-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strrchr.c
+ create mode 100644 sysdeps/s390/multiarch/wcsrchr-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcsrchr-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcsrchr.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index d34bb3d..6444394 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -39,7 +39,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+-		wcsncmp wcsncmp wcschr wcschrnul
++		wcsncmp wcsncmp wcschr wcschrnul wcsrchr
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-wcsrchr.c b/benchtests/bench-wcsrchr.c
+new file mode 100644
+index 0000000..0d3923f
+--- /dev/null
++++ b/benchtests/bench-wcsrchr.c
+@@ -0,0 +1,20 @@
++/* Measure wcsrchr functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strrchr.c"
+diff --git a/string/strrchr.c b/string/strrchr.c
+index a986ff9..03f3957 100644
+--- a/string/strrchr.c
++++ b/string/strrchr.c
+@@ -19,9 +19,13 @@
+ 
+ #undef strrchr
+ 
++#ifndef STRRCHR
++# define STRRCHR strrchr
++#endif
++
+ /* Find the last occurrence of C in S.  */
+ char *
+-strrchr (const char *s, int c)
++STRRCHR (const char *s, int c)
+ {
+   register const char *found, *p;
+ 
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index b6b64c9..b8b141e 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -10,7 +10,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strcmp strcmp-vx \
+ 		   strncmp strncmp-vx strncmp-c \
+ 		   strchr strchr-vx strchr-c \
+-		   strchrnul strchrnul-vx strchrnul-c
++		   strchrnul strchrnul-vx strchrnul-c \
++		   strrchr strrchr-vx strrchr-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -25,5 +26,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcscmp wcscmp-vx wcscmp-c \
+ 		   wcsncmp wcsncmp-vx wcsncmp-c \
+ 		   wcschr wcschr-vx wcschr-c \
+-		   wcschrnul wcschrnul-vx wcschrnul-c
++		   wcschrnul wcschrnul-vx wcschrnul-c \
++		   wcsrchr wcsrchr-vx wcsrchr-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index ea474a8..ee84d80 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -115,6 +115,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strchrnul);
+   IFUNC_VX_IMPL (wcschrnul);
+ 
++  IFUNC_VX_IMPL (strrchr);
++  IFUNC_VX_IMPL (wcsrchr);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strrchr-c.c b/sysdeps/s390/multiarch/strrchr-c.c
+new file mode 100644
+index 0000000..b035cdc
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strrchr-c.c
+@@ -0,0 +1,29 @@
++/* Default strrchr implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRRCHR  __strrchr_c
++# undef weak_alias
++# ifdef SHARED
++#  undef libc_hidden_builtin_def
++#  define libc_hidden_builtin_def(name)				\
++     __hidden_ver1 (__strrchr_c, __GI_strrchr, __strrchr_c);
++# endif /* SHARED */
++
++# include <string/strrchr.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strrchr-vx.S b/sysdeps/s390/multiarch/strrchr-vx.S
+new file mode 100644
+index 0000000..dbc183b
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strrchr-vx.S
+@@ -0,0 +1,180 @@
++/* Vector optimized 32/64 bit S/390 version of strrchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char *strrchr (const char *s, int c)
++   Locate the last character c in string.
++
++   Register usage:
++   -r0=loaded bytes in first part of s.
++   -r1=pointer to last occurence of c or NULL if not found.
++   -r2=s
++   -r3=c
++   -r4=tmp
++   -r5=current_len
++   -v16=part of s
++   -v17=index of found element
++   -v18=replicated c
++   -v19=part of s with last occurence of c.
++   -v20=permute pattern
++*/
++ENTRY(__strrchr_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r0,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vlvgb	%v18,%r3,0	/* Generate vector which elements are all c.
++				   if c > 255, c will be truncated.  */
++	vrepb	%v18,%v18,0
++
++	lghi	%r1,-1		/* Currently no c found.  */
++	lghi	%r5,0		/* current_len = 0.  */
++
++	vfeezbs	%v17,%v16,%v18	/* Find element equal or zero.  */
++	vlgvb	%r4,%v17,7	/* Load byte index of c/zero or 16.  */
++	clrjl	%r4,%r0,.Lfound_first_part /* Found c/zero in loaded bytes.  */
++.Lalign:
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r4		/* Compute bytes to 16bytes boundary.  */
++
++.Lloop:
++	vl	%v16,0(%r5,%r2) /* Load s.  */
++	vfeezbs	%v17,%v16,%v18	/* Find element equal with zero search.  */
++	jno	.Lfound		/* Found c/zero (cc=0|1|2).  */
++	vl	%v16,16(%r5,%r2)
++	vfeezbs	%v17,%v16,%v18
++	jno	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfeezbs	%v17,%v16,%v18
++	jno	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfeezbs	%v17,%v16,%v18
++	jno	.Lfound48
++
++	aghi	%r5,64
++	j	.Lloop		/* No character and no zero -> loop.  */
++
++.Lfound48:
++	la	%r5,16(%r5)	/* Use la since aghi would clobber cc.  */
++.Lfound32:
++	la	%r5,16(%r5)
++.Lfound16:
++	la	%r5,16(%r5)
++.Lfound:
++	je	.Lzero		/* Found zero, but no c before that zero.  */
++	/* Save this part of s to check for further matches after reaching
++	   the end of the complete string.  */
++	vlr	%v19,%v16
++	lgr	%r1,%r5
++
++	jh	.Lzero		/* Found a zero after the found c.  */
++	aghi	%r5,16		/* Start search of next part of s.  */
++	j	.Lloop
++
++.Lfound_first_part:
++	/* This code is only executed if the found c/zero is whithin loaded
++	   bytes. If no c/zero was found (cc==3) the found index = 16, thus
++	   this code is not called.
++	   Resulting condition code of vector find element equal:
++	   cc==0: no c, found zero
++	   cc==1: c found, no zero
++	   cc==2: c found, found zero after c
++	   cc==3: no c, no zero (this case can be ignored).  */
++	je	.Lzero		/* Found zero, but no c before that zero.  */
++
++	locgrne	%r1,%r5		/* Mark c as found in first part of s.  */
++	vlr	%v19,%v16
++
++	jl	.Lalign		/* No zero (e.g. if vr was fully loaded)
++				   -> Align and loop afterwards.  */
++
++	/* Found a zero in vr. If vr was not fully loaded due to block
++	   boundary, the remaining bytes are filled with zero and we can't
++	   rely on zero indication of condition code here!  */
++
++	vfenezb	%v17,%v16,%v16	/* Find zero.  */
++	vlgvb	%r4,%v17,7	/* Load byte index of zero or 16.  */
++	clrjl	%r4,%r0,.Lzero	/* Zero within loaded bytes -> end.  */
++	j	.Lalign		/* Align and loop afterwards.  */
++
++.Lend_searched_zero:
++	vlgvb	%r4,%v17,7	/* Load byte index of zero.  */
++	algr	%r5,%r4
++	la	%r2,0(%r5,%r2)	/* Return pointer to zero.  */
++	br	%r14
++
++.Lzero:
++	/* Reached end of string. Check if one c was found before.  */
++	clije	%r3,0,.Lend_searched_zero /* Found zero and c is zero.  */
++
++	cgfi	%r1,-1		/* No c found -> return NULL.  */
++	locghie	%r2,0
++	ber	%r14
++
++	larl	%r3,.Lpermute_mask /* Load permute mask.  */
++	vl	%v20,0(%r3)
++
++	/* c was found and is part of v19.  */
++	vfenezb	%v17,%v19,%v19	/* Find zero.  */
++	vlgvb	%r4,%v17,7	/* Load byte index of zero or 16.  */
++
++	clgfi	%r5,0		/* Loaded byte count in v19 is 16, ...  */
++	lochine	%r0,16		/* ... if v19 is not the first part of s.  */
++	ahi	%r0,-1		/* Convert byte count to highest index.  */
++
++	clr	%r0,%r4
++	locrl	%r4,%r0		/* r4 = min (zero-index, highest-index).  */
++
++	/* Right-shift of v19 to mask bytes after zero.  */
++	clije	%r4,15,.Lzero_permute /* No shift is needed if highest index
++					 in vr is 15.  */
++	lhi	%r0,15
++	slr	%r0,%r4		/* Compute byte count for vector shift right.  */
++	sll	%r0,3		/* Convert to bit count.  */
++	vlvgb	%v17,%r0,7
++	vsrlb	%v19,%v19,%v17	/* Vector shift right by byte by number of bytes
++				   specified in bits 1-4 of byte 7 in v17.   */
++
++	/* Reverse bytes in v19.  */
++.Lzero_permute:
++	vperm	%v19,%v19,%v19,%v20 /* Permute v19 to reversed order.  */
++
++	/* Find c in reversed v19.  */
++	vfeeb	%v19,%v19,%v18	/* Find c.  */
++	la	%r2,0(%r1,%r2)
++	vlgvb	%r3,%v19,7	/* Load byte index of c.  */
++
++	/* Compute index in real s and return.  */
++	slgr	%r4,%r3
++	la	%r2,0(%r4,%r2)	/* Return pointer to zero.  */
++	br	%r14
++.Lpermute_mask:
++	.byte	0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08
++	.byte	0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00
++END(__strrchr_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strrchr.c b/sysdeps/s390/multiarch/strrchr.c
+new file mode 100644
+index 0000000..dc4efd3
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strrchr.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of strrchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strrchr, strrchr)
++weak_alias (strrchr, rindex)
++
++#else
++# include <string/strrchr.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcsrchr-c.c b/sysdeps/s390/multiarch/wcsrchr-c.c
+new file mode 100644
+index 0000000..8f66600
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsrchr-c.c
+@@ -0,0 +1,25 @@
++/* Default wcsrchr implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSRCHR  __wcsrchr_c
++
++# include <wchar.h>
++extern __typeof (wcsrchr) __wcsrchr_c;
++# include <wcsmbs/wcsrchr.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcsrchr-vx.S b/sysdeps/s390/multiarch/wcsrchr-vx.S
+new file mode 100644
+index 0000000..efb7701
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsrchr-vx.S
+@@ -0,0 +1,190 @@
++/* Vector optimized 32/64 bit S/390 version of wcsrchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t *wcsrchr (const wchar_t *s, wchar_t c)
++   Locate the last character c in string.
++
++   Register usage:
++   -r0=loaded bytes in first part of s.
++   -r1=pointer to last occurence of c or NULL if not found.
++   -r2=s
++   -r3=c
++   -r4=tmp
++   -r5=current_len
++   -v16=part of s
++   -v17=index of found element
++   -v18=replicated c
++   -v19=part of s with last occurence of c.
++   -v20=permute pattern
++*/
++ENTRY(__wcsrchr_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r0,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	tmll	%r2,3		/* Test if s is 4-byte aligned?   */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	vlvgf	%v18,%r3,0	/* Generate vector which elements are all c.  */
++	vrepf	%v18,%v18,0
++
++	lghi	%r1,-1		/* Currently no c found.  */
++	lghi	%r5,0		/* current_len = 0.  */
++
++	vfeezfs	%v17,%v16,%v18	/* Find element equal or zero.  */
++	vlgvb	%r4,%v17,7	/* Load byte index of c/zero or 16.  */
++	clrjl	%r4,%r0,.Lfound_first_part /* Found c/zero in loaded bytes.  */
++.Lalign:
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16		/* current_len = 16.  */
++	slr	%r5,%r4		/* Compute bytes to 16bytes boundary.  */
++
++.Lloop:
++	vl	%v16,0(%r5,%r2) /* Load s.  */
++	vfeezfs	%v17,%v16,%v18	/* Find element equal with zero search.  */
++	jno	.Lfound		/* Found c/zero (cc=0|1|2).  */
++	vl	%v16,16(%r5,%r2)
++	vfeezfs	%v17,%v16,%v18
++	jno	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfeezfs	%v17,%v16,%v18
++	jno	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfeezfs	%v17,%v16,%v18
++	jno	.Lfound48
++
++	aghi	%r5,64
++	j	.Lloop		/* No character and no zero -> loop.  */
++
++.Lfound48:
++	la	%r5,16(%r5)	/* Use la since aghi would clobber cc.  */
++.Lfound32:
++	la	%r5,16(%r5)
++.Lfound16:
++	la	%r5,16(%r5)
++.Lfound:
++	je	.Lzero		/* Found zero, but no c before that zero.  */
++	/* Save this part of s to check for further matches after reaching
++	   the end of the complete string.  */
++	vlr	%v19,%v16
++	lgr	%r1,%r5
++
++	jh	.Lzero		/* Found a zero after the found c.  */
++	aghi	%r5,16		/* Start search of next part of s.  */
++	j	.Lloop
++
++.Lfound_first_part:
++	/* This code is only executed if the found c/zero is whithin loaded
++	   bytes. If no c/zero was found (cc==3) the found index = 16, thus
++	   this code is not called.
++	   Resulting condition code of vector find element equal:
++	   cc==0: no c, found zero
++	   cc==1: c found, no zero
++	   cc==2: c found, found zero after c
++	   cc==3: no c, no zero (this case can be ignored).  */
++	je	.Lzero		/* Found zero, but no c before that zero.  */
++
++	locgrne	%r1,%r5		/* Mark c as found in first part of s.  */
++	vlr	%v19,%v16
++
++	jl	.Lalign		/* No zero (e.g. if vr was fully loaded)
++				   -> Align and loop afterwards.  */
++
++	/* Found a zero in vr. If vr was not fully loaded due to block
++	   boundary, the remaining bytes are filled with zero and we can't
++	   rely on zero indication of condition code here!  */
++
++	vfenezf	%v17,%v16,%v16
++	vlgvb	%r4,%v17,7	/* Load byte index of zero or 16.  */
++	clrjl	%r4,%r0,.Lzero	/* Zero within loaded bytes -> end.  */
++	j	.Lalign		/* Align and loop afterwards.  */
++
++.Lend_searched_zero:
++	vlgvb	%r4,%v17,7	/* Load byte index of zero.  */
++	algr	%r5,%r4
++	la	%r2,0(%r5,%r2)	/* Return pointer to zero.  */
++	br	%r14
++
++.Lzero:
++	/* Reached end of string. Check if one c was found before.  */
++	clije	%r3,0,.Lend_searched_zero /* Found zero and c is zero.  */
++
++	cgfi	%r1,-1		/* No c found -> return NULL.  */
++	locghie	%r2,0
++	ber	%r14
++
++	larl	%r3,.Lpermute_mask /* Load permute mask.  */
++	vl	%v20,0(%r3)
++
++	/* c was found and is part of v19.  */
++	vfenezf	%v17,%v19,%v19	/* Find zero.  */
++	vlgvb	%r4,%v17,7	/* Load byte index of zero or 16.  */
++	ahi	%r4,3		/* Found zero index is first byte,
++				   thus highest byte index is last byte of
++				   wchar_t zero.  */
++
++	clgfi	%r5,0		/* Loaded byte count in v19 is 16, ...  */
++	lochine	%r0,16		/* ... if v19 is not the first part of s.  */
++	ahi	%r0,-1		/* Convert byte count to highest index.  */
++
++	clr	%r0,%r4
++	locrl	%r4,%r0		/* r4 = min (zero-index, highest-index).  */
++
++	/* Right-shift of v19 to mask bytes after zero.  */
++	clije	%r4,15,.Lzero_permute /* No shift is needed if highest index
++					 in vr is 15.  */
++	lhi	%r0,15
++	slr	%r0,%r4		/* Compute byte count for vector shift left.  */
++	sll	%r0,3		/* Convert to bit count.  */
++	vlvgb	%v17,%r0,7
++	vsrlb	%v19,%v19,%v17	/* Vector shift right by byte by number of bytes
++				   specified in bits 1-4 of byte 7 in v17.   */
++
++	/* Reverse bytes in v19.  */
++.Lzero_permute:
++	vperm	%v19,%v19,%v19,%v20 /* Permute v19 to reversed order.  */
++
++	/* Find c in reversed v19.  */
++	vfeef	%v19,%v19,%v18	/* Find c.  */
++	la	%r2,0(%r1,%r2)
++	vlgvb	%r3,%v19,7	/* Load byte index of c.  */
++
++	/* Compute index in real s and return.  */
++	slgr	%r4,%r3
++	lay	%r2,-3(%r4,%r2)	/* Return pointer to zero. -3 is needed,
++				   because the found byte index is reversed in
++				   vector-register. Thus point to first byte of
++				   wchar_t.  */
++	br	%r14
++.Lpermute_mask:
++	.byte	0x0C,0x0D,0x0E,0x0F,0x08,0x09,0x0A,0x0B
++	.byte	0x04,0x05,0x06,0x07,0x00,0x01,0x02,0x03
++.Lfallback:
++	jg	__wcsrchr_c
++END(__wcsrchr_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcsrchr.c b/sysdeps/s390/multiarch/wcsrchr.c
+new file mode 100644
+index 0000000..db3f467
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsrchr.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wcsrchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wcsrchr, wcsrchr)
++
++#else
++# include <wcsmbs/wcsrchr.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-23.patch b/SOURCES/glibc-rh1268008-23.patch
new file mode 100644
index 0000000..eeaad59
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-23.patch
@@ -0,0 +1,1236 @@
+From 67611d45bb5e464f2e80782ec37ce3548459cf57 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 12:56:03 +0200
+Subject: [PATCH 23/30] S390: Optimize strspn and wcsspn.
+
+upstream-commit-id: f1ffad98be7ec4111fbd1cd1f58f3e3343257519
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00095.html
+
+This patch provides optimized versions of strspn and wcsspn with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strspn-c.c: New File.
+	* sysdeps/s390/multiarch/strspn-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strspn.c: Likewise.
+	* sysdeps/s390/multiarch/wcsspn-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcsspn-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcsspn.c: Likewise.
+	* wcsmbs/wcsspn.c: Use WCSSPN if defined.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strspn and
+	wcsspn functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strspn, wcsspn.
+	* string/test-strspn.c: Add wcsspn support.
+	* wcsmbs/test-wcsspn.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcsspn.
+	* benchtests/bench-strspn.c: Add wcsspn support.
+	* benchtests/bench-wcsspn.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcsspn.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-strspn.c                |  71 +++++---
+ benchtests/bench-wcsspn.c                |  20 +++
+ string/strspn.c                          |   7 +-
+ string/test-strspn.c                     | 100 +++++++-----
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strspn-c.c        |  28 ++++
+ sysdeps/s390/multiarch/strspn-vx.S       | 256 +++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strspn.c          |  27 ++++
+ sysdeps/s390/multiarch/wcsspn-c.c        |  31 ++++
+ sysdeps/s390/multiarch/wcsspn-vx.S       | 270 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcsspn.c          |  27 ++++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wcsspn-ifunc.c               |  20 +++
+ wcsmbs/test-wcsspn.c                     |  20 +++
+ wcsmbs/wcsspn.c                          |   3 +
+ 17 files changed, 827 insertions(+), 66 deletions(-)
+ create mode 100644 benchtests/bench-wcsspn.c
+ create mode 100644 sysdeps/s390/multiarch/strspn-c.c
+ create mode 100644 sysdeps/s390/multiarch/strspn-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strspn.c
+ create mode 100644 sysdeps/s390/multiarch/wcsspn-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcsspn-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcsspn.c
+ create mode 100644 wcsmbs/test-wcsspn-ifunc.c
+ create mode 100644 wcsmbs/test-wcsspn.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 6444394..337b2a1 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -39,7 +39,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+-		wcsncmp wcsncmp wcschr wcschrnul wcsrchr
++		wcsncmp wcsncmp wcschr wcschrnul wcsrchr wcsspn
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-strspn.c b/benchtests/bench-strspn.c
+index 634bca1..e1f2272 100644
+--- a/benchtests/bench-strspn.c
++++ b/benchtests/bench-strspn.c
+@@ -17,22 +17,47 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strspn"
++#ifndef WIDE
++# define TEST_NAME "strspn"
++#else
++# define TEST_NAME "wcsspn"
++#endif /* WIDE */
+ #include "bench-string.h"
+ 
+-typedef size_t (*proto_t) (const char *, const char *);
+-size_t simple_strspn (const char *, const char *);
+-size_t stupid_strspn (const char *, const char *);
+-
+-IMPL (stupid_strspn, 0)
+-IMPL (simple_strspn, 0)
+-IMPL (strspn, 1)
++#ifndef WIDE
++# define STRSPN strspn
++# define CHAR char
++# define SIMPLE_STRSPN simple_strspn
++# define STUPID_STRSPN stupid_strspn
++# define STRLEN strlen
++# define STRCHR strchr
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define STRSPN wcsspn
++# define CHAR wchar_t
++# define SIMPLE_STRSPN simple_wcsspn
++# define STUPID_STRSPN stupid_wcsspn
++# define STRLEN wcslen
++# define STRCHR wcschr
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++#endif /* WIDE */
++
++typedef size_t (*proto_t) (const CHAR *, const CHAR *);
++size_t SIMPLE_STRSPN (const CHAR *, const CHAR *);
++size_t STUPID_STRSPN (const CHAR *, const CHAR *);
++
++IMPL (STUPID_STRSPN, 0)
++IMPL (SIMPLE_STRSPN, 0)
++IMPL (STRSPN, 1)
+ 
+ size_t
+-simple_strspn (const char *s, const char *acc)
++SIMPLE_STRSPN (const CHAR *s, const CHAR *acc)
+ {
+-  const char *r, *str = s;
+-  char c;
++  const CHAR *r, *str = s;
++  CHAR c;
+ 
+   while ((c = *s++) != '\0')
+     {
+@@ -46,9 +71,9 @@ simple_strspn (const char *s, const char *acc)
+ }
+ 
+ size_t
+-stupid_strspn (const char *s, const char *acc)
++STUPID_STRSPN (const CHAR *s, const CHAR *acc)
+ {
+-  size_t ns = strlen (s), nacc = strlen (acc);
++  size_t ns = STRLEN (s), nacc = STRLEN (acc);
+   size_t i, j;
+ 
+   for (i = 0; i < ns; ++i)
+@@ -63,7 +88,7 @@ stupid_strspn (const char *s, const char *acc)
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s, const char *acc, size_t exp_res)
++do_one_test (impl_t *impl, const CHAR *s, const CHAR *acc, size_t exp_res)
+ {
+   size_t res = CALL (impl, s, acc), i, iters = INNER_LOOP_ITERS;
+   timing_t start, stop, cur;
+@@ -92,34 +117,34 @@ static void
+ do_test (size_t align, size_t pos, size_t len)
+ {
+   size_t i;
+-  char *acc, *s;
++  CHAR *acc, *s;
+ 
+   align &= 7;
+-  if (align + pos + 10 >= page_size || len > 240 || ! len)
++  if ((align + pos + 10) * sizeof (CHAR) >= page_size || len > 240 || ! len)
+     return;
+ 
+-  acc = (char *) (buf2 + (random () & 255));
+-  s = (char *) (buf1 + align);
++  acc = (CHAR *) (buf2) + (random () & BIG_CHAR);
++  s = (CHAR *) (buf1) + align;
+ 
+   for (i = 0; i < len; ++i)
+     {
+-      acc[i] = random () & 255;
++      acc[i] = random () & BIG_CHAR;
+       if (!acc[i])
+-	acc[i] = random () & 255;
++	acc[i] = random () & BIG_CHAR;
+       if (!acc[i])
+-	acc[i] = 1 + (random () & 127);
++	acc[i] = 1 + (random () & SMALL_CHAR);
+     }
+   acc[len] = '\0';
+ 
+   for (i = 0; i < pos; ++i)
+     s[i] = acc[random () % len];
+-  s[pos] = random () & 255;
++  s[pos] = random () & BIG_CHAR;
+   if (strchr (acc, s[pos]))
+     s[pos] = '\0';
+   else
+     {
+       for (i = pos + 1; i < pos + 10; ++i)
+-	s[i] = random () & 255;
++	s[i] = random () & BIG_CHAR;
+       s[i] = '\0';
+     }
+ 
+diff --git a/benchtests/bench-wcsspn.c b/benchtests/bench-wcsspn.c
+new file mode 100644
+index 0000000..7bdef50
+--- /dev/null
++++ b/benchtests/bench-wcsspn.c
+@@ -0,0 +1,20 @@
++/* Measure wcsspn functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strspn.c"
+diff --git a/string/strspn.c b/string/strspn.c
+index 48624aa..f0ac9db 100644
+--- a/string/strspn.c
++++ b/string/strspn.c
+@@ -18,13 +18,14 @@
+ #include <string.h>
+ 
+ #undef strspn
++#ifndef STRSPN
++#define STRSPN strspn
++#endif
+ 
+ /* Return the length of the maximum initial segment
+    of S which contains only characters in ACCEPT.  */
+ size_t
+-strspn (s, accept)
+-     const char *s;
+-     const char *accept;
++STRSPN (const char *s, const char *accept)
+ {
+   const char *p;
+   const char *a;
+diff --git a/string/test-strspn.c b/string/test-strspn.c
+index 0d6cd19..306958e 100644
+--- a/string/test-strspn.c
++++ b/string/test-strspn.c
+@@ -18,22 +18,49 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "strspn"
++#ifndef WIDE
++# define TEST_NAME "strspn"
++#else
++# define TEST_NAME "wcsspn"
++#endif /* WIDE */
+ #include "test-string.h"
+ 
+-typedef size_t (*proto_t) (const char *, const char *);
+-size_t simple_strspn (const char *, const char *);
+-size_t stupid_strspn (const char *, const char *);
+-
+-IMPL (stupid_strspn, 0)
+-IMPL (simple_strspn, 0)
+-IMPL (strspn, 1)
++#ifndef WIDE
++# define STRSPN strspn
++# define CHAR char
++# define UCHAR unsigned char
++# define SIMPLE_STRSPN simple_strspn
++# define STUPID_STRSPN stupid_strspn
++# define STRLEN strlen
++# define STRCHR strchr
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define STRSPN wcsspn
++# define CHAR wchar_t
++# define UCHAR wchar_t
++# define SIMPLE_STRSPN simple_wcsspn
++# define STUPID_STRSPN stupid_wcsspn
++# define STRLEN wcslen
++# define STRCHR wcschr
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++#endif /* WIDE */
++
++typedef size_t (*proto_t) (const CHAR *, const CHAR *);
++size_t SIMPLE_STRSPN (const CHAR *, const CHAR *);
++size_t STUPID_STRSPN (const CHAR *, const CHAR *);
++
++IMPL (STUPID_STRSPN, 0)
++IMPL (SIMPLE_STRSPN, 0)
++IMPL (STRSPN, 1)
+ 
+ size_t
+-simple_strspn (const char *s, const char *acc)
++SIMPLE_STRSPN (const CHAR *s, const CHAR *acc)
+ {
+-  const char *r, *str = s;
+-  char c;
++  const CHAR *r, *str = s;
++  CHAR c;
+ 
+   while ((c = *s++) != '\0')
+     {
+@@ -47,9 +74,9 @@ simple_strspn (const char *s, const char *acc)
+ }
+ 
+ size_t
+-stupid_strspn (const char *s, const char *acc)
++STUPID_STRSPN (const CHAR *s, const CHAR *acc)
+ {
+-  size_t ns = strlen (s), nacc = strlen (acc);
++  size_t ns = STRLEN (s), nacc = STRLEN (acc);
+   size_t i, j;
+ 
+   for (i = 0; i < ns; ++i)
+@@ -64,7 +91,7 @@ stupid_strspn (const char *s, const char *acc)
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s, const char *acc, size_t exp_res)
++do_one_test (impl_t *impl, const CHAR *s, const CHAR *acc, size_t exp_res)
+ {
+   size_t res = CALL (impl, s, acc);
+   if (res != exp_res)
+@@ -80,34 +107,34 @@ static void
+ do_test (size_t align, size_t pos, size_t len)
+ {
+   size_t i;
+-  char *acc, *s;
++  CHAR *acc, *s;
+ 
+   align &= 7;
+-  if (align + pos + 10 >= page_size || len > 240 || ! len)
++  if ((align + pos + 10) * sizeof (CHAR) >= page_size || len > 240 || ! len)
+     return;
+ 
+-  acc = (char *) (buf2 + (random () & 255));
+-  s = (char *) (buf1 + align);
++  acc = (CHAR *) (buf2) + (random () & 255);
++  s = (CHAR *) (buf1) + align;
+ 
+   for (i = 0; i < len; ++i)
+     {
+-      acc[i] = random () & 255;
++      acc[i] = random () & BIG_CHAR;
+       if (!acc[i])
+-	acc[i] = random () & 255;
++	acc[i] = random () & BIG_CHAR;
+       if (!acc[i])
+-	acc[i] = 1 + (random () & 127);
++	acc[i] = 1 + (random () & SMALL_CHAR);
+     }
+   acc[len] = '\0';
+ 
+   for (i = 0; i < pos; ++i)
+     s[i] = acc[random () % len];
+-  s[pos] = random () & 255;
+-  if (strchr (acc, s[pos]))
++  s[pos] = random () & BIG_CHAR;
++  if (STRCHR (acc, s[pos]))
+     s[pos] = '\0';
+   else
+     {
+       for (i = pos + 1; i < pos + 10; ++i)
+-	s[i] = random () & 255;
++	s[i] = random () & BIG_CHAR;
+       s[i] = '\0';
+     }
+ 
+@@ -119,8 +146,8 @@ static void
+ do_random_tests (void)
+ {
+   size_t i, j, n, align, pos, alen, len;
+-  unsigned char *p = buf1 + page_size - 512;
+-  unsigned char *acc;
++  UCHAR *p = (UCHAR *) (buf1 + page_size) - 512;
++  UCHAR *acc;
+ 
+   for (n = 0; n < ITERATIONS; n++)
+     {
+@@ -138,14 +165,14 @@ do_random_tests (void)
+       len = random () & 511;
+       if (len + align >= 512)
+ 	len = 511 - align - (random () & 7);
+-      acc = buf2 + page_size - alen - 1 - (random () & 7);
++      acc = (UCHAR *) (buf2 + page_size) - alen - 1 - (random () & 7);
+       for (i = 0; i < alen; ++i)
+ 	{
+-	  acc[i] = random () & 255;
++	  acc[i] = random () & BIG_CHAR;
+ 	  if (!acc[i])
+-	    acc[i] = random () & 255;
++	    acc[i] = random () & BIG_CHAR;
+ 	  if (!acc[i])
+-	    acc[i] = 1 + (random () & 127);
++	    acc[i] = 1 + (random () & SMALL_CHAR);
+ 	}
+       acc[i] = '\0';
+       j = (pos > len ? pos : len) + align + 64;
+@@ -158,26 +185,27 @@ do_random_tests (void)
+ 	    p[i] = '\0';
+ 	  else if (i == pos + align)
+ 	    {
+-	      p[i] = random () & 255;
+-	      if (strchr ((char *) acc, p[i]))
++	      p[i] = random () & BIG_CHAR;
++	      if (STRCHR ((CHAR *) acc, p[i]))
+ 		p[i] = '\0';
+ 	    }
+ 	  else if (i < align || i > pos + align)
+-	    p[i] = random () & 255;
++	    p[i] = random () & BIG_CHAR;
+ 	  else
+ 	    p[i] = acc [random () % alen];
+ 	}
+ 
+       FOR_EACH_IMPL (impl, 1)
+-	if (CALL (impl, (char *) (p + align),
+-		  (char *) acc) != (pos < len ? pos : len))
++	if (CALL (impl, (CHAR *) (p + align),
++		  (CHAR *) acc) != (pos < len ? pos : len))
+ 	  {
+ 	    error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %p, %zd, %zd, %zd) %zd != %zd",
+ 		   n, impl->name, align, acc, alen, pos, len,
+-		   CALL (impl, (char *) (p + align), (char *) acc),
++		   CALL (impl, (CHAR *) (p + align), (CHAR *) acc),
+ 		   (pos < len ? pos : len));
+ 	    ret = 1;
+ 	  }
++
+     }
+ }
+ 
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index b8b141e..9403169 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -11,7 +11,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strncmp strncmp-vx strncmp-c \
+ 		   strchr strchr-vx strchr-c \
+ 		   strchrnul strchrnul-vx strchrnul-c \
+-		   strrchr strrchr-vx strrchr-c
++		   strrchr strrchr-vx strrchr-c \
++		   strspn strspn-vx strspn-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -27,5 +28,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcsncmp wcsncmp-vx wcsncmp-c \
+ 		   wcschr wcschr-vx wcschr-c \
+ 		   wcschrnul wcschrnul-vx wcschrnul-c \
+-		   wcsrchr wcsrchr-vx wcsrchr-c
++		   wcsrchr wcsrchr-vx wcsrchr-c \
++		   wcsspn wcsspn-vx wcsspn-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index ee84d80..cbedf64 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -118,6 +118,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strrchr);
+   IFUNC_VX_IMPL (wcsrchr);
+ 
++  IFUNC_VX_IMPL (strspn);
++  IFUNC_VX_IMPL (wcsspn);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strspn-c.c b/sysdeps/s390/multiarch/strspn-c.c
+new file mode 100644
+index 0000000..8a7d342
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strspn-c.c
+@@ -0,0 +1,28 @@
++/* Default strspn implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRSPN  __strspn_c
++# ifdef SHARED
++#  undef libc_hidden_builtin_def
++#  define libc_hidden_builtin_def(name)				\
++     __hidden_ver1 (__strspn_c, __GI_strspn, __strspn_c);
++# endif /* SHARED */
++
++# include <string/strspn.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strspn-vx.S b/sysdeps/s390/multiarch/strspn-vx.S
+new file mode 100644
+index 0000000..df22347
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strspn-vx.S
+@@ -0,0 +1,256 @@
++/* Vector optimized 32/64 bit S/390 version of strspn.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* size_t strspn (const char *s, const char * accept)
++   The strspn() function calculates the length of the initial segment
++   of s which consists entirely of characters in accept.
++
++   This method checks the length of accept string. If it fits entirely
++   in one vector register, a fast algorithm is used, which does not need
++   to check multiple parts of accept-string. Otherwise a slower full
++   check of accept-string is used.
++
++   register overview:
++   r3:  pointer to start of accept-string
++   r2:  pointer to start of search-string
++   r4:  loaded byte count of vl search-string
++   r0:  found byte index
++   r1:  current return len of s
++   v16: search-string
++   v17: accept-string
++   v18: temp-vreg
++
++   ONLY FOR SLOW:
++   v19: first accept-string
++   v20: zero for preparing acc-vector
++   v21: global mask; 1 indicates a match between
++	search-string-vreg and any accept-character
++   v22: current mask; 1 indicates a match between
++	search-string-vreg and any accept-character in current acc-vreg
++   v30, v31: for re-/storing registers r6, r8, r9
++   r5:  current len of accept-string
++   r6:	zero-index in search-string or 16 if no zero
++	or min(zero-index, loaded byte count)
++   r8:	>0, if former accept-string-part contains a zero,
++	otherwise =0;
++   r9: loaded byte count of vlbb accept-string
++*/
++ENTRY(__strspn_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	/*
++	  Check if accept-string fits in one vreg:
++	  ----------------------------------------
++	*/
++	vlbb	%v17,0(%r3),6	/* Load accept.  */
++	lcbb	%r4,0(%r3),6
++	jo	.Lcheck_onbb	/* Special case if accept lays
++				   on block-boundary.  */
++.Lcheck_notonbb:
++	vistrbs	%v17,%v17	/* Fill with zeros after first zero.  */
++	je	.Lfast		/* Zero found -> accept fits in one vreg.  */
++	j	.Lslow		/* No zero -> accept exceeds one vreg.  */
++
++.Lcheck_onbb:
++	/* Accept lays on block-boundary.  */
++	vfenezb	%v18,%v17,%v17	/* Search zero in loaded accept bytes.  */
++	vlgvb	%r0,%v18,7	/* Get index of zero or 16 if not found.  */
++	clrjl	%r0,%r4,.Lcheck_notonbb /* Zero index < loaded bytes count ->
++					   Accept fits in one vreg;
++					   Fill with zeros and proceed
++					   with FAST.  */
++	vl	%v17,0(%r3)	/* Load accept, which exceeds loaded bytes.  */
++	j	.Lcheck_notonbb /* Check if accept fits in one vreg.  */
++
++
++	/*
++	  Search s for accept in one vreg
++	  -------------------------------
++	*/
++.Lfast:
++	/* Complete accept-string is in v17 and remaining bytes are zero.  */
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfaezbs	%v16,%v16,%v17,8 /* Find first element in v16
++				    unequal to any in v17
++				    or first zero element.  */
++	vlgvb	%r0,%v16,7	/* Load byte index of found element.  */
++	/* If found index is within loaded bytes (%r0 < %r1),
++	   return with found element index (=equal count).  */
++	clr	%r0,%r1
++	locgrl	%r2,%r0
++	blr	%r14
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r1,16		/* current_len = 16.  */
++	slr	%r1,%r4		/* Compute bytes to 16bytes boundary.  */
++
++.Lfast_loop:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	vfaezbs	%v16,%v16,%v17,8 /* Find first element in v16
++				    unequal to any in v17
++				    or first zero element.  */
++	jno	.Lfast_loop_found
++	vl	%v16,16(%r1,%r2)
++	vfaezbs	%v16,%v16,%v17,8
++	jno	.Lfast_loop_found16
++	vl	%v16,32(%r1,%r2)
++	vfaezbs	%v16,%v16,%v17,8
++	jno	.Lfast_loop_found32
++	vl	%v16,48(%r1,%r2)
++	vfaezbs	%v16,%v16,%v17,8
++	jno	.Lfast_loop_found48
++
++	aghi	%r1,64
++	j	.Lfast_loop	/* Loop if no element was unequal to accept
++				   and not zero.  */
++
++	/* Found unequal or zero element.  */
++.Lfast_loop_found48:
++	aghi	%r1,16
++.Lfast_loop_found32:
++	aghi	%r1,16
++.Lfast_loop_found16:
++	aghi	%r1,16
++.Lfast_loop_found:
++	vlgvb	%r0,%v16,7	/* Load byte index of found element.  */
++	algrk	%r2,%r1,%r0	/* And add it to current len.  */
++	br	%r14
++
++
++	/*
++	  Search s for accept in multiple vregs
++	  -------------------------------------
++	*/
++.Lslow:
++	/* Save registers.  */
++	vlvgg	%v30,%r6,0
++	vlvgp	%v31,%r8,%r9
++	lghi	%r1,0		/* current_len = 0.  */
++
++	/* Accept in v17 without zero.  */
++	vlr	%v19,%v17	/* Save first acc-part for a fast reload.  */
++	vzero	%v20		/* Zero for preparing acc-vector.  */
++
++	/* Align s to 16 byte.  */
++	risbg	%r0,%r2,60,128+63,0 /* Test if s is aligned and
++				     %r0 = bits 60-63 'and' 15  */
++	je	.Lslow_loop_str /* If s is aligned, loop aligned */
++	lghi	%r4,15
++	slr	%r4,%r0		/* Compute highest index to load (15-x).  */
++	vll	%v16,%r4,0(%r2) /* Load up to 16byte boundary (vll needs
++				   highest index, left bytes are 0).  */
++	ahi	%r4,1		/* Work with loaded byte count.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of accept-string to zero.  */
++	vfenezb	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first accept-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16
++				   if there is no zero.  */
++	clr	%r4,%r6		/* cc==1 if loaded byte count < zero-index.  */
++	locrl	%r6,%r4		/* Load on cc==1.  */
++	j	.Lslow_loop_acc
++
++	/* Process s in 16byte aligned loop.  */
++.Lslow_next_str:
++	vlr	%v17,%v19	/* Load first part of accept (no zero).  */
++	algfr	%r1,%r4		/* Add loaded byte count to current len.  */
++.Lslow_loop_str:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	lghi	%r4,16		/* Loaded byte count is 16.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of accept-string to zero.  */
++	vfenezb	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first accept-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++
++.Lslow_loop_acc:
++	vfaeb	%v22,%v16,%v17,4 /* Create matching-mask (1 in mask ->
++				    character matches any accepted character in
++				    this accept-string-part) IN=0, RT=1.  */
++	vo	%v21,%v21,%v22	/* global-mask = global- | matching-mask.  */
++	vfenezb	%v18,%v21,%v21	/* Find first zero in global-mask.  */
++	vlgvb	%r0,%v18,7	/* Get first found zero-index
++				   (= first mismatch).  */
++	clrjl	%r0,%r6,.Lslow_next_acc /* Mismatch-index < min(lbc,zero-index)
++					    -> Process this string-part
++					       with next acc-part.  */
++	clrjhe	%r0,%r4,.Lslow_next_str /* Found-index >= loaded byte count
++					   -> All loaded bytes are matching
++					      any accept-character
++					      and are not zero.  */
++	/* All bytes are matching any characters in accept-string
++	   and search-string is fully processed (found-index == zero-index)  */
++.Lslow_add_lbc_end:
++	algrk	%r2,%r1,%r0	/* Add matching characters to current_len.  */
++	/* Restore registers.  */
++	vlgvg	%r6,%v30,0
++	vlgvg	%r8,%v31,0
++	vlgvg	%r9,%v31,1
++	br	%r14
++
++
++
++.Lslow_next_acc:
++	clijh	%r8,0,.Lslow_add_lbc_end /* There was a zero in last acc-part
++					     -> Add found index to current len
++						and end.  */
++	vlbb	%v17,16(%r5,%r3),6 /* Load next accept part.  */
++	aghi	%r5,16		/* Add current_len of accept-string.  */
++	lcbb	%r9,0(%r5,%r3),6 /* Get loaded byte count of accept-string.  */
++	jo	.Lslow_next_acc_onbb /* Jump away if accept-string is
++					 on block-boundary.  */
++.Lslow_next_acc_notonbb:
++	vistrbs	%v17,%v17	/* Fill with zeros after first zero.  */
++	jo	.Lslow_loop_acc /* No zero found -> no preparation needed.  */
++
++.Lslow_next_acc_prepare_zero:
++	/* Zero in accept-part: fill zeros with first-accept-character.  */
++	vlgvb	%r8,%v17,0	/* Load first element of acc-part.  */
++	clije	%r8,0,.Lslow_add_lbc_end /* End if zero is first character
++					     in this part of accept-string.  */
++	/* r8>0 -> zero found in this acc-part.  */
++	vrepb	%v18,%v17,0	/* Replicate first char accross all chars.  */
++	vceqb	%v22,%v20,%v17	/* Create a mask (v22) of null chars
++				   by comparing with 0 (v20).  */
++	vsel	%v17,%v18,%v17,%v22 /* Replace null chars with first char.  */
++	j	.Lslow_loop_acc /* Accept part is prepared -> process.  */
++
++.Lslow_next_acc_onbb:
++	vfenezb	%v18,%v17,%v17	/* Find zero in loaded bytes of accept part.  */
++	vlgvb	%r8,%v18,7	/* Load byte index of zero.  */
++	clrjl	%r8,%r9,.Lslow_next_acc_notonbb /* Found a zero in loaded bytes
++						    -> Prepare vr.  */
++	vl	%v17,0(%r5,%r3)	/* Load over boundary ...  */
++	lghi	%r8,0		/* r8=0 -> no zero in this part of acc,
++				   Check for zero is in jump-target.  */
++	j	.Lslow_next_acc_notonbb /* ... and search for zero in
++					    fully loaded vreg again.  */
++END(__strspn_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strspn.c b/sysdeps/s390/multiarch/strspn.c
+new file mode 100644
+index 0000000..48dd77b
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strspn.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of strspn.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strspn, strspn)
++
++#else
++# include <string/strspn.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcsspn-c.c b/sysdeps/s390/multiarch/wcsspn-c.c
+new file mode 100644
+index 0000000..93af16c
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsspn-c.c
+@@ -0,0 +1,31 @@
++/* Default wcsspn implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSSPN  __wcsspn_c
++
++# include <wchar.h>
++extern __typeof (wcsspn) __wcsspn_c;
++# ifdef SHARED
++#  undef libc_hidden_def
++#  define libc_hidden_def(name)				\
++  __hidden_ver1 (__wcsspn_c, __GI_wcsspn, __wcsspn_c);
++# endif /* SHARED */
++
++# include <wcsmbs/wcsspn.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcsspn-vx.S b/sysdeps/s390/multiarch/wcsspn-vx.S
+new file mode 100644
+index 0000000..4ed8e84
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsspn-vx.S
+@@ -0,0 +1,270 @@
++/* Vector optimized 32/64 bit S/390 version of wcsspn.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* size_t wcsspn (const wchar_t *s, const wchar_t * accept)
++   The wcsspn() function calculates the length of the initial segment
++   of s which consists entirely of characters in accept.
++
++   This method checks the length of accept string. If it fits entirely
++   in one vector register, a fast algorithm is used, which does not need
++   to check multiple parts of accept-string. Otherwise a slower full
++   check of accept-string is used.
++
++   register overview:
++   r3:  pointer to start of accept-string
++   r2:  pointer to start of search-string
++   r4:  loaded byte count of vl search-string
++   r0:  found byte index
++   r1:  current return len of s
++   v16: search-string
++   v17: accept-string
++   v18: temp-vreg
++
++   ONLY FOR SLOW:
++   v19: first accept-string
++   v20: zero for preparing acc-vector
++   v21: global mask; 1 indicates a match between
++	search-string-vreg and any accept-character
++   v22: current mask; 1 indicates a match between
++	search-string-vreg and any accept-character in current acc-vreg
++   v30, v31: for re-/storing registers r6, r8, r9
++   r5:  current len of accept-string
++   r6:	zero-index in search-string or 16 if no zero
++	or min(zero-index, loaded byte count)
++   r8:	>0, if former accept-string-part contains a zero,
++	otherwise =0;
++   r9: loaded byte count of vlbb accept-string
++*/
++ENTRY(__wcsspn_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	tmll	%r2,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	/*
++	  Check if accept-string fits in one vreg:
++	  ----------------------------------------
++	*/
++	vlbb	%v17,0(%r3),6	/* Load accept.  */
++	lcbb	%r4,0(%r3),6
++	jo	.Lcheck_onbb	/* Special case if accept lays
++				   on block-boundary.  */
++.Lcheck_notonbb:
++	vistrfs	%v17,%v17	/* Fill with zeros after first zero.  */
++	je	.Lfast		/* Zero found -> accept fits in one vreg.  */
++	j	.Lslow		/* No zero -> accept exceeds one vreg.  */
++
++.Lcheck_onbb:
++	/* Accept lays on block-boundary.  */
++	nill	%r4,65532	/* Recognize only fully loaded characters.  */
++	je	.Lcheck_onbb2	/* Reload vr if no full wchar_t.  */
++	vfenezf	%v18,%v17,%v17	/* Search zero in loaded accept bytes.  */
++	vlgvb	%r0,%v18,7	/* Get index of zero or 16 if not found.  */
++	clrjl	%r0,%r4,.Lcheck_notonbb /* Zero index < loaded bytes count ->
++					    Accept fits in one vreg;
++					    Fill with zeros and proceed
++					    with FAST.  */
++.Lcheck_onbb2:
++	vl	%v17,0(%r3)	/* Load accept, which exceeds loaded bytes.  */
++	j	.Lcheck_notonbb /* Check if accept fits in one vreg.  */
++
++
++	/*
++	  Search s for accept in one vreg
++	  -------------------------------
++	*/
++.Lfast:
++	/* Complete accept-string in v17 and remaining bytes are zero.  */
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfaezfs	%v16,%v16,%v17,8 /* Find first element in v16
++				    unequal to any in v17
++				    or first zero element.  */
++
++	vlgvb	%r0,%v16,7	/* Load byte index of found element.  */
++	/* If found index is within loaded bytes (%r0 < %r1),
++	   return with found element index (=equal count).  */
++	clr	%r0,%r1
++	srlg	%r0,%r0,2	/* Convert byte-count to character-count.  */
++	locgrl	%r2,%r0
++	blr	%r14
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r1,16		/* current_len = 16.  */
++	slr	%r1,%r4		/* Compute bytes to 16bytes boundary.  */
++
++.Lfast_loop:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	vfaezfs	%v16,%v16,%v17,8 /* Find first element in v16
++				    unequal to any in v17
++				    or first zero element.  */
++	jno	.Lfast_loop_found
++	vl	%v16,16(%r1,%r2)
++	vfaezfs	%v16,%v16,%v17,8
++	jno	.Lfast_loop_found16
++	vl	%v16,32(%r1,%r2)
++	vfaezfs	%v16,%v16,%v17,8
++	jno	.Lfast_loop_found32
++	vl	%v16,48(%r1,%r2)
++	vfaezfs	%v16,%v16,%v17,8
++	jno	.Lfast_loop_found48
++
++	aghi	%r1,64
++	j	.Lfast_loop	/* Loop if no element was unequal to accept
++				   and not zero.  */
++
++	/* Found unequal or zero element.  */
++.Lfast_loop_found48:
++	aghi	%r1,16
++.Lfast_loop_found32:
++	aghi	%r1,16
++.Lfast_loop_found16:
++	aghi	%r1,16
++.Lfast_loop_found:
++	vlgvb	%r0,%v16,7	/* Load byte index of found element.  */
++	algrk	%r2,%r1,%r0	/* And add it to current len.  */
++	srlg	%r2,%r2,2	/* Convert byte-count to character-count.  */
++	br	%r14
++
++
++	/*
++	  Search s for accept in multiple vregs
++	  -------------------------------------
++	*/
++.Lslow:
++	/* Save registers.  */
++	vlvgg	%v30,%r6,0
++	vlvgp	%v31,%r8,%r9
++	lghi	%r1,0		/* Zero out current len.  */
++
++	/* accept in v17 without zero.  */
++	vlr	%v19,%v17	/* Save first acc-part for a fast reload.  */
++	vzero	%v20		/* Zero for preparing acc-vector.  */
++
++	/* Align s to 16 byte.  */
++	risbg	%r0,%r2,60,128+63,0 /* Test if s is aligned and
++				     %r0 = bits 60-63 'and' 15.  */
++	je	.Lslow_loop_str /* If s is aligned, loop aligned */
++	lghi	%r4,15
++	slr	%r4,%r0		/* Compute highest index to load (15-x).  */
++	vll	%v16,%r4,0(%r2) /* Load up to 16byte boundary (vll needs
++				   highest index, remaining bytes are 0).  */
++	aghi	%r4,1		/* Work with loaded byte count.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of accept-string to zero.  */
++	vfenezf	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first accept-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16
++				   if there is no zero.  */
++	clr	%r4,%r6		/* cc==1 if loaded byte count < zero-index.  */
++	locrl	%r6,%r4		/* Load on cc==1.  */
++	j	.Lslow_loop_acc
++
++	/* Process s in 16byte aligned loop.  */
++.Lslow_next_str:
++	vlr	%v17,%v19	/* Load first part of accept (no zero).  */
++	algfr	%r1,%r4		/* Add loaded byte count to current len.  */
++.Lslow_loop_str:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	lghi	%r4,16		/* Loaded byte count is 16.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of accept-string to zero.  */
++	vfenezf	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first accept-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++
++.Lslow_loop_acc:
++	vfaef	%v22,%v16,%v17,4 /* Create matching-mask (1 in mask ->
++				    character matches any accepted character in
++				    this accept-string-part) IN=0, RT=1.  */
++	vo	%v21,%v21,%v22	/* global-mask = global- | matching-mask.  */
++	vfenezf	%v18,%v21,%v21	/* Find first zero in global-mask.  */
++	vlgvb	%r0,%v18,7	/* Get first found zero-index
++				   (= first mismatch).  */
++	clrjl	%r0,%r6,.Lslow_next_acc /* Mismatch-index < min(lbc,zero-index)
++					   -> Process this string-part
++					      with next acc-part.  */
++	clrjhe	%r0,%r4,.Lslow_next_str /* Found-index >= loaded byte count
++					   -> All loaded bytes are matching
++					      any accept-character
++					      and are not zero.  */
++	/* All bytes are matching any characters in accept-string
++	   and search-string is fully processed (found-index == zero-index).  */
++.Lslow_add_lbc_end:
++	algrk	%r2,%r1,%r0	/* Add matching characters to current len.  */
++	srlg	%r2,%r2,2	/* Convert byte-count to character-count.  */
++	/* Restore registers.  */
++	vlgvg	%r6,%v30,0
++	vlgvg	%r8,%v31,0
++	vlgvg	%r9,%v31,1
++	br	%r14
++
++.Lslow_next_acc:
++	clijh	%r8,0,.Lslow_add_lbc_end /* There was a zero in last acc-part
++					    -> Add found index to current len
++					       and end.  */
++	vlbb	%v17,16(%r5,%r3),6 /* Load next accept part.  */
++	aghi	%r5,16		/* Increment current len of accept-string.  */
++	lcbb	%r9,0(%r5,%r3),6 /* Get loaded byte count of accept-string.  */
++	jo	.Lslow_next_acc_onbb /* Jump away if accept-string is
++					on block-boundary.  */
++.Lslow_next_acc_notonbb:
++	vistrfs	%v17,%v17	/* Fill with zeros after first zero.  */
++	jo	.Lslow_loop_acc /* No zero found -> no preparation needed.  */
++
++.Lslow_next_acc_prepare_zero:
++	/* Zero in accept-part: fill zeros with first-accept-character.  */
++	vlgvf	%r8,%v17,0	/* Load first element of acc-part.  */
++	clije	%r8,0,.Lslow_add_lbc_end /* End if zero is first character
++					     in this part of accept-string.  */
++	/* r8>0 -> zero found in this acc-part.  */
++	vrepf	%v18,%v17,0	/* Replicate first char accross all chars.  */
++	vceqf	%v22,%v20,%v17	/* Create a mask (v22) of null chars
++				   by comparing with 0 (v20).  */
++	vsel	%v17,%v18,%v17,%v22 /* Replace null chars with first char.  */
++	j	.Lslow_loop_acc /* Accept part is prepared -> process.  */
++
++.Lslow_next_acc_onbb:
++	nill	%r9,65532	/* Recognize only fully loaded characters.  */
++	je	.Lslow_next_acc_onbb2 /* Reload vr, if we loaded no full
++					  wchar_t.  */
++	vfenezf	%v18,%v17,%v17	/* Find zero in loaded bytes of accept part.  */
++	vlgvb	%r8,%v18,7	/* Load byte index of zero.  */
++	clrjl	%r8,%r9,.Lslow_next_acc_notonbb /* Found a zero in loaded bytes
++						   -> Prepare vreg.  */
++.Lslow_next_acc_onbb2:
++	vl	%v17,0(%r5,%r3)	/* Load over boundary ...  */
++	lghi	%r8,0		/* r8=0 -> no zero in this part of acc,
++				   check for zero is in jump-target.  */
++	j	.Lslow_next_acc_notonbb /* ... and search for zero in
++					   fully loaded vreg again.  */
++.Lfallback:
++	jg	__wcsspn_c
++END(__wcsspn_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcsspn.c b/sysdeps/s390/multiarch/wcsspn.c
+new file mode 100644
+index 0000000..3b3041c
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcsspn.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wcsspn.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wcsspn, wcsspn)
++
++#else
++# include <wcsmbs/wcsspn.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index de3635d..843a23c 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -42,7 +42,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    mbrtoc16 c16rtomb
+ 
+ strop-tests :=  wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+-		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul
++		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcsspn-ifunc.c b/wcsmbs/test-wcsspn-ifunc.c
+new file mode 100644
+index 0000000..73f288f
+--- /dev/null
++++ b/wcsmbs/test-wcsspn-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcsspn function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcsspn.c"
+diff --git a/wcsmbs/test-wcsspn.c b/wcsmbs/test-wcsspn.c
+new file mode 100644
+index 0000000..171043c
+--- /dev/null
++++ b/wcsmbs/test-wcsspn.c
+@@ -0,0 +1,20 @@
++/* Test wcsspn functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-strspn.c"
+diff --git a/wcsmbs/wcsspn.c b/wcsmbs/wcsspn.c
+index dad72b4..3e84726 100644
+--- a/wcsmbs/wcsspn.c
++++ b/wcsmbs/wcsspn.c
+@@ -18,6 +18,9 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WCSSPN
++# define wcsspn WCSSPN
++#endif
+ 
+ /* Return the length of the maximum initial segment
+    of WCS which contains only wide-characters in ACCEPT.  */
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-24.patch b/SOURCES/glibc-rh1268008-24.patch
new file mode 100644
index 0000000..2b355e6
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-24.patch
@@ -0,0 +1,1403 @@
+From 685417419834a85cd5d59787c25e487cd7129890 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 12:58:39 +0200
+Subject: [PATCH 24/30] S390: Optimize strpbrk and wcspbrk.
+
+upstream-commit-id: f0ba659847446eec3b2477d60c97c77ef4680e81
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00091.html
+
+This patch provides optimized versions of strpbrk and wcspbrk with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strpbrk-c.c: New File.
+	* sysdeps/s390/multiarch/strpbrk-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strpbrk.c: Likewise.
+	* sysdeps/s390/multiarch/wcspbrk-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcspbrk-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcspbrk.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strpbrk and
+	wcspbrk functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strpbrk, wcspbrk.
+	* wcsmbs/wcspbrk.c: Use WCSPBRK if defined.
+	* string/test-strpbrk.c: Add wcspbrk support.
+	* wcsmbs/test-wcspbrk.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcspbrk.
+	* benchtests/bench-strpbrk.c: Add wcspbrk support.
+	* benchtests/bench-wcspbrk.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcspbrk.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-strpbrk.c               | 100 ++++++----
+ benchtests/bench-wcspbrk.c               |  20 ++
+ string/strpbrk.c                         |   8 +-
+ string/test-strpbrk.c                    | 130 ++++++++-----
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strpbrk-c.c       |  28 +++
+ sysdeps/s390/multiarch/strpbrk-vx.S      | 302 +++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strpbrk.c         |  27 +++
+ sysdeps/s390/multiarch/wcspbrk-c.c       |  31 +++
+ sysdeps/s390/multiarch/wcspbrk-vx.S      | 315 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcspbrk.c         |  27 +++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wcspbrk-ifunc.c              |  20 ++
+ wcsmbs/test-wcspbrk.c                    |  20 ++
+ wcsmbs/wcspbrk.c                         |   3 +
+ 17 files changed, 953 insertions(+), 91 deletions(-)
+ create mode 100644 benchtests/bench-wcspbrk.c
+ create mode 100644 sysdeps/s390/multiarch/strpbrk-c.c
+ create mode 100644 sysdeps/s390/multiarch/strpbrk-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strpbrk.c
+ create mode 100644 sysdeps/s390/multiarch/wcspbrk-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcspbrk-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcspbrk.c
+ create mode 100644 wcsmbs/test-wcspbrk-ifunc.c
+ create mode 100644 wcsmbs/test-wcspbrk.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 337b2a1..015b5d6 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -39,7 +39,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+-		wcsncmp wcsncmp wcschr wcschrnul wcsrchr wcsspn
++		wcsncmp wcsncmp wcschr wcschrnul wcsrchr wcsspn wcspbrk
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-strpbrk.c b/benchtests/bench-strpbrk.c
+index fe966be..f2db902 100644
+--- a/benchtests/bench-strpbrk.c
++++ b/benchtests/bench-strpbrk.c
+@@ -16,50 +16,80 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#ifndef WIDE
++# define CHAR char
++# define STRLEN strlen
++# define STRCHR strchr
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define CHAR wchar_t
++# define STRLEN wcslen
++# define STRCHR wcschr
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++#endif /* WIDE */
++
+ #ifndef STRPBRK_RESULT
+ # define STRPBRK_RESULT(s, pos) ((s)[(pos)] ? (s) + (pos) : NULL)
+-# define RES_TYPE char *
++# define RES_TYPE CHAR *
+ # define TEST_MAIN
+-# define TEST_NAME "strpbrk"
++# ifndef WIDE
++#  define TEST_NAME "strpbrk"
++# else
++#  define TEST_NAME "wcspbrk"
++# endif /* WIDE */
+ # include "bench-string.h"
+ 
+-typedef char *(*proto_t) (const char *, const char *);
+-char *simple_strpbrk (const char *, const char *);
+-char *stupid_strpbrk (const char *, const char *);
+-
+-IMPL (stupid_strpbrk, 0)
+-IMPL (simple_strpbrk, 0)
+-IMPL (strpbrk, 1)
+-
+-char *
+-simple_strpbrk (const char *s, const char *rej)
++# ifndef WIDE
++#  define STRPBRK strpbrk
++#  define SIMPLE_STRPBRK simple_strpbrk
++#  define STUPID_STRPBRK stupid_strpbrk
++# else
++#  include <wchar.h>
++#  define STRPBRK wcspbrk
++#  define SIMPLE_STRPBRK simple_wcspbrk
++#  define STUPID_STRPBRK stupid_wcspbrk
++# endif /* WIDE */
++
++typedef CHAR *(*proto_t) (const CHAR *, const CHAR *);
++CHAR *SIMPLE_STRPBRK (const CHAR *, const CHAR *);
++CHAR *STUPID_STRPBRK (const CHAR *, const CHAR *);
++
++IMPL (STUPID_STRPBRK, 0)
++IMPL (SIMPLE_STRPBRK, 0)
++IMPL (STRPBRK, 1)
++
++CHAR *
++SIMPLE_STRPBRK (const CHAR *s, const CHAR *rej)
+ {
+-  const char *r;
+-  char c;
++  const CHAR *r;
++  CHAR c;
+ 
+   while ((c = *s++) != '\0')
+     for (r = rej; *r != '\0'; ++r)
+       if (*r == c)
+-	return (char *) s - 1;
++	return (CHAR *) s - 1;
+   return NULL;
+ }
+ 
+-char *
+-stupid_strpbrk (const char *s, const char *rej)
++CHAR *
++STUPID_STRPBRK (const CHAR *s, const CHAR *rej)
+ {
+-  size_t ns = strlen (s), nrej = strlen (rej);
++  size_t ns = STRLEN (s), nrej = STRLEN (rej);
+   size_t i, j;
+ 
+   for (i = 0; i < ns; ++i)
+     for (j = 0; j < nrej; ++j)
+       if (s[i] == rej[j])
+-	return (char *) s + i;
++	return (CHAR *) s + i;
+   return NULL;
+ }
+-#endif
++#endif /* !STRPBRK_RESULT */
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s, const char *rej, RES_TYPE exp_res)
++do_one_test (impl_t *impl, const CHAR *s, const CHAR *rej, RES_TYPE exp_res)
+ {
+   RES_TYPE res = CALL (impl, s, rej);
+   size_t i, iters = INNER_LOOP_ITERS;
+@@ -91,35 +121,35 @@ do_test (size_t align, size_t pos, size_t len)
+   size_t i;
+   int c;
+   RES_TYPE result;
+-  char *rej, *s;
++  CHAR *rej, *s;
+ 
+   align &= 7;
+-  if (align + pos + 10 >= page_size || len > 240)
++  if ((align + pos + 10) * sizeof (CHAR) >= page_size || len > 240)
+     return;
+ 
+-  rej = (char *) (buf2 + (random () & 255));
+-  s = (char *) (buf1 + align);
++  rej = (CHAR *) (buf2) + (random () & BIG_CHAR);
++  s = (CHAR *) (buf1) + align;
+ 
+   for (i = 0; i < len; ++i)
+     {
+-      rej[i] = random () & 255;
++      rej[i] = random () & BIG_CHAR;
+       if (!rej[i])
+-	rej[i] = random () & 255;
++	rej[i] = random () & BIG_CHAR;
+       if (!rej[i])
+-	rej[i] = 1 + (random () & 127);
++	rej[i] = 1 + (random () & SMALL_CHAR);
+     }
+   rej[len] = '\0';
+-  for (c = 1; c <= 255; ++c)
+-    if (strchr (rej, c) == NULL)
++  for (c = 1; c <= BIG_CHAR; ++c)
++    if (STRCHR (rej, c) == NULL)
+       break;
+ 
+   for (i = 0; i < pos; ++i)
+     {
+-      s[i] = random () & 255;
+-      if (strchr (rej, s[i]))
++      s[i] = random () & BIG_CHAR;
++      if (STRCHR (rej, s[i]))
+ 	{
+-	  s[i] = random () & 255;
+-	  if (strchr (rej, s[i]))
++	  s[i] = random () & BIG_CHAR;
++	  if (STRCHR (rej, s[i]))
+ 	    s[i] = c;
+ 	}
+     }
+@@ -127,7 +157,7 @@ do_test (size_t align, size_t pos, size_t len)
+   if (s[pos])
+     {
+       for (i = pos + 1; i < pos + 10; ++i)
+-	s[i] = random () & 255;
++	s[i] = random () & BIG_CHAR;
+       s[i] = '\0';
+     }
+   result = STRPBRK_RESULT (s, pos);
+diff --git a/benchtests/bench-wcspbrk.c b/benchtests/bench-wcspbrk.c
+new file mode 100644
+index 0000000..3d9f00f
+--- /dev/null
++++ b/benchtests/bench-wcspbrk.c
+@@ -0,0 +1,20 @@
++/* Measure wcspbrk functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strpbrk.c"
+diff --git a/string/strpbrk.c b/string/strpbrk.c
+index 7f45fdf..c153d8e 100644
+--- a/string/strpbrk.c
++++ b/string/strpbrk.c
+@@ -25,11 +25,13 @@
+ 
+ #undef strpbrk
+ 
++#ifndef STRPBRK
++# define STRPBRK strpbrk
++#endif
++
+ /* Find the first occurrence in S of any character in ACCEPT.  */
+ char *
+-strpbrk (s, accept)
+-     const char *s;
+-     const char *accept;
++STRPBRK (const char *s, const char *accept)
+ {
+   while (*s != '\0')
+     {
+diff --git a/string/test-strpbrk.c b/string/test-strpbrk.c
+index 72eaaa1..c36c5b5 100644
+--- a/string/test-strpbrk.c
++++ b/string/test-strpbrk.c
+@@ -17,50 +17,82 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#ifndef WIDE
++# define CHAR char
++# define UCHAR unsigned char
++# define STRLEN strlen
++# define STRCHR strchr
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define CHAR wchar_t
++# define UCHAR wchar_t
++# define STRLEN wcslen
++# define STRCHR wcschr
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++#endif /* WIDE */
++
+ #ifndef STRPBRK_RESULT
+ # define STRPBRK_RESULT(s, pos) ((s)[(pos)] ? (s) + (pos) : NULL)
+-# define RES_TYPE char *
++# define RES_TYPE CHAR *
+ # define TEST_MAIN
+-# define TEST_NAME "strpbrk"
++# ifndef WIDE
++#  define TEST_NAME "strpbrk"
++# else
++#  define TEST_NAME "wcspbrk"
++# endif /* WIDE */
+ # include "test-string.h"
+ 
+-typedef char *(*proto_t) (const char *, const char *);
+-char *simple_strpbrk (const char *, const char *);
+-char *stupid_strpbrk (const char *, const char *);
++# ifndef WIDE
++#  define STRPBRK strpbrk
++#  define SIMPLE_STRPBRK simple_strpbrk
++#  define STUPID_STRPBRK stupid_strpbrk
++# else
++#  include <wchar.h>
++#  define STRPBRK wcspbrk
++#  define SIMPLE_STRPBRK simple_wcspbrk
++#  define STUPID_STRPBRK stupid_wcspbrk
++# endif /* WIDE */
++
++typedef CHAR *(*proto_t) (const CHAR *, const CHAR *);
++CHAR *SIMPLE_STRPBRK (const CHAR *, const CHAR *);
++CHAR *STUPID_STRPBRK (const CHAR *, const CHAR *);
+ 
+-IMPL (stupid_strpbrk, 0)
+-IMPL (simple_strpbrk, 0)
+-IMPL (strpbrk, 1)
++IMPL (STUPID_STRPBRK, 0)
++IMPL (SIMPLE_STRPBRK, 0)
++IMPL (STRPBRK, 1)
+ 
+-char *
+-simple_strpbrk (const char *s, const char *rej)
++CHAR *
++SIMPLE_STRPBRK (const CHAR *s, const CHAR *rej)
+ {
+-  const char *r;
+-  char c;
++  const CHAR *r;
++  CHAR c;
+ 
+   while ((c = *s++) != '\0')
+     for (r = rej; *r != '\0'; ++r)
+       if (*r == c)
+-	return (char *) s - 1;
++	return (CHAR *) s - 1;
+   return NULL;
+ }
+ 
+-char *
+-stupid_strpbrk (const char *s, const char *rej)
++CHAR *
++STUPID_STRPBRK (const CHAR *s, const CHAR *rej)
+ {
+-  size_t ns = strlen (s), nrej = strlen (rej);
++  size_t ns = STRLEN (s), nrej = STRLEN (rej);
+   size_t i, j;
+ 
+   for (i = 0; i < ns; ++i)
+     for (j = 0; j < nrej; ++j)
+       if (s[i] == rej[j])
+-	return (char *) s + i;
++	return (CHAR *) s + i;
+   return NULL;
+ }
+-#endif
++#endif /* !STRPBRK_RESULT */
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s, const char *rej, RES_TYPE exp_res)
++do_one_test (impl_t *impl, const CHAR *s, const CHAR *rej, RES_TYPE exp_res)
+ {
+   RES_TYPE res = CALL (impl, s, rej);
+   if (res != exp_res)
+@@ -78,35 +110,35 @@ do_test (size_t align, size_t pos, size_t len)
+   size_t i;
+   int c;
+   RES_TYPE result;
+-  char *rej, *s;
++  CHAR *rej, *s;
+ 
+   align &= 7;
+-  if (align + pos + 10 >= page_size || len > 240)
++  if ((align + pos + 10) * sizeof (CHAR) >= page_size || len > 240)
+     return;
+ 
+-  rej = (char *) (buf2 + (random () & 255));
+-  s = (char *) (buf1 + align);
++  rej = (CHAR *) (buf2) + (random () & 255);
++  s = (CHAR *) (buf1) + align;
+ 
+   for (i = 0; i < len; ++i)
+     {
+-      rej[i] = random () & 255;
++      rej[i] = random () & BIG_CHAR;
+       if (!rej[i])
+-	rej[i] = random () & 255;
++	rej[i] = random () & BIG_CHAR;
+       if (!rej[i])
+-	rej[i] = 1 + (random () & 127);
++	rej[i] = 1 + (random () & SMALL_CHAR);
+     }
+   rej[len] = '\0';
+-  for (c = 1; c <= 255; ++c)
+-    if (strchr (rej, c) == NULL)
++  for (c = 1; c <= BIG_CHAR; ++c)
++    if (STRCHR (rej, c) == NULL)
+       break;
+ 
+   for (i = 0; i < pos; ++i)
+     {
+-      s[i] = random () & 255;
+-      if (strchr (rej, s[i]))
++      s[i] = random () & BIG_CHAR;
++      if (STRCHR (rej, s[i]))
+ 	{
+-	  s[i] = random () & 255;
+-	  if (strchr (rej, s[i]))
++	  s[i] = random () & BIG_CHAR;
++	  if (STRCHR (rej, s[i]))
+ 	    s[i] = c;
+ 	}
+     }
+@@ -114,7 +146,7 @@ do_test (size_t align, size_t pos, size_t len)
+   if (s[pos])
+     {
+       for (i = pos + 1; i < pos + 10; ++i)
+-	s[i] = random () & 255;
++	s[i] = random () & BIG_CHAR;
+       s[i] = '\0';
+     }
+   result = STRPBRK_RESULT (s, pos);
+@@ -129,8 +161,8 @@ do_random_tests (void)
+   size_t i, j, n, align, pos, len, rlen;
+   RES_TYPE result;
+   int c;
+-  unsigned char *p = buf1 + page_size - 512;
+-  unsigned char *rej;
++  UCHAR *p = (UCHAR *) (buf1 + page_size) - 512;
++  UCHAR *rej;
+ 
+   for (n = 0; n < ITERATIONS; n++)
+     {
+@@ -147,18 +179,18 @@ do_random_tests (void)
+ 	rlen = random () & 63;
+       else
+ 	rlen = random () & 15;
+-      rej = buf2 + page_size - rlen - 1 - (random () & 7);
++      rej = (UCHAR *) (buf2 + page_size) - rlen - 1 - (random () & 7);
+       for (i = 0; i < rlen; ++i)
+ 	{
+-	  rej[i] = random () & 255;
++	  rej[i] = random () & BIG_CHAR;
+ 	  if (!rej[i])
+-	    rej[i] = random () & 255;
++	    rej[i] = random () & BIG_CHAR;
+ 	  if (!rej[i])
+-	    rej[i] = 1 + (random () & 127);
++	    rej[i] = 1 + (random () & SMALL_CHAR);
+ 	}
+       rej[i] = '\0';
+-      for (c = 1; c <= 255; ++c)
+-	if (strchr ((char *) rej, c) == NULL)
++      for (c = 1; c <= BIG_CHAR; ++c)
++	if (STRCHR ((CHAR *) rej, c) == NULL)
+ 	  break;
+       j = (pos > len ? pos : len) + align + 64;
+       if (j > 512)
+@@ -171,27 +203,27 @@ do_random_tests (void)
+ 	  else if (i == pos + align)
+ 	    p[i] = rej[random () % (rlen + 1)];
+ 	  else if (i < align || i > pos + align)
+-	    p[i] = random () & 255;
++	    p[i] = random () & BIG_CHAR;
+ 	  else
+ 	    {
+-	      p[i] = random () & 255;
+-	      if (strchr ((char *) rej, p[i]))
++	      p[i] = random () & BIG_CHAR;
++	      if (STRCHR ((CHAR *) rej, p[i]))
+ 		{
+-		  p[i] = random () & 255;
+-		  if (strchr ((char *) rej, p[i]))
++		  p[i] = random () & BIG_CHAR;
++		  if (STRCHR ((CHAR *) rej, p[i]))
+ 		    p[i] = c;
+ 		}
+ 	    }
+ 	}
+ 
+-      result = STRPBRK_RESULT ((char *) (p + align), pos < len ? pos : len);
++      result = STRPBRK_RESULT ((CHAR *) (p + align), pos < len ? pos : len);
+ 
+       FOR_EACH_IMPL (impl, 1)
+-	if (CALL (impl, (char *) (p + align), (char *) rej) != result)
++	if (CALL (impl, (CHAR *) (p + align), (CHAR *) rej) != result)
+ 	  {
+ 	    error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %p, %zd, %zd, %zd) %p != %p",
+ 		   n, impl->name, align, rej, rlen, pos, len,
+-		   (void *) CALL (impl, (char *) (p + align), (char *) rej),
++		   (void *) CALL (impl, (CHAR *) (p + align), (CHAR *) rej),
+ 		   (void *) result);
+ 	    ret = 1;
+ 	  }
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 9403169..5765a8c 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -12,7 +12,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strchr strchr-vx strchr-c \
+ 		   strchrnul strchrnul-vx strchrnul-c \
+ 		   strrchr strrchr-vx strrchr-c \
+-		   strspn strspn-vx strspn-c
++		   strspn strspn-vx strspn-c \
++		   strpbrk strpbrk-vx strpbrk-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -29,5 +30,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcschr wcschr-vx wcschr-c \
+ 		   wcschrnul wcschrnul-vx wcschrnul-c \
+ 		   wcsrchr wcsrchr-vx wcsrchr-c \
+-		   wcsspn wcsspn-vx wcsspn-c
++		   wcsspn wcsspn-vx wcsspn-c \
++		   wcspbrk wcspbrk-vx wcspbrk-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index cbedf64..b39a5c5 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -121,6 +121,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strspn);
+   IFUNC_VX_IMPL (wcsspn);
+ 
++  IFUNC_VX_IMPL (strpbrk);
++  IFUNC_VX_IMPL (wcspbrk);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strpbrk-c.c b/sysdeps/s390/multiarch/strpbrk-c.c
+new file mode 100644
+index 0000000..1c8bf49
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strpbrk-c.c
+@@ -0,0 +1,28 @@
++/* Default strpbrk implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRPBRK  __strpbrk_c
++# ifdef SHARED
++#  undef libc_hidden_builtin_def
++#  define libc_hidden_builtin_def(name)				\
++     __hidden_ver1 (__strpbrk_c, __GI_strpbrk, __strpbrk_c);
++# endif /* SHARED */
++
++# include <string/strpbrk.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strpbrk-vx.S b/sysdeps/s390/multiarch/strpbrk-vx.S
+new file mode 100644
+index 0000000..c6ad3ef
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strpbrk-vx.S
+@@ -0,0 +1,302 @@
++/* Vector optimized 32/64 bit S/390 version of strpbrk.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* char *strpbrk (const char *s, const char * accept)
++   The  strpbrk()  function locates the first occurrence in the string s
++   of any of the characters in the string accept and returns a pointer
++   to that character or NULL if not found.
++
++   This method checks the length of accept string. If it fits entirely
++   in one vector register, a fast algorithm is used, which does not need
++   to check multiple parts of accept-string. Otherwise a slower full
++   check of accept-string is used.
++
++   register overview:
++   r3:  pointer to start of accept-string
++   r2:  pointer to start of search-string
++   r0:  loaded byte count of vlbb search-string (32bit unsigned)
++   r4:  found byte index (32bit unsigned)
++   r1:  current return len (64bit unsigned)
++   v16: search-string
++   v17: accept-string
++   v18: temp-vreg
++
++   ONLY FOR SLOW:
++   v19: first accept-string
++   v20: zero for preparing acc-vector
++   v21: global mask; 1 indicates a match between
++	search-string-vreg and any accept-character
++   v22: current mask; 1 indicates a match between
++	search-string-vreg and any accept-character in current acc-vreg
++   v24: one for result-checking of former string-part
++   v30, v31: for re-/storing registers r6, r8, r9
++   r5:  current len of accept-string
++   r6:  zero-index in search-string or 16 if no zero
++	or min(zero-index, loaded byte count)
++   r8:  >0, if former accept-string-part contains a zero,
++	otherwise =0;
++   r9:  loaded byte count of vlbb accept-string
++*/
++ENTRY(__strpbrk_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	/*
++	  Check if accept-string fits in one vreg:
++	  ----------------------------------------
++	*/
++	vlbb	%v17,0(%r3),6	/* Load accept.  */
++	lghi	%r1,0		/* Zero out current len.  */
++	vlgvb	%r0,%v17,0	/* Get first element.  */
++	clije	%r0,0,.Lfast_end_null /* Return null if accept is empty.  */
++	lcbb	%r0,0(%r3),6
++	jo	.Lcheck_onbb	/* Special case if accept lays
++				   on block-boundary.  */
++.Lcheck_notonbb:
++	vistrbs	%v17,%v17	/* Fill with zeros after first zero.  */
++	je	.Lfast		/* Zero found -> accept fits in one vreg.  */
++	j	.Lslow		/* No zero -> accept exceeds one vreg  */
++
++
++.Lcheck_onbb:
++	/* Accept lays on block-boundary.  */
++	vfenezb	%v18,%v17,%v17	/* Search zero in loaded accept bytes.  */
++	vlgvb	%r4,%v18,7	/* Get index of zero or 16 if not found.  */
++	clrjl	%r4,%r0,.Lcheck_notonbb /* Zero index < loaded bytes count ->
++					    Accept fits in one vreg;
++					    Fill with zeros and proceed
++					    with FAST.  */
++	vl	%v17,0(%r3)	/* Load accept, which exceeds loaded bytes.  */
++	j	.Lcheck_notonbb /* Check if accept fits in one vreg.  */
++
++
++	/*
++	  Search s for accept in one vreg
++	  -------------------------------
++	*/
++.Lfast:
++	/* Complete accept-string in v17 and remaining bytes are zero.  */
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r0,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfaezbs	%v18,%v16,%v17,0 /* Find first element in v16 unequal to any
++				    in v17 or first zero element.  */
++
++	vlgvb	%r4,%v18,7	/* Load byte index of found element.  */
++	/* If found index is within loaded bytes, return with found
++	   element index (=equal count).  */
++	clrjl	%r4,%r0,.Lfast_loop_found2
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r1,16		/* current_len = 16.  */
++	slr	%r1,%r4		/* Compute bytes to 16bytes boundary.  */
++
++	/* Process s in 16byte aligned loop.  */
++.Lfast_loop:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	vfaezbs	%v18,%v16,%v17,0 /* Find first element in v16 equal to any
++				    in v17 or first zero element.  */
++	jno	.Lfast_loop_found
++
++	vl	%v16,16(%r1,%r2)
++	vfaezbs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found16
++
++	vl	%v16,32(%r1,%r2)
++	vfaezbs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found32
++
++	vl	%v16,48(%r1,%r2)
++	vfaezbs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found48
++
++	aghi	%r1,64
++	j	.Lfast_loop	/* Loop if no element was unequal to accept
++				   and not zero.  */
++
++	/* Found equal or zero element.  */
++.Lfast_loop_found48:
++	aghi	%r1,16
++.Lfast_loop_found32:
++	aghi	%r1,16
++.Lfast_loop_found16:
++	aghi	%r1,16
++.Lfast_loop_found:
++	vlgvb	%r4,%v18,7	/* Load byte index of found element.  */
++.Lfast_loop_found2:
++	vlgvb	%r0,%v16,0(%r4)	/* Get found element.  */
++	clije	%r0,0,.Lfast_end_null /* Return null if no accept-char found */
++	algfr	%r1,%r4		/* Add found index of char to current len.  */
++	la	%r2,0(%r1,%r2)	/* And return pointer to first equal char.  */
++	br	%r14
++
++.Lfast_end_null:
++	lghi	%r2,0		/* Return null if no character is equal.  */
++	br	%r14
++
++
++
++
++	/*
++	  Search s for accept in multiple vregs
++	  -------------------------------------
++	*/
++.Lslow:
++	/* Save registers.  */
++	vlvgg	%v30,%r6,0
++	vlvgp	%v31,%r8,%r9
++
++	/* accept in v17 without zero.  */
++	vlr	%v19,%v17	/* Save first acc-part for a fast reload.  */
++	vzero	%v20		/* Zero for preparing acc-vector.  */
++	vone	%v24		/* One for checking result of former string.  */
++
++	/* Align s to 16 byte.  */
++	risbg	%r4,%r2,60,128+63,0 /* Test if s is aligned and
++				       %r4 = bits 60-63 'and' 15.  */
++	je	.Lslow_loop_str /* If s is aligned, loop aligned.  */
++	lghi	%r0,15
++	slr	%r0,%r4		/* Compute highest index to load (15-x).  */
++	vll	%v16,%r0,0(%r2) /* Load up to 16 byte boundary (vll needs
++				   highest index, remaining bytes are 0).  */
++	ahi	%r0,1		/* Work with loaded byte count.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of accept-string to zero.  */
++	vfenezb	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first accept-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++	clije	%r6,0,.Lslow_end_null /* If first element is zero
++					  (end of string) -> return null */
++	clr	%r0,%r6		/* cc==1 if loaded byte count < zero-index.  */
++	locrl	%r6,%r0		/* Load on cc==1; zero-index = lbc.  */
++	j	.Lslow_loop_acc
++
++
++	/* Process s in 16byte aligned loop.  */
++.Lslow_next_str:
++	/* Check results of former processed str-part.  */
++	vfeeb	%v18,%v21,%v24	/* Find first equal match in global mask
++				   (ones in element).  */
++	vlgvb	%r4,%v18,7	/* Get index of first one (=equal)
++				   or 16 if no match.  */
++	/* Equal-index < min(zero-index, loaded byte count)
++	   -> return pointer to equal element.  */
++	clrjl	%r4,%r6,.Lslow_index_found
++	/* Zero-index < loaded byte count
++	   -> former str-part was last str-part
++	   -> return null */
++	clrjl	%r6,%r0,.Lslow_end_null
++	/* All elements are zero (=no match) -> proceed with next str-part.  */
++
++	vlr	%v17,%v19	/* Load first part of accept (no zero).  */
++	algfr	%r1,%r0		/* Add loaded byte count to current len.  */
++
++.Lslow_loop_str:
++	vl	%v16,0(%r1,%r2)	/* Load search-string */
++	lghi	%r0,16		/* Loaded byte count is 16.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of accept to zero.  */
++	vfenezb	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first accept-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++	clije	%r6,0,.Lslow_end_null /* If first element is zero
++					  (end of string) -> return null.  */
++
++.Lslow_loop_acc:
++	vfaeb	%v22,%v16,%v17,4 /* Create matching-mask (1 in mask ->
++				    Character matches any accepted character in
++				    this accept-string-part) IN=0, RT=1.  */
++	vlgvb	%r4,%v22,0	/* Get result of first element.  */
++	/* First element is equal to any accepted characters
++	   (all other parts of accept cannot lead to a match before this one)
++	   -> current len is pointing to first element
++	   -> return found  */
++	clijh	%r4,0,.Lslow_end_found
++	vo	%v21,%v21,%v22	/* Global-mask = global-|matching-mask.  */
++	/* Proceed with next acc until end of acc is reached.  */
++
++
++.Lslow_next_acc:
++	clijh	%r8,0,.Lslow_next_str /* There was a zero in the last acc-part
++					  -> add index to current_len and
++					     end.  */
++	vlbb	%v17,16(%r5,%r3),6 /* Load next accept part.  */
++	aghi	%r5,16		/* Increment current len of accept-string.  */
++	lcbb	%r9,0(%r5,%r3),6 /* Get loaded byte count of accept-string.  */
++	jo	.Lslow_next_acc_onbb /* Jump away ifaccept-string is
++					 on block-boundary.  */
++.Lslow_next_acc_notonbb:
++	vistrbs	%v17,%v17	/* Fill with zeros after first zero.  */
++	jo	.Lslow_loop_acc /* No zero found -> no preparation needed.  */
++
++.Lslow_next_acc_prepare_zero:
++	/* Zero in accept-part: fill zeros with first-accept-character.  */
++	vlgvb	%r8,%v17,0	/* Load first element of acc-part.  */
++	clije	%r8,0,.Lslow_next_str /* Proceed with next string-part,
++					  if first char in this part of accept
++					  is a zero.  */
++	/* r8>0 -> zero found in this acc-part.  */
++	vrepb	%v18,%v17,0	/* Replicate first char accross all chars.  */
++	vceqb	%v22,%v20,%v17	/* Create a mask (v22) of null chars
++				   by comparing with 0 (v20).  */
++	vsel	%v17,%v18,%v17,%v22 /* Replace null chars with first char.  */
++	j	.Lslow_loop_acc /* Accept part is prepared -> process.  */
++
++.Lslow_next_acc_onbb:
++	vfenezb	%v18,%v17,%v17	/* Find zero in loaded bytes of accept part.  */
++	vlgvb	%r8,%v18,7	/* Load byte index of zero.  */
++	clrjl	%r8,%r9,.Lslow_next_acc_notonbb /* Found a zero in loaded bytes
++						    -> Prepare vreg.  */
++	vl	%v17,0(%r5,%r3)	/* Load over boundary ...  */
++	lghi	%r8,0		/* r8=0 -> no zero in this part of acc,
++				   check for zero is in jump-target.  */
++	j	.Lslow_next_acc_notonbb /* ... and search for zero in
++					    fully loaded vreg again.  */
++
++.Lslow_end_null:
++	lghi	%r1,0		/* Return null if no character is equal.  */
++	j	.Lslow_end
++
++.Lslow_loop_found:
++	vlgvb	%r4,%v18,7	/* Load byte index of found element.  */
++	vlgvb	%r0,%v16,0(%r4)	/* Get found element.  */
++	clije	%r0,0,.Lslow_end_null /* Return null if no acc-char found.  */
++
++.Lslow_index_found:
++	algfr	%r1,%r4		/* Add found index of char to current len.  */
++.Lslow_end_found:
++	la	%r1,0(%r1,%r2)	/* And return pointer to first equal char.  */
++
++.Lslow_end:
++	/* Restore registers.  */
++	vlgvg	%r6,%v30,0
++	vlgvg	%r8,%v31,0
++	vlgvg	%r9,%v31,1
++	lgr	%r2,%r1
++	br	%r14
++END(__strpbrk_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strpbrk.c b/sysdeps/s390/multiarch/strpbrk.c
+new file mode 100644
+index 0000000..afcb633
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strpbrk.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of strpbrk.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strpbrk, strpbrk)
++
++#else
++# include <string/strpbrk.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcspbrk-c.c b/sysdeps/s390/multiarch/wcspbrk-c.c
+new file mode 100644
+index 0000000..3a27e60
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcspbrk-c.c
+@@ -0,0 +1,31 @@
++/* Default wcspbrk implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSPBRK  __wcspbrk_c
++
++# include <wchar.h>
++extern __typeof (wcspbrk) __wcspbrk_c;
++# ifdef SHARED
++#  undef libc_hidden_def
++#  define libc_hidden_def(name)				\
++  __hidden_ver1 (__wcspbrk_c, __GI_wcspbrk, __wcspbrk_c);
++# endif /* SHARED */
++
++# include <wcsmbs/wcspbrk.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcspbrk-vx.S b/sysdeps/s390/multiarch/wcspbrk-vx.S
+new file mode 100644
+index 0000000..e6eaf95
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcspbrk-vx.S
+@@ -0,0 +1,315 @@
++/* Vector optimized 32/64 bit S/390 version of wcspbrk.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t *wcspbrk (const wchar_t *s, const wchar_t * accept)
++   The  wcspbrk()  function locates the first occurrence in the string s
++   of any of the characters in the string accept and returns a pointer
++   to that character or NULL if not found.
++
++   This method checks the length of accept string. If it fits entirely
++   in one vector register, a fast algorithm is used, which does not need
++   to check multiple parts of accept-string. Otherwise a slower full
++   check of accept-string is used.
++
++   register overview:
++   r3:  pointer to start of accept-string
++   r2:  pointer to start of search-string
++   r0:  loaded byte count of vlbb search-string (32bit unsigned)
++   r4:  found byte index (32bit unsigned)
++   r1:  current return len (64bit unsigned)
++   v16: search-string
++   v17: accept-string
++   v18: temp-vreg
++
++   ONLY FOR SLOW:
++   v19: first accept-string
++   v20: zero for preparing acc-vector
++   v21: global mask; 1 indicates a match between
++	search-string-vreg and any accept-character
++   v22: current mask; 1 indicates a match between
++	search-string-vreg and any accept-character in current acc-vreg
++   v24: one for result-checking of former string-part
++   v30, v31: for re-/storing registers r6, r8, r9
++   r5:  current len of accept-string
++   r6:  zero-index in search-string or 16 if no zero
++	or min(zero-index, loaded byte count)
++   r8:  >0, if former accept-string-part contains a zero,
++	otherwise =0;
++   r9:  loaded byte count of vlbb accept-string
++*/
++ENTRY(__wcspbrk_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	tmll	%r2,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	/*
++	  Check if accept-string fits in one vreg:
++	  ----------------------------------------
++	*/
++	vlbb	%v17,0(%r3),6	/* Load accept.  */
++	lcbb	%r0,0(%r3),6
++	jo	.Lcheck_onbb	/* Special case if accept lays
++				   on block-boundary.  */
++
++.Lcheck_notonbb:
++	lghi	%r1,0		/* Zero out current len.  */
++	vlgvf	%r0,%v17,0	/* Get first element.  */
++	clije	%r0,0,.Lfast_end_null /* Return null if accept is empty.  */
++
++	vistrfs	%v17,%v17	/* Fill with zeros after first zero.  */
++	je	.Lfast		/* Zero found -> accept fits in one vreg.  */
++	j	.Lslow		/* No zero -> accept exceeds one vreg  */
++
++
++.Lcheck_onbb:
++	/* Accept lays on block-boundary.  */
++	nill	%r0,65532	/* Recognize only fully loaded characters.  */
++	je	.Lcheck_onbb2	/* Reload vr, if we loaded no full wchar_t.  */
++	vfenezf	%v18,%v17,%v17	/* Search zero in loaded accept bytes.  */
++	vlgvb	%r4,%v18,7	/* Get index of zero or 16 if not found.  */
++	clrjl	%r4,%r0,.Lcheck_notonbb /* Zero index < loaded bytes count ->
++					    accept fits in one vreg;
++					    Fill with zeros and proceed
++					    with FAST.  */
++.Lcheck_onbb2:
++	vl	%v17,0(%r3)	/* Load accept, which exceeds loaded bytes.  */
++	j	.Lcheck_notonbb /* Check if accept fits in one vreg.  */
++
++
++	/*
++	  Search s for accept in one vreg
++	  -------------------------------
++	*/
++.Lfast:
++	/* Complete accept-string in v17 and remaining bytes are zero.  */
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r0,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfaezfs	%v18,%v16,%v17,0 /* Find first element in v16 unequal to any
++				    in v17 or first zero element.  */
++	vlgvb	%r4,%v18,7	/* Load byte index of found element.  */
++	/* If found index is within loaded bytes, return with found
++	   element index (=equal count).  */
++	clrjl	%r4,%r0,.Lfast_loop_found2
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r1,16		/* current_len = 16.  */
++	slr	%r1,%r4		/* Compute bytes to 16bytes boundary.  */
++
++.Lfast_loop:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	vfaezfs	%v18,%v16,%v17,0 /* Find first element in v16 equal to any
++				    in v17 or first zero element.  */
++	jno	.Lfast_loop_found
++
++	vl	%v16,16(%r1,%r2)
++	vfaezfs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found16
++
++	vl	%v16,32(%r1,%r2)
++	vfaezfs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found32
++
++	vl	%v16,48(%r1,%r2)
++	vfaezfs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found48
++
++	aghi	%r1,64
++	j	.Lfast_loop	/* Loop if no element was unequal to accept
++				   and not zero.  */
++
++	/* Found equal or zero element.  */
++.Lfast_loop_found48:
++	aghi	%r1,16
++.Lfast_loop_found32:
++	aghi	%r1,16
++.Lfast_loop_found16:
++	aghi	%r1,16
++.Lfast_loop_found:
++	vlgvb	%r4,%v18,7	/* Load byte index of found element.  */
++.Lfast_loop_found2:
++	srlg	%r5,%r4,2	/* Convert byte-index to character-index.  */
++	vlgvf	%r0,%v16,0(%r5)	/* Get found element.  */
++	clije	%r0,0,.Lfast_end_null /* Return null if no accept-char found */
++	algfr	%r1,%r4		/* Add found index of char to current len.  */
++	la	%r2,0(%r1,%r2)	/* And return pointer to first equal char.  */
++	br	%r14
++
++.Lfast_end_null:
++	lghi	%r2,0		/* Return null if no character is equal.  */
++	br	%r14
++
++
++
++
++	/*
++	  Search s for accept in multiple vregs
++	  -------------------------------------
++	*/
++.Lslow:
++	/* Save registers.  */
++	vlvgg	%v30,%r6,0
++	vlvgp	%v31,%r8,%r9
++
++	/* Accept in v17 without zero */
++	vlr	%v19,%v17	/* Save first acc-part for a fast reload.  */
++	vzero	%v20		/* Zero for preparing acc-vector.  */
++	vone	%v24		/* One for checking result of former string.  */
++
++	/* Align s to 16 byte.  */
++	risbg	%r4,%r2,60,128+63,0 /* Test if s is aligned and
++				       %r4 = bits 60-63 'and' 15.  */
++	je	.Lslow_loop_str /* If s is aligned, loop aligned.  */
++	lghi	%r0,15
++	slr	%r0,%r4		/* Compute highest index to load (15-x).  */
++	vll	%v16,%r0,0(%r2) /* Load up to 16byte boundary;
++				   needs highest index, left bytes are 0.  */
++	ahi	%r0,1		/* Work with loaded byte count.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of accept-string to zero.  */
++	vfenezf	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first accept-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++	clije	%r6,0,.Lslow_end_null /* If first element is zero
++					  (end of string) -> return null */
++	clr	%r0,%r6		/* cc==1 if loaded byte count < zero-index.  */
++	locrl	%r6,%r0		/* Load on cc==1; zero-index = lbc.  */
++	j	.Lslow_loop_acc
++
++
++	/* Process s in 16byte aligned loop.  */
++.Lslow_next_str:
++	/* Check results of former processed str-part.  */
++	vfeef	%v18,%v21,%v24	/* Find first equal match in global mask
++				   (ones in element).  */
++	vlgvb	%r4,%v18,7	/* Get index of first one (=equal)
++				   or 16 if no match.  */
++	/* Equal-index < min(zero-index, loaded byte count)
++	   -> return pointer to equal element.  */
++	clrjl	%r4,%r6,.Lslow_index_found
++	/* Zero-index < loaded byte count
++	   -> former str-part was last str-part
++	   -> return null */
++	clrjl	%r6,%r0,.Lslow_end_null
++	/* All elements are zero (=no match) -> proceed with next str-part.  */
++
++	vlr	%v17,%v19	/* Load first part of accept (no zero).  */
++	algfr	%r1,%r0		/* Add loaded byte count to current len.  */
++
++.Lslow_loop_str:
++	vl	%v16,0(%r1,%r2)	/* Load search-string */
++	lghi	%r0,16		/* Loaded byte count is 16.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of accept to zero.  */
++	vfenezf	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first accept-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++	clije	%r6,0,.Lslow_end_null /* If first element is zero
++					  (end of string) -> return null.  */
++
++.Lslow_loop_acc:
++	vfaef	%v22,%v16,%v17,4 /* Create matching-mask (1 in mask ->
++				    Character matches any accepted character in
++				    this accept-string-part) IN=0, RT=1.  */
++	vlgvf	%r4,%v22,0	/* Get result of first element.  */
++	/* First element is equal to any accepted characters
++	   (all other parts of accept cannot lead to a match before this one)
++	   -> current len is pointing to first element
++	   -> return found */
++	clijh	%r4,0,.Lslow_end_found
++	vo	%v21,%v21,%v22	/* Global-mask = global-|matching-mask.  */
++	/* Proceed with next acc until end of acc is reached.  */
++
++
++.Lslow_next_acc:
++	clijh	%r8,0,.Lslow_next_str /* There was a zero in the last acc-part
++					  -> add index to current len and
++					     end.  */
++	vlbb	%v17,16(%r5,%r3),6 /* Load next accept part.  */
++	aghi	%r5,16		/* Increment current len of accept-string.  */
++	lcbb	%r9,0(%r5,%r3),6 /* Get loaded byte count of accept-string.  */
++	jo	.Lslow_next_acc_onbb /* Jump away ifaccept-string is
++					 on block-boundary.  */
++.Lslow_next_acc_notonbb:
++	vistrfs	%v17,%v17	/* Fill with zeros after first zero.  */
++	jo	.Lslow_loop_acc /* No zero found -> no preparation needed.  */
++
++.Lslow_next_acc_prepare_zero:
++	/* Zero in accept-part: fill zeros with first-accept-character.  */
++	vlgvf	%r8,%v17,0	/* Load first element of acc-part.  */
++	clije	%r8,0,.Lslow_next_str /* Proceed with next string-part,
++					  If first char in this part of accept
++					  is a zero.  */
++	/* r8>0 -> zero found in this acc-part.  */
++	vrepf	%v18,%v17,0	/* Replicate first char accross all chars.  */
++	vceqf	%v22,%v20,%v17	/* Create a mask (v22) of null chars
++				   by comparing with 0 (v20).  */
++	vsel	%v17,%v18,%v17,%v22 /* Replace null chars with first char.  */
++	j	.Lslow_loop_acc /* Accept part is prepared -> process.  */
++
++.Lslow_next_acc_onbb:
++	nill	%r9,65532	/* Recognize only fully loaded characters.  */
++	je	.Lslow_next_acc_onbb2 /* Reload vr, if no full wchar_t.  */
++	vfenezf	%v18,%v17,%v17	/* Find zero in loaded bytes of accept part.  */
++	vlgvb	%r8,%v18,7	/* Load byte index of zero.  */
++	clrjl	%r8,%r9,.Lslow_next_acc_notonbb /* Found a zero in loaded bytes
++						    -> Prepare vreg.  */
++.Lslow_next_acc_onbb2:
++	vl	%v17,0(%r5,%r3)	/* Load over boundary ...  */
++	lghi	%r8,0		/* r8=0 -> no zero in this part of acc,
++				   check for zero is in jump-target.  */
++	j	.Lslow_next_acc_notonbb /* ... and search for zero in
++					    fully loaded vreg again.  */
++
++.Lslow_end_null:
++	lghi	%r1,0		/* Return null if no character is equal.  */
++	j	.Lslow_end
++
++.Lslow_loop_found:
++	vlgvb	%r4,%v18,7	/* Load byte index of found element.  */
++	srlg	%r5,%r4,2	/* Convert byte-index to character-index.  */
++	vlgvf	%r0,%v16,0(%r5)	/* Get found element.  */
++	clije	%r0,0,.Lslow_end_null /* Return null if no acc-char found.  */
++
++.Lslow_index_found:
++	algfr	%r1,%r4		/* Add found index of char to current len.  */
++.Lslow_end_found:
++	la	%r1,0(%r1,%r2)	/* And return pointer to first equal char.  */
++
++.Lslow_end:
++	/* Restore registers.  */
++	vlgvg	%r6,%v30,0
++	vlgvg	%r8,%v31,0
++	vlgvg	%r9,%v31,1
++	lgr	%r2,%r1
++	br	%r14
++.Lfallback:
++	jg	__wcspbrk_c
++END(__wcspbrk_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcspbrk.c b/sysdeps/s390/multiarch/wcspbrk.c
+new file mode 100644
+index 0000000..1a0ef9c
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcspbrk.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wcspbrk.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wcspbrk, wcspbrk)
++
++#else
++# include <wcsmbs/wcspbrk.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index 843a23c..7ecff8b 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -42,7 +42,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    mbrtoc16 c16rtomb
+ 
+ strop-tests :=  wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+-		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn
++		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn wcspbrk
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcspbrk-ifunc.c b/wcsmbs/test-wcspbrk-ifunc.c
+new file mode 100644
+index 0000000..af389b6
+--- /dev/null
++++ b/wcsmbs/test-wcspbrk-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcspbrk function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcspbrk.c"
+diff --git a/wcsmbs/test-wcspbrk.c b/wcsmbs/test-wcspbrk.c
+new file mode 100644
+index 0000000..98e44e5
+--- /dev/null
++++ b/wcsmbs/test-wcspbrk.c
+@@ -0,0 +1,20 @@
++/* Test wcspbrk functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-strpbrk.c"
+diff --git a/wcsmbs/wcspbrk.c b/wcsmbs/wcspbrk.c
+index a39f148..b769a38 100644
+--- a/wcsmbs/wcspbrk.c
++++ b/wcsmbs/wcspbrk.c
+@@ -18,6 +18,9 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WCSPBRK
++# define wcspbrk WCSPBRK
++#endif
+ 
+ /* Find the first occurrence in WCS of any wide-character in ACCEPT.  */
+ wchar_t *
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-25.patch b/SOURCES/glibc-rh1268008-25.patch
new file mode 100644
index 0000000..19d4977
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-25.patch
@@ -0,0 +1,1107 @@
+From 6be435ec4f615266351487da396333f3ff026c03 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 13:02:41 +0200
+Subject: [PATCH 25/30] S390: Optimize strcspn and wcscspn.
+
+upstream-commit-id: b4c21601b147efc3c2b0e679e4ffc554b3987f0b
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00099.html
+
+This patch provides optimized versions of strcspn and wcscspn with the z13
+vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/strcspn-c.c: New File.
+	* sysdeps/s390/multiarch/strcspn-vx.S: Likewise.
+	* sysdeps/s390/multiarch/strcspn.c: Likewise.
+	* sysdeps/s390/multiarch/wcscspn-c.c: Likewise.
+	* sysdeps/s390/multiarch/wcscspn-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wcscspn.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strcspn and
+	wcscspn functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Add ifunc test for strcspn, wcscspn.
+	* wcsmbs/wcscspn.c: Use WCSCSPN if defined.
+	* string/test-strcspn.c: Add wcscspn support.
+	* wcsmbs/test-wcscspn.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wcscspn.
+	* benchtests/bench-strcspn.c: Add wcscspn support.
+	* benchtests/bench-wcscspn.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wcscspn.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-strcspn.c               |  45 +++--
+ benchtests/bench-wcscspn.c               |  20 +++
+ string/strcspn.c                         |   8 +-
+ string/test-strcspn.c                    |  45 +++--
+ sysdeps/s390/multiarch/Makefile          |   6 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   3 +
+ sysdeps/s390/multiarch/strcspn-c.c       |  28 +++
+ sysdeps/s390/multiarch/strcspn-vx.S      | 281 +++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/strcspn.c         |  27 +++
+ sysdeps/s390/multiarch/wcscspn-c.c       |  26 +++
+ sysdeps/s390/multiarch/wcscspn-vx.S      | 293 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wcscspn.c         |  27 +++
+ wcsmbs/Makefile                          |   3 +-
+ wcsmbs/test-wcscspn-ifunc.c              |  20 +++
+ wcsmbs/test-wcscspn.c                    |  20 +++
+ wcsmbs/wcscspn.c                         |   3 +
+ 17 files changed, 826 insertions(+), 31 deletions(-)
+ create mode 100644 benchtests/bench-wcscspn.c
+ create mode 100644 sysdeps/s390/multiarch/strcspn-c.c
+ create mode 100644 sysdeps/s390/multiarch/strcspn-vx.S
+ create mode 100644 sysdeps/s390/multiarch/strcspn.c
+ create mode 100644 sysdeps/s390/multiarch/wcscspn-c.c
+ create mode 100644 sysdeps/s390/multiarch/wcscspn-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wcscspn.c
+ create mode 100644 wcsmbs/test-wcscspn-ifunc.c
+ create mode 100644 wcsmbs/test-wcscspn.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 015b5d6..4e811a9 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -39,7 +39,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+-		wcsncmp wcsncmp wcschr wcschrnul wcsrchr wcsspn wcspbrk
++		wcsncmp wcsncmp wcschr wcschrnul wcsrchr wcsspn wcspbrk wcscspn
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-strcspn.c b/benchtests/bench-strcspn.c
+index 22b3b84..25de640 100644
+--- a/benchtests/bench-strcspn.c
++++ b/benchtests/bench-strcspn.c
+@@ -19,22 +19,41 @@
+ #define STRPBRK_RESULT(s, pos) (pos)
+ #define RES_TYPE size_t
+ #define TEST_MAIN
+-#define TEST_NAME "strcspn"
++#ifndef WIDE
++# define TEST_NAME "strcspn"
++#else
++# define TEST_NAME "wcscspn"
++#endif /* WIDE */
+ #include "bench-string.h"
+ 
+-typedef size_t (*proto_t) (const char *, const char *);
+-size_t simple_strcspn (const char *, const char *);
+-size_t stupid_strcspn (const char *, const char *);
++#ifndef WIDE
++# define STRCSPN strcspn
++# define CHAR char
++# define SIMPLE_STRCSPN simple_strcspn
++# define STUPID_STRCSPN stupid_strcspn
++# define STRLEN strlen
++#else
++# include <wchar.h>
++# define STRCSPN wcscspn
++# define CHAR wchar_t
++# define SIMPLE_STRCSPN simple_wcscspn
++# define STUPID_STRCSPN stupid_wcscspn
++# define STRLEN wcslen
++#endif /* WIDE */
+ 
+-IMPL (stupid_strcspn, 0)
+-IMPL (simple_strcspn, 0)
+-IMPL (strcspn, 1)
++typedef size_t (*proto_t) (const CHAR *, const CHAR *);
++size_t SIMPLE_STRCSPN (const CHAR *, const CHAR *);
++size_t STUPID_STRCSPN (const CHAR *, const CHAR *);
++
++IMPL (STUPID_STRCSPN, 0)
++IMPL (SIMPLE_STRCSPN, 0)
++IMPL (STRCSPN, 1)
+ 
+ size_t
+-simple_strcspn (const char *s, const char *rej)
++SIMPLE_STRCSPN (const CHAR *s, const CHAR *rej)
+ {
+-  const char *r, *str = s;
+-  char c;
++  const CHAR *r, *str = s;
++  CHAR c;
+ 
+   while ((c = *s++) != '\0')
+     for (r = rej; *r != '\0'; ++r)
+@@ -44,9 +63,9 @@ simple_strcspn (const char *s, const char *rej)
+ }
+ 
+ size_t
+-stupid_strcspn (const char *s, const char *rej)
++STUPID_STRCSPN (const CHAR *s, const CHAR *rej)
+ {
+-  size_t ns = strlen (s), nrej = strlen (rej);
++  size_t ns = STRLEN (s), nrej = STRLEN (rej);
+   size_t i, j;
+ 
+   for (i = 0; i < ns; ++i)
+@@ -56,4 +75,6 @@ stupid_strcspn (const char *s, const char *rej)
+   return i;
+ }
+ 
++#undef CHAR
++#undef STRLEN
+ #include "bench-strpbrk.c"
+diff --git a/benchtests/bench-wcscspn.c b/benchtests/bench-wcscspn.c
+new file mode 100644
+index 0000000..3991951
+--- /dev/null
++++ b/benchtests/bench-wcscspn.c
+@@ -0,0 +1,20 @@
++/* Measure wcscspn functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-strcspn.c"
+diff --git a/string/strcspn.c b/string/strcspn.c
+index 6290429..0c750a8 100644
+--- a/string/strcspn.c
++++ b/string/strcspn.c
+@@ -30,12 +30,14 @@
+ 
+ #undef strcspn
+ 
++#ifndef STRCSPN
++# define STRCSPN strcspn
++#endif
++
+ /* Return the length of the maximum initial segment of S
+    which contains no characters from REJECT.  */
+ size_t
+-strcspn (s, reject)
+-     const char *s;
+-     const char *reject;
++STRCSPN (const char *s, const char *reject)
+ {
+   size_t count = 0;
+ 
+diff --git a/string/test-strcspn.c b/string/test-strcspn.c
+index e2863c7..3443425 100644
+--- a/string/test-strcspn.c
++++ b/string/test-strcspn.c
+@@ -20,22 +20,41 @@
+ #define STRPBRK_RESULT(s, pos) (pos)
+ #define RES_TYPE size_t
+ #define TEST_MAIN
+-#define TEST_NAME "strcspn"
++#ifndef WIDE
++# define TEST_NAME "strcspn"
++#else
++# define TEST_NAME "wcscspn"
++#endif /* WIDE */
+ #include "test-string.h"
+ 
+-typedef size_t (*proto_t) (const char *, const char *);
+-size_t simple_strcspn (const char *, const char *);
+-size_t stupid_strcspn (const char *, const char *);
++#ifndef WIDE
++# define STRCSPN strcspn
++# define CHAR char
++# define SIMPLE_STRCSPN simple_strcspn
++# define STUPID_STRCSPN stupid_strcspn
++# define STRLEN strlen
++#else
++# include <wchar.h>
++# define STRCSPN wcscspn
++# define CHAR wchar_t
++# define SIMPLE_STRCSPN simple_wcscspn
++# define STUPID_STRCSPN stupid_wcscspn
++# define STRLEN wcslen
++#endif /* WIDE */
+ 
+-IMPL (stupid_strcspn, 0)
+-IMPL (simple_strcspn, 0)
+-IMPL (strcspn, 1)
++typedef size_t (*proto_t) (const CHAR *, const CHAR *);
++size_t SIMPLE_STRCSPN (const CHAR *, const CHAR *);
++size_t STUPID_STRCSPN (const CHAR *, const CHAR *);
++
++IMPL (STUPID_STRCSPN, 0)
++IMPL (SIMPLE_STRCSPN, 0)
++IMPL (STRCSPN, 1)
+ 
+ size_t
+-simple_strcspn (const char *s, const char *rej)
++SIMPLE_STRCSPN (const CHAR *s, const CHAR *rej)
+ {
+-  const char *r, *str = s;
+-  char c;
++  const CHAR *r, *str = s;
++  CHAR c;
+ 
+   while ((c = *s++) != '\0')
+     for (r = rej; *r != '\0'; ++r)
+@@ -45,9 +64,9 @@ simple_strcspn (const char *s, const char *rej)
+ }
+ 
+ size_t
+-stupid_strcspn (const char *s, const char *rej)
++STUPID_STRCSPN (const CHAR *s, const CHAR *rej)
+ {
+-  size_t ns = strlen (s), nrej = strlen (rej);
++  size_t ns = STRLEN (s), nrej = STRLEN (rej);
+   size_t i, j;
+ 
+   for (i = 0; i < ns; ++i)
+@@ -57,4 +76,6 @@ stupid_strcspn (const char *s, const char *rej)
+   return i;
+ }
+ 
++#undef CHAR
++#undef STRLEN
+ #include "test-strpbrk.c"
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 5765a8c..2c1fce0 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -13,7 +13,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strchrnul strchrnul-vx strchrnul-c \
+ 		   strrchr strrchr-vx strrchr-c \
+ 		   strspn strspn-vx strspn-c \
+-		   strpbrk strpbrk-vx strpbrk-c
++		   strpbrk strpbrk-vx strpbrk-c \
++		   strcspn strcspn-vx strcspn-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -31,5 +32,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcschrnul wcschrnul-vx wcschrnul-c \
+ 		   wcsrchr wcsrchr-vx wcsrchr-c \
+ 		   wcsspn wcsspn-vx wcsspn-c \
+-		   wcspbrk wcspbrk-vx wcspbrk-c
++		   wcspbrk wcspbrk-vx wcspbrk-c \
++		   wcscspn wcscspn-vx wcscspn-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index b39a5c5..7f62e49 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -124,6 +124,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strpbrk);
+   IFUNC_VX_IMPL (wcspbrk);
+ 
++  IFUNC_VX_IMPL (strcspn);
++  IFUNC_VX_IMPL (wcscspn);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/strcspn-c.c b/sysdeps/s390/multiarch/strcspn-c.c
+new file mode 100644
+index 0000000..af04b4e
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcspn-c.c
+@@ -0,0 +1,28 @@
++/* Default strcspn implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define STRCSPN  __strcspn_c
++# ifdef SHARED
++#  undef libc_hidden_builtin_def
++#  define libc_hidden_builtin_def(name)				\
++     __hidden_ver1 (__strcspn_c, __GI_strcspn, __strcspn_c);
++# endif /* SHARED */
++
++# include <string/strcspn.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strcspn-vx.S b/sysdeps/s390/multiarch/strcspn-vx.S
+new file mode 100644
+index 0000000..c7113c4
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcspn-vx.S
+@@ -0,0 +1,281 @@
++/* Vector optimized 32/64 bit S/390 version of strcspn.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* size_t strcspn (const char *s, const char * reject)
++   The strcspn() function calculates the length of the initial segment
++   of s which consists entirely of characters not in reject.
++
++   This method checks the length of reject string. If it fits entirely
++   in one vector register, a fast algorithm is used, which does not need
++   to check multiple parts of accept-string. Otherwise a slower full
++   check of accept-string is used.
++
++   register overview:
++   r3:  pointer to start of reject-string
++   r2:  pointer to start of search-string
++   r0:  loaded byte count of vlbb search-string
++   r4:  found byte index
++   r1:  current return len
++   v16: search-string
++   v17: reject-string
++   v18: temp-vreg
++
++   ONLY FOR SLOW:
++   v19: first reject-string
++   v20: zero for preparing acc-vector
++   v21: global mask; 1 indicates a match between
++	search-string-vreg and any reject-character
++   v22: current mask; 1 indicates a match between
++	search-string-vreg and any reject-character in current acc-vreg
++   v24: one for result-checking of former string-part
++   v30, v31: for re-/storing registers r6, r8, r9
++   r5:  current len of reject-string
++   r6:  zero-index in search-string or 16 if no zero
++	or min(zero-index, loaded byte count)
++   r8:  >0, if former reject-string-part contains a zero,
++			otherwise =0;
++   r9:  loaded byte count of vlbb reject-string
++*/
++ENTRY(__strcspn_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	/*
++	  Check if reject-string fits in one vreg:
++	  ----------------------------------------
++	*/
++	vlbb	%v17,0(%r3),6	/* Load reject.  */
++	lghi	%r1,0		/* Zero out current len.  */
++	lcbb	%r0,0(%r3),6
++	jo	.Lcheck_onbb	/* Special case if reject
++				   lays on block-boundary.  */
++.Lcheck_notonbb:
++	vistrbs	%v17,%v17	/* Fill with zeros after first zero.  */
++	je	.Lfast		/* Zero found -> reject fits in one vreg.  */
++	j	.Lslow		/* No zero -> reject exceeds one vreg.  */
++
++
++.Lcheck_onbb:
++	/* Reject lays on block-boundary.  */
++	vfenezb	%v18,%v17,%v17	/* Search zero in loaded reject bytes.  */
++	vlgvb	%r4,%v18,7	/* Get index of zero or 16 if not found.  */
++	clrjl	%r4,%r0,.Lcheck_notonbb /* Zero index < loaded bytes count ->
++					    Reject fits in one vreg;
++					    Fill with zeros and proceed
++					    with FAST.  */
++	vl	%v17,0(%r3)	/* Load reject, which exceeds loaded bytes.  */
++	j	.Lcheck_notonbb /* Check if reject fits in one vreg.  */
++
++
++	/*
++	  Search s for reject in one vreg
++	  -------------------------------
++	*/
++.Lfast:
++	/* Complete reject-string in v17 and remaining bytes are zero.  */
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r0,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfaezbs	%v18,%v16,%v17,0 /* Find first element in v16
++				    unequal to any in v17
++				    or first zero element.  */
++
++	vlgvb	%r4,%v18,7	/* Load byte index of found element.  */
++	clrjl	%r4,%r0,.Lfast_loop_found2 /* If found index is within loaded
++					       bytes, return with found element
++					       index (=equal count).  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r1,16		/* current_len = 16.  */
++	slr	%r1,%r4		/* Compute bytes to 16bytes boundary.  */
++
++	/* Process s in 16byte aligned loop.  */
++.Lfast_loop:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	vfaezbs	%v18,%v16,%v17,0 /* Find first element in v16 equal to any
++				    in v17 or first zero element.  */
++	jno	.Lfast_loop_found
++
++	vl	%v16,16(%r1,%r2)
++	vfaezbs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found16
++
++	vl	%v16,32(%r1,%r2)
++	vfaezbs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found32
++
++	vl	%v16,48(%r1,%r2)
++	vfaezbs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found48
++
++	aghi	%r1,64
++	j	.Lfast_loop	/* Loop if no element was unequal to reject
++				   and not zero.  */
++
++	/* Found equal or zero element.  */
++.Lfast_loop_found48:
++	aghi	%r1,16
++.Lfast_loop_found32:
++	aghi	%r1,16
++.Lfast_loop_found16:
++	aghi	%r1,16
++.Lfast_loop_found:
++	vlgvb	%r4,%v18,7	/* Load byte index of found element or zero.  */
++.Lfast_loop_found2:
++	algrk	%r2,%r1,%r4	/* Add found index to current len.  */
++	br	%r14
++
++
++
++	/*
++	  Search s for reject in multiple vregs
++	  -------------------------------------
++	*/
++.Lslow:
++	/* Save registers.  */
++	vlvgg	%v30,%r6,0
++	vlvgp	%v31,%r8,%r9
++
++	/* Reject in v17 without zero.  */
++	vlr	%v19,%v17	/* Save first acc-part for a fast reload.  */
++	vzero	%v20		/* Zero for preparing acc-vector.  */
++	vone	%v24		/* One for checking result of former
++				   string-part.  */
++
++	/* Align s to 16 byte.  */
++	risbg	%r4,%r2,60,128+63,0 /* Test if s is aligned and
++				       %r4 = bits 60-63 'and' 15.   */
++	je	.Lslow_loop_str /* If s is aligned, loop aligned.  */
++	lghi	%r0,15
++	slr	%r0,%r4		/* Compute highest index to load (15-x).  */
++	vll	%v16,%r0,0(%r2) /* Load up to 16 byte boundary (vll needs
++				   highest index, remaining bytes are 0).  */
++	ahi	%r0,1		/* Work with loaded byte count.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of reject-string to zero.  */
++	vfenezb	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first reject-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++	clije	%r6,0,.Lslow_end /* If first element is zero -> return 0.  */
++	clr	%r0,%r6		/* cc==1 if loaded byte count < zero-index.  */
++	locrl	%r6,%r0		/* Load on cc==1; zero-index = lbc.  */
++	j	.Lslow_loop_acc
++
++
++	/* Process s in 16byte aligned loop.  */
++.Lslow_next_str:
++	/* Check results of former processed str-part.  */
++	vfeeb	%v18,%v21,%v24	/* Find first equal match in global mask
++				   (ones in element).  */
++	vlgvb	%r4,%v18,7	/* Get index of first one (=equal) or 16.  */
++	/* Equal-index < min(zero-index, loaded byte count)
++	   -> Return pointer to equal element.  */
++	clrjl	%r4,%r6,.Lslow_index_found
++	/* Zero-index < loaded byte count
++	   -> Former str-part was last str-part
++	   -> Return null */
++	clrjl	%r6,%r0,.Lslow_end_not_found
++
++	/* All elements are zero (=no match) -> Proceed with next str-part.  */
++	vlr	%v17,%v19	/* Load first part of reject (no zero).  */
++	algfr	%r1,%r0		/* Add loaded byte count to current len.  */
++
++.Lslow_loop_str:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	lghi	%r0,16		/* Loaded byte count is 16.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of reject to zero.  */
++	vfenezb	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first reject-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++	clije	%r6,0,.Lslow_end /* If first element is zero (end of string)
++				     -> Return current length.  */
++
++.Lslow_loop_acc:
++	vfaeb	%v22,%v16,%v17,4 /* Create matching-mask (1 in mask ->
++				    Character matches any rejected character in
++				    this reject-string-part) IN=0, RT=1.  */
++	vlgvb	%r4,%v22,0	/* Get result of first element.  */
++	/* First element is equal to any rejected characters?
++	   (all other parts of reject cannot lead to a match before this one)
++	   -> Return current len, which is pointing to this element.  */
++	clijh	%r4,0,.Lslow_end
++	vo	%v21,%v21,%v22	/* Global-mask = global-|matching-mask.  */
++	/* Proceed with next acc until end of acc is reached.  */
++
++
++.Lslow_next_acc:
++	clijh	%r8,0,.Lslow_next_str /* There was a zero in last reject-part
++					  -> Add found index to current len
++					     and end.  */
++	vlbb	%v17,16(%r5,%r3),6 /* Load next reject part.  */
++	aghi	%r5,16		/* Increment current len of reject-string.  */
++	lcbb	%r9,0(%r5,%r3),6 /* Get loaded byte count of reject-string.  */
++	jo	.Lslow_next_acc_onbb /* Jump away if reject-string is
++					 on block-boundary.  */
++.Lslow_next_acc_notonbb:
++	vistrbs	%v17,%v17	/* Fill with zeros after first zero.  */
++	jo	.Lslow_loop_acc /* No zero found -> no preparation needed.  */
++
++.Lslow_next_acc_prepare_zero:
++	/* Zero in reject-part: fill zeros with first-reject-character.  */
++	vlgvb	%r8,%v17,0	/* Load first element of reject-part.  */
++	clije	%r8,0,.Lslow_next_str /* Process next str-part if first
++					  character in this part of reject
++					  is a zero.  */
++	/* r8>0 -> zero found in this acc-part.  */
++	vrepb	%v18,%v17,0	/* Replicate first char accross all chars.  */
++	vceqb	%v22,%v20,%v17	/* Create a mask (v22) of null chars
++				   by comparing with 0 (v20).  */
++	vsel	%v17,%v18,%v17,%v22 /* Replace null chars with first char.  */
++	j	.Lslow_loop_acc /* Reject-string part is prepared.  */
++
++.Lslow_next_acc_onbb:
++	vfenezb	%v18,%v17,%v17	/* Find zero in loaded bytes of reject part.  */
++	vlgvb	%r8,%v18,7	/* Load byte index of zero.  */
++	clrjl	%r8,%r9,.Lslow_next_acc_notonbb /* Found a zero in loaded bytes
++						    -> Prepare vreg.  */
++	vl	%v17,0(%r5,%r3)	/* Load over boundary ...  */
++	lghi	%r8,0		/* r8=0 -> no zero in this part of acc,
++				   check for zero is in jump-target.  */
++	j	.Lslow_next_acc_notonbb /* ... and search for zero in
++					    fully loaded vreg again.  */
++
++.Lslow_end_not_found:
++	algfr	%r1,%r6		/* Add zero-index to current len.  */
++	j	.Lslow_end
++.Lslow_index_found:
++	algfr	%r1,%r4		/* Add found index of char to current len.  */
++.Lslow_end:
++	lgr	%r2,%r1
++	/* Restore registers.  */
++	vlgvg	%r6,%v30,0
++	vlgvg	%r8,%v31,0
++	vlgvg	%r9,%v31,1
++	br	%r14
++END(__strcspn_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/strcspn.c b/sysdeps/s390/multiarch/strcspn.c
+new file mode 100644
+index 0000000..32b46c4
+--- /dev/null
++++ b/sysdeps/s390/multiarch/strcspn.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of strcspn.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__strcspn, strcspn)
++
++#else
++# include <string/strcspn.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/wcscspn-c.c b/sysdeps/s390/multiarch/wcscspn-c.c
+new file mode 100644
+index 0000000..95e76ae
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscspn-c.c
+@@ -0,0 +1,26 @@
++/* Default wcscscpn implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WCSCSPN  __wcscspn_c
++
++# include <wchar.h>
++extern __typeof (wcscspn) __wcscspn_c;
++
++# include <wcsmbs/wcscspn.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wcscspn-vx.S b/sysdeps/s390/multiarch/wcscspn-vx.S
+new file mode 100644
+index 0000000..aa581ce
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscspn-vx.S
+@@ -0,0 +1,293 @@
++/* Vector optimized 32/64 bit S/390 version of wcscspn.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* size_t wcscspn (const wchar_t *s, const wchar_t * reject)
++   The wcscspn() function calculates the length of the initial segment
++   of s which consists entirely of characters not in reject.
++
++   This method checks the length of reject string. If it fits entirely
++   in one vector register, a fast algorithm is used, which does not need
++   to check multiple parts of accept-string. Otherwise a slower full
++   check of accept-string is used.
++
++   register overview:
++   r3:  pointer to start of reject-string
++   r2:  pointer to start of search-string
++   r0:  loaded byte count of vlbb search-string
++   r4:  found byte index
++   r1:  current return len
++   v16: search-string
++   v17: reject-string
++   v18: temp-vreg
++
++   ONLY FOR SLOW:
++   v19: first reject-string
++   v20: zero for preparing acc-vector
++   v21: global mask; 1 indicates a match between
++	search-string-vreg and any reject-character
++   v22: current mask; 1 indicates a match between
++	search-string-vreg and any reject-character in current acc-vreg
++   v30, v31: for re-/storing registers r6, r8, r9
++   r5:  current len of reject-string
++   r6:  zero-index in search-string or 16 if no zero
++	or min(zero-index, loaded byte count)
++   r8:  >0, if former reject-string-part contains a zero,
++			otherwise =0;
++   r9:  loaded byte count of vlbb reject-string
++*/
++ENTRY(__wcscspn_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	tmll	%r2,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	/*
++	  Check if reject-string fits in one vreg:
++	  ----------------------------------------
++	*/
++	vlbb	%v17,0(%r3),0	/* Load reject.  */
++	lcbb	%r0,0(%r3),0
++	jo	.Lcheck_onbb	/* Special case if reject
++				   lays on block-boundary.  */
++
++.Lcheck_notonbb:
++	lghi	%r1,0		/* Zero out current len.  */
++	vistrfs	%v17,%v17	/* Fill with zeros after first zero.  */
++	je	.Lfast		/* Zero found -> reject fits in one vreg.  */
++	j	.Lslow		/* No zero -> reject exceeds one vreg.  */
++
++
++.Lcheck_onbb:
++	/* Reject lays on block-boundary.  */
++	nill	%r0,65532	/* Recognize only fully loaded characters.  */
++	je	.Lcheck_onbb2	/* Reload vr, if we loaded no full wchar_t.  */
++	vfenezf	%v18,%v17,%v17	/* Search zero in loaded reject bytes.  */
++	vlgvb	%r4,%v18,7	/* Get index of zero or 16 if not found.  */
++	clrjl	%r4,%r0,.Lcheck_notonbb /* Zero index < loaded bytes count ->
++					    Reject fits in one vreg;
++					    Fill with zeros and proceed
++					    with FAST.  */
++.Lcheck_onbb2:
++	vl	%v17,0(%r3)	/* Load reject, which exceeds loaded bytes.  */
++	j	.Lcheck_notonbb /* Check if reject fits in one vreg.  */
++
++
++	/*
++	  Search s for reject in one vreg
++	  -------------------------------
++	*/
++.Lfast:
++	/* Complete reject-string in v17 and remaining bytes are zero.  */
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r0,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vfaezfs	%v18,%v16,%v17,0 /* Find first element in v16
++				    unequal to any in v17
++				    or first zero element.  */
++	vlgvb	%r4,%v18,7	/* Load byte index of found element.  */
++	clrjl	%r4,%r0,.Lfast_loop_found2 /* If found index is within loaded
++					       bytes, return with found element
++					       index (=equal count).  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r4,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r1,16		/* current_len = 16.  */
++	slr	%r1,%r4		/* Compute bytes to 16bytes boundary.  */
++
++	/* Process s in 16byte aligned loop.  */
++.Lfast_loop:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	vfaezfs	%v18,%v16,%v17,0 /* Find first element in v16 equal to any
++				    in v17 or first zero element.  */
++	jno	.Lfast_loop_found
++
++	vl	%v16,16(%r1,%r2)
++	vfaezfs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found16
++
++	vl	%v16,32(%r1,%r2)
++	vfaezfs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found32
++
++	vl	%v16,48(%r1,%r2)
++	vfaezfs	%v18,%v16,%v17,0
++	jno	.Lfast_loop_found48
++
++	aghi	%r1,64
++	j	.Lfast_loop	/* Loop if no element was unequal to reject
++				   and not zero.  */
++
++	/* Found equal or zero element.  */
++.Lfast_loop_found48:
++	aghi	%r1,16
++.Lfast_loop_found32:
++	aghi	%r1,16
++.Lfast_loop_found16:
++	aghi	%r1,16
++.Lfast_loop_found:
++	vlgvb	%r4,%v18,7	/* Load byte index of found element or zero.  */
++.Lfast_loop_found2:
++	algrk	%r2,%r1,%r4	/* Add found index to current len.  */
++	srlg	%r2,%r2,2	/* Convert byte-count to character-count.  */
++	br	%r14
++
++
++
++	/*
++	  Search s for reject in multiple vregs
++	  -------------------------------------
++	*/
++.Lslow:
++	/* Save registers.  */
++	vlvgg	%v30,%r6,0
++	vlvgp	%v31,%r8,%r9
++
++	/* Reject in v17 without zero.  */
++	vlr	%v19,%v17	/* Save first acc-part for a fast reload.  */
++	vzero	%v20		/* Zero for preparing acc-vector.  */
++	vone	%v24		/* One for checking result of former
++				   string-part.  */
++
++	/* Align s to 16 byte.  */
++	risbg	%r4,%r2,60,128+63,0 /* Test if s is aligned and
++				       %r4 = bits 60-63 'and' 15.   */
++	je	.Lslow_loop_str /* If s is aligned, loop aligned.  */
++	lghi	%r0,15
++	slr	%r0,%r4		/* Compute highest index to load (15-x).  */
++	vll	%v16,%r0,0(%r2) /* Load up to 16byte boundary (vll needs
++				   highest index, remaining bytes are 0).  */
++	ahi	%r0,1		/* Work with loaded byte count.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of reject-string to zero.  */
++	vfenezf	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first reject-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++	clije	%r6,0,.Lslow_end /* If first element is zero -> return 0.  */
++	clr	%r0,%r6		/* cc==1 if loaded byte count < zero-index.  */
++	locrl	%r6,%r0		/* Load on cc==1; zero-index = lbc.  */
++	j	.Lslow_loop_acc
++
++
++	/* Process s in 16byte aligned loop.  */
++.Lslow_next_str:
++	/* Check results of former processed str-part.  */
++	vfeef	%v18,%v21,%v24	/* Find first equal match in global mask
++				   (ones in element).  */
++	vlgvb	%r4,%v18,7	/* Get index of first one (=equal) or 16.  */
++	/* Equal-index < min(zero-index, loaded byte count)
++	   -> Return pointer to equal element.  */
++	clrjl	%r4,%r6,.Lslow_index_found
++	/* Zero-index < loaded byte count
++	   -> Former str-part was last str-part
++	   -> Return null  */
++	clrjl	%r6,%r0,.Lslow_end_not_found
++
++	/* All elements are zero (=no match) -> proceed with next str-part.  */
++	vlr	%v17,%v19	/* Load first part of reject (no zero).  */
++	algfr	%r1,%r0		/* Add loaded byte count to current len.  */
++
++.Lslow_loop_str:
++	vl	%v16,0(%r1,%r2)	/* Load search-string.  */
++	lghi	%r0,16		/* Loaded byte count is 16.  */
++	vzero	%v21		/* Zero out global mask.  */
++	lghi	%r5,0		/* Set current len of reject to zero.  */
++	vfenezf	%v18,%v16,%v16	/* Find zero in current string-part.  */
++	lghi	%r8,0		/* There is no zero in first reject-part.  */
++	vlgvb	%r6,%v18,7	/* Load byte index of zero or 16 if no zero.  */
++	clije	%r6,0,.Lslow_end /* If first element is zero (end of string)
++				     -> Return current length.  */
++
++.Lslow_loop_acc:
++	vfaef	%v22,%v16,%v17,4 /* Create matching-mask (1 in mask ->
++				    Character matches any rejected character in
++				    this reject-string-part) IN=0, RT=1.  */
++	vlgvf	%r4,%v22,0	/* Get result of first element.  */
++	/* First element is equal to any rejected characters?
++	   (All other parts of reject cannot lead to a match before this one)
++	   -> Return current len, which is pointing to this element.  */
++	clijh	%r4,0,.Lslow_end
++	vo	%v21,%v21,%v22	/* Global-mask = global-|matching-mask.  */
++	/* Proceed with next acc until end of acc is reached.  */
++
++
++.Lslow_next_acc:
++	clijh	%r8,0,.Lslow_next_str /* There was a zero in last reject-part
++					  -> Add found index to current len
++					     and end.  */
++	vlbb	%v17,16(%r5,%r3),6 /* Load next reject part.  */
++	aghi	%r5,16		/* Increment current len of reject-string.  */
++	lcbb	%r9,0(%r5,%r3),6 /* Get loaded byte count of reject-string.  */
++	jo	.Lslow_next_acc_onbb /* Jump away if reject-string is
++					 on block-boundary.  */
++.Lslow_next_acc_notonbb:
++	vistrfs	%v17,%v17	/* Fill with zeros after first zero.  */
++	jo	.Lslow_loop_acc /* No zero found -> no preparation needed.  */
++
++.Lslow_next_acc_prepare_zero:
++	/* Zero in reject-part: fill zeros with first-reject-character.  */
++	vlgvf	%r8,%v17,0	/* Load first element of reject-part.  */
++	clije	%r8,0,.Lslow_next_str /* Process next str-part if first
++					  character in this part of reject
++					  is a zero.  */
++	/* r8>0 -> zero found in this acc-part.  */
++	vrepf	%v18,%v17,0	/* Replicate first char accross all chars.  */
++	vceqf	%v22,%v20,%v17	/* Create a mask (v22) of null chars
++				   by comparing with 0 (v20).  */
++	vsel	%v17,%v18,%v17,%v22 /* Replace null chars with first char.  */
++	j	.Lslow_loop_acc /* Reject-string part is prepared.  */
++
++.Lslow_next_acc_onbb:
++	nill	%r9,65532	/* Recognize only fully loaded characters.  */
++	je	.Lslow_next_acc_onbb2 /* Reload vr, if no full wchar_t
++					  loaded.  */
++	vfenezf	%v18,%v17,%v17	/* Find zero in loaded bytes of reject part.  */
++	vlgvb	%r8,%v18,7	/* Load byte index of zero.  */
++	clrjl	%r8,%r9,.Lslow_next_acc_notonbb /* Found a zero in loaded bytes
++						    -> Prepare vreg.  */
++.Lslow_next_acc_onbb2:
++	vl	%v17,0(%r5,%r3)	/* Load over boundary ...  */
++	lghi	%r8,0		/* r8=0 -> no zero in this part of acc,
++				   check for zero is in jump-target.  */
++	j	.Lslow_next_acc_notonbb /* ... and search for zero in
++					    fully loaded vreg again.  */
++
++.Lslow_end_not_found:
++	algfr	%r1,%r6		/* Add zero-index to current len.  */
++	j	.Lslow_end
++.Lslow_index_found:
++	algfr	%r1,%r4		/* Add found index of char to current len.  */
++.Lslow_end:
++	srlg	%r2,%r1,2	/* Convert byte-count to character-count.  */
++	/* Restore registers.  */
++	vlgvg	%r6,%v30,0
++	vlgvg	%r8,%v31,0
++	vlgvg	%r9,%v31,1
++	br	%r14
++.Lfallback:
++	jg	__wcscspn_c
++END(__wcscspn_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wcscspn.c b/sysdeps/s390/multiarch/wcscspn.c
+new file mode 100644
+index 0000000..3cb4516
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wcscspn.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wcscspn.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wcscspn, wcscspn)
++
++#else
++# include <wcsmbs/wcscspn.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index 7ecff8b..9730b00 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -42,7 +42,8 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 	    mbrtoc16 c16rtomb
+ 
+ strop-tests :=  wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+-		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn wcspbrk
++		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn wcspbrk \
++		wcscspn
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wcscspn-ifunc.c b/wcsmbs/test-wcscspn-ifunc.c
+new file mode 100644
+index 0000000..e5dcdaf
+--- /dev/null
++++ b/wcsmbs/test-wcscspn-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wcscspn function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wcscspn.c"
+diff --git a/wcsmbs/test-wcscspn.c b/wcsmbs/test-wcscspn.c
+new file mode 100644
+index 0000000..d09cd3d
+--- /dev/null
++++ b/wcsmbs/test-wcscspn.c
+@@ -0,0 +1,20 @@
++/* Test wcscspn functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-strcspn.c"
+diff --git a/wcsmbs/wcscspn.c b/wcsmbs/wcscspn.c
+index 5d38d07..9e84226 100644
+--- a/wcsmbs/wcscspn.c
++++ b/wcsmbs/wcscspn.c
+@@ -18,6 +18,9 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WCSCSPN
++# define wcscspn WCSCSPN
++#endif
+ 
+ /* Return the length of the maximum initial segment
+    of WCS which contains only wide-characters not in REJECT.  */
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-26.patch b/SOURCES/glibc-rh1268008-26.patch
new file mode 100644
index 0000000..207511b
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-26.patch
@@ -0,0 +1,1184 @@
+From 6bad9c03df10e4bca1840eff95ef9036e5261436 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 13:20:09 +0200
+Subject: [PATCH 26/30] S390: Optimize memchr, rawmemchr and wmemchr.
+
+upstream-commit-id: 88eefd344b3cf4a41284a1dfdaca61667e3a1b4b
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00093.html
+
+This patch provides optimized versions of memchr, rawmemchr and wmemchr with the
+z13 vector instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/memchr-vx.S: New File.
+	* sysdeps/s390/multiarch/memchr.c: Likewise.
+	* sysdeps/s390/multiarch/rawmemchr-c.c: Likewise.
+	* sysdeps/s390/multiarch/rawmemchr-vx.S: Likewise.
+	* sysdeps/s390/multiarch/rawmemchr.c: Likewise.
+	* sysdeps/s390/multiarch/wmemchr-c.c: Likewise.
+	* sysdeps/s390/multiarch/wmemchr-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wmemchr.c: Likewise.
+	* sysdeps/s390/s390-32/multiarch/memchr.c: Likewise.
+	* sysdeps/s390/s390-64/multiarch/memchr.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile (sysdep_routines): Add memchr, wmemchr
+	and rawmemchr functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list-common.c
+	(__libc_ifunc_impl_list_common): Add ifunc test for memchr, rawmemchr
+	and wmemchr.
+	* wcsmbs/wmemchr.c: Use WMEMCHR if defined.
+	* string/test-memchr.c: Add wmemchr support.
+	* wcsmbs/test-wmemchr.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wmemchr.
+	* benchtests/bench-memchr.c: Add wmemchr support.
+	* benchtests/bench-wmemchr.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): wmemchr.
+---
+ benchtests/Makefile                      |   3 +-
+ benchtests/bench-memchr.c                |  68 ++++++++-----
+ benchtests/bench-wmemchr.c               |  20 ++++
+ string/test-memchr.c                     |  89 +++++++++++------
+ sysdeps/s390/multiarch/Makefile          |   7 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   4 +
+ sysdeps/s390/multiarch/memchr-vx.S       | 159 +++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/memchr.c          |  24 +++++
+ sysdeps/s390/multiarch/rawmemchr-c.c     |  34 +++++++
+ sysdeps/s390/multiarch/rawmemchr-vx.S    |  92 +++++++++++++++++
+ sysdeps/s390/multiarch/rawmemchr.c       |  28 ++++++
+ sysdeps/s390/multiarch/wmemchr-c.c       |  31 ++++++
+ sysdeps/s390/multiarch/wmemchr-vx.S      | 166 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wmemchr.c         |  27 +++++
+ sysdeps/s390/s390-32/multiarch/memchr.c  |  21 ++++
+ sysdeps/s390/s390-64/multiarch/memchr.c  |  21 ++++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wmemchr-ifunc.c              |  20 ++++
+ wcsmbs/test-wmemchr.c                    |  20 ++++
+ wcsmbs/wmemchr.c                         |   4 +
+ 20 files changed, 780 insertions(+), 60 deletions(-)
+ create mode 100644 benchtests/bench-wmemchr.c
+ create mode 100644 sysdeps/s390/multiarch/memchr-vx.S
+ create mode 100644 sysdeps/s390/multiarch/memchr.c
+ create mode 100644 sysdeps/s390/multiarch/rawmemchr-c.c
+ create mode 100644 sysdeps/s390/multiarch/rawmemchr-vx.S
+ create mode 100644 sysdeps/s390/multiarch/rawmemchr.c
+ create mode 100644 sysdeps/s390/multiarch/wmemchr-c.c
+ create mode 100644 sysdeps/s390/multiarch/wmemchr-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wmemchr.c
+ create mode 100644 sysdeps/s390/s390-32/multiarch/memchr.c
+ create mode 100644 sysdeps/s390/s390-64/multiarch/memchr.c
+ create mode 100644 wcsmbs/test-wmemchr-ifunc.c
+ create mode 100644 wcsmbs/test-wmemchr.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index 4e811a9..b4b3127 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -39,7 +39,8 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+-		wcsncmp wcsncmp wcschr wcschrnul wcsrchr wcsspn wcspbrk wcscspn
++		wcsncmp wcsncmp wcschr wcschrnul wcsrchr wcsspn wcspbrk wcscspn \
++		wmemchr
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-memchr.c b/benchtests/bench-memchr.c
+index 30c472c..84a90b4 100644
+--- a/benchtests/bench-memchr.c
++++ b/benchtests/bench-memchr.c
+@@ -16,31 +16,51 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#ifndef WIDE
++# define CHAR char
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define CHAR wchar_t
++# define SMALL_CHAR 1273
++#endif /* WIDE */
+ #ifndef USE_AS_MEMRCHR
+ # define TEST_MAIN
+-# define TEST_NAME "memchr"
++# ifndef WIDE
++#  define TEST_NAME "memchr"
++# else
++#  define TEST_NAME "wmemchr"
++# endif /* WIDE */
+ # include "bench-string.h"
+ 
+-typedef char *(*proto_t) (const char *, int, size_t);
+-char *simple_memchr (const char *, int, size_t);
++# ifndef WIDE
++#  define MEMCHR memchr
++#  define SIMPLE_MEMCHR simple_memchr
++# else
++#  define MEMCHR wmemchr
++#  define SIMPLE_MEMCHR simple_wmemchr
++# endif /* WIDE */
+ 
+-IMPL (simple_memchr, 0)
+-IMPL (memchr, 1)
++typedef CHAR *(*proto_t) (const CHAR *, int, size_t);
++CHAR *SIMPLE_MEMCHR (const CHAR *, int, size_t);
+ 
+-char *
+-simple_memchr (const char *s, int c, size_t n)
++IMPL (SIMPLE_MEMCHR, 0)
++IMPL (MEMCHR, 1)
++
++CHAR *
++SIMPLE_MEMCHR (const CHAR *s, int c, size_t n)
+ {
+   while (n--)
+-    if (*s++ == (char) c)
+-      return (char *) s - 1;
++    if (*s++ == (CHAR) c)
++      return (CHAR *) s - 1;
+   return NULL;
+ }
+-#endif
++#endif /* !USE_AS_MEMRCHR */
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s, int c, size_t n, char *exp_res)
++do_one_test (impl_t *impl, const CHAR *s, int c, size_t n, CHAR *exp_res)
+ {
+-  char *res = CALL (impl, s, c, n);
++  CHAR *res = CALL (impl, s, c, n);
+   size_t i, iters = INNER_LOOP_ITERS;
+   timing_t start, stop, cur;
+ 
+@@ -68,36 +88,38 @@ static void
+ do_test (size_t align, size_t pos, size_t len, int seek_char)
+ {
+   size_t i;
+-  char *result;
++  CHAR *result;
+ 
+   align &= 7;
+-  if (align + len >= page_size)
++  if ((align + len) * sizeof (CHAR) >= page_size)
+     return;
+ 
++  CHAR *buf = (CHAR *) (buf1);
++
+   for (i = 0; i < len; ++i)
+     {
+-      buf1[align + i] = 1 + 23 * i % 127;
+-      if (buf1[align + i] == seek_char)
+-        buf1[align + i] = seek_char + 1;
++      buf[align + i] = 1 + 23 * i % SMALL_CHAR;
++      if (buf[align + i] == seek_char)
++        buf[align + i] = seek_char + 1;
+     }
+-  buf1[align + len] = 0;
++  buf[align + len] = 0;
+ 
+   if (pos < len)
+     {
+-      buf1[align + pos] = seek_char;
+-      buf1[align + len] = -seek_char;
+-      result = (char *) (buf1 + align + pos);
++      buf[align + pos] = seek_char;
++      buf[align + len] = -seek_char;
++      result = (CHAR *) (buf1 + align + pos);
+     }
+   else
+     {
+       result = NULL;
+-      buf1[align + len] = seek_char;
++      buf[align + len] = seek_char;
+     }
+ 
+   printf ("Length %4zd, alignment %2zd:", pos, align);
+ 
+   FOR_EACH_IMPL (impl, 0)
+-    do_one_test (impl, (char *) (buf1 + align), seek_char, len, result);
++    do_one_test (impl, (CHAR *) (buf + align), seek_char, len, result);
+ 
+   putchar ('\n');
+ }
+diff --git a/benchtests/bench-wmemchr.c b/benchtests/bench-wmemchr.c
+new file mode 100644
+index 0000000..d796a69
+--- /dev/null
++++ b/benchtests/bench-wmemchr.c
+@@ -0,0 +1,20 @@
++/* Measure wmemchr functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-memchr.c"
+diff --git a/string/test-memchr.c b/string/test-memchr.c
+index cdcceeb..058a837 100644
+--- a/string/test-memchr.c
++++ b/string/test-memchr.c
+@@ -18,28 +18,49 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define TEST_MAIN
+-#define TEST_NAME "memchr"
++#ifndef WIDE
++# define TEST_NAME "memchr"
++#else
++# define TEST_NAME "wmemchr"
++#endif /* WIDE */
+ #include "test-string.h"
+ 
+-typedef char *(*proto_t) (const char *, int, size_t);
+-char *simple_memchr (const char *, int, size_t);
+-
+-IMPL (simple_memchr, 0)
+-IMPL (memchr, 1)
+-
+-char *
+-simple_memchr (const char *s, int c, size_t n)
++#ifndef WIDE
++# define MEMCHR memchr
++# define CHAR char
++# define UCHAR unsigned char
++# define SIMPLE_MEMCHR simple_memchr
++# define BIG_CHAR CHAR_MAX
++# define SMALL_CHAR 127
++#else
++# include <wchar.h>
++# define MEMCHR wmemchr
++# define CHAR wchar_t
++# define UCHAR wchar_t
++# define SIMPLE_MEMCHR simple_wmemchr
++# define BIG_CHAR WCHAR_MAX
++# define SMALL_CHAR 1273
++#endif /* WIDE */
++
++typedef CHAR *(*proto_t) (const CHAR *, int, size_t);
++CHAR *SIMPLE_MEMCHR (const CHAR *, int, size_t);
++
++IMPL (SIMPLE_MEMCHR, 0)
++IMPL (MEMCHR, 1)
++
++CHAR *
++SIMPLE_MEMCHR (const CHAR *s, int c, size_t n)
+ {
+   while (n--)
+-    if (*s++ == (char) c)
+-      return (char *) s - 1;
++    if (*s++ == (CHAR) c)
++      return (CHAR *) s - 1;
+   return NULL;
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, const char *s, int c, size_t n, char *exp_res)
++do_one_test (impl_t *impl, const CHAR *s, int c, size_t n, CHAR *exp_res)
+ {
+-  char *res = CALL (impl, s, c, n);
++  CHAR *res = CALL (impl, s, c, n);
+   if (res != exp_res)
+     {
+       error (0, 0, "Wrong result in function %s %p %p", impl->name,
+@@ -53,34 +74,36 @@ static void
+ do_test (size_t align, size_t pos, size_t len, int seek_char)
+ {
+   size_t i;
+-  char *result;
++  CHAR *result;
+ 
+   align &= 7;
+-  if (align + len >= page_size)
++  if ((align + len) * sizeof (CHAR) >= page_size)
+     return;
+ 
++  CHAR *buf = (CHAR *) (buf1);
++
+   for (i = 0; i < len; ++i)
+     {
+-      buf1[align + i] = 1 + 23 * i % 127;
+-      if (buf1[align + i] == seek_char)
+-        buf1[align + i] = seek_char + 1;
++      buf[align + i] = 1 + 23 * i % SMALL_CHAR;
++      if (buf[align + i] == seek_char)
++	buf[align + i] = seek_char + 1;
+     }
+-  buf1[align + len] = 0;
++  buf[align + len] = 0;
+ 
+   if (pos < len)
+     {
+-      buf1[align + pos] = seek_char;
+-      buf1[align + len] = -seek_char;
+-      result = (char *) (buf1 + align + pos);
++      buf[align + pos] = seek_char;
++      buf[align + len] = -seek_char;
++      result = (CHAR *) (buf + align + pos);
+     }
+   else
+     {
+       result = NULL;
+-      buf1[align + len] = seek_char;
++      buf[align + len] = seek_char;
+     }
+ 
+   FOR_EACH_IMPL (impl, 0)
+-    do_one_test (impl, (char *) (buf1 + align), seek_char, len, result);
++    do_one_test (impl, (CHAR *) (buf + align), seek_char, len, result);
+ }
+ 
+ static void
+@@ -88,8 +111,8 @@ do_random_tests (void)
+ {
+   size_t i, j, n, align, pos, len;
+   int seek_char;
+-  char *result;
+-  unsigned char *p = buf1 + page_size - 512;
++  CHAR *result;
++  UCHAR *p = (UCHAR *) (buf1 + page_size) - 512;
+ 
+   for (n = 0; n < ITERATIONS; n++)
+     {
+@@ -101,11 +124,11 @@ do_random_tests (void)
+       if (pos >= len)
+ 	len = pos + (random () & 7);
+       if (len + align >= 512)
+-        len = 512 - align - (random () & 7);
+-      seek_char = random () & 255;
++	len = 512 - align - (random () & 7);
++      seek_char = random () & BIG_CHAR;
+       j = len + align + 64;
+       if (j > 512)
+-        j = 512;
++	j = 512;
+ 
+       for (i = 0; i < j; i++)
+ 	{
+@@ -113,7 +136,7 @@ do_random_tests (void)
+ 	    p[i] = seek_char;
+ 	  else
+ 	    {
+-	      p[i] = random () & 255;
++	      p[i] = random () & BIG_CHAR;
+ 	      if (i < pos + align && p[i] == seek_char)
+ 		p[i] = seek_char + 13;
+ 	    }
+@@ -124,17 +147,17 @@ do_random_tests (void)
+ 	  size_t r = random ();
+ 	  if ((r & 31) == 0)
+ 	    len = ~(uintptr_t) (p + align) - ((r >> 5) & 31);
+-	  result = (char *) (p + pos + align);
++	  result = (CHAR *) (p + pos + align);
+ 	}
+       else
+ 	result = NULL;
+ 
+       FOR_EACH_IMPL (impl, 1)
+-	if (CALL (impl, (char *) (p + align), seek_char, len) != result)
++	if (CALL (impl, (CHAR *) (p + align), seek_char, len) != result)
+ 	  {
+ 	    error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %d, %zd, %zd) %p != %p, p %p",
+ 		   n, impl->name, align, seek_char, len, pos,
+-		   CALL (impl, (char *) (p + align), seek_char, len),
++		   CALL (impl, (CHAR *) (p + align), seek_char, len),
+ 		   result, p);
+ 	    ret = 1;
+ 	  }
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 2c1fce0..4a04c34 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -14,7 +14,9 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strrchr strrchr-vx strrchr-c \
+ 		   strspn strspn-vx strspn-c \
+ 		   strpbrk strpbrk-vx strpbrk-c \
+-		   strcspn strcspn-vx strcspn-c
++		   strcspn strcspn-vx strcspn-c \
++		   memchr memchr-vx \
++		   rawmemchr rawmemchr-vx rawmemchr-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+@@ -33,5 +35,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcsrchr wcsrchr-vx wcsrchr-c \
+ 		   wcsspn wcsspn-vx wcsspn-c \
+ 		   wcspbrk wcspbrk-vx wcspbrk-c \
+-		   wcscspn wcscspn-vx wcscspn-c
++		   wcscspn wcscspn-vx wcscspn-c \
++		   wmemchr wmemchr-vx wmemchr-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index 7f62e49..d4c7c0d 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -127,6 +127,10 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (strcspn);
+   IFUNC_VX_IMPL (wcscspn);
+ 
++  IFUNC_VX_IMPL (memchr);
++  IFUNC_VX_IMPL (wmemchr);
++  IFUNC_VX_IMPL (rawmemchr);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/memchr-vx.S b/sysdeps/s390/multiarch/memchr-vx.S
+new file mode 100644
+index 0000000..5c98fd9
+--- /dev/null
++++ b/sysdeps/s390/multiarch/memchr-vx.S
+@@ -0,0 +1,159 @@
++/* Vector optimized 32/64 bit S/390 version of memchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* void *memchr (const void *s, int c, size_t n)
++   Scans memory for character c
++   and returns pointer to first c.
++
++   Register usage:
++   -r0=tmp
++   -r1=tmp
++   -r2=s
++   -r3=c
++   -r4=n
++   -r5=current_len
++   -v16=part of s
++   -v17=index of found c
++   -v18=c replicated
++*/
++ENTRY(__memchr_vx)
++
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgije	%r4,0,.Lnf_end	/* If len == 0 then exit.  */
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r0,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r0,%r0		/* Convert 32bit to 64bit.  */
++
++	vlvgb	%v18,%r3,0	/* Generate vector which elements are all c.
++				   if c > 255, c will be truncated.  */
++	vrepb	%v18,%v18,0
++	lghi	%r5,16		/* current_len = 16.  */
++
++	clgrjhe	%r0,%r4,.Llastcmp /* If (bytes to boundary) >= n,
++				     jump to lastcmp.  */
++
++	vfeebs	%v17,%v16,%v18	/* Find c.  */
++	vlgvb	%r1,%v17,7	/* Load byte index of c.  */
++	clgrjl	%r1,%r0,.Lfound2 /* Found c is within loaded bytes.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r1,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	slr	%r5,%r1		/* Compute bytes to 16bytes boundary.  */
++
++	lgr	%r0,%r5		/* If %r5 + 64 < n? -> loop64.  */
++	aghi	%r0,64
++	clgrjl	%r0,%r4,.Lloop64
++.Llt64:
++	vl	%v16,0(%r5,%r2)
++	aghi	%r5,16
++	clgrjhe	%r5,%r4,.Llastcmp /* Do last compare if curr-len >= n.  */
++	vfeebs	%v17,%v16,%v18	/* Find c.  */
++	jl	.Lfound	/* Jump away if c was found.  */
++
++	vl	%v16,0(%r5,%r2)
++	aghi	%r5,16
++	clgrjhe	%r5,%r4,.Llastcmp
++	vfeebs	%v17,%v16,%v18
++	jl	.Lfound
++
++	vl	%v16,0(%r5,%r2)
++	aghi	%r5,16
++	clgrjhe	%r5,%r4,.Llastcmp
++	vfeebs	%v17,%v16,%v18
++	jl	.Lfound
++
++	vl	%v16,0(%r5,%r2)
++	aghi	%r5,16
++
++.Llastcmp:
++	/* Use comparision result only if located within first n characters.
++	   %r5: current_len;
++	   %r4: n;
++	   (current_len - n): [0...16[
++	   first ignored match index: vr-width - (current_len - n) ]0...16]
++	*/
++	vfeebs	%v17,%v16,%v18	/* Find c.  */
++	slgrk	%r4,%r5,%r4	/* %r5 = current_len - n.  */
++	lghi	%r0,16		/* Register width = 16.  */
++	vlgvb	%r1,%v17,7	/* Extract found index or 16 if all equal.  */
++	slr	%r0,%r4		/* %r0 = first ignored match index.  */
++	clrjl	%r1,%r0,.Lfound2 /* Go away if miscompare is below n bytes.  */
++	/* c not found within n-bytes.  */
++.Lnf_end:
++	lghi	%r2,0		/* Return null.  */
++	br	%r14
++
++.Lfound48:
++	aghi	%r5,16
++.Lfound32:
++	aghi	%r5,16
++.Lfound16:
++	aghi	%r5,16
++.Lfound0:
++	aghi	%r5,16
++.Lfound:
++	vlgvb	%r1,%v17,7	/* Load byte index of c.  */
++.Lfound2:
++	slgfi	%r5,16		/* current_len -=16 */
++	algr	%r5,%r1		/* Zero byte index is added to current len.  */
++	la	%r2,0(%r5,%r2)	/* Return pointer to c.  */
++	br	%r14
++
++
++.Lloop64:
++	vl	%v16,0(%r5,%r2)
++	vfeebs	%v17,%v16,%v18	/* Find c.  */
++	jl	.Lfound0	/* Jump away if c was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfeebs	%v17,%v16,%v18
++	jl	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfeebs	%v17,%v16,%v18
++	jl	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfeebs	%v17,%v16,%v18
++	jl	.Lfound48
++
++	aghi	%r5,64
++	lgr	%r0,%r5		/* If %r5 + 64 < n? -> loop64.  */
++	aghi	%r0,64
++	clgrjl	%r0,%r4,.Lloop64
++
++	j	.Llt64
++END(__memchr_vx)
++
++# define memchr __memchr_c
++# undef libc_hidden_builtin_def
++# define libc_hidden_builtin_def(name) strong_alias(__memchr_c, __GI_memchr)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
++
++#include <memchr.S>
+diff --git a/sysdeps/s390/multiarch/memchr.c b/sysdeps/s390/multiarch/memchr.c
+new file mode 100644
+index 0000000..6624765
+--- /dev/null
++++ b/sysdeps/s390/multiarch/memchr.c
+@@ -0,0 +1,24 @@
++/* Multiple versions of memchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__memchr, memchr)
++#endif
+diff --git a/sysdeps/s390/multiarch/rawmemchr-c.c b/sysdeps/s390/multiarch/rawmemchr-c.c
+new file mode 100644
+index 0000000..f652133
+--- /dev/null
++++ b/sysdeps/s390/multiarch/rawmemchr-c.c
+@@ -0,0 +1,34 @@
++/* Default rawmemchr implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++
++# define RAWMEMCHR  __rawmemchr_c
++# undef weak_alias
++# define weak_alias(a, b)
++# ifdef SHARED
++#  undef libc_hidden_def
++#  define libc_hidden_def(name)				\
++     __hidden_ver1 (__rawmemchr_c, __GI___rawmemchr, __rawmemchr_c);
++# endif /* SHARED */
++
++extern __typeof (rawmemchr) __rawmemchr_c attribute_hidden;
++
++# include <string/rawmemchr.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/multiarch/rawmemchr-vx.S b/sysdeps/s390/multiarch/rawmemchr-vx.S
+new file mode 100644
+index 0000000..2af4570
+--- /dev/null
++++ b/sysdeps/s390/multiarch/rawmemchr-vx.S
+@@ -0,0 +1,92 @@
++/* Vector optimized 32/64 bit S/390 version of rawmemchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* void *rawmemchr (const void *s, int c)
++   Scans memory for character c
++   and returns pointer to first c.
++
++   Register usage:
++   -r1=tmp
++   -r2=s
++   -r3=c
++   -r4=tmp
++   -r5=current_len
++   -v16=part of s
++   -v17=index of unequal
++   -v18=c replicated
++*/
++ENTRY(__rawmemchr_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r1,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++
++	vlvgb	%v18,%r3,0	/* Generate vector which elements are all c.
++				   If c > 255, c will be truncated.  */
++	vrepb	%v18,%v18,0
++
++	vfeeb	%v17,%v16,%v18	/* Vector find element equal.  */
++	vlgvb	%r5,%v17,7	/* Load byte index of character or zero.  */
++	clrjl	%r5,%r1,.Lend_found /* If found c is in loaded bytes, end.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r1,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r5,16
++	slr	%r5,%r1		/* Compute bytes to 16bytes boundary.  */
++
++	/* Find c in a 16byte aligned loop.  */
++.Lloop:
++	vl	%v16,0(%r5,%r2)	/* Load s.  */
++	vfeebs	%v17,%v16,%v18	/* Vector find element equal.  */
++	jno	.Lcharacter	/* Jump away if element found.  */
++	vl	%v16,16(%r5,%r2)
++	vfeebs	%v17,%v16,%v18
++	jno	.Lcharacter16
++	vl	%v16,32(%r5,%r2)
++	vfeebs	%v17,%v16,%v18
++	jno	.Lcharacter32
++	vl	%v16,48(%r5,%r2)
++	vfeebs	%v17,%v16,%v18
++	jno	.Lcharacter48
++
++	aghi	%r5,64
++	j	.Lloop		/* No character found -> loop.  */
++
++	/* Found character.  */
++.Lcharacter48:
++	aghi %r5,16
++.Lcharacter32:
++	aghi %r5,16
++.Lcharacter16:
++	aghi %r5,16
++.Lcharacter:
++	vlgvb	%r1,%v17,7	/* Load byte index of character.  */
++	algr	%r5,%r1
++.Lend_found:
++	la	%r2,0(%r5,%r2)	/* Return pointer to character.  */
++	br	%r14
++END(__rawmemchr_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/rawmemchr.c b/sysdeps/s390/multiarch/rawmemchr.c
+new file mode 100644
+index 0000000..2335289
+--- /dev/null
++++ b/sysdeps/s390/multiarch/rawmemchr.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of rawmemchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__rawmemchr)
++weak_alias (__rawmemchr, rawmemchr)
++
++#else
++# include <string/rawmemchr.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT &&!defined NOT_IN_libc ) */
+diff --git a/sysdeps/s390/multiarch/wmemchr-c.c b/sysdeps/s390/multiarch/wmemchr-c.c
+new file mode 100644
+index 0000000..d4abeb4
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wmemchr-c.c
+@@ -0,0 +1,31 @@
++/* Default wmemchr implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WMEMCHR  __wmemchr_c
++
++# include <wchar.h>
++extern __typeof (wmemchr) __wmemchr_c;
++# ifdef SHARED
++#  undef libc_hidden_def
++#  define libc_hidden_def(name)			\
++  __hidden_ver1 (__wmemchr_c, __GI_wmemchr, __wmemchr_c);
++# endif /* SHARED */
++
++# include <wcsmbs/wmemchr.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wmemchr-vx.S b/sysdeps/s390/multiarch/wmemchr-vx.S
+new file mode 100644
+index 0000000..4df08d2
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wmemchr-vx.S
+@@ -0,0 +1,166 @@
++/* Vector optimized 32/64 bit S/390 version of wmemchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t *wmemchr (const wchar_t *s, wchar_t c, size_t n)
++   Scans memory for character c
++   and returns pointer to first c.
++
++   Register usage:
++   -r0=tmp
++   -r1=tmp
++   -r2=s
++   -r3=c
++   -r4=n
++   -r5=current_len
++   -v16=part of s
++   -v17=index of found c
++   -v18=c replicated
++*/
++ENTRY(__wmemchr_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	clgije	%r4,0,.Lnf_end	/* If len == 0 then exit.  */
++
++	vlbb	%v16,0(%r2),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r0,0(%r2),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r0,%r0		/* Convert 32bit to 64bit.  */
++
++	tmll	%r2,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++
++	vlvgf	%v18,%r3,0	/* Generate vector which elements are all c.  */
++	vrepf	%v18,%v18,0
++	lghi	%r5,16		/* current_len = 16.  */
++
++	/* Check range of maxlen and convert to byte-count.  */
++# ifdef __s390x__
++	tmhh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	lghi	%r1,-4		/* Max byte-count is 18446744073709551612.  */
++# else
++	tmlh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	llilf	%r1,4294967292	/* Max byte-count is 4294967292.  */
++# endif /* !__s390x__ */
++	sllg	%r4,%r4,2	/* Convert character-count to byte-count.  */
++	locgrne	%r4,%r1		/* Use max byte-count, if bit 0/1 was one.  */
++
++	clgrjhe	%r0,%r4,.Llastcmp /* If (bytes to boundary) >= n,
++				     jump to lastcmp.  */
++
++	vfeefs	%v17,%v16,%v18	/* Find c.  */
++	vlgvb	%r1,%v17,7	/* Load byte index of c.  */
++	clgrjl	%r1,%r0,.Lfound2 /* Found c is within loaded bytes.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r1,%r2,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	slr	%r5,%r1		/* Compute bytes to 16bytes boundary.  */
++
++	lgr	%r0,%r5		/* If %r5 + 64 < n? -> loop64.  */
++	aghi	%r0,64
++	clgrjl	%r0,%r4,.Lloop64
++.Llt64:
++	vl	%v16,0(%r5,%r2)
++	aghi	%r5,16
++	clgrjhe	%r5,%r4,.Llastcmp /* Do last compare if curr-len >= n.  */
++	vfeefs	%v17,%v16,%v18	/* Find c.  */
++	jl	.Lfound		/* Jump away if c was found.  */
++
++	vl	%v16,0(%r5,%r2)
++	aghi	%r5,16
++	clgrjhe	%r5,%r4,.Llastcmp
++	vfeefs	%v17,%v16,%v18
++	jl	.Lfound
++
++	vl	%v16,0(%r5,%r2)
++	aghi	%r5,16
++	clgrjhe	%r5,%r4,.Llastcmp
++	vfeefs	%v17,%v16,%v18
++	jl	.Lfound
++
++	vl	%v16,0(%r5,%r2)
++	aghi	%r5,16
++
++.Llastcmp:
++	/* Use comparision result only if located within first n characters.
++	   %r5: current_len;
++	   %r4: n;
++	   (current_len - n): [0...16[
++	   first ignored match index = vr-width - (current_len - n) ]0...16]
++	*/
++	vfeefs	%v17,%v16,%v18	/* Find c.  */
++	slgrk	%r4,%r5,%r4	/* %r5 = current_len - n.  */
++	lghi	%r0,16		/* Register width = 16.  */
++	vlgvb	%r1,%v17,7	/* Extract found index or 16 if all equal.  */
++	slr	%r0,%r4		/* %r0 = first ignored match index.  */
++	clrjl	%r1,%r0,.Lfound2 /* Go away if miscompare is below n bytes.  */
++	/* c not found within n-bytes.  */
++.Lnf_end:
++	lghi	%r2,0		/* Return null.  */
++	br	%r14
++
++.Lfound48:
++	aghi	%r5,16
++.Lfound32:
++	aghi	%r5,16
++.Lfound16:
++	aghi	%r5,16
++.Lfound0:
++	aghi	%r5,16
++.Lfound:
++	vlgvb	%r1,%v17,7	/* Load byte index of c.  */
++.Lfound2:
++	slgfi	%r5,16		/* current_len -=16 */
++	algr	%r5,%r1		/* Zero byte index is added to current len.  */
++	la	%r2,0(%r5,%r2)	/* Return pointer to c.  */
++	br	%r14
++
++.Lloop64:
++	vl	%v16,0(%r5,%r2)
++	vfeefs	%v17,%v16,%v18	/* Find c.  */
++	jl	.Lfound0	/* Jump away if c was found.  */
++	vl	%v16,16(%r5,%r2)
++	vfeefs	%v17,%v16,%v18
++	jl	.Lfound16
++	vl	%v16,32(%r5,%r2)
++	vfeefs	%v17,%v16,%v18
++	jl	.Lfound32
++	vl	%v16,48(%r5,%r2)
++	vfeefs	%v17,%v16,%v18
++	jl	.Lfound48
++
++	aghi	%r5,64
++	lgr	%r0,%r5		/* If %r5 + 64 < n? -> loop64.  */
++	aghi	%r0,64
++	clgrjl	%r0,%r4,.Lloop64
++
++	j	.Llt64
++.Lfallback:
++	jg	__wmemchr_c
++END(__wmemchr_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wmemchr.c b/sysdeps/s390/multiarch/wmemchr.c
+new file mode 100644
+index 0000000..b8b0e83
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wmemchr.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wmemchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wmemchr, wmemchr)
++
++#else
++# include <wcsmbs/wmemchr.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/sysdeps/s390/s390-32/multiarch/memchr.c b/sysdeps/s390/s390-32/multiarch/memchr.c
+new file mode 100644
+index 0000000..00958cd
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/memchr.c
+@@ -0,0 +1,21 @@
++/* Multiple versions of memchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This wrapper-file is needed, because otherwise file
++   sysdeps/s390/s390-[32|64]/memchr.S will be used.  */
++#include <sysdeps/s390/multiarch/memchr.c>
+diff --git a/sysdeps/s390/s390-64/multiarch/memchr.c b/sysdeps/s390/s390-64/multiarch/memchr.c
+new file mode 100644
+index 0000000..00958cd
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/memchr.c
+@@ -0,0 +1,21 @@
++/* Multiple versions of memchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This wrapper-file is needed, because otherwise file
++   sysdeps/s390/s390-[32|64]/memchr.S will be used.  */
++#include <sysdeps/s390/multiarch/memchr.c>
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index 9730b00..f8bc401 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -43,7 +43,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 
+ strop-tests :=  wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+ 		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn wcspbrk \
+-		wcscspn
++		wcscspn wmemchr
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wmemchr-ifunc.c b/wcsmbs/test-wmemchr-ifunc.c
+new file mode 100644
+index 0000000..4b40871
+--- /dev/null
++++ b/wcsmbs/test-wmemchr-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wmemchr function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wmemchr.c"
+diff --git a/wcsmbs/test-wmemchr.c b/wcsmbs/test-wmemchr.c
+new file mode 100644
+index 0000000..90c7f68
+--- /dev/null
++++ b/wcsmbs/test-wmemchr.c
+@@ -0,0 +1,20 @@
++/* Test wmemchr functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-memchr.c"
+diff --git a/wcsmbs/wmemchr.c b/wcsmbs/wmemchr.c
+index 99ebed4..905a321 100644
+--- a/wcsmbs/wmemchr.c
++++ b/wcsmbs/wmemchr.c
+@@ -18,6 +18,10 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WMEMCHR
++# define wmemchr WMEMCHR
++#endif
++
+ wchar_t *
+ wmemchr (s, c, n)
+      register const wchar_t *s;
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-27.patch b/SOURCES/glibc-rh1268008-27.patch
new file mode 100644
index 0000000..49e382c
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-27.patch
@@ -0,0 +1,307 @@
+From 130a0ae7cad6bc7a2d102624027a1d8de19cc3b3 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 13:21:11 +0200
+Subject: [PATCH 27/30] S390: Optimize memccpy.
+
+upstream-commit-id: 9b593dc3055d44a4179c03050be58a437ae385a1
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00100.html
+
+This patch provides optimized versions of memccpy with the z13 vector
+instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/memccpy-c.c: New File.
+	* sysdeps/s390/multiarch/memccpy-vx.S: Likewise.
+	* sysdeps/s390/multiarch/memccpy.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile
+	(sysdep_routines): Add memccpy functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list-common.c
+	(__libc_ifunc_impl_list_common): Add ifunc test for memccpy.
+	* string/memccpy.c: Use MEMCCPY if defined.
+---
+ string/memccpy.c                         |   4 +
+ sysdeps/s390/multiarch/Makefile          |   3 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   2 +
+ sysdeps/s390/multiarch/memccpy-c.c       |  27 ++++++
+ sysdeps/s390/multiarch/memccpy-vx.S      | 156 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/memccpy.c         |  28 ++++++
+ 6 files changed, 219 insertions(+), 1 deletion(-)
+ create mode 100644 sysdeps/s390/multiarch/memccpy-c.c
+ create mode 100644 sysdeps/s390/multiarch/memccpy-vx.S
+ create mode 100644 sysdeps/s390/multiarch/memccpy.c
+
+diff --git a/string/memccpy.c b/string/memccpy.c
+index a8649ff..78c13b6 100644
+--- a/string/memccpy.c
++++ b/string/memccpy.c
+@@ -20,6 +20,10 @@
+ #undef __memccpy
+ #undef memccpy
+ 
++#ifdef MEMCCPY
++# define __memccpy MEMCCPY
++#endif
++
+ /* Copy no more than N bytes of SRC to DEST, stopping when C is found.
+    Return the position in DEST one byte past where C was copied, or
+    NULL if C was not found in the first N bytes of SRC.  */
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 4a04c34..87dff0f 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -16,7 +16,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strpbrk strpbrk-vx strpbrk-c \
+ 		   strcspn strcspn-vx strcspn-c \
+ 		   memchr memchr-vx \
+-		   rawmemchr rawmemchr-vx rawmemchr-c
++		   rawmemchr rawmemchr-vx rawmemchr-c \
++		   memccpy memccpy-vx memccpy-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index d4c7c0d..c90fb6b 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -131,6 +131,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+   IFUNC_VX_IMPL (wmemchr);
+   IFUNC_VX_IMPL (rawmemchr);
+ 
++  IFUNC_VX_IMPL (memccpy);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/memccpy-c.c b/sysdeps/s390/multiarch/memccpy-c.c
+new file mode 100644
+index 0000000..4d07b63
+--- /dev/null
++++ b/sysdeps/s390/multiarch/memccpy-c.c
+@@ -0,0 +1,27 @@
++/* Default memccpy implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define MEMCCPY  __memccpy_c
++# undef weak_alias
++# define weak_alias(a, b)
++
++# include <string.h>
++extern __typeof (__memccpy) __memccpy_c;
++# include <string/memccpy.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/memccpy-vx.S b/sysdeps/s390/multiarch/memccpy-vx.S
+new file mode 100644
+index 0000000..b1dc69c
+--- /dev/null
++++ b/sysdeps/s390/multiarch/memccpy-vx.S
+@@ -0,0 +1,156 @@
++/* Vector optimized 32/64 bit S/390 version of memccpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* void *memccpy (void * dest, const void *src, int c, size_t n)
++   Copies no more than n bytes from src to dest,
++   stopping when the character c is found
++   and returns pointer next to c in dest or null if c not found.
++
++   Register usage:
++   -r0=tmp
++   -r1=tmp
++   -r2=dest
++   -r3=src
++   -r4=c
++   -r5=n
++   -r6=current_len
++   -v16=part of s
++   -v17=index of found c
++   -v18=c replicated
++   -v19=part #2 of s
++   -v31=save area for r6
++*/
++ENTRY(__memccpy_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r5,%r5
++# endif /* !defined __s390x__ */
++
++	vlvgp	%v31,%r6,%r7	/* Save registers.  */
++	clgije	%r5,0,.Lnf_end	/* If len == 0 then exit.  */
++
++	vlbb	%v16,0(%r3),6	/* Load s until next 4k-byte boundary.  */
++	lcbb	%r0,0(%r3),6	/* Get bytes to 4k-byte boundary or 16.  */
++	llgfr	%r0,%r0		/* Convert 32bit to 64bit.  */
++
++	vlvgb	%v18,%r4,0	/* Generate vector which elements are all c.
++				   if c > 255, c will be truncated.  */
++	vrepb	%v18,%v18,0
++	lghi	%r6,0		/* current_len = 0.  */
++
++	clgrjle	%r5,%r0,.Lremaining_v16 /* If maxlen <= loaded-bytes
++					   -> Process remaining.  */
++
++	vfeebs	%v17,%v16,%v18	/* Find c.  */
++	vlgvb	%r1,%v17,7	/* Load byte index of c.  */
++	clgrjl	%r1,%r0,.Lfound_v16 /* Found c is within loaded bytes.  */
++
++	/* Align s to 16 byte.  */
++	risbgn	%r1,%r3,60,128+63,0 /* %r3 = bits 60-63 of %r2 'and' 15.  */
++	lghi	%r6,15		/* current_len = 15.  */
++	slr	%r6,%r1		/* Compute highest index to 16byte boundary.  */
++
++	vstl	%v16,%r6,0(%r2)	/* Store prcessed bytes */
++	ahi	%r6,1
++
++.Lpreloop1:
++	/* Now we are 16byte aligned, so we can load
++	   a full vreg without page fault.  */
++	vl	%v16,0(%r6,%r3)	/* Load s.  */
++	clgijl	%r5,17,.Lremaining_v16	/* If n <= 16,
++					   process remaining bytes.  */
++	lgr	%r7,%r5
++	slgfi	%r7,16		/* border_len = n - 16.  */
++	j	.Lloop1
++
++.Lloop2:
++	vl	%v16,16(%r6,%r3)
++	vst	%v19,0(%r6,%r2)
++	aghi	%r6,16
++
++.Lloop1:
++	clgrjhe	%r6,%r7,.Lremaining_v16 /* If current_len >= border
++					   then process remaining bytes.  */
++	vfeebs	%v17,%v16,%v18	/* Find c.  */
++	jl	.Lfound_v16	/* Jump away if c was found.  */
++	vl	%v19,16(%r6,%r3) /* Load next s part.  */
++	vst	%v16,0(%r6,%r2)	/* Store previous part without c.  */
++	aghi	%r6,16
++
++	clgrjhe	%r6,%r7,.Lremaining_v19
++	vfeebs	%v17,%v19,%v18
++	jl	.Lfound_v19
++	vl	%v16,16(%r6,%r3)
++	vst	%v19,0(%r6,%r2)
++	aghi	%r6,16
++
++	clgrjhe	%r6,%r7,.Lremaining_v16
++	vfeebs	%v17,%v16,%v18
++	jl	.Lfound_v16
++	vl	%v19,16(%r6,%r3)
++	vst	%v16,0(%r6,%r2)
++	aghi	%r6,16
++
++	clgrjhe	%r6,%r7,.Lremaining_v19
++	vfeebs	%v17,%v19,%v18
++	jo	.Lloop2
++
++.Lfound_v19:
++	vlr	%v16,%v19
++.Lfound_v16:
++	/* v16 contains c. Store remaining bytes to c. currlen hasn´t
++	   reached border, thus checking for maxlen is not needed! */
++	vlgvb	%r1,%v17,7	/* Load byte index of c.  */
++	la	%r2,0(%r6,%r2)	/* vstl has no support for index-register.  */
++.Lfound_v16_store:
++	vstl	%v16,%r1,0(%r2)	/* Copy bytes including c.  */
++	la	%r2,1(%r1,%r2)	/* Return pointer next to c in dest.  */
++	vlgvg	%r6,%v31,0
++	vlgvg	%r7,%v31,1
++	br	%r14
++
++.Lremaining_v19:
++	vlr	%v16,%v19
++.Lremaining_v16:
++	/* v16 contains the remaining bytes [1...16].
++	   Check and store remaining bytes.  */
++	vfeebs	%v17,%v16,%v18
++	slgrk	%r7,%r5,%r6	/* Remaining bytes = maxlen - current_len.  */
++	aghi	%r7,-1		/* vstl needs highest index.  */
++	la	%r2,0(%r6,%r2)	/* vstl has no index register.  */
++	vlgvb	%r1,%v17,7	/* Load index of c or 16 if not found.  */
++	/* c in remaining bytes? -> Jump away (c-index <= max-index)  */
++	clrjle	%r1,%r7,.Lfound_v16_store
++	vstl	%v16,%r7,0(%r2)	/* Store remaining bytes.  */
++
++.Lnf_end:
++	vlgvg	%r6,%v31,0
++	vlgvg	%r7,%v31,1
++	lghi	%r2,0		/* Return null.  */
++	br	%r14
++END(__memccpy_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/memccpy.c b/sysdeps/s390/multiarch/memccpy.c
+new file mode 100644
+index 0000000..746bc25
+--- /dev/null
++++ b/sysdeps/s390/multiarch/memccpy.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of memccpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__memccpy)
++weak_alias (__memccpy, memccpy)
++
++#else
++# include <string/memccpy.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-28.patch b/SOURCES/glibc-rh1268008-28.patch
new file mode 100644
index 0000000..adc3e26
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-28.patch
@@ -0,0 +1,738 @@
+From f0954299ecdccf6a70cf904b8f499d15a5af3928 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 13:22:47 +0200
+Subject: [PATCH 28/30] S390: Optimize wmemset.
+
+upstream-commit-id: 2e9e166761fed5dfaa53480412bef0656f1b5306
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00078.html
+
+This patch provides optimized version of wmemset with the z13 vector
+instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/wmemset-c.c: New File.
+	* sysdeps/s390/multiarch/wmemset-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wmemset.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile
+	(sysdep_routines): Add wmemset functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list-common.c
+	(__libc_ifunc_impl_list_common): Add ifunc test for wmemset.
+	* wcsmbs/wmemset.c: Use WMEMSET if defined.
+	* string/test-memset.c: Add wmemset support.
+	* wcsmbs/test-wmemset.c: New File.
+	* wcsmbs/Makefile (strop-tests): Add wmemset.
+	* benchtests/bench-memset.c: Add wmemset support.
+	* benchtests/bench-wmemset.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wmemset.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-memset.c                |  63 +++++++++-----
+ benchtests/bench-wmemset.c               |  20 +++++
+ string/test-memset.c                     |  88 ++++++++++++-------
+ sysdeps/s390/multiarch/Makefile          |   3 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   2 +
+ sysdeps/s390/multiarch/wmemset-c.c       |  31 +++++++
+ sysdeps/s390/multiarch/wmemset-vx.S      | 142 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wmemset.c         |  27 ++++++
+ wcsmbs/Makefile                          |   2 +-
+ wcsmbs/test-wmemset-ifunc.c              |  20 +++++
+ wcsmbs/test-wmemset.c                    |  20 +++++
+ wcsmbs/wmemset.c                         |   3 +
+ 13 files changed, 368 insertions(+), 55 deletions(-)
+ create mode 100644 benchtests/bench-wmemset.c
+ create mode 100644 sysdeps/s390/multiarch/wmemset-c.c
+ create mode 100644 sysdeps/s390/multiarch/wmemset-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wmemset.c
+ create mode 100644 wcsmbs/test-wmemset-ifunc.c
+ create mode 100644 wcsmbs/test-wmemset.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index b4b3127..b5edfdd 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -40,7 +40,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+ 		wcsncmp wcsncmp wcschr wcschrnul wcsrchr wcsspn wcspbrk wcscspn \
+-		wmemchr
++		wmemchr wmemset
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-memset.c b/benchtests/bench-memset.c
+index 9786ce7..66c3c45 100644
+--- a/benchtests/bench-memset.c
++++ b/benchtests/bench-memset.c
+@@ -20,12 +20,29 @@
+ #ifdef TEST_BZERO
+ # define TEST_NAME "bzero"
+ #else
+-# define TEST_NAME "memset"
+-#endif
++# ifndef WIDE
++#  define TEST_NAME "memset"
++# else
++#  define TEST_NAME "wmemset"
++# endif /* WIDE */
++#endif /* !TEST_BZERO */
+ #define MIN_PAGE_SIZE 131072
+ #include "bench-string.h"
+ 
+-char *simple_memset (char *, int, size_t);
++#ifndef WIDE
++# define MEMSET memset
++# define CHAR char
++# define SIMPLE_MEMSET simple_memset
++# define MEMCMP memcmp
++#else
++# include <wchar.h>
++# define MEMSET wmemset
++# define CHAR wchar_t
++# define SIMPLE_MEMSET simple_wmemset
++# define MEMCMP wmemcmp
++#endif /* WIDE */
++
++CHAR *SIMPLE_MEMSET (CHAR *, int, size_t);
+ 
+ #ifdef TEST_BZERO
+ typedef void (*proto_t) (char *, size_t);
+@@ -39,7 +56,7 @@ IMPL (bzero, 1)
+ void
+ simple_bzero (char *s, size_t n)
+ {
+-  simple_memset (s, 0, n);
++  SIMPLE_MEMSET (s, 0, n);
+ }
+ 
+ void
+@@ -48,46 +65,50 @@ builtin_bzero (char *s, size_t n)
+   __builtin_bzero (s, n);
+ }
+ #else
+-typedef char *(*proto_t) (char *, int, size_t);
+-char *builtin_memset (char *, int, size_t);
++typedef CHAR *(*proto_t) (CHAR *, int, size_t);
+ 
+-IMPL (simple_memset, 0)
++IMPL (SIMPLE_MEMSET, 0)
++# ifndef WIDE
++char *builtin_memset (char *, int, size_t);
+ IMPL (builtin_memset, 0)
+-IMPL (memset, 1)
++# endif /* !WIDE */
++IMPL (MEMSET, 1)
+ 
++# ifndef WIDE
+ char *
+ builtin_memset (char *s, int c, size_t n)
+ {
+   return __builtin_memset (s, c, n);
+ }
+-#endif
++# endif /* !WIDE */
++#endif /* !TEST_BZERO */
+ 
+-char *
++CHAR *
+ inhibit_loop_to_libcall
+-simple_memset (char *s, int c, size_t n)
++SIMPLE_MEMSET (CHAR *s, int c, size_t n)
+ {
+-  char *r = s, *end = s + n;
++  CHAR *r = s, *end = s + n;
+   while (r < end)
+     *r++ = c;
+   return s;
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, char *s, int c __attribute ((unused)), size_t n)
++do_one_test (impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n)
+ {
+   size_t i, iters = INNER_LOOP_ITERS;
+   timing_t start, stop, cur;
+-  char tstbuf[n];
++  CHAR tstbuf[n];
+ #ifdef TEST_BZERO
+   simple_bzero (tstbuf, n);
+   CALL (impl, s, n);
+   if (memcmp (s, tstbuf, n) != 0)
+ #else
+-  char *res = CALL (impl, s, c, n);
++  CHAR *res = CALL (impl, s, c, n);
+   if (res != s
+-      || simple_memset (tstbuf, c, n) != tstbuf
+-      || memcmp (s, tstbuf, n) != 0)
+-#endif
++      || SIMPLE_MEMSET (tstbuf, c, n) != tstbuf
++      || MEMCMP (s, tstbuf, n) != 0)
++#endif /* !TEST_BZERO */
+     {
+       error (0, 0, "Wrong result in function %s", impl->name);
+       ret = 1;
+@@ -101,7 +122,7 @@ do_one_test (impl_t *impl, char *s, int c __attribute ((unused)), size_t n)
+       CALL (impl, s, n);
+ #else
+       CALL (impl, s, c, n);
+-#endif
++#endif /* !TEST_BZERO */
+     }
+   TIMING_NOW (stop);
+ 
+@@ -114,13 +135,13 @@ static void
+ do_test (size_t align, int c, size_t len)
+ {
+   align &= 7;
+-  if (align + len > page_size)
++  if ((align + len) * sizeof (CHAR) > page_size)
+     return;
+ 
+   printf ("Length %4zd, alignment %2zd, c %2d:", len, align, c);
+ 
+   FOR_EACH_IMPL (impl, 0)
+-    do_one_test (impl, (char *) buf1 + align, c, len);
++    do_one_test (impl, (CHAR *) (buf1) + align, c, len);
+ 
+   putchar ('\n');
+ }
+diff --git a/benchtests/bench-wmemset.c b/benchtests/bench-wmemset.c
+new file mode 100644
+index 0000000..540829c
+--- /dev/null
++++ b/benchtests/bench-wmemset.c
+@@ -0,0 +1,20 @@
++/* Measure wmemset functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-memset.c"
+diff --git a/string/test-memset.c b/string/test-memset.c
+index e556a88..99fc282 100644
+--- a/string/test-memset.c
++++ b/string/test-memset.c
+@@ -21,12 +21,33 @@
+ #ifdef TEST_BZERO
+ # define TEST_NAME "bzero"
+ #else
+-# define TEST_NAME "memset"
+-#endif
++# ifndef WIDE
++#  define TEST_NAME "memset"
++# else
++#  define TEST_NAME "wmemset"
++# endif /* WIDE */
++#endif /* !TEST_BZERO */
+ #define MIN_PAGE_SIZE 131072
+ #include "test-string.h"
+ 
+-char *simple_memset (char *, int, size_t);
++#ifndef WIDE
++# define MEMSET memset
++# define CHAR char
++# define UCHAR unsigned char
++# define SIMPLE_MEMSET simple_memset
++# define MEMCMP memcmp
++# define BIG_CHAR CHAR_MAX
++#else
++# include <wchar.h>
++# define MEMSET wmemset
++# define CHAR wchar_t
++# define UCHAR wchar_t
++# define SIMPLE_MEMSET simple_wmemset
++# define MEMCMP wmemcmp
++# define BIG_CHAR WCHAR_MAX
++#endif /* WIDE */
++
++CHAR *SIMPLE_MEMSET (CHAR *, int, size_t);
+ 
+ #ifdef TEST_BZERO
+ typedef void (*proto_t) (char *, size_t);
+@@ -40,7 +61,7 @@ IMPL (bzero, 1)
+ void
+ simple_bzero (char *s, size_t n)
+ {
+-  simple_memset (s, 0, n);
++  SIMPLE_MEMSET (s, 0, n);
+ }
+ 
+ void
+@@ -49,44 +70,48 @@ builtin_bzero (char *s, size_t n)
+   __builtin_bzero (s, n);
+ }
+ #else
+-typedef char *(*proto_t) (char *, int, size_t);
+-char *builtin_memset (char *, int, size_t);
++typedef CHAR *(*proto_t) (CHAR *, int, size_t);
+ 
+-IMPL (simple_memset, 0)
++IMPL (SIMPLE_MEMSET, 0)
++# ifndef WIDE
++char *builtin_memset (char *, int, size_t);
+ IMPL (builtin_memset, 0)
+-IMPL (memset, 1)
++# endif /* !WIDE */
++IMPL (MEMSET, 1)
+ 
++# ifndef WIDE
+ char *
+ builtin_memset (char *s, int c, size_t n)
+ {
+   return __builtin_memset (s, c, n);
+ }
+-#endif
++# endif /* !WIDE */
++#endif /* !TEST_BZERO */
+ 
+-char *
++CHAR *
+ inhibit_loop_to_libcall
+-simple_memset (char *s, int c, size_t n)
++SIMPLE_MEMSET (CHAR *s, int c, size_t n)
+ {
+-  char *r = s, *end = s + n;
++  CHAR *r = s, *end = s + n;
+   while (r < end)
+     *r++ = c;
+   return s;
+ }
+ 
+ static void
+-do_one_test (impl_t *impl, char *s, int c __attribute ((unused)), size_t n)
++do_one_test (impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n)
+ {
+-  char tstbuf[n];
++  CHAR tstbuf[n];
+ #ifdef TEST_BZERO
+   simple_bzero (tstbuf, n);
+   CALL (impl, s, n);
+   if (memcmp (s, tstbuf, n) != 0)
+ #else
+-  char *res = CALL (impl, s, c, n);
++  CHAR *res = CALL (impl, s, c, n);
+   if (res != s
+-      || simple_memset (tstbuf, c, n) != tstbuf
+-      || memcmp (s, tstbuf, n) != 0)
+-#endif
++      || SIMPLE_MEMSET (tstbuf, c, n) != tstbuf
++      || MEMCMP (s, tstbuf, n) != 0)
++#endif /* !TEST_BZERO */
+     {
+       error (0, 0, "Wrong result in function %s", impl->name);
+       ret = 1;
+@@ -98,11 +123,11 @@ static void
+ do_test (size_t align, int c, size_t len)
+ {
+   align &= 7;
+-  if (align + len > page_size)
++  if ((align + len) * sizeof (CHAR) > page_size)
+     return;
+ 
+   FOR_EACH_IMPL (impl, 0)
+-    do_one_test (impl, (char *) buf1 + align, c, len);
++    do_one_test (impl, (CHAR *) (buf1) + align, c, len);
+ }
+ 
+ #ifndef TEST_BZERO
+@@ -111,18 +136,19 @@ do_random_tests (void)
+ {
+   size_t i, j, k, n, align, len, size;
+   int c, o;
+-  unsigned char *p, *res;
++  UCHAR *p, *res;
++  UCHAR *p2 = (UCHAR *) buf2;
+ 
+-  for (i = 0; i < 65536; ++i)
+-    buf2[i] = random () & 255;
++  for (i = 0; i < 65536 / sizeof (CHAR); ++i)
++    p2[i] = random () & BIG_CHAR;
+ 
+   for (n = 0; n < ITERATIONS; n++)
+     {
+       if ((random () & 31) == 0)
+-	size = 65536;
++	size = 65536 / sizeof (CHAR);
+       else
+ 	size = 512;
+-      p = buf1 + page_size - size;
++      p = (UCHAR *) (buf1 + page_size) - size;
+       len = random () & (size - 1);
+       align = size - len - (random () & 31);
+       if (align > size)
+@@ -132,10 +158,10 @@ do_random_tests (void)
+       if ((random () & 7) == 0)
+ 	c = 0;
+       else
+-	c = random () & 255;
+-      o = random () & 255;
++	c = random () & BIG_CHAR;
++      o = random () & BIG_CHAR;
+       if (o == c)
+-        o = (c + 1) & 255;
++	o = (c + 1) & BIG_CHAR;
+       j = len + align + 128;
+       if (j > size)
+ 	j = size;
+@@ -152,11 +178,11 @@ do_random_tests (void)
+ 	{
+ 	  for (i = 0; i < len; ++i)
+ 	    {
+-	      p[i + align] = buf2[i];
++	      p[i + align] = p2[i];
+ 	      if (p[i + align] == c)
+ 		p[i + align] = o;
+ 	    }
+-	  res = (unsigned char *) CALL (impl, (char *) p + align, c, len);
++	  res = (UCHAR *) CALL (impl, (CHAR *) p + align, c, len);
+ 	  if (res != p + align)
+ 	    {
+ 	      error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %d, %zd) %p != %p",
+@@ -190,7 +216,7 @@ do_random_tests (void)
+ 	}
+     }
+ }
+-#endif
++#endif /* !TEST_BZERO */
+ 
+ int
+ test_main (void)
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 87dff0f..eac88e0 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -37,5 +37,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcsspn wcsspn-vx wcsspn-c \
+ 		   wcspbrk wcspbrk-vx wcspbrk-c \
+ 		   wcscspn wcscspn-vx wcscspn-c \
+-		   wmemchr wmemchr-vx wmemchr-c
++		   wmemchr wmemchr-vx wmemchr-c \
++		   wmemset wmemset-vx wmemset-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index c90fb6b..44d534b 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -133,6 +133,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+ 
+   IFUNC_VX_IMPL (memccpy);
+ 
++  IFUNC_VX_IMPL (wmemset);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/wmemset-c.c b/sysdeps/s390/multiarch/wmemset-c.c
+new file mode 100644
+index 0000000..59c9a7e
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wmemset-c.c
+@@ -0,0 +1,31 @@
++/* Default wmemset implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WMEMSET  __wmemset_c
++
++# include <wchar.h>
++extern __typeof (wmemset) __wmemset_c;
++# ifdef SHARED
++#  undef libc_hidden_def
++#  define libc_hidden_def(name)					\
++  __hidden_ver1 (__wmemset_c, __GI_wmemset, __wmemset_c);
++# endif /* SHARED */
++
++# include <wcsmbs/wmemset.c>
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wmemset-vx.S b/sysdeps/s390/multiarch/wmemset-vx.S
+new file mode 100644
+index 0000000..dae2c29
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wmemset-vx.S
+@@ -0,0 +1,142 @@
++/* Vector Optimized 32/64 bit S/390 version of wmemset.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* wchar_t *wmemset(wchar_t *dest, wchar_t wc, size_t n)
++   Fill an array of wide-characters with a constant wide character
++   and returns dest.
++
++   Register usage:
++   -r0=tmp
++   -r1=tmp
++   -r2=dest or current-pointer
++   -r3=wc
++   -r4=n
++   -r5=tmp
++   -v16=replicated wc
++   -v17,v18,v19=copy of v16 for vstm
++   -v31=saved dest for return
++*/
++ENTRY(__wmemset_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++
++	vlvgg	%v31,%r2,0	/* Save destination pointer for return.  */
++	clgije	%r4,0,.Lend
++
++	vlvgf	%v16,%r3,0	/* Generate vector with wchar_t wc.  */
++	vrepf	%v16,%v16,0
++
++	/* Check range of maxlen and convert to byte-count.  */
++# ifdef __s390x__
++	tmhh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	lghi	%r5,-4		/* Max byte-count is 18446744073709551612.  */
++# else
++	tmlh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	llilf	%r5,4294967292	/* Max byte-count is 4294967292.  */
++# endif /* !__s390x__ */
++	sllg	%r4,%r4,2	/* Convert character-count to byte-count.  */
++	locgrne	%r4,%r5		/* Use max byte-count, if bit 0/1 was one.  */
++
++	/* Align dest to 16 byte.  */
++	risbg	%r0,%r2,60,128+63,0 /* Test if s is aligned and
++				       %r3 = bits 60-63 'and' 15.  */
++	je	.Lpreloop	/* If s is aligned, loop aligned.  */
++	tmll	%r2,3		/* Test if s is 4-byte aligned?  */
++	jne	.Lfallback	/* And use common-code variant if not.  */
++	lghi	%r1,16
++	slr	%r1,%r0		/* Compute byte count to load (16-x).  */
++	clgr	%r1,%r4
++	locgrh	%r1,%r4		/* min (byte count, n)  */
++	aghik	%r5,%r1,-1	/* vstl needs highest index.  */
++	vstl	%v16,%r5,0(%r2)	/* Store remaining bytes.  */
++	clgrje	%r1,%r4,.Lend	/* Return if n bytes where set.  */
++	slgr	%r4,%r1		/* Compute remaining byte count.  */
++	la	%r2,0(%r1,%r2)
++
++.Lpreloop:
++	/* Now we are 16-byte aligned.  */
++	clgijl	%r4,17,.Lremaining
++	srlg	%r1,%r4,8	/* Split into 256byte blocks */
++	clgije	%r1,0,.Lpreloop64
++	vlr	%v17,%v16
++	vlr	%v18,%v16
++	vlr	%v19,%v16
++
++.Lloop256:
++	vstm	%v16,%v19,0(%r2)
++	vstm	%v16,%v19,64(%r2)
++	vstm	%v16,%v19,128(%r2)
++	vstm	%v16,%v19,192(%r2)
++	la	%r2,256(%r2)
++	brctg	%r1,.Lloop256	/* Loop until all blocks are processed.  */
++
++	llgfr	%r4,%r4
++	nilf	%r4,255		/* Get remaining bytes */
++	je	.Lend		/* Skip store remaining bytes if zero.  */
++
++.Lpreloop64:
++	clgijl	%r4,17,.Lremaining
++	clgijl	%r4,33,.Lpreloop16
++	srlg	%r1,%r4,5	/* Split into 32byte blocks */
++
++.Lloop32:
++	vst	%v16,0(%r2)
++	vst	%v16,16(%r2)
++	la	%r2,32(%r2)
++	brctg	%r1,.Lloop32	/* Loop until all blocks are processed.  */
++
++	llgfr	%r4,%r4
++	nilf	%r4,31		/* Get remaining bytes */
++	je	.Lend		/* Skip store remaining bytes if zero.  */
++
++.Lpreloop16:
++	clgijl	%r4,17,.Lremaining
++	srlg	%r1,%r4,4	/* Split into 16byte blocks */
++
++.Lloop16:
++	vst	%v16,0(%r2)
++	la	%r2,16(%r2)
++	brctg	%r1,.Lloop16	/* Loop until all blocks are processed.  */
++
++	llgfr	%r4,%r4
++	nilf	%r4,15		/* Get remaining bytes */
++	je	.Lend		/* Skip store remaining bytes if zero.  */
++
++.Lremaining:
++	aghi	%r4,-1		/* vstl needs highest index.  */
++	vstl	%v16,%r4,0(%r2)
++
++.Lend:
++	vlgvg	%r2,%v31,0	/* Load saved dest for return value.  */
++	br	%r14
++.Lfallback:
++	srlg	%r4,%r4,2	/* Convert byte-count to character-count.  */
++	jg	__wmemset_c
++END(__wmemset_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wmemset.c b/sysdeps/s390/multiarch/wmemset.c
+new file mode 100644
+index 0000000..1225fc1
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wmemset.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wmemset.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wmemset, wmemset)
++
++#else
++# include <wcsmbs/wmemset.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
+index f8bc401..1ca3ace 100644
+--- a/wcsmbs/Makefile
++++ b/wcsmbs/Makefile
+@@ -43,7 +43,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
+ 
+ strop-tests :=  wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
+ 		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn wcspbrk \
+-		wcscspn wmemchr
++		wcscspn wmemchr wmemset
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+ 	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
+ 	 tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
+diff --git a/wcsmbs/test-wmemset-ifunc.c b/wcsmbs/test-wmemset-ifunc.c
+new file mode 100644
+index 0000000..b58b6bd
+--- /dev/null
++++ b/wcsmbs/test-wmemset-ifunc.c
+@@ -0,0 +1,20 @@
++/* Test and measure IFUNC implementations of wmemset function.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define TEST_IFUNC 1
++#include "test-wmemset.c"
+diff --git a/wcsmbs/test-wmemset.c b/wcsmbs/test-wmemset.c
+new file mode 100644
+index 0000000..c03c759
+--- /dev/null
++++ b/wcsmbs/test-wmemset.c
+@@ -0,0 +1,20 @@
++/* Test wmemset functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "../string/test-memset.c"
+diff --git a/wcsmbs/wmemset.c b/wcsmbs/wmemset.c
+index cc9a725..8049bb8 100644
+--- a/wcsmbs/wmemset.c
++++ b/wcsmbs/wmemset.c
+@@ -18,6 +18,9 @@
+ 
+ #include <wchar.h>
+ 
++#ifdef WMEMSET
++# define wmemset WMEMSET
++#endif
+ 
+ wchar_t *
+ wmemset (s, c, n)
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-29.patch b/SOURCES/glibc-rh1268008-29.patch
new file mode 100644
index 0000000..972c8a6
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-29.patch
@@ -0,0 +1,323 @@
+From f34499b3a506359f84fcb63a125e44d4a8e4ee68 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 13:23:50 +0200
+Subject: [PATCH 29/30] S390: Optimize wmemcmp.
+
+upstream-commit-id: f21216015b7395c535abc01b9585a1ae3ceaa132
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00086.html
+
+This patch provides optimized version of wmemcmp with the z13 vector
+instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/wmemcmp-c.c: New File.
+	* sysdeps/s390/multiarch/wmemcmp-vx.S: Likewise.
+	* sysdeps/s390/multiarch/wmemcmp.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile
+	(sysdep_routines): Add wmemcmp functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list-common.c
+	(__libc_ifunc_impl_list_common): Add ifunc test for wmemcmp.
+	* benchtests/bench-wmemcmp.c: New File.
+	* benchtests/Makefile (wcsmbs-bench): Add wmemcmp.
+---
+ benchtests/Makefile                      |   2 +-
+ benchtests/bench-wmemcmp.c               |  20 +++++
+ sysdeps/s390/multiarch/Makefile          |   3 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   2 +
+ sysdeps/s390/multiarch/wmemcmp-c.c       |  26 ++++++
+ sysdeps/s390/multiarch/wmemcmp-vx.S      | 149 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/wmemcmp.c         |  27 ++++++
+ 7 files changed, 227 insertions(+), 2 deletions(-)
+ create mode 100644 benchtests/bench-wmemcmp.c
+ create mode 100644 sysdeps/s390/multiarch/wmemcmp-c.c
+ create mode 100644 sysdeps/s390/multiarch/wmemcmp-vx.S
+ create mode 100644 sysdeps/s390/multiarch/wmemcmp.c
+
+diff --git a/benchtests/Makefile b/benchtests/Makefile
+index b5edfdd..911b6df 100644
+--- a/benchtests/Makefile
++++ b/benchtests/Makefile
+@@ -40,7 +40,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
+ 		strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok
+ wcsmbs-bench := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
+ 		wcsncmp wcsncmp wcschr wcschrnul wcsrchr wcsspn wcspbrk wcscspn \
+-		wmemchr wmemset
++		wmemchr wmemset wmemcmp
+ string-bench-all := $(string-bench) ${wcsmbs-bench}
+ 
+ stdlib-bench := strtod
+diff --git a/benchtests/bench-wmemcmp.c b/benchtests/bench-wmemcmp.c
+new file mode 100644
+index 0000000..8b33f89
+--- /dev/null
++++ b/benchtests/bench-wmemcmp.c
+@@ -0,0 +1,20 @@
++/* Measure wmemcmp functions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define WIDE 1
++#include "bench-memcmp.c"
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index eac88e0..929a545 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -38,5 +38,6 @@ sysdep_routines += wcslen wcslen-vx wcslen-c \
+ 		   wcspbrk wcspbrk-vx wcspbrk-c \
+ 		   wcscspn wcscspn-vx wcscspn-c \
+ 		   wmemchr wmemchr-vx wmemchr-c \
+-		   wmemset wmemset-vx wmemset-c
++		   wmemset wmemset-vx wmemset-c \
++		   wmemcmp wmemcmp-vx wmemcmp-c
+ endif
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index 44d534b..5ea258b 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -135,6 +135,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+ 
+   IFUNC_VX_IMPL (wmemset);
+ 
++  IFUNC_VX_IMPL (wmemcmp);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/wmemcmp-c.c b/sysdeps/s390/multiarch/wmemcmp-c.c
+new file mode 100644
+index 0000000..b43e5d4
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wmemcmp-c.c
+@@ -0,0 +1,26 @@
++/* Default wmemcmp implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define WMEMCMP  __wmemcmp_c
++
++# include <wchar.h>
++extern __typeof (wmemcmp) __wmemcmp_c;
++
++# include <wcsmbs/wmemcmp.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/wmemcmp-vx.S b/sysdeps/s390/multiarch/wmemcmp-vx.S
+new file mode 100644
+index 0000000..b509bef
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wmemcmp-vx.S
+@@ -0,0 +1,149 @@
++/* Vector Optimized 32/64 bit S/390 version of wmemcmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* int wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n)
++   Compare at most n characters of two wchar_t-arrays.
++
++   Register usage:
++   -r0=tmp
++   -r1=number of blocks
++   -r2=s1
++   -r3=s2
++   -r4=n
++   -r5=current_len
++   -v16=part of s1
++   -v17=part of s2
++   -v18=index of unequal
++*/
++ENTRY(__wmemcmp_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++	clgije	%r4,0,.Lend_equal /* Nothing to do if n == 0.  */
++
++	/* Check range of maxlen and convert to byte-count.  */
++# ifdef __s390x__
++	tmhh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	lghi	%r1,-4		/* Max byte-count is 18446744073709551612.  */
++# else
++	tmlh	%r4,49152	/* Test bit 0 or 1 of maxlen.  */
++	llilf	%r1,4294967292	/* Max byte-count is 4294967292.  */
++# endif /* !__s390x__ */
++	sllg	%r4,%r4,2	/* Convert character-count to byte-count.  */
++	locgrne	%r4,%r1		/* Use max byte-count, if bit 0/1 was one.  */
++
++	lghi	%r5,0		/* current_len = 0.  */
++
++	clgijh	%r4,16,.Lgt16
++
++.Lremaining:
++	aghi	%r4,-1		/* vstl needs highest index.  */
++	vll	%v16,%r4,0(%r2)
++	vll	%v17,%r4,0(%r3)
++	vfenef	%v18,%v16,%v17	/* Compare not equal.  */
++	vlgvb	%r1,%v18,7	/* Load unequal index or 16 if not found.  */
++	clrj	%r1,%r4,12,.Lfound2 /* r1 <= r4 -> unequal within loaded
++					bytes.  */
++
++.Lend_equal:
++	lghi	%r2,0
++	br	%r14
++
++.Lfound:
++	/* vfenezf found an unequal element or zero.
++	   This instruction compares unsigned words, but wchar_t is signed.
++	   Thus we have to compare the found element again.  */
++	vlgvb	%r1,%v18,7	/* Extract not equal byte-index.  */
++.Lfound2:
++	srl	%r1,2		/* And convert it to character-index.  */
++	vlgvf	%r0,%v16,0(%r1)	/* Load character-values.  */
++	vlgvf	%r1,%v17,0(%r1)
++	cr	%r0,%r1
++	je	.Lend_equal
++	lghi	%r2,1
++	lghi	%r1,-1
++	locgrl	%r2,%r1
++	br	%r14
++
++.Lgt16:
++	clgijh	%r4,64,.Lpreloop64
++
++.Lpreloop16:
++	srlg	%r1,%r4,4	/* Split into 16byte blocks */
++.Lloop16:
++	vl	%v16,0(%r5,%r2)
++	vl	%v17,0(%r5,%r3)
++	aghi	%r5,16
++	vfenefs	%v18,%v16,%v17	/* Compare not equal.  */
++	jno	.Lfound
++	brctg	%r1,.Lloop16	/* Loop until all blocks are processed.  */
++
++	llgfr	%r4,%r4
++	nilf	%r4,15		/* Get remaining bytes */
++	locgre	%r2,%r4
++	ber	%r14
++	la	%r2,0(%r5,%r2)
++	la	%r3,0(%r5,%r3)
++	j	.Lremaining
++
++.Lpreloop64:
++	srlg	%r1,%r4,6	/* Split into 64byte blocks */
++.Lloop64:
++	vl	%v16,0(%r5,%r2)
++	vl	%v17,0(%r5,%r3)
++	vfenefs	%v18,%v16,%v17	/* Compare not equal.  */
++	jno	.Lfound
++
++	vl	%v16,16(%r5,%r2)
++	vl	%v17,16(%r5,%r3)
++	vfenefs	%v18,%v16,%v17
++	jno	.Lfound
++
++	vl	%v16,32(%r5,%r2)
++	vl	%v17,32(%r5,%r3)
++	vfenefs	%v18,%v16,%v17
++	jno	.Lfound
++
++	vl	%v16,48(%r5,%r2)
++	vl	%v17,48(%r5,%r3)
++	aghi	%r5,64
++	vfenefs	%v18,%v16,%v17
++	jno	.Lfound
++
++	brctg	%r1,.Lloop64	/* Loop until all blocks are processed.  */
++
++	llgfr	%r4,%r4
++	nilf	%r4,63		/* Get remaining bytes */
++	locgre	%r2,%r4
++	ber	%r14
++	clgijh	%r4,16,.Lpreloop16
++	la	%r2,0(%r5,%r2)
++	la	%r3,0(%r5,%r3)
++	j	.Lremaining
++END(__wmemcmp_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/wmemcmp.c b/sysdeps/s390/multiarch/wmemcmp.c
+new file mode 100644
+index 0000000..24a57e9
+--- /dev/null
++++ b/sysdeps/s390/multiarch/wmemcmp.c
+@@ -0,0 +1,27 @@
++/* Multiple versions of wmemcmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <wchar.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc2 (__wmemcmp, wmemcmp)
++
++#else
++# include <wcsmbs/wmemcmp.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-3.patch b/SOURCES/glibc-rh1268008-3.patch
new file mode 100644
index 0000000..8ce96ac
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-3.patch
@@ -0,0 +1,644 @@
+From 6b9ad27fafd9c09aee186f2630b1c54348335040 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:29:17 +0200
+Subject: [PATCH 03/30] S390: Get rid of linknamespace failures for string
+ functions.
+
+upstream-commit-id: 1d53248326dbd3c620a2bca16d35eff3019d900a
+https://www.sourceware.org/ml/libc-alpha/2015-01/msg00310.html
+
+This patch is needed to prepare for the optimized string function patchset.
+This patch prefixes the ifunc-resolvers, the specific functions
+and helper functions with '__' on s390-32/s390-64.
+---
+ sysdeps/s390/s390-32/memcmp.S                  |  4 ++--
+ sysdeps/s390/s390-32/memcpy.S                  | 10 +++++-----
+ sysdeps/s390/s390-32/memset.S                  |  4 ++--
+ sysdeps/s390/s390-32/multiarch/ifunc-resolve.c | 16 ++++++++--------
+ sysdeps/s390/s390-32/multiarch/memcmp.S        | 12 ++++++------
+ sysdeps/s390/s390-32/multiarch/memcpy.S        | 14 +++++++-------
+ sysdeps/s390/s390-32/multiarch/memset.S        | 18 +++++++++---------
+ sysdeps/s390/s390-64/memcmp.S                  |  4 ++--
+ sysdeps/s390/s390-64/memcpy.S                  | 10 +++++-----
+ sysdeps/s390/s390-64/memset.S                  |  4 ++--
+ sysdeps/s390/s390-64/multiarch/ifunc-resolve.c | 18 +++++++++---------
+ sysdeps/s390/s390-64/multiarch/memcmp.S        | 12 ++++++------
+ sysdeps/s390/s390-64/multiarch/memcpy.S        | 14 +++++++-------
+ sysdeps/s390/s390-64/multiarch/memset.S        | 18 +++++++++---------
+ 14 files changed, 79 insertions(+), 79 deletions(-)
+
+diff --git a/sysdeps/s390/s390-32/memcmp.S b/sysdeps/s390/s390-32/memcmp.S
+index 9ff84a3..b6eabe5 100644
+--- a/sysdeps/s390/s390-32/memcmp.S
++++ b/sysdeps/s390/s390-32/memcmp.S
+@@ -27,7 +27,7 @@
+ 
+        .text
+ #ifdef USE_MULTIARCH
+-ENTRY(memcmp_g5)
++ENTRY(__memcmp_g5)
+ #else
+ ENTRY(memcmp)
+ #endif
+@@ -58,7 +58,7 @@ ENTRY(memcmp)
+ .L_G5_17:
+         clc     0(1,%r3),0(%r2)
+ #ifdef USE_MULTIARCH
+-END(memcmp_g5)
++END(__memcmp_g5)
+ #else
+ END(memcmp)
+ libc_hidden_builtin_def (memcmp)
+diff --git a/sysdeps/s390/s390-32/memcpy.S b/sysdeps/s390/s390-32/memcpy.S
+index 90cc4cb..a3b1ace 100644
+--- a/sysdeps/s390/s390-32/memcpy.S
++++ b/sysdeps/s390/s390-32/memcpy.S
+@@ -26,7 +26,7 @@
+      %r4 = number of bytes to copy.  */
+ 
+ #ifdef USE_MULTIARCH
+-ENTRY(memcpy_g5)
++ENTRY(__memcpy_g5)
+ #else
+ ENTRY(memcpy)
+ #endif
+@@ -49,7 +49,7 @@ ENTRY(memcpy)
+         br      %r14
+ .L_G5_13:
+         chi	%r5,4096             # Switch to mvcle for copies >1MB
+-        jh	memcpy_mvcle
++        jh	__memcpy_mvcle
+ .L_G5_12:
+         mvc     0(256,%r1),0(%r3)
+         la      %r1,256(%r1)
+@@ -60,13 +60,13 @@ ENTRY(memcpy)
+ .L_G5_17:
+         mvc     0(1,%r1),0(%r3)
+ #ifdef USE_MULTIARCH
+-END(memcpy_g5)
++END(__memcpy_g5)
+ #else
+ END(memcpy)
+ libc_hidden_builtin_def (memcpy)
+ #endif
+ 
+-ENTRY(memcpy_mvcle)
++ENTRY(__memcpy_mvcle)
+        # Using as standalone function will result in unexpected
+        # results since the length field is incremented by 1 in order to
+        # compensate the changes already done in the functions above.
+@@ -79,4 +79,4 @@ ENTRY(memcpy_mvcle)
+        jo      .L_MVCLE_1
+        lr      %r2,%r1             # return destination address
+        br      %r14
+-END(memcpy_mvcle)
++END(__memcpy_mvcle)
+diff --git a/sysdeps/s390/s390-32/memset.S b/sysdeps/s390/s390-32/memset.S
+index 31a70f0..a73dc6c 100644
+--- a/sysdeps/s390/s390-32/memset.S
++++ b/sysdeps/s390/s390-32/memset.S
+@@ -28,7 +28,7 @@
+        .text
+ 
+ #ifdef USE_MULTIARCH
+-ENTRY(memset_g5)
++ENTRY(__memset_g5)
+ #else
+ ENTRY(memset)
+ #endif
+@@ -58,7 +58,7 @@ ENTRY(memset)
+ .L_G5_20:
+         mvc     1(1,%r1),0(%r1)
+ #ifdef USE_MULTIARCH
+-END(memset_g5)
++END(__memset_g5)
+ #else
+ END(memset)
+ libc_hidden_builtin_def (memset)
+diff --git a/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c b/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
+index 42ca8da..522c63c 100644
+--- a/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
++++ b/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
+@@ -28,17 +28,17 @@
+ #define IFUNC_RESOLVE(FUNC)						\
+   asm (".globl " #FUNC "\n\t"						\
+        ".type  " #FUNC ",@gnu_indirect_function\n\t"			\
+-       ".set   " #FUNC ",resolve_" #FUNC "\n\t"				\
++       ".set   " #FUNC ",__resolve_" #FUNC "\n\t"			\
+        ".globl __GI_" #FUNC "\n\t"					\
+        ".set   __GI_" #FUNC "," #FUNC "\n");				\
+ 									\
+   /* Make the declarations of the optimized functions hidden in order
+      to prevent GOT slots being generated for them. */			\
+-  extern void *FUNC##_z196 attribute_hidden;				\
+-  extern void *FUNC##_z10 attribute_hidden;				\
+-  extern void *FUNC##_g5 attribute_hidden;				\
++  extern void *__##FUNC##_z196 attribute_hidden;			\
++  extern void *__##FUNC##_z10 attribute_hidden;				\
++  extern void *__##FUNC##_g5 attribute_hidden;				\
+ 									\
+-  void *resolve_##FUNC (unsigned long int dl_hwcap)			\
++  void *__resolve_##FUNC (unsigned long int dl_hwcap)			\
+   {									\
+     if ((dl_hwcap & HWCAP_S390_STFLE)					\
+ 	&& (dl_hwcap & HWCAP_S390_ZARCH)				\
+@@ -53,11 +53,11 @@
+ 		     : : "cc");						\
+ 									\
+ 	if ((stfle_bits & (1ULL << (63 - STFLE_BITS_Z196))) != 0)	\
+-	  return &FUNC##_z196;						\
++	  return &__##FUNC##_z196;					\
+ 	else if ((stfle_bits & (1ULL << (63 - STFLE_BITS_Z10))) != 0)	\
+-	  return &FUNC##_z10;						\
++	  return &__##FUNC##_z10;					\
+       }									\
+-    return &FUNC##_g5;							\
++    return &__##FUNC##_g5;						\
+   }
+ 
+ IFUNC_RESOLVE(memset)
+diff --git a/sysdeps/s390/s390-32/multiarch/memcmp.S b/sysdeps/s390/s390-32/multiarch/memcmp.S
+index 9ca8891..c654d19 100644
+--- a/sysdeps/s390/s390-32/multiarch/memcmp.S
++++ b/sysdeps/s390/s390-32/multiarch/memcmp.S
+@@ -29,7 +29,7 @@
+ 
+ #ifndef NOT_IN_libc
+ 
+-ENTRY(memcmp_z196)
++ENTRY(__memcmp_z196)
+ 	.machine "z196"
+ 	.machinemode "zarch_nohighgprs"
+         ltr     %r4,%r4
+@@ -61,9 +61,9 @@ ENTRY(memcmp_z196)
+         br      %r14
+ .L_Z196_14:
+         clc     0(1,%r3),0(%r2)
+-END(memcmp_z196)
++END(__memcmp_z196)
+ 
+-ENTRY(memcmp_z10)
++ENTRY(__memcmp_z10)
+ 	.machine "z10"
+ 	.machinemode "zarch_nohighgprs"
+         ltr     %r4,%r4
+@@ -90,7 +90,7 @@ ENTRY(memcmp_z10)
+         j       .L_Z10_3
+ .L_Z10_15:
+         clc     0(1,%r3),0(%r2)
+-END(memcmp_z10)
++END(__memcmp_z10)
+ 
+ #endif
+ 
+@@ -98,7 +98,7 @@ END(memcmp_z10)
+ 
+ #ifdef NOT_IN_libc
+ .globl   memcmp
+-.set     memcmp,memcmp_g5
++.set     memcmp,__memcmp_g5
+ .weak    bcmp
+-.set	 bcmp,memcmp_g5
++.set	 bcmp,__memcmp_g5
+ #endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memcpy.S b/sysdeps/s390/s390-32/multiarch/memcpy.S
+index 7b85602..5c2113f 100644
+--- a/sysdeps/s390/s390-32/multiarch/memcpy.S
++++ b/sysdeps/s390/s390-32/multiarch/memcpy.S
+@@ -29,7 +29,7 @@
+ 
+ #if defined SHARED && !defined NOT_IN_libc
+ 
+-ENTRY(memcpy_z196)
++ENTRY(__memcpy_z196)
+ 	.machine "z196"
+ 	.machinemode "zarch_nohighgprs"
+         llgfr   %r4,%r4
+@@ -46,7 +46,7 @@ ENTRY(memcpy_z196)
+         br      %r14
+ .L_Z196_5:
+         cgfi    %r5,262144      # Switch to mvcle for copies >64MB
+-        jh      memcpy_mvcle
++        jh      __memcpy_mvcle
+ .L_Z196_2:
+         pfd     1,768(%r3)
+         pfd     2,768(%r1)
+@@ -58,9 +58,9 @@ ENTRY(memcpy_z196)
+         j       .L_Z196_3
+ .L_Z196_14:
+         mvc     0(1,%r1),0(%r3)
+-END(memcpy_z196)
++END(__memcpy_z196)
+ 
+-ENTRY(memcpy_z10)
++ENTRY(__memcpy_z10)
+ 	.machine "z10"
+ 	.machinemode "zarch_nohighgprs"
+         llgfr   %r4,%r4
+@@ -75,7 +75,7 @@ ENTRY(memcpy_z10)
+         br      %r14
+ .L_Z10_13:
+         cgfi    %r5,65535	# Switch to mvcle for copies >16MB
+-        jh      memcpy_mvcle
++        jh      __memcpy_mvcle
+ .L_Z10_12:
+         pfd     1,768(%r3)
+         pfd     2,768(%r1)
+@@ -86,7 +86,7 @@ ENTRY(memcpy_z10)
+         j       .L_Z10_3
+ .L_Z10_15:
+         mvc     0(1,%r1),0(%r3)
+-END(memcpy_z10)
++END(__memcpy_z10)
+ 
+ #endif
+ 
+@@ -94,5 +94,5 @@ END(memcpy_z10)
+ 
+ #if !defined SHARED || defined NOT_IN_libc
+ .globl   memcpy
+-.set     memcpy,memcpy_g5
++.set     memcpy,__memcpy_g5
+ #endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memset.S b/sysdeps/s390/s390-32/multiarch/memset.S
+index ba43d67..54aa028 100644
+--- a/sysdeps/s390/s390-32/multiarch/memset.S
++++ b/sysdeps/s390/s390-32/multiarch/memset.S
+@@ -29,7 +29,7 @@
+ 
+ #ifndef NOT_IN_libc
+ 
+-ENTRY(memset_z196)
++ENTRY(__memset_z196)
+ 	.machine "z196"
+ 	.machinemode "zarch_nohighgprs"
+         llgfr   %r4,%r4
+@@ -49,7 +49,7 @@ ENTRY(memset_z196)
+         br      %r14
+ .L_Z196_1:
+ 	cgfi	%r5,1048576
+-	jh	memset_mvcle	   # Switch to mvcle for >256MB
++	jh	__memset_mvcle	   # Switch to mvcle for >256MB
+ .L_Z196_2:
+         pfd     2,1024(%r1)
+         mvc     1(256,%r1),0(%r1)
+@@ -59,9 +59,9 @@ ENTRY(memset_z196)
+         j       .L_Z196_3
+ .L_Z196_17:
+         mvc     1(1,%r1),0(%r1)
+-END(memset_z196)
++END(__memset_z196)
+ 
+-ENTRY(memset_z10)
++ENTRY(__memset_z10)
+ 	.machine "z10"
+ 	.machinemode "zarch_nohighgprs"
+         llgfr   %r4,%r4
+@@ -78,7 +78,7 @@ ENTRY(memset_z10)
+         br      %r14
+ .L_Z10_15:
+ 	cgfi	%r5,163840          # Switch to mvcle for >40MB
+-	jh	memset_mvcle
++	jh	__memset_mvcle
+ .L_Z10_14:
+         pfd     2,1024(%r1)
+         mvc     1(256,%r1),0(%r1)
+@@ -87,9 +87,9 @@ ENTRY(memset_z10)
+         j       .L_Z10_3
+ .L_Z10_18:
+         mvc     1(1,%r1),0(%r1)
+-END(memset_z10)
++END(__memset_z10)
+ 
+-ENTRY(memset_mvcle)
++ENTRY(__memset_mvcle)
+ 	ahi	%r4,2               # take back the change done by the caller
+ 	lr      %r0,%r2             # save source address
+ 	lr      %r1,%r3             # move pad byte to R1
+@@ -101,7 +101,7 @@ ENTRY(memset_mvcle)
+ 	lr      %r2,%r0             # return value is source address
+ .L1:
+ 	br      %r14
+-END(memset_mvcle)
++END(__memset_mvcle)
+ 
+ #endif
+ 
+@@ -109,5 +109,5 @@ END(memset_mvcle)
+ 
+ #ifdef NOT_IN_libc
+ .globl   memset
+-.set     memset,memset_g5
++.set     memset,__memset_g5
+ #endif
+diff --git a/sysdeps/s390/s390-64/memcmp.S b/sysdeps/s390/s390-64/memcmp.S
+index 1b43440..eb5370f 100644
+--- a/sysdeps/s390/s390-64/memcmp.S
++++ b/sysdeps/s390/s390-64/memcmp.S
+@@ -27,7 +27,7 @@
+ 
+        .text
+ #ifdef USE_MULTIARCH
+-ENTRY(memcmp_z900)
++ENTRY(__memcmp_z900)
+ #else
+ ENTRY(memcmp)
+ #endif
+@@ -56,7 +56,7 @@ ENTRY(memcmp)
+ .L_Z900_15:
+         clc     0(1,%r3),0(%r2)
+ #ifdef USE_MULTIARCH
+-END(memcmp_z900)
++END(__memcmp_z900)
+ #else
+ END(memcmp)
+ libc_hidden_builtin_def (memcmp)
+diff --git a/sysdeps/s390/s390-64/memcpy.S b/sysdeps/s390/s390-64/memcpy.S
+index bae8836..61fca0b 100644
+--- a/sysdeps/s390/s390-64/memcpy.S
++++ b/sysdeps/s390/s390-64/memcpy.S
+@@ -29,7 +29,7 @@
+        .text
+ 
+ #ifdef USE_MULTIARCH
+-ENTRY(memcpy_z900)
++ENTRY(__memcpy_z900)
+ #else
+ ENTRY(memcpy)
+ #endif
+@@ -48,7 +48,7 @@ ENTRY(memcpy)
+         br      %r14
+ .L_Z900_13:
+         chi	%r5,4096             # Switch to mvcle for copies >1MB
+-        jh      memcpy_mvcle
++        jh      __memcpy_mvcle
+ .L_Z900_12:
+         mvc     0(256,%r1),0(%r3)
+         la      %r1,256(%r1)
+@@ -59,13 +59,13 @@ ENTRY(memcpy)
+         mvc     0(1,%r1),0(%r3)
+ 
+ #ifdef USE_MULTIARCH
+-END(memcpy_z900)
++END(__memcpy_z900)
+ #else
+ END(memcpy)
+ libc_hidden_builtin_def (memcpy)
+ #endif
+ 
+-ENTRY(memcpy_mvcle)
++ENTRY(__memcpy_mvcle)
+        # Using as standalone function will result in unexpected
+        # results since the length field is incremented by 1 in order to
+        # compensate the changes already done in the functions above.
+@@ -78,4 +78,4 @@ ENTRY(memcpy_mvcle)
+        jo      .L_MVCLE_1
+        lgr     %r2,%r1             # return destination address
+        br      %r14
+-END(memcpy_mvcle)
++END(__memcpy_mvcle)
+diff --git a/sysdeps/s390/s390-64/memset.S b/sysdeps/s390/s390-64/memset.S
+index 4edfb4e..8185e94 100644
+--- a/sysdeps/s390/s390-64/memset.S
++++ b/sysdeps/s390/s390-64/memset.S
+@@ -29,7 +29,7 @@
+        .text
+ 
+ #ifdef USE_MULTIARCH
+-ENTRY(memset_z900)
++ENTRY(__memset_z900)
+ #else
+ ENTRY(memset)
+ #endif
+@@ -57,7 +57,7 @@ ENTRY(memset)
+ .L_Z900_18:
+         mvc     1(1,%r1),0(%r1)
+ #ifdef USE_MULTIARCH
+-END(memset_z900)
++END(__memset_z900)
+ #else
+ END(memset)
+ libc_hidden_builtin_def (memset)
+diff --git a/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c b/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
+index 8db2c38..b6be970 100644
+--- a/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
++++ b/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
+@@ -28,17 +28,17 @@
+ #define IFUNC_RESOLVE(FUNC)						\
+   asm (".globl " #FUNC "\n\t"						\
+        ".type  " #FUNC ",@gnu_indirect_function\n\t"			\
+-       ".set   " #FUNC ",resolve_" #FUNC "\n\t"				\
++       ".set   " #FUNC ",__resolve_" #FUNC "\n\t"			\
+        ".globl __GI_" #FUNC "\n\t"					\
+        ".set   __GI_" #FUNC "," #FUNC "\n");				\
+ 									\
+   /* Make the declarations of the optimized functions hidden in order
+      to prevent GOT slots being generated for them. */			\
+-  extern void *FUNC##_z196 attribute_hidden;				\
+-  extern void *FUNC##_z10 attribute_hidden;				\
+-  extern void *FUNC##_z900 attribute_hidden;				\
++  extern void *__##FUNC##_z196 attribute_hidden;			\
++  extern void *__##FUNC##_z10 attribute_hidden;				\
++  extern void *__##FUNC##_z900 attribute_hidden;			\
+ 									\
+-  void *resolve_##FUNC (unsigned long int dl_hwcap)			\
++  void *__resolve_##FUNC (unsigned long int dl_hwcap)			\
+   {									\
+     if (dl_hwcap & HWCAP_S390_STFLE)					\
+       {									\
+@@ -54,14 +54,14 @@
+ 		     : : "cc");						\
+ 									\
+ 	if ((stfle_bits & (1UL << (63 - STFLE_BITS_Z196))) != 0)	\
+-	  return &FUNC##_z196;						\
++	  return &__##FUNC##_z196;					\
+ 	else if ((stfle_bits & (1UL << (63 - STFLE_BITS_Z10))) != 0)	\
+-	  return &FUNC##_z10;						\
++	  return &__##FUNC##_z10;					\
+ 	else								\
+-	  return &FUNC##_z900;						\
++	  return &__##FUNC##_z900;					\
+       }									\
+     else								\
+-      return &FUNC##_z900;						\
++      return &__##FUNC##_z900;						\
+   }
+ 
+ IFUNC_RESOLVE(memset)
+diff --git a/sysdeps/s390/s390-64/multiarch/memcmp.S b/sysdeps/s390/s390-64/multiarch/memcmp.S
+index f40a3c1..9a8cba8 100644
+--- a/sysdeps/s390/s390-64/multiarch/memcmp.S
++++ b/sysdeps/s390/s390-64/multiarch/memcmp.S
+@@ -29,7 +29,7 @@
+ 
+ #ifndef NOT_IN_libc
+ 
+-ENTRY(memcmp_z196)
++ENTRY(__memcmp_z196)
+ 	.machine "z196"
+         ltgr    %r4,%r4
+         je      .L_Z196_4
+@@ -60,9 +60,9 @@ ENTRY(memcmp_z196)
+         br      %r14
+ .L_Z196_14:
+         clc     0(1,%r3),0(%r2)
+-END(memcmp_z196)
++END(__memcmp_z196)
+ 
+-ENTRY(memcmp_z10)
++ENTRY(__memcmp_z10)
+ 	.machine "z10"
+         ltgr    %r4,%r4
+         je      .L_Z10_4
+@@ -87,7 +87,7 @@ ENTRY(memcmp_z10)
+         j       .L_Z10_3
+ .L_Z10_15:
+         clc     0(1,%r3),0(%r2)
+-END(memcmp_z10)
++END(__memcmp_z10)
+ 
+ #endif
+ 
+@@ -95,7 +95,7 @@ END(memcmp_z10)
+ 
+ #ifdef NOT_IN_libc
+ .globl   memcmp
+-.set     memcmp,memcmp_z900
++.set     memcmp,__memcmp_z900
+ .weak    bcmp
+-.set	 bcmp,memcmp_z900
++.set	 bcmp,__memcmp_z900
+ #endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memcpy.S b/sysdeps/s390/s390-64/multiarch/memcpy.S
+index b00ffc1..525588f 100644
+--- a/sysdeps/s390/s390-64/multiarch/memcpy.S
++++ b/sysdeps/s390/s390-64/multiarch/memcpy.S
+@@ -29,7 +29,7 @@
+ 
+ #if defined SHARED && !defined NOT_IN_libc
+ 
+-ENTRY(memcpy_z196)
++ENTRY(__memcpy_z196)
+         .machine "z196"
+         ltgr    %r4,%r4
+         je      .L_Z196_4
+@@ -44,7 +44,7 @@ ENTRY(memcpy_z196)
+         br      %r14
+ .L_Z196_5:
+         cgfi    %r5,262144      # Switch to mvcle for copies >64MB
+-        jh      memcpy_mvcle
++        jh      __memcpy_mvcle
+ .L_Z196_2:
+         pfd     1,768(%r3)
+         pfd     2,768(%r1)
+@@ -56,9 +56,9 @@ ENTRY(memcpy_z196)
+         j       .L_Z196_3
+ .L_Z196_14:
+         mvc     0(1,%r1),0(%r3)
+-END(memcpy_z196)
++END(__memcpy_z196)
+ 
+-ENTRY(memcpy_z10)
++ENTRY(__memcpy_z10)
+ 	.machine "z10"
+         cgije   %r4,0,.L_Z10_4
+         aghi    %r4,-1
+@@ -71,7 +71,7 @@ ENTRY(memcpy_z10)
+         br      %r14
+ .L_Z10_13:
+         cgfi    %r5,65535	# Switch to mvcle for copies >16MB
+-        jh      memcpy_mvcle
++        jh      __memcpy_mvcle
+ .L_Z10_12:
+         pfd     1,768(%r3)
+         pfd     2,768(%r1)
+@@ -82,7 +82,7 @@ ENTRY(memcpy_z10)
+         j       .L_Z10_3
+ .L_Z10_15:
+         mvc     0(1,%r1),0(%r3)
+-END(memcpy_z10)
++END(__memcpy_z10)
+ 
+ #endif
+ 
+@@ -90,5 +90,5 @@ END(memcpy_z10)
+ 
+ #if !defined SHARED || defined NOT_IN_libc
+ .globl   memcpy
+-.set     memcpy,memcpy_z900
++.set     memcpy,__memcpy_z900
+ #endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memset.S b/sysdeps/s390/s390-64/multiarch/memset.S
+index 1f9064d..8dbb3cb 100644
+--- a/sysdeps/s390/s390-64/multiarch/memset.S
++++ b/sysdeps/s390/s390-64/multiarch/memset.S
+@@ -29,7 +29,7 @@
+ 
+ #ifndef NOT_IN_libc
+ 
+-ENTRY(memset_z196)
++ENTRY(__memset_z196)
+ 	.machine "z196"
+         ltgr    %r4,%r4
+         je      .L_Z196_4
+@@ -47,7 +47,7 @@ ENTRY(memset_z196)
+         br      %r14
+ .L_Z196_1:
+ 	cgfi	%r5,1048576
+-	jh	memset_mvcle	   # Switch to mvcle for >256MB
++	jh	__memset_mvcle	   # Switch to mvcle for >256MB
+ .L_Z196_2:
+         pfd     2,1024(%r1)
+         mvc     1(256,%r1),0(%r1)
+@@ -57,9 +57,9 @@ ENTRY(memset_z196)
+         j       .L_Z196_3
+ .L_Z196_17:
+         mvc     1(1,%r1),0(%r1)
+-END(memset_z196)
++END(__memset_z196)
+ 
+-ENTRY(memset_z10)
++ENTRY(__memset_z10)
+ 	.machine "z10"
+         cgije   %r4,0,.L_Z10_4
+         stc     %r3,0(%r2)
+@@ -74,7 +74,7 @@ ENTRY(memset_z10)
+         br      %r14
+ .L_Z10_15:
+ 	cgfi	%r5,163840          # Switch to mvcle for >40MB
+-	jh	memset_mvcle
++	jh	__memset_mvcle
+ .L_Z10_14:
+         pfd     2,1024(%r1)
+         mvc     1(256,%r1),0(%r1)
+@@ -83,9 +83,9 @@ ENTRY(memset_z10)
+         j       .L_Z10_3
+ .L_Z10_18:
+         mvc     1(1,%r1),0(%r1)
+-END(memset_z10)
++END(__memset_z10)
+ 
+-ENTRY(memset_mvcle)
++ENTRY(__memset_mvcle)
+ 	aghi	%r4,2               # take back the change done by the caller
+ 	lgr	%r0,%r2		    # save source address
+ 	lgr	%r1,%r3		    # move pad byte to R1
+@@ -97,7 +97,7 @@ ENTRY(memset_mvcle)
+ 	lgr	%r2,%r0		    # return value is source address
+ .L1:
+ 	br	%r14
+-END(memset_mvcle)
++END(__memset_mvcle)
+ 
+ #endif
+ 
+@@ -105,5 +105,5 @@ END(memset_mvcle)
+ 
+ #ifdef NOT_IN_libc
+ .globl   memset
+-.set     memset,memset_z900
++.set     memset,__memset_z900
+ #endif
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-30.patch b/SOURCES/glibc-rh1268008-30.patch
new file mode 100644
index 0000000..b1af602
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-30.patch
@@ -0,0 +1,292 @@
+From 250962053fadd0911accad515802d9b957c9d019 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 13:24:58 +0200
+Subject: [PATCH 30/30] S390: Optimize memrchr.
+
+upstream-commit-id: 798f5b4b5d24e5687dd55acc535954ed1d59c10c
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00092.html
+
+This patch provides optimized version of memrchr with the z13 vector
+instructions.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/memrchr-c.c: New File.
+	* sysdeps/s390/multiarch/memrchr-vx.S: Likewise.
+	* sysdeps/s390/multiarch/memrchr.c: Likewise.
+	* sysdeps/s390/multiarch/Makefile
+	(sysdep_routines): Add memrchr functions.
+	* sysdeps/s390/multiarch/ifunc-impl-list-common.c
+	(__libc_ifunc_impl_list_common): Add ifunc test for memrchr.
+---
+ sysdeps/s390/multiarch/Makefile          |   3 +-
+ sysdeps/s390/multiarch/ifunc-impl-list.c |   2 +
+ sysdeps/s390/multiarch/memrchr-c.c       |  25 +++++
+ sysdeps/s390/multiarch/memrchr-vx.S      | 160 +++++++++++++++++++++++++++++++
+ sysdeps/s390/multiarch/memrchr.c         |  28 ++++++
+ 5 files changed, 217 insertions(+), 1 deletion(-)
+ create mode 100644 sysdeps/s390/multiarch/memrchr-c.c
+ create mode 100644 sysdeps/s390/multiarch/memrchr-vx.S
+ create mode 100644 sysdeps/s390/multiarch/memrchr.c
+
+diff --git a/sysdeps/s390/multiarch/Makefile b/sysdeps/s390/multiarch/Makefile
+index 929a545..0805b07 100644
+--- a/sysdeps/s390/multiarch/Makefile
++++ b/sysdeps/s390/multiarch/Makefile
+@@ -17,7 +17,8 @@ sysdep_routines += strlen strlen-vx strlen-c \
+ 		   strcspn strcspn-vx strcspn-c \
+ 		   memchr memchr-vx \
+ 		   rawmemchr rawmemchr-vx rawmemchr-c \
+-		   memccpy memccpy-vx memccpy-c
++		   memccpy memccpy-vx memccpy-c \
++		   memrchr memrchr-vx memrchr-c
+ endif
+ 
+ ifeq ($(subdir),wcsmbs)
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+index 5ea258b..c235bdc 100644
+--- a/sysdeps/s390/multiarch/ifunc-impl-list.c
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -137,6 +137,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
+ 
+   IFUNC_VX_IMPL (wmemcmp);
+ 
++  IFUNC_VX_IMPL (memrchr);
++
+ #endif /* HAVE_S390_VX_ASM_SUPPORT */
+ 
+   return i;
+diff --git a/sysdeps/s390/multiarch/memrchr-c.c b/sysdeps/s390/multiarch/memrchr-c.c
+new file mode 100644
+index 0000000..6a32861
+--- /dev/null
++++ b/sysdeps/s390/multiarch/memrchr-c.c
+@@ -0,0 +1,25 @@
++/* Default memrchr implementation for S/390.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# define MEMRCHR  __memrchr_c
++
++# include <string.h>
++extern __typeof (__memrchr) __memrchr_c;
++# include <string/memrchr.c>
++#endif
+diff --git a/sysdeps/s390/multiarch/memrchr-vx.S b/sysdeps/s390/multiarch/memrchr-vx.S
+new file mode 100644
+index 0000000..da6dbdf
+--- /dev/null
++++ b/sysdeps/s390/multiarch/memrchr-vx.S
+@@ -0,0 +1,160 @@
++/* Vector optimized 32/64 bit S/390 version of memrchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++
++# include "sysdep.h"
++# include "asm-syntax.h"
++
++	.text
++
++/* void *memrchr (const void *s, int c, size_t n)
++   Scans memory for character c backwards
++   and returns pointer to first c.
++
++   Register usage:
++   -r0=tmp
++   -r1=tmp
++   -r2=s
++   -r3=c
++   -r4=n
++   -r5=s in loop
++
++   -v16=part of s
++   -v17=index of found c
++   -v18=c replicated
++   -v20=permute pattern
++*/
++ENTRY(__memrchr_vx)
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++
++# if !defined __s390x__
++	llgfr	%r4,%r4
++# endif /* !defined __s390x__ */
++	clgije	%r4,0,.Lnot_found
++
++	vlvgb	%v18,%r3,0	/* Generate vector which elements are all c.
++				   If c > 255, c will be truncated.  */
++	vrepb	%v18,%v18,0
++
++	llcr	%r3,%r3		/* char c_char = (char) c.  */
++
++	/* check byte n - 1.  */
++	llc	%r0,-1(%r4,%r2)
++	slgfi	%r4,1
++	clrje	%r0,%r3,.Lfound_end
++	jh	.Lnot_found	/* Return NULL if n is now 0.  */
++
++	larl	%r1,.Lpermute_mask /* Load permute mask.  */
++	vl	%v20,0(%r1)
++
++	/* check byte n - 2.  */
++	llc	%r0,-1(%r4,%r2)
++	slgfi	%r4,1
++	clrje	%r0,%r3,.Lfound_end
++	jh	.Lnot_found	/* Return NULL if n is now 0.  */
++
++	clgijhe	%r4,64,.Lloop64	/* If n >= 64 -> loop64.  */
++
++.Llt64:
++	/* Process n < 64 bytes.  */
++	clgijl	%r4,16,.Llt16	/* Jump away if n < 16.  */
++	aghi	%r4,-16
++	vl	%v16,0(%r4,%r2)
++	vfeebs	%v17,%v16,%v18
++	jno	.Lfound0
++	clgijl	%r4,16,.Llt16
++	aghi	%r4,-16
++	vl	%v16,0(%r4,%r2)
++	vfeebs	%v17,%v16,%v18
++	jno	.Lfound0
++	clgijl	%r4,16,.Llt16
++	aghi	%r4,-16
++	vl	%v16,0(%r4,%r2)
++	vfeebs	%v17,%v16,%v18
++	jno	.Lfound0
++.Llt16:
++	clgfi	%r4,0		/* if remaining bytes == 0, return NULL.  */
++	locghie	%r2,0
++	ber	%r14
++
++	aghi	%r4,-1		/* vll needs highest index.  */
++	vll	%v16,%r4,0(%r2)	/* Load remaining bytes.  */
++
++	/* Right-shift of v16 to mask bytes after highest index.  */
++	lhi	%r0,15
++	slr	%r0,%r4		/* Compute byte count for vector shift right.  */
++	sll	%r0,3		/* Convert to bit count.  */
++	vlvgb	%v17,%r0,7
++	vsrlb	%v16,%v16,%v17	/* Vector shift right by byte by number of bytes
++				   specified in bits 1-4 of byte 7 in v17.   */
++	j	.Lfound_permute
++
++.Lfound48:
++	aghi	%r4,16
++.Lfound32:
++	aghi	%r4,16
++.Lfound16:
++	aghi	%r4,16
++.Lfound0:
++	la	%r2,0(%r4,%r2)	/* Set pointer to start of v16.  */
++	lghi	%r4,15		/* Set highest index in v16 to last index.  */
++.Lfound_permute:
++	/* Search for a c in v16 in reversed byte order. v16 contains %r4 + 1
++	   bytes. If v16 was not fully loaded, the bytes are already
++	   right shifted, so that the bytes in v16 can simply be reversed.  */
++	vperm	%v16,%v16,%v16,%v20 /* Permute v16 to reversed order.  */
++	vfeeb	%v16,%v16,%v18	/* Find c in reversed v16.  */
++	vlgvb	%r1,%v16,7	/* Index of c or 16 if not found.  */
++
++	/* Return NULL if there is no c in loaded bytes. */
++	clrjh	%r1,%r4,.Lnot_found
++
++	slgr	%r4,%r1
++.Lfound_end:
++	la	%r2,0(%r4,%r2)	/* Return pointer to c.  */
++	br	%r14
++
++.Lnot_found:
++	lghi	%r2,0
++	br	%r14
++
++.Lpermute_mask:
++	.byte	0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08
++	.byte	0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00
++
++.Lloop64:
++	aghi	%r4,-64
++	vl	%v16,48(%r4,%r2) /* Load 16bytes of memory area.  */
++	vfeebs	%v17,%v16,%v18	/* Find c.  */
++	jno	.Lfound48	/* Jump away if c was found.  */
++	vl	%v16,32(%r4,%r2)
++	vfeebs	%v17,%v16,%v18
++	jno	.Lfound32
++	vl	%v16,16(%r4,%r2)
++	vfeebs	%v17,%v16,%v18
++	jno	.Lfound16
++	vl	%v16,0(%r4,%r2)
++	vfeebs	%v17,%v16,%v18
++	jno	.Lfound0
++
++	clgijhe	%r4,64,.Lloop64	/* If n >= 64 -> loop64.  */
++	j	.Llt64
++END(__memrchr_vx)
++#endif /* HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc */
+diff --git a/sysdeps/s390/multiarch/memrchr.c b/sysdeps/s390/multiarch/memrchr.c
+new file mode 100644
+index 0000000..6596067
+--- /dev/null
++++ b/sysdeps/s390/multiarch/memrchr.c
+@@ -0,0 +1,28 @@
++/* Multiple versions of memrchr.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#if defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc
++# include <string.h>
++# include <ifunc-resolve.h>
++
++s390_vx_libc_ifunc (__memrchr)
++weak_alias (__memrchr, memrchr)
++
++#else
++# include <string/memrchr.c>
++#endif /* !(defined HAVE_S390_VX_ASM_SUPPORT && !defined NOT_IN_libc) */
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-4.patch b/SOURCES/glibc-rh1268008-4.patch
new file mode 100644
index 0000000..341cf3d
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-4.patch
@@ -0,0 +1,207 @@
+From aea6303d6c5fa276ea10887dab968ee0f3c79328 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:30:00 +0200
+Subject: [PATCH 04/30] S390: Fix handling of DXC-byte in FPC-register.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+upstream-commit-id: 5d96fe8c0dc3450bafe6c2aae2dabc76819df3e0
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00074.html
+
+On s390, the DXC(data-exception-code)-byte in FPC(floating-point-control)-
+register contains a code of the last occured exception.
+If bits 6 and 7 of DXC-byte are zero, the bits 0-5 correspond to the
+ieee-exception flag bits.
+The current implementation always uses these bits as ieee-exception flag bits.
+fetestexcept() reports any exception after the first usage of a
+vector-instruction in a process, because it raises an "vector instruction
+exception" with DXC-code 0xFE.
+This patch fixes the handling of the DXC-byte. The DXC-Byte is only handled
+if bits 6 and 7 are zero.
+
+The #define _FPU_RESERVED is extended by the DXC-Byte.
+Otherwise the tests math/test-fpucw-static and math/test-fpucw-ieee-static
+fails, because DXC-Byte contains the vector instruction exception when reaching
+main(). This exception was triggered by strrchr() call in __init_misc().
+__init_misc() is called after __setfpucw () in __libc_init_first().
+
+The field __ieee_instruction_pointer in struct fenv_t is renamed to __unused
+because it is a relict from commit "Remove PTRACE_PEEKUSER"
+(87b9b50f0d4b92248905e95a06a13c513dc45e59) and isn´t used anymore.
+
+ChangeLog:
+
+	[BZ #18610]
+	* sysdeps/s390/fpu/bits/fenv.h (fenv_t): Rename
+	__ieee_instruction_pointer to __unused.
+	* sysdeps/s390/fpu/fesetenv.c (__fesetenv): Remove usage of
+	__ieee_instruction_pointer.
+	* sysdeps/s390/fpu/fclrexcpt.c (feclearexcept): Fix dxc-field handling.
+	* sysdeps/s390/fpu/fgetexcptflg.c (fegetexceptflag): Likewise.
+	* sysdeps/s390/fpu/fsetexcptflg.c (fesetexceptflag): Likewise.
+	* sysdeps/s390/fpu/ftestexcept.c (fetestexcept): Likewise.
+	* sysdeps/s390/fpu/fpu_control.h (_FPU_RESERVED):
+	Mark dxc-field as reserved.
+---
+ sysdeps/s390/fpu/bits/fenv.h    |  6 ++++--
+ sysdeps/s390/fpu/fclrexcpt.c    |  7 ++++++-
+ sysdeps/s390/fpu/fesetenv.c     |  2 --
+ sysdeps/s390/fpu/fgetexcptflg.c |  8 +++++++-
+ sysdeps/s390/fpu/fpu_control.h  |  6 +++---
+ sysdeps/s390/fpu/fsetexcptflg.c | 15 ++++++++++++---
+ sysdeps/s390/fpu/ftestexcept.c  | 12 +++++++++---
+ 7 files changed, 41 insertions(+), 15 deletions(-)
+
+diff --git a/sysdeps/s390/fpu/bits/fenv.h b/sysdeps/s390/fpu/bits/fenv.h
+index 88c6f7a..93177dc 100644
+--- a/sysdeps/s390/fpu/bits/fenv.h
++++ b/sysdeps/s390/fpu/bits/fenv.h
+@@ -77,8 +77,10 @@ typedef unsigned int fexcept_t; /* size of fpc */
+ typedef struct
+ {
+   fexcept_t __fpc;
+-  void *__ieee_instruction_pointer;
+-  /* failing instruction for ieee exceptions */
++  void *__unused;
++  /* The field __unused (formerly __ieee_instruction_pointer) is a relict from
++     commit "Remove PTRACE_PEEKUSER" (87b9b50f0d4b92248905e95a06a13c513dc45e59)
++     and isn´t used anymore.  */
+ } fenv_t;
+ 
+ /* If the default argument is used we use this value.  */
+diff --git a/sysdeps/s390/fpu/fclrexcpt.c b/sysdeps/s390/fpu/fclrexcpt.c
+index 3e8d9bb..c2647ba 100644
+--- a/sysdeps/s390/fpu/fclrexcpt.c
++++ b/sysdeps/s390/fpu/fclrexcpt.c
+@@ -29,7 +29,12 @@ feclearexcept (int excepts)
+ 
+   _FPU_GETCW (temp);
+   /* Clear the relevant bits.  */
+-  temp &= ~((excepts << FPC_DXC_SHIFT)|(excepts << FPC_FLAGS_SHIFT));
++  temp &= ~(excepts << FPC_FLAGS_SHIFT);
++  if ((temp & FPC_NOT_FPU_EXCEPTION) == 0)
++    /* Bits 6, 7 of dxc-byte are zero,
++       thus bits 0-5 of dxc-byte correspond to the flag-bits.
++       Clear the relevant bits in flags and dxc-field.  */
++    temp &= ~(excepts << FPC_DXC_SHIFT);
+ 
+   /* Put the new data in effect.  */
+   _FPU_SETCW (temp);
+diff --git a/sysdeps/s390/fpu/fesetenv.c b/sysdeps/s390/fpu/fesetenv.c
+index b534205..a4a0bb5 100644
+--- a/sysdeps/s390/fpu/fesetenv.c
++++ b/sysdeps/s390/fpu/fesetenv.c
+@@ -32,12 +32,10 @@ fesetenv (const fenv_t *envp)
+   if (envp == FE_DFL_ENV)
+     {
+       env.__fpc = _FPU_DEFAULT;
+-      env.__ieee_instruction_pointer = 0;
+     }
+   else if (envp == FE_NOMASK_ENV)
+     {
+       env.__fpc = FPC_EXCEPTION_MASK;
+-      env.__ieee_instruction_pointer = 0;
+     }
+   else
+     env = (*envp);
+diff --git a/sysdeps/s390/fpu/fgetexcptflg.c b/sysdeps/s390/fpu/fgetexcptflg.c
+index 7457678..7941904 100644
+--- a/sysdeps/s390/fpu/fgetexcptflg.c
++++ b/sysdeps/s390/fpu/fgetexcptflg.c
+@@ -27,7 +27,13 @@ fegetexceptflag (fexcept_t *flagp, int excepts)
+ 
+   /* Get the current exceptions.  */
+   _FPU_GETCW (temp);
+-  newexcepts = (excepts << FPC_DXC_SHIFT) | (excepts << FPC_FLAGS_SHIFT);
++  newexcepts = excepts << FPC_FLAGS_SHIFT;
++  if ((temp & FPC_NOT_FPU_EXCEPTION) == 0)
++    /* Bits 6, 7 of dxc-byte are zero,
++       thus bits 0-5 of dxc-byte correspond to the flag-bits.
++       Evaluate flags and last dxc-exception-code.  */
++    newexcepts |= excepts << FPC_DXC_SHIFT;
++
+   *flagp = temp & newexcepts;
+ 
+   /* Success.  */
+diff --git a/sysdeps/s390/fpu/fpu_control.h b/sysdeps/s390/fpu/fpu_control.h
+index af81bc2..dba904d 100644
+--- a/sysdeps/s390/fpu/fpu_control.h
++++ b/sysdeps/s390/fpu/fpu_control.h
+@@ -19,12 +19,12 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef _FPU_CONTROL_H
+-# define _FPU_CONTROL_H
++#define _FPU_CONTROL_H
+ 
+-# include <features.h>
++#include <features.h>
+ 
+ /* These bits are reserved are not changed.  */
+-# define _FPU_RESERVED 0x070700FC
++#define _FPU_RESERVED 0x0707FFFC
+ 
+ /* The fdlibm code requires no interrupts for exceptions.  Don't
+    change the rounding mode, it would break long double I/O!  */
+diff --git a/sysdeps/s390/fpu/fsetexcptflg.c b/sysdeps/s390/fpu/fsetexcptflg.c
+index aada675..85c68e8 100644
+--- a/sysdeps/s390/fpu/fsetexcptflg.c
++++ b/sysdeps/s390/fpu/fsetexcptflg.c
+@@ -24,16 +24,25 @@
+ int
+ fesetexceptflag (const fexcept_t *flagp, int excepts)
+ {
+-  fexcept_t temp,newexcepts;
++  fexcept_t temp, newexcepts;
+ 
+   /* Get the current environment.  We have to do this since we cannot
+      separately set the status word.  */
+   _FPU_GETCW (temp);
+   /* Install the new exception bits in the Accrued Exception Byte.  */
+   excepts = excepts & FE_ALL_EXCEPT;
+-  newexcepts = (excepts << FPC_DXC_SHIFT) | (excepts << FPC_FLAGS_SHIFT);
++  newexcepts = excepts << FPC_FLAGS_SHIFT;
+   temp &= ~newexcepts;
+-  temp |= *flagp & newexcepts;
++  if ((temp & FPC_NOT_FPU_EXCEPTION) == 0)
++    /* Bits 6, 7 of dxc-byte are zero,
++       thus bits 0-5 of dxc-byte correspond to the flag-bits.
++       Clear given exceptions in dxc-field.  */
++    temp &= ~(excepts << FPC_DXC_SHIFT);
++
++  /* Integrate dxc-byte of flagp into flags. The dxc-byte of flagp contains
++     either an ieee-exception or 0 (see fegetexceptflag).  */
++  temp |= (*flagp | ((*flagp >> FPC_DXC_SHIFT) << FPC_FLAGS_SHIFT))
++    & newexcepts;
+ 
+   /* Store the new status word (along with the rest of the environment.
+      Possibly new exceptions are set but they won't get executed unless
+diff --git a/sysdeps/s390/fpu/ftestexcept.c b/sysdeps/s390/fpu/ftestexcept.c
+index 5594994..c36aefd 100644
+--- a/sysdeps/s390/fpu/ftestexcept.c
++++ b/sysdeps/s390/fpu/ftestexcept.c
+@@ -23,11 +23,17 @@
+ int
+ fetestexcept (int excepts)
+ {
+-  fexcept_t temp;
++  fexcept_t temp, res;
+ 
+   /* Get current exceptions.  */
+   _FPU_GETCW (temp);
+-  temp = (temp >> FPC_DXC_SHIFT) | (temp >> FPC_FLAGS_SHIFT);
+-  return temp & excepts & FE_ALL_EXCEPT;
++  res = temp >> FPC_FLAGS_SHIFT;
++  if ((temp & FPC_NOT_FPU_EXCEPTION) == 0)
++    /* Bits 6, 7 of dxc-byte are zero,
++       thus bits 0-5 of dxc-byte correspond to the flag-bits.
++       Evaluate flags and last dxc-exception-code.  */
++    res |= temp >> FPC_DXC_SHIFT;
++
++  return res & excepts & FE_ALL_EXCEPT;
+ }
+ libm_hidden_def (fetestexcept)
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-5.patch b/SOURCES/glibc-rh1268008-5.patch
new file mode 100644
index 0000000..da86d5e
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-5.patch
@@ -0,0 +1,2342 @@
+From 6db8663b21a826cbf689a297a898675078256166 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:44:39 +0200
+Subject: [PATCH 05/30] S390: Refactor ifunc implementations and enable
+ ifunc-test-framework.
+
+upstream-commit-id: 31556246c3ac168a2dfec8f9036d913765bbb73d
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00088.html
+
+On s390 all ifunc resolvers were implemented in multiarch/ifunc-resolve.c.
+The resulting single object files has undefined references to all ifunc-functions.
+This patch introduces one multiarch/<func>.c file for each of memcpy, memcmp
+and memset with the function specific ifunc resolver. The different function
+implementations are now implemented in multiarch/<func>-s390x.S
+(moved from multiarch/<func>.S).
+
+The new multiarch/ifunc-resolve.h file contains the ifunc-resolver macro
+and other helper-macros. They are merged and are now used in common for
+32/64bit. Therefore the __<func>_g5/__<func>_z900 functions were renamed to
+__<func>_default.
+
+This patch also enables testing the ifunc implementations by implementing
+the function __libc_ifunc_impl_list. It uses the helper-macros of ifunc-resolve.h.
+
+ChangeLog:
+
+	* sysdeps/s390/s390-32/multiarch/Makefile (sysdep_routines):
+	Remove ifunc-resolve, add memset-s390, memcpy-s390, memcmp-s390.
+	* sysdeps/s390/s390-32/multiarch/ifunc-resolve.c: Delete File.
+	* sysdeps/s390/s390-32/multiarch/memcmp.S: Move to ...
+	* sysdeps/s390/s390-32/multiarch/memcmp-s390.S: ... here.
+	(memcmp, bcmp): Use __memcmp_default as alias source.
+	* sysdeps/s390/s390-32/multiarch/memcmp.c: New File.
+	* sysdeps/s390/s390-32/memcmp.S (__memcmp_g5):
+	Rename to __memcmp_default.
+	* sysdeps/s390/s390-32/multiarch/memcpy.S: Move to ...
+	* sysdeps/s390/s390-32/multiarch/memcpy-s390.S: ... here.
+	(memcpy): Use __memcpy_default as alias source.
+	* sysdeps/s390/s390-32/multiarch/memcpy.c: New File.
+	* sysdeps/s390/s390-32/memcpy.S (__memcpy_g5):
+	Rename to __memcpy_default.
+	* sysdeps/s390/s390-32/multiarch/memset.S: Move to ...
+	* sysdeps/s390/s390-32/multiarch/memset-s390.S: ... here.
+	(memset): Use __memset_default as alias source.
+	* sysdeps/s390/s390-32/multiarch/memset.c: New File.
+	* sysdeps/s390/s390-32/memset.S (__memset_g5):
+	Rename to __memset_default.
+	* sysdeps/s390/s390-64/multiarch/Makefile (sysdep_routines):
+	Remove ifunc-resolve, add memset-s390x, memcpy-s390x, memcmp-s390x.
+	* sysdeps/s390/s390-64/multiarch/ifunc-resolve.c: Delete File.
+	* sysdeps/s390/s390-64/multiarch/memcmp.S: Move to ...
+	* sysdeps/s390/s390-64/multiarch/memcmp-s390x.S: ... here.
+	(memcmp, bcmp): Use __memcmp_default as alias source.
+	* sysdeps/s390/s390-64/multiarch/memcmp.c: New File.
+	* sysdeps/s390/s390-64/memcmp.S (__memcmp_z900):
+	Rename to __memcmp_default.
+	* sysdeps/s390/s390-64/multiarch/memcpy.S: Move to ...
+	* sysdeps/s390/s390-64/multiarch/memcpy-s390x.S: ... here.
+	(memcpy): Use __memcpy_default as alias source.
+	* sysdeps/s390/s390-64/multiarch/memcpy.c: New File.
+	* sysdeps/s390/s390-64/memcpy.S (__memcpy_z900):
+	Rename to __memcpy_default.
+	* sysdeps/s390/s390-64/multiarch/memset.S: Move to ...
+	* sysdeps/s390/s390-64/multiarch/memset-s390x.S: ... here.
+	(memset): Use __memset_default as alias source.
+	* sysdeps/s390/s390-64/multiarch/memset.c: New File.
+	* sysdeps/s390/s390-64/memset.S (__memset_z900):
+	Rename to __memset_default.
+	* sysdeps/s390/multiarch/ifunc-resolve.h: New File.
+	* sysdeps/s390/multiarch/ifunc-impl-list.c: New File.
+---
+ sysdeps/s390/multiarch/ifunc-impl-list.c       |  74 ++++++++++++++++
+ sysdeps/s390/multiarch/ifunc-resolve.h         |  75 ++++++++++++++++
+ sysdeps/s390/s390-32/memcmp.S                  |  46 +++++-----
+ sysdeps/s390/s390-32/memcpy.S                  |  50 +++++------
+ sysdeps/s390/s390-32/memset.S                  |  44 +++++-----
+ sysdeps/s390/s390-32/multiarch/Makefile        |   3 +-
+ sysdeps/s390/s390-32/multiarch/ifunc-resolve.c |  72 ----------------
+ sysdeps/s390/s390-32/multiarch/memcmp-s390.S   | 104 +++++++++++++++++++++++
+ sysdeps/s390/s390-32/multiarch/memcmp.S        | 104 -----------------------
+ sysdeps/s390/s390-32/multiarch/memcmp.c        |  24 ++++++
+ sysdeps/s390/s390-32/multiarch/memcpy-s390.S   |  98 +++++++++++++++++++++
+ sysdeps/s390/s390-32/multiarch/memcpy.S        |  98 ---------------------
+ sysdeps/s390/s390-32/multiarch/memcpy.c        |  24 ++++++
+ sysdeps/s390/s390-32/multiarch/memset-s390.S   | 113 +++++++++++++++++++++++++
+ sysdeps/s390/s390-32/multiarch/memset.S        | 113 -------------------------
+ sysdeps/s390/s390-32/multiarch/memset.c        |  23 +++++
+ sysdeps/s390/s390-64/memcmp.S                  |  42 ++++-----
+ sysdeps/s390/s390-64/memcpy.S                  |  40 ++++-----
+ sysdeps/s390/s390-64/memset.S                  |  40 ++++-----
+ sysdeps/s390/s390-64/multiarch/Makefile        |   3 +-
+ sysdeps/s390/s390-64/multiarch/ifunc-resolve.c |  76 -----------------
+ sysdeps/s390/s390-64/multiarch/memcmp-s390x.S  | 101 ++++++++++++++++++++++
+ sysdeps/s390/s390-64/multiarch/memcmp.S        | 101 ----------------------
+ sysdeps/s390/s390-64/multiarch/memcmp.c        |  24 ++++++
+ sysdeps/s390/s390-64/multiarch/memcpy-s390x.S  |  94 ++++++++++++++++++++
+ sysdeps/s390/s390-64/multiarch/memcpy.S        |  94 --------------------
+ sysdeps/s390/s390-64/multiarch/memcpy.c        |  24 ++++++
+ sysdeps/s390/s390-64/multiarch/memset-s390x.S  | 109 ++++++++++++++++++++++++
+ sysdeps/s390/s390-64/multiarch/memset.S        | 109 ------------------------
+ sysdeps/s390/s390-64/multiarch/memset.c        |  23 +++++
+ 30 files changed, 1045 insertions(+), 900 deletions(-)
+ create mode 100644 sysdeps/s390/multiarch/ifunc-impl-list.c
+ create mode 100644 sysdeps/s390/multiarch/ifunc-resolve.h
+ delete mode 100644 sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
+ create mode 100644 sysdeps/s390/s390-32/multiarch/memcmp-s390.S
+ delete mode 100644 sysdeps/s390/s390-32/multiarch/memcmp.S
+ create mode 100644 sysdeps/s390/s390-32/multiarch/memcmp.c
+ create mode 100644 sysdeps/s390/s390-32/multiarch/memcpy-s390.S
+ delete mode 100644 sysdeps/s390/s390-32/multiarch/memcpy.S
+ create mode 100644 sysdeps/s390/s390-32/multiarch/memcpy.c
+ create mode 100644 sysdeps/s390/s390-32/multiarch/memset-s390.S
+ delete mode 100644 sysdeps/s390/s390-32/multiarch/memset.S
+ create mode 100644 sysdeps/s390/s390-32/multiarch/memset.c
+ delete mode 100644 sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
+ create mode 100644 sysdeps/s390/s390-64/multiarch/memcmp-s390x.S
+ delete mode 100644 sysdeps/s390/s390-64/multiarch/memcmp.S
+ create mode 100644 sysdeps/s390/s390-64/multiarch/memcmp.c
+ create mode 100644 sysdeps/s390/s390-64/multiarch/memcpy-s390x.S
+ delete mode 100644 sysdeps/s390/s390-64/multiarch/memcpy.S
+ create mode 100644 sysdeps/s390/s390-64/multiarch/memcpy.c
+ create mode 100644 sysdeps/s390/s390-64/multiarch/memset-s390x.S
+ delete mode 100644 sysdeps/s390/s390-64/multiarch/memset.S
+ create mode 100644 sysdeps/s390/s390-64/multiarch/memset.c
+
+diff --git a/sysdeps/s390/multiarch/ifunc-impl-list.c b/sysdeps/s390/multiarch/ifunc-impl-list.c
+new file mode 100644
+index 0000000..c330904
+--- /dev/null
++++ b/sysdeps/s390/multiarch/ifunc-impl-list.c
+@@ -0,0 +1,74 @@
++/* Enumerate available IFUNC implementations of a function. s390/s390x version.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <assert.h>
++#include <string.h>
++#include <ifunc-impl-list.h>
++#include <ifunc-resolve.h>
++
++/* Maximum number of IFUNC implementations.  */
++#define MAX_IFUNC	3
++
++/* Fill ARRAY of MAX elements with IFUNC implementations for function
++   NAME supported on target machine and return the number of valid
++   entries.  */
++size_t
++__libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
++			size_t max)
++{
++  assert (max >= MAX_IFUNC);
++
++  size_t i = 0;
++
++  /* Get hardware information.  */
++  unsigned long int dl_hwcap = GLRO (dl_hwcap);
++  unsigned long long stfle_bits = 0ULL;
++  if ((dl_hwcap & HWCAP_S390_STFLE)
++	&& (dl_hwcap & HWCAP_S390_ZARCH)
++	&& (dl_hwcap & HWCAP_S390_HIGH_GPRS))
++    {
++      S390_STORE_STFLE (stfle_bits);
++    }
++
++  IFUNC_IMPL (i, name, memset,
++	      IFUNC_IMPL_ADD (array, i, memset,
++			      S390_IS_Z196 (stfle_bits), __memset_z196)
++	      IFUNC_IMPL_ADD (array, i, memset,
++			      S390_IS_Z10 (stfle_bits), __memset_z10)
++	      IFUNC_IMPL_ADD (array, i, memset, 1, __memset_default))
++
++  IFUNC_IMPL (i, name, memcmp,
++	      IFUNC_IMPL_ADD (array, i, memcmp,
++			      S390_IS_Z196 (stfle_bits), __memcmp_z196)
++	      IFUNC_IMPL_ADD (array, i, memcmp,
++			      S390_IS_Z10 (stfle_bits), __memcmp_z10)
++	      IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_default))
++
++#ifdef SHARED
++
++  IFUNC_IMPL (i, name, memcpy,
++	      IFUNC_IMPL_ADD (array, i, memcpy,
++			      S390_IS_Z196 (stfle_bits), __memcpy_z196)
++	      IFUNC_IMPL_ADD (array, i, memcpy,
++			      S390_IS_Z10 (stfle_bits), __memcpy_z10)
++	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_default))
++
++#endif /* SHARED */
++
++  return i;
++}
+diff --git a/sysdeps/s390/multiarch/ifunc-resolve.h b/sysdeps/s390/multiarch/ifunc-resolve.h
+new file mode 100644
+index 0000000..491df68
+--- /dev/null
++++ b/sysdeps/s390/multiarch/ifunc-resolve.h
+@@ -0,0 +1,75 @@
++/* IFUNC resolver function for CPU specific functions.
++   32/64 bit S/390 version.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <unistd.h>
++#include <dl-procinfo.h>
++
++#define S390_STFLE_BITS_Z10  34 /* General instructions extension */
++#define S390_STFLE_BITS_Z196 45 /* Distinct operands, pop ... */
++
++#define S390_IS_Z196(STFLE_BITS)			\
++  ((STFLE_BITS & (1ULL << (63 - S390_STFLE_BITS_Z196))) != 0)
++
++#define S390_IS_Z10(STFLE_BITS)				\
++  ((STFLE_BITS & (1ULL << (63 - S390_STFLE_BITS_Z10))) != 0)
++
++#define S390_STORE_STFLE(STFLE_BITS)					\
++  /* We want just 1 double word to be returned.  */			\
++  register unsigned long reg0 asm("0") = 0;				\
++									\
++  asm volatile(".machine push"        "\n\t"				\
++	       ".machine \"z9-109\""  "\n\t"				\
++	       ".machinemode \"zarch_nohighgprs\"\n\t"			\
++	       "stfle %0"             "\n\t"				\
++	       ".machine pop"         "\n"				\
++	       : "=QS" (STFLE_BITS), "+d" (reg0)			\
++	       : : "cc");
++
++#define s390_libc_ifunc(FUNC)						\
++  asm (".globl " #FUNC "\n\t"						\
++       ".type  " #FUNC ",@gnu_indirect_function\n\t"			\
++       ".set   " #FUNC ",__resolve_" #FUNC "\n\t"			\
++       ".globl __GI_" #FUNC "\n\t"					\
++       ".set   __GI_" #FUNC "," #FUNC "\n");				\
++									\
++  /* Make the declarations of the optimized functions hidden in order
++     to prevent GOT slots being generated for them. */			\
++  extern void *__##FUNC##_z196 attribute_hidden;			\
++  extern void *__##FUNC##_z10 attribute_hidden;				\
++  extern void *__##FUNC##_default attribute_hidden;			\
++									\
++  void *__resolve_##FUNC (unsigned long int dl_hwcap)			\
++  {									\
++    if ((dl_hwcap & HWCAP_S390_STFLE)					\
++	&& (dl_hwcap & HWCAP_S390_ZARCH)				\
++	&& (dl_hwcap & HWCAP_S390_HIGH_GPRS))				\
++      {									\
++	unsigned long long stfle_bits;					\
++	S390_STORE_STFLE (stfle_bits);					\
++									\
++	if (S390_IS_Z196 (stfle_bits))					\
++	  return &__##FUNC##_z196;					\
++	else if (S390_IS_Z10 (stfle_bits))				\
++	  return &__##FUNC##_z10;					\
++	else								\
++	  return &__##FUNC##_default;					\
++      }									\
++    else								\
++      return &__##FUNC##_default;					\
++  }
+diff --git a/sysdeps/s390/s390-32/memcmp.S b/sysdeps/s390/s390-32/memcmp.S
+index b6eabe5..104e280 100644
+--- a/sysdeps/s390/s390-32/memcmp.S
++++ b/sysdeps/s390/s390-32/memcmp.S
+@@ -27,38 +27,38 @@
+ 
+        .text
+ #ifdef USE_MULTIARCH
+-ENTRY(__memcmp_g5)
++ENTRY(__memcmp_default)
+ #else
+ ENTRY(memcmp)
+ #endif
+ 	.machine "g5"
+-        basr    %r5,0
++	basr    %r5,0
+ .L_G5_16:
+-        ltr     %r4,%r4
+-        je      .L_G5_4
+-        ahi     %r4,-1
+-        lr      %r1,%r4
+-        srl     %r1,8
+-        ltr     %r1,%r1
+-        jne     .L_G5_12
+-        ex      %r4,.L_G5_17-.L_G5_16(%r5)
++	ltr     %r4,%r4
++	je      .L_G5_4
++	ahi     %r4,-1
++	lr      %r1,%r4
++	srl     %r1,8
++	ltr     %r1,%r1
++	jne     .L_G5_12
++	ex      %r4,.L_G5_17-.L_G5_16(%r5)
+ .L_G5_4:
+-        ipm     %r2
+-        sll     %r2,2
+-        sra     %r2,30
+-        br      %r14
++	ipm     %r2
++	sll     %r2,2
++	sra     %r2,30
++	br      %r14
+ .L_G5_12:
+-        clc     0(256,%r3),0(%r2)
+-        jne     .L_G5_4
+-        la      %r3,256(%r3)
+-        la      %r2,256(%r2)
+-        brct    %r1,.L_G5_12
+-        ex      %r4,.L_G5_17-.L_G5_16(%r5)
+-        j       .L_G5_4
++	clc     0(256,%r3),0(%r2)
++	jne     .L_G5_4
++	la      %r3,256(%r3)
++	la      %r2,256(%r2)
++	brct    %r1,.L_G5_12
++	ex      %r4,.L_G5_17-.L_G5_16(%r5)
++	j       .L_G5_4
+ .L_G5_17:
+-        clc     0(1,%r3),0(%r2)
++	clc     0(1,%r3),0(%r2)
+ #ifdef USE_MULTIARCH
+-END(__memcmp_g5)
++END(__memcmp_default)
+ #else
+ END(memcmp)
+ libc_hidden_builtin_def (memcmp)
+diff --git a/sysdeps/s390/s390-32/memcpy.S b/sysdeps/s390/s390-32/memcpy.S
+index a3b1ace..6a2cf68 100644
+--- a/sysdeps/s390/s390-32/memcpy.S
++++ b/sysdeps/s390/s390-32/memcpy.S
+@@ -26,41 +26,41 @@
+      %r4 = number of bytes to copy.  */
+ 
+ #ifdef USE_MULTIARCH
+-ENTRY(__memcpy_g5)
++ENTRY(__memcpy_default)
+ #else
+ ENTRY(memcpy)
+ #endif
+ 	.machine "g5"
+-        st      %r13,52(%r15)
+-        .cfi_offset 13, -44
+-        basr    %r13,0
++	st      %r13,52(%r15)
++	.cfi_offset 13, -44
++	basr    %r13,0
+ .L_G5_16:
+-        ltr     %r4,%r4
+-        je      .L_G5_4
+-        ahi     %r4,-1
+-        lr      %r5,%r4
+-        srl     %r5,8
+-        ltr     %r5,%r5
+-        lr      %r1,%r2
+-        jne     .L_G5_12
+-        ex      %r4,.L_G5_17-.L_G5_16(%r13)
++	ltr     %r4,%r4
++	je      .L_G5_4
++	ahi     %r4,-1
++	lr      %r5,%r4
++	srl     %r5,8
++	ltr     %r5,%r5
++	lr      %r1,%r2
++	jne     .L_G5_12
++	ex      %r4,.L_G5_17-.L_G5_16(%r13)
+ .L_G5_4:
+-        l       %r13,52(%r15)
+-        br      %r14
++	l       %r13,52(%r15)
++	br      %r14
+ .L_G5_13:
+-        chi	%r5,4096             # Switch to mvcle for copies >1MB
+-        jh	__memcpy_mvcle
++	chi	%r5,4096             # Switch to mvcle for copies >1MB
++	jh	__memcpy_mvcle
+ .L_G5_12:
+-        mvc     0(256,%r1),0(%r3)
+-        la      %r1,256(%r1)
+-        la      %r3,256(%r3)
+-        brct    %r5,.L_G5_12
+-        ex      %r4,.L_G5_17-.L_G5_16(%r13)
+-        j       .L_G5_4
++	mvc     0(256,%r1),0(%r3)
++	la      %r1,256(%r1)
++	la      %r3,256(%r3)
++	brct    %r5,.L_G5_12
++	ex      %r4,.L_G5_17-.L_G5_16(%r13)
++	j       .L_G5_4
+ .L_G5_17:
+-        mvc     0(1,%r1),0(%r3)
++	mvc     0(1,%r1),0(%r3)
+ #ifdef USE_MULTIARCH
+-END(__memcpy_g5)
++END(__memcpy_default)
+ #else
+ END(memcpy)
+ libc_hidden_builtin_def (memcpy)
+diff --git a/sysdeps/s390/s390-32/memset.S b/sysdeps/s390/s390-32/memset.S
+index a73dc6c..d363cf1 100644
+--- a/sysdeps/s390/s390-32/memset.S
++++ b/sysdeps/s390/s390-32/memset.S
+@@ -28,37 +28,37 @@
+        .text
+ 
+ #ifdef USE_MULTIARCH
+-ENTRY(__memset_g5)
++ENTRY(__memset_default)
+ #else
+ ENTRY(memset)
+ #endif
+ 	.machine "g5"
+-        basr    %r5,0
++	basr    %r5,0
+ .L_G5_19:
+-        ltr     %r4,%r4
+-        je      .L_G5_4
+-        stc     %r3,0(%r2)
+-        chi     %r4,1
+-        lr      %r1,%r2
+-        je      .L_G5_4
+-        ahi     %r4,-2
+-        lr      %r3,%r4
+-        srl     %r3,8
+-        ltr     %r3,%r3
+-        jne     .L_G5_14
+-        ex      %r4,.L_G5_20-.L_G5_19(%r5)
++	ltr     %r4,%r4
++	je      .L_G5_4
++	stc     %r3,0(%r2)
++	chi     %r4,1
++	lr      %r1,%r2
++	je      .L_G5_4
++	ahi     %r4,-2
++	lr      %r3,%r4
++	srl     %r3,8
++	ltr     %r3,%r3
++	jne     .L_G5_14
++	ex      %r4,.L_G5_20-.L_G5_19(%r5)
+ .L_G5_4:
+-        br      %r14
++	br      %r14
+ .L_G5_14:
+-        mvc     1(256,%r1),0(%r1)
+-        la      %r1,256(%r1)
+-        brct    %r3,.L_G5_14
+-        ex      %r4,.L_G5_20-.L_G5_19(%r5)
+-        j       .L_G5_4
++	mvc     1(256,%r1),0(%r1)
++	la      %r1,256(%r1)
++	brct    %r3,.L_G5_14
++	ex      %r4,.L_G5_20-.L_G5_19(%r5)
++	j       .L_G5_4
+ .L_G5_20:
+-        mvc     1(1,%r1),0(%r1)
++	mvc     1(1,%r1),0(%r1)
+ #ifdef USE_MULTIARCH
+-END(__memset_g5)
++END(__memset_default)
+ #else
+ END(memset)
+ libc_hidden_builtin_def (memset)
+diff --git a/sysdeps/s390/s390-32/multiarch/Makefile b/sysdeps/s390/s390-32/multiarch/Makefile
+index 9baeecd..f8aee14 100644
+--- a/sysdeps/s390/s390-32/multiarch/Makefile
++++ b/sysdeps/s390/s390-32/multiarch/Makefile
+@@ -1,3 +1,4 @@
+ ifeq ($(subdir),string)
+-sysdep_routines += ifunc-resolve memset memcpy memcmp
++sysdep_routines += memset memset-s390 memcpy memcpy-s390 \
++		   memcmp memcmp-s390
+ endif
+diff --git a/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c b/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
+deleted file mode 100644
+index 522c63c..0000000
+--- a/sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
++++ /dev/null
+@@ -1,72 +0,0 @@
+-/* IFUNC resolver function for CPU specific functions.
+-   32 bit S/390 version.
+-   Copyright (C) 2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <unistd.h>
+-#include <dl-procinfo.h>
+-
+-#define STFLE_BITS_Z10  34 /* General instructions extension */
+-#define STFLE_BITS_Z196 45 /* Distinct operands, pop ... */
+-
+-#ifndef NOT_IN_libc
+-
+-#define IFUNC_RESOLVE(FUNC)						\
+-  asm (".globl " #FUNC "\n\t"						\
+-       ".type  " #FUNC ",@gnu_indirect_function\n\t"			\
+-       ".set   " #FUNC ",__resolve_" #FUNC "\n\t"			\
+-       ".globl __GI_" #FUNC "\n\t"					\
+-       ".set   __GI_" #FUNC "," #FUNC "\n");				\
+-									\
+-  /* Make the declarations of the optimized functions hidden in order
+-     to prevent GOT slots being generated for them. */			\
+-  extern void *__##FUNC##_z196 attribute_hidden;			\
+-  extern void *__##FUNC##_z10 attribute_hidden;				\
+-  extern void *__##FUNC##_g5 attribute_hidden;				\
+-									\
+-  void *__resolve_##FUNC (unsigned long int dl_hwcap)			\
+-  {									\
+-    if ((dl_hwcap & HWCAP_S390_STFLE)					\
+-	&& (dl_hwcap & HWCAP_S390_ZARCH)				\
+-	&& (dl_hwcap & HWCAP_S390_HIGH_GPRS))				\
+-      {									\
+-	/* We want just 1 double word to be returned.  */		\
+-	register unsigned long reg0 asm("0") = 0;			\
+-	unsigned long long stfle_bits;					\
+-									\
+-	asm volatile(".insn s,0xb2b00000,%0" "\n\t"  /* stfle */	\
+-		     : "=QS" (stfle_bits), "+d" (reg0)			\
+-		     : : "cc");						\
+-									\
+-	if ((stfle_bits & (1ULL << (63 - STFLE_BITS_Z196))) != 0)	\
+-	  return &__##FUNC##_z196;					\
+-	else if ((stfle_bits & (1ULL << (63 - STFLE_BITS_Z10))) != 0)	\
+-	  return &__##FUNC##_z10;					\
+-      }									\
+-    return &__##FUNC##_g5;						\
+-  }
+-
+-IFUNC_RESOLVE(memset)
+-IFUNC_RESOLVE(memcmp)
+-asm(".weak bcmp ; bcmp = memcmp");
+-
+-/* In the static lib memcpy is needed before the reloc is resolved.  */
+-#ifdef SHARED
+-IFUNC_RESOLVE(memcpy)
+-#endif
+-
+-#endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memcmp-s390.S b/sysdeps/s390/s390-32/multiarch/memcmp-s390.S
+new file mode 100644
+index 0000000..b339aac
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/memcmp-s390.S
+@@ -0,0 +1,104 @@
++/* CPU specific memcmp implementations.  32 bit S/390 version.
++   Copyright (C) 2012-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++
++#include "sysdep.h"
++#include "asm-syntax.h"
++
++/* INPUT PARAMETERS
++     %r2 = address of first memory area
++     %r3 = address of second memory area
++     %r4 = number of bytes to compare.  */
++
++       .text
++
++#ifndef NOT_IN_libc
++
++ENTRY(__memcmp_z196)
++	.machine "z196"
++	.machinemode "zarch_nohighgprs"
++	ltr     %r4,%r4
++	je      .L_Z196_4
++	ahi     %r4,-1
++	srlk    %r1,%r4,8
++	ltr     %r1,%r1
++	jne     .L_Z196_2
++.L_Z196_3:
++	exrl    %r4,.L_Z196_14
++.L_Z196_4:
++	ipm     %r2
++	sll     %r2,2
++	sra     %r2,30
++	br      %r14
++.L_Z196_17:
++	la      %r3,256(%r3)
++	la      %r2,256(%r2)
++	ahi     %r1,-1
++	je      .L_Z196_3
++.L_Z196_2:
++	pfd     1,512(%r3)
++	pfd     1,512(%r2)
++	clc     0(256,%r3),0(%r2)
++	je      .L_Z196_17
++	ipm     %r2
++	sll     %r2,2
++	sra     %r2,30
++	br      %r14
++.L_Z196_14:
++	clc     0(1,%r3),0(%r2)
++END(__memcmp_z196)
++
++ENTRY(__memcmp_z10)
++	.machine "z10"
++	.machinemode "zarch_nohighgprs"
++	ltr     %r4,%r4
++	je      .L_Z10_4
++	ahi     %r4,-1
++	lr      %r1,%r4
++	srl     %r1,8
++	cijlh   %r1,0,.L_Z10_12
++.L_Z10_3:
++	exrl    %r4,.L_Z10_15
++.L_Z10_4:
++	ipm     %r2
++	sll     %r2,2
++	sra     %r2,30
++	br      %r14
++.L_Z10_12:
++	pfd     1,512(%r3)
++	pfd     1,512(%r2)
++	clc     0(256,%r3),0(%r2)
++	jne     .L_Z10_4
++	la      %r3,256(%r3)
++	la      %r2,256(%r2)
++	brct    %r1,.L_Z10_12
++	j       .L_Z10_3
++.L_Z10_15:
++	clc     0(1,%r3),0(%r2)
++END(__memcmp_z10)
++
++#endif /* !NOT_IN_libc */
++
++#include "../memcmp.S"
++
++#ifdef NOT_IN_libc
++.globl   memcmp
++.set     memcmp,__memcmp_default
++.weak    bcmp
++.set	 bcmp,__memcmp_default
++#endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memcmp.S b/sysdeps/s390/s390-32/multiarch/memcmp.S
+deleted file mode 100644
+index c654d19..0000000
+--- a/sysdeps/s390/s390-32/multiarch/memcmp.S
++++ /dev/null
+@@ -1,104 +0,0 @@
+-/* CPU specific memcmp implementations.  32 bit S/390 version.
+-   Copyright (C) 2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-
+-#include "sysdep.h"
+-#include "asm-syntax.h"
+-
+-/* INPUT PARAMETERS
+-     %r2 = address of first memory area
+-     %r3 = address of second memory area
+-     %r4 = number of bytes to compare.  */
+-
+-       .text
+-
+-#ifndef NOT_IN_libc
+-
+-ENTRY(__memcmp_z196)
+-	.machine "z196"
+-	.machinemode "zarch_nohighgprs"
+-        ltr     %r4,%r4
+-        je      .L_Z196_4
+-        ahi     %r4,-1
+-        srlk    %r1,%r4,8
+-        ltr     %r1,%r1
+-        jne     .L_Z196_2
+-.L_Z196_3:
+-        exrl    %r4,.L_Z196_14
+-.L_Z196_4:
+-        ipm     %r2
+-        sll     %r2,2
+-        sra     %r2,30
+-        br      %r14
+-.L_Z196_17:
+-        la      %r3,256(%r3)
+-        la      %r2,256(%r2)
+-        ahi     %r1,-1
+-        je      .L_Z196_3
+-.L_Z196_2:
+-        pfd     1,512(%r3)
+-        pfd     1,512(%r2)
+-        clc     0(256,%r3),0(%r2)
+-        je      .L_Z196_17
+-        ipm     %r2
+-        sll     %r2,2
+-        sra     %r2,30
+-        br      %r14
+-.L_Z196_14:
+-        clc     0(1,%r3),0(%r2)
+-END(__memcmp_z196)
+-
+-ENTRY(__memcmp_z10)
+-	.machine "z10"
+-	.machinemode "zarch_nohighgprs"
+-        ltr     %r4,%r4
+-        je      .L_Z10_4
+-        ahi     %r4,-1
+-        lr      %r1,%r4
+-        srl     %r1,8
+-        cijlh   %r1,0,.L_Z10_12
+-.L_Z10_3:
+-        exrl    %r4,.L_Z10_15
+-.L_Z10_4:
+-        ipm     %r2
+-        sll     %r2,2
+-        sra     %r2,30
+-        br      %r14
+-.L_Z10_12:
+-        pfd     1,512(%r3)
+-        pfd     1,512(%r2)
+-        clc     0(256,%r3),0(%r2)
+-        jne     .L_Z10_4
+-        la      %r3,256(%r3)
+-        la      %r2,256(%r2)
+-        brct    %r1,.L_Z10_12
+-        j       .L_Z10_3
+-.L_Z10_15:
+-        clc     0(1,%r3),0(%r2)
+-END(__memcmp_z10)
+-
+-#endif
+-
+-#include "../memcmp.S"
+-
+-#ifdef NOT_IN_libc
+-.globl   memcmp
+-.set     memcmp,__memcmp_g5
+-.weak    bcmp
+-.set	 bcmp,__memcmp_g5
+-#endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memcmp.c b/sysdeps/s390/s390-32/multiarch/memcmp.c
+new file mode 100644
+index 0000000..7089d56
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/memcmp.c
+@@ -0,0 +1,24 @@
++/* Multiple versions of memcmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef NOT_IN_libc
++# include <ifunc-resolve.h>
++
++s390_libc_ifunc (memcmp)
++asm(".weak bcmp ; bcmp = memcmp");
++#endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memcpy-s390.S b/sysdeps/s390/s390-32/multiarch/memcpy-s390.S
+new file mode 100644
+index 0000000..f6e0fea
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/memcpy-s390.S
+@@ -0,0 +1,98 @@
++/* CPU specific memcpy implementations.  32 bit S/390 version.
++   Copyright (C) 2012-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++
++#include "sysdep.h"
++#include "asm-syntax.h"
++
++/* INPUT PARAMETERS
++     %r2 = target operands address
++     %r3 = source operands address
++     %r4 = number of bytes to copy.  */
++
++       .text
++
++#if defined SHARED && !defined NOT_IN_libc
++
++ENTRY(__memcpy_z196)
++	.machine "z196"
++	.machinemode "zarch_nohighgprs"
++	llgfr   %r4,%r4
++	ltgr    %r4,%r4
++	je      .L_Z196_4
++	aghi    %r4,-1
++	lr      %r1,%r2
++	srlg    %r5,%r4,8
++	ltgr    %r5,%r5
++	jne     .L_Z196_5
++.L_Z196_3:
++	exrl    %r4,.L_Z196_14
++.L_Z196_4:
++	br      %r14
++.L_Z196_5:
++	cgfi    %r5,262144      # Switch to mvcle for copies >64MB
++	jh      __memcpy_mvcle
++.L_Z196_2:
++	pfd     1,768(%r3)
++	pfd     2,768(%r1)
++	mvc     0(256,%r1),0(%r3)
++	aghi    %r5,-1
++	la      %r1,256(%r1)
++	la      %r3,256(%r3)
++	jne     .L_Z196_2
++	j       .L_Z196_3
++.L_Z196_14:
++	mvc     0(1,%r1),0(%r3)
++END(__memcpy_z196)
++
++ENTRY(__memcpy_z10)
++	.machine "z10"
++	.machinemode "zarch_nohighgprs"
++	llgfr   %r4,%r4
++	cgije   %r4,0,.L_Z10_4
++	aghi    %r4,-1
++	lr      %r1,%r2
++	srlg    %r5,%r4,8
++	cgijlh  %r5,0,.L_Z10_13
++.L_Z10_3:
++	exrl    %r4,.L_Z10_15
++.L_Z10_4:
++	br      %r14
++.L_Z10_13:
++	cgfi    %r5,65535	# Switch to mvcle for copies >16MB
++	jh      __memcpy_mvcle
++.L_Z10_12:
++	pfd     1,768(%r3)
++	pfd     2,768(%r1)
++	mvc     0(256,%r1),0(%r3)
++	la      %r1,256(%r1)
++	la      %r3,256(%r3)
++	brctg   %r5,.L_Z10_12
++	j       .L_Z10_3
++.L_Z10_15:
++	mvc     0(1,%r1),0(%r3)
++END(__memcpy_z10)
++
++#endif /* SHARED && !defined NOT_IN_libc */
++
++#include "../memcpy.S"
++
++#if !defined SHARED || defined NOT_IN_libc
++.globl   memcpy
++.set     memcpy,__memcpy_default
++#endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memcpy.S b/sysdeps/s390/s390-32/multiarch/memcpy.S
+deleted file mode 100644
+index 5c2113f..0000000
+--- a/sysdeps/s390/s390-32/multiarch/memcpy.S
++++ /dev/null
+@@ -1,98 +0,0 @@
+-/* CPU specific memcpy implementations.  32 bit S/390 version.
+-   Copyright (C) 2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-
+-#include "sysdep.h"
+-#include "asm-syntax.h"
+-
+-/* INPUT PARAMETERS
+-     %r2 = target operands address
+-     %r3 = source operands address
+-     %r4 = number of bytes to copy.  */
+-
+-       .text
+-
+-#if defined SHARED && !defined NOT_IN_libc
+-
+-ENTRY(__memcpy_z196)
+-	.machine "z196"
+-	.machinemode "zarch_nohighgprs"
+-        llgfr   %r4,%r4
+-        ltgr    %r4,%r4
+-        je      .L_Z196_4
+-        aghi    %r4,-1
+-        lr      %r1,%r2
+-        srlg    %r5,%r4,8
+-        ltgr    %r5,%r5
+-        jne     .L_Z196_5
+-.L_Z196_3:
+-        exrl    %r4,.L_Z196_14
+-.L_Z196_4:
+-        br      %r14
+-.L_Z196_5:
+-        cgfi    %r5,262144      # Switch to mvcle for copies >64MB
+-        jh      __memcpy_mvcle
+-.L_Z196_2:
+-        pfd     1,768(%r3)
+-        pfd     2,768(%r1)
+-        mvc     0(256,%r1),0(%r3)
+-        aghi    %r5,-1
+-        la      %r1,256(%r1)
+-        la      %r3,256(%r3)
+-        jne     .L_Z196_2
+-        j       .L_Z196_3
+-.L_Z196_14:
+-        mvc     0(1,%r1),0(%r3)
+-END(__memcpy_z196)
+-
+-ENTRY(__memcpy_z10)
+-	.machine "z10"
+-	.machinemode "zarch_nohighgprs"
+-        llgfr   %r4,%r4
+-        cgije   %r4,0,.L_Z10_4
+-        aghi    %r4,-1
+-        lr      %r1,%r2
+-        srlg    %r5,%r4,8
+-        cgijlh  %r5,0,.L_Z10_13
+-.L_Z10_3:
+-        exrl    %r4,.L_Z10_15
+-.L_Z10_4:
+-        br      %r14
+-.L_Z10_13:
+-        cgfi    %r5,65535	# Switch to mvcle for copies >16MB
+-        jh      __memcpy_mvcle
+-.L_Z10_12:
+-        pfd     1,768(%r3)
+-        pfd     2,768(%r1)
+-        mvc     0(256,%r1),0(%r3)
+-        la      %r1,256(%r1)
+-        la      %r3,256(%r3)
+-        brctg   %r5,.L_Z10_12
+-        j       .L_Z10_3
+-.L_Z10_15:
+-        mvc     0(1,%r1),0(%r3)
+-END(__memcpy_z10)
+-
+-#endif
+-
+-#include "../memcpy.S"
+-
+-#if !defined SHARED || defined NOT_IN_libc
+-.globl   memcpy
+-.set     memcpy,__memcpy_g5
+-#endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memcpy.c b/sysdeps/s390/s390-32/multiarch/memcpy.c
+new file mode 100644
+index 0000000..1ff31bb
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/memcpy.c
+@@ -0,0 +1,24 @@
++/* Multiple versions of memcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* In the static lib memcpy is needed before the reloc is resolved.  */
++#if defined SHARED && !defined NOT_IN_libc
++# include <ifunc-resolve.h>
++
++s390_libc_ifunc (memcpy)
++#endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memset-s390.S b/sysdeps/s390/s390-32/multiarch/memset-s390.S
+new file mode 100644
+index 0000000..f6df2fa
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/memset-s390.S
+@@ -0,0 +1,113 @@
++/* Set a block of memory to some byte value.  32 bit S/390 version.
++   Copyright (C) 2012-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++
++#include "sysdep.h"
++#include "asm-syntax.h"
++
++/* INPUT PARAMETERS
++     %r2 = address of memory area
++     %r3 = byte to fill memory with
++     %r4 = number of bytes to fill.  */
++
++       .text
++
++#ifndef NOT_IN_libc
++
++ENTRY(__memset_z196)
++	.machine "z196"
++	.machinemode "zarch_nohighgprs"
++	llgfr   %r4,%r4
++	ltgr    %r4,%r4
++	je      .L_Z196_4
++	stc     %r3,0(%r2)
++	lr      %r1,%r2
++	cghi    %r4,1
++	je      .L_Z196_4
++	aghi    %r4,-2
++	srlg    %r5,%r4,8
++	ltgr    %r5,%r5
++	jne     .L_Z196_1
++.L_Z196_3:
++	exrl    %r4,.L_Z196_17
++.L_Z196_4:
++	br      %r14
++.L_Z196_1:
++	cgfi	%r5,1048576
++	jh	__memset_mvcle	   # Switch to mvcle for >256MB
++.L_Z196_2:
++	pfd     2,1024(%r1)
++	mvc     1(256,%r1),0(%r1)
++	aghi    %r5,-1
++	la      %r1,256(%r1)
++	jne     .L_Z196_2
++	j       .L_Z196_3
++.L_Z196_17:
++	mvc     1(1,%r1),0(%r1)
++END(__memset_z196)
++
++ENTRY(__memset_z10)
++	.machine "z10"
++	.machinemode "zarch_nohighgprs"
++	llgfr   %r4,%r4
++	cgije   %r4,0,.L_Z10_4
++	stc     %r3,0(%r2)
++	lr      %r1,%r2
++	cgije   %r4,1,.L_Z10_4
++	aghi    %r4,-2
++	srlg    %r5,%r4,8
++	cgijlh  %r5,0,.L_Z10_15
++.L_Z10_3:
++	exrl    %r4,.L_Z10_18
++.L_Z10_4:
++	br      %r14
++.L_Z10_15:
++	cgfi	%r5,163840          # Switch to mvcle for >40MB
++	jh	__memset_mvcle
++.L_Z10_14:
++	pfd     2,1024(%r1)
++	mvc     1(256,%r1),0(%r1)
++	la      %r1,256(%r1)
++	brctg   %r5,.L_Z10_14
++	j       .L_Z10_3
++.L_Z10_18:
++	mvc     1(1,%r1),0(%r1)
++END(__memset_z10)
++
++ENTRY(__memset_mvcle)
++	ahi	%r4,2               # take back the change done by the caller
++	lr      %r0,%r2             # save source address
++	lr      %r1,%r3             # move pad byte to R1
++	lr      %r3,%r4
++	sr      %r4,%r4             # no source for MVCLE, only a pad byte
++	sr      %r5,%r5
++.L0:    mvcle   %r2,%r4,0(%r1)      # thats it, MVCLE is your friend
++	jo      .L0
++	lr      %r2,%r0             # return value is source address
++.L1:
++	br      %r14
++END(__memset_mvcle)
++
++#endif /* !NOT_IN_libc */
++
++#include "../memset.S"
++
++#ifdef NOT_IN_libc
++.globl   memset
++.set     memset,__memset_default
++#endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memset.S b/sysdeps/s390/s390-32/multiarch/memset.S
+deleted file mode 100644
+index 54aa028..0000000
+--- a/sysdeps/s390/s390-32/multiarch/memset.S
++++ /dev/null
+@@ -1,113 +0,0 @@
+-/* Set a block of memory to some byte value.  32 bit S/390 version.
+-   Copyright (C) 2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-
+-#include "sysdep.h"
+-#include "asm-syntax.h"
+-
+-/* INPUT PARAMETERS
+-     %r2 = address of memory area
+-     %r3 = byte to fill memory with
+-     %r4 = number of bytes to fill.  */
+-
+-       .text
+-
+-#ifndef NOT_IN_libc
+-
+-ENTRY(__memset_z196)
+-	.machine "z196"
+-	.machinemode "zarch_nohighgprs"
+-        llgfr   %r4,%r4
+-        ltgr    %r4,%r4
+-        je      .L_Z196_4
+-        stc     %r3,0(%r2)
+-        lr      %r1,%r2
+-        cghi    %r4,1
+-        je      .L_Z196_4
+-        aghi    %r4,-2
+-        srlg    %r5,%r4,8
+-        ltgr    %r5,%r5
+-        jne     .L_Z196_1
+-.L_Z196_3:
+-        exrl    %r4,.L_Z196_17
+-.L_Z196_4:
+-        br      %r14
+-.L_Z196_1:
+-	cgfi	%r5,1048576
+-	jh	__memset_mvcle	   # Switch to mvcle for >256MB
+-.L_Z196_2:
+-        pfd     2,1024(%r1)
+-        mvc     1(256,%r1),0(%r1)
+-        aghi    %r5,-1
+-        la      %r1,256(%r1)
+-        jne     .L_Z196_2
+-        j       .L_Z196_3
+-.L_Z196_17:
+-        mvc     1(1,%r1),0(%r1)
+-END(__memset_z196)
+-
+-ENTRY(__memset_z10)
+-	.machine "z10"
+-	.machinemode "zarch_nohighgprs"
+-        llgfr   %r4,%r4
+-        cgije   %r4,0,.L_Z10_4
+-        stc     %r3,0(%r2)
+-        lr      %r1,%r2
+-        cgije   %r4,1,.L_Z10_4
+-        aghi    %r4,-2
+-        srlg    %r5,%r4,8
+-        cgijlh  %r5,0,.L_Z10_15
+-.L_Z10_3:
+-        exrl    %r4,.L_Z10_18
+-.L_Z10_4:
+-        br      %r14
+-.L_Z10_15:
+-	cgfi	%r5,163840          # Switch to mvcle for >40MB
+-	jh	__memset_mvcle
+-.L_Z10_14:
+-        pfd     2,1024(%r1)
+-        mvc     1(256,%r1),0(%r1)
+-        la      %r1,256(%r1)
+-        brctg   %r5,.L_Z10_14
+-        j       .L_Z10_3
+-.L_Z10_18:
+-        mvc     1(1,%r1),0(%r1)
+-END(__memset_z10)
+-
+-ENTRY(__memset_mvcle)
+-	ahi	%r4,2               # take back the change done by the caller
+-	lr      %r0,%r2             # save source address
+-	lr      %r1,%r3             # move pad byte to R1
+-	lr      %r3,%r4
+-	sr      %r4,%r4             # no source for MVCLE, only a pad byte
+-	sr      %r5,%r5
+-.L0:    mvcle   %r2,%r4,0(%r1)      # thats it, MVCLE is your friend
+-	jo      .L0
+-	lr      %r2,%r0             # return value is source address
+-.L1:
+-	br      %r14
+-END(__memset_mvcle)
+-
+-#endif
+-
+-#include "../memset.S"
+-
+-#ifdef NOT_IN_libc
+-.globl   memset
+-.set     memset,__memset_g5
+-#endif
+diff --git a/sysdeps/s390/s390-32/multiarch/memset.c b/sysdeps/s390/s390-32/multiarch/memset.c
+new file mode 100644
+index 0000000..3b15446
+--- /dev/null
++++ b/sysdeps/s390/s390-32/multiarch/memset.c
+@@ -0,0 +1,23 @@
++/* Multiple versions of memset.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef NOT_IN_libc
++# include <ifunc-resolve.h>
++
++s390_libc_ifunc (memset)
++#endif
+diff --git a/sysdeps/s390/s390-64/memcmp.S b/sysdeps/s390/s390-64/memcmp.S
+index eb5370f..1d7e788 100644
+--- a/sysdeps/s390/s390-64/memcmp.S
++++ b/sysdeps/s390/s390-64/memcmp.S
+@@ -27,36 +27,36 @@
+ 
+        .text
+ #ifdef USE_MULTIARCH
+-ENTRY(__memcmp_z900)
++ENTRY(__memcmp_default)
+ #else
+ ENTRY(memcmp)
+ #endif
+ 	.machine "z900"
+-        ltgr    %r4,%r4
+-        je      .L_Z900_4
+-        aghi    %r4,-1
+-        srlg    %r1,%r4,8
+-        ltgr    %r1,%r1
+-        jne     .L_Z900_12
++	ltgr    %r4,%r4
++	je      .L_Z900_4
++	aghi    %r4,-1
++	srlg    %r1,%r4,8
++	ltgr    %r1,%r1
++	jne     .L_Z900_12
+ .L_Z900_3:
+-        larl    %r1,.L_Z900_15
+-        ex      %r4,0(%r1)
++	larl    %r1,.L_Z900_15
++	ex      %r4,0(%r1)
+ .L_Z900_4:
+-        ipm     %r2
+-        sllg    %r2,%r2,34
+-        srag    %r2,%r2,62
+-        br      %r14
++	ipm     %r2
++	sllg    %r2,%r2,34
++	srag    %r2,%r2,62
++	br      %r14
+ .L_Z900_12:
+-        clc     0(256,%r3),0(%r2)
+-        jne     .L_Z900_4
+-        la      %r3,256(%r3)
+-        la      %r2,256(%r2)
+-        brctg   %r1,.L_Z900_12
+-        j       .L_Z900_3
++	clc     0(256,%r3),0(%r2)
++	jne     .L_Z900_4
++	la      %r3,256(%r3)
++	la      %r2,256(%r2)
++	brctg   %r1,.L_Z900_12
++	j       .L_Z900_3
+ .L_Z900_15:
+-        clc     0(1,%r3),0(%r2)
++	clc     0(1,%r3),0(%r2)
+ #ifdef USE_MULTIARCH
+-END(__memcmp_z900)
++END(__memcmp_default)
+ #else
+ END(memcmp)
+ libc_hidden_builtin_def (memcmp)
+diff --git a/sysdeps/s390/s390-64/memcpy.S b/sysdeps/s390/s390-64/memcpy.S
+index 61fca0b..6827a0e 100644
+--- a/sysdeps/s390/s390-64/memcpy.S
++++ b/sysdeps/s390/s390-64/memcpy.S
+@@ -29,37 +29,37 @@
+        .text
+ 
+ #ifdef USE_MULTIARCH
+-ENTRY(__memcpy_z900)
++ENTRY(__memcpy_default)
+ #else
+ ENTRY(memcpy)
+ #endif
+ 	.machine "z900"
+-        ltgr    %r4,%r4
+-        je      .L_Z900_4
+-        aghi    %r4,-1
+-        srlg    %r5,%r4,8
+-        ltgr    %r5,%r5
+-        lgr     %r1,%r2
+-        jne     .L_Z900_13
++	ltgr    %r4,%r4
++	je      .L_Z900_4
++	aghi    %r4,-1
++	srlg    %r5,%r4,8
++	ltgr    %r5,%r5
++	lgr     %r1,%r2
++	jne     .L_Z900_13
+ .L_Z900_3:
+-        larl    %r5,.L_Z900_15
+-        ex      %r4,0(%r5)
++	larl    %r5,.L_Z900_15
++	ex      %r4,0(%r5)
+ .L_Z900_4:
+-        br      %r14
++	br      %r14
+ .L_Z900_13:
+-        chi	%r5,4096             # Switch to mvcle for copies >1MB
+-        jh      __memcpy_mvcle
++	chi	%r5,4096             # Switch to mvcle for copies >1MB
++	jh      __memcpy_mvcle
+ .L_Z900_12:
+-        mvc     0(256,%r1),0(%r3)
+-        la      %r1,256(%r1)
+-        la      %r3,256(%r3)
+-        brctg   %r5,.L_Z900_12
+-        j       .L_Z900_3
++	mvc     0(256,%r1),0(%r3)
++	la      %r1,256(%r1)
++	la      %r3,256(%r3)
++	brctg   %r5,.L_Z900_12
++	j       .L_Z900_3
+ .L_Z900_15:
+-        mvc     0(1,%r1),0(%r3)
++	mvc     0(1,%r1),0(%r3)
+ 
+ #ifdef USE_MULTIARCH
+-END(__memcpy_z900)
++END(__memcpy_default)
+ #else
+ END(memcpy)
+ libc_hidden_builtin_def (memcpy)
+diff --git a/sysdeps/s390/s390-64/memset.S b/sysdeps/s390/s390-64/memset.S
+index 8185e94..b1ba9e2 100644
+--- a/sysdeps/s390/s390-64/memset.S
++++ b/sysdeps/s390/s390-64/memset.S
+@@ -29,35 +29,35 @@
+        .text
+ 
+ #ifdef USE_MULTIARCH
+-ENTRY(__memset_z900)
++ENTRY(__memset_default)
+ #else
+ ENTRY(memset)
+ #endif
+ 	.machine "z900"
+-        ltgr    %r4,%r4
+-        je      .L_Z900_4
+-        stc     %r3,0(%r2)
+-        cghi    %r4,1
+-        lgr     %r1,%r2
+-        je      .L_Z900_4
+-        aghi    %r4,-2
+-        srlg    %r3,%r4,8
+-        ltgr    %r3,%r3
+-        jne     .L_Z900_14
++	ltgr    %r4,%r4
++	je      .L_Z900_4
++	stc     %r3,0(%r2)
++	cghi    %r4,1
++	lgr     %r1,%r2
++	je      .L_Z900_4
++	aghi    %r4,-2
++	srlg    %r3,%r4,8
++	ltgr    %r3,%r3
++	jne     .L_Z900_14
+ .L_Z900_3:
+-        larl    %r3,.L_Z900_18
+-        ex      %r4,0(%r3)
++	larl    %r3,.L_Z900_18
++	ex      %r4,0(%r3)
+ .L_Z900_4:
+-        br      %r14
++	br      %r14
+ .L_Z900_14:
+-        mvc     1(256,%r1),0(%r1)
+-        la      %r1,256(%r1)
+-        brctg   %r3,.L_Z900_14
+-        j       .L_Z900_3
++	mvc     1(256,%r1),0(%r1)
++	la      %r1,256(%r1)
++	brctg   %r3,.L_Z900_14
++	j       .L_Z900_3
+ .L_Z900_18:
+-        mvc     1(1,%r1),0(%r1)
++	mvc     1(1,%r1),0(%r1)
+ #ifdef USE_MULTIARCH
+-END(__memset_z900)
++END(__memset_default)
+ #else
+ END(memset)
+ libc_hidden_builtin_def (memset)
+diff --git a/sysdeps/s390/s390-64/multiarch/Makefile b/sysdeps/s390/s390-64/multiarch/Makefile
+index 9baeecd..91053b5 100644
+--- a/sysdeps/s390/s390-64/multiarch/Makefile
++++ b/sysdeps/s390/s390-64/multiarch/Makefile
+@@ -1,3 +1,4 @@
+ ifeq ($(subdir),string)
+-sysdep_routines += ifunc-resolve memset memcpy memcmp
++sysdep_routines += memset memset-s390x memcpy memcpy-s390x \
++		   memcmp memcmp-s390x
+ endif
+diff --git a/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c b/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
+deleted file mode 100644
+index b6be970..0000000
+--- a/sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
++++ /dev/null
+@@ -1,76 +0,0 @@
+-/* IFUNC resolver function for CPU specific functions.
+-   64 bit S/390 version.
+-   Copyright (C) 2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <unistd.h>
+-#include <dl-procinfo.h>
+-
+-#define STFLE_BITS_Z10  34 /* General instructions extension */
+-#define STFLE_BITS_Z196 45 /* Distinct operands, pop ... */
+-
+-#ifndef NOT_IN_libc
+-
+-#define IFUNC_RESOLVE(FUNC)						\
+-  asm (".globl " #FUNC "\n\t"						\
+-       ".type  " #FUNC ",@gnu_indirect_function\n\t"			\
+-       ".set   " #FUNC ",__resolve_" #FUNC "\n\t"			\
+-       ".globl __GI_" #FUNC "\n\t"					\
+-       ".set   __GI_" #FUNC "," #FUNC "\n");				\
+-									\
+-  /* Make the declarations of the optimized functions hidden in order
+-     to prevent GOT slots being generated for them. */			\
+-  extern void *__##FUNC##_z196 attribute_hidden;			\
+-  extern void *__##FUNC##_z10 attribute_hidden;				\
+-  extern void *__##FUNC##_z900 attribute_hidden;			\
+-									\
+-  void *__resolve_##FUNC (unsigned long int dl_hwcap)			\
+-  {									\
+-    if (dl_hwcap & HWCAP_S390_STFLE)					\
+-      {									\
+-	/* We want just 1 double word to be returned.  */		\
+-	register unsigned long reg0 asm("0") = 0;			\
+-	unsigned long stfle_bits;					\
+-									\
+-	asm volatile(".machine push"        "\n\t"			\
+-		     ".machine \"z9-109\""  "\n\t"			\
+-		     "stfle %0"             "\n\t"			\
+-		     ".machine pop"         "\n"			\
+-		     : "=QS" (stfle_bits), "+d" (reg0)			\
+-		     : : "cc");						\
+-									\
+-	if ((stfle_bits & (1UL << (63 - STFLE_BITS_Z196))) != 0)	\
+-	  return &__##FUNC##_z196;					\
+-	else if ((stfle_bits & (1UL << (63 - STFLE_BITS_Z10))) != 0)	\
+-	  return &__##FUNC##_z10;					\
+-	else								\
+-	  return &__##FUNC##_z900;					\
+-      }									\
+-    else								\
+-      return &__##FUNC##_z900;						\
+-  }
+-
+-IFUNC_RESOLVE(memset)
+-IFUNC_RESOLVE(memcmp)
+-asm(".weak bcmp ; bcmp = memcmp");
+-
+-/* In the static lib memcpy is needed before the reloc is resolved.  */
+-#ifdef SHARED
+-IFUNC_RESOLVE(memcpy)
+-#endif
+-
+-#endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memcmp-s390x.S b/sysdeps/s390/s390-64/multiarch/memcmp-s390x.S
+new file mode 100644
+index 0000000..6d55b0b
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/memcmp-s390x.S
+@@ -0,0 +1,101 @@
++/* CPU specific memcmp implementations.  64 bit S/390 version.
++   Copyright (C) 2012-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++
++#include "sysdep.h"
++#include "asm-syntax.h"
++
++/* INPUT PARAMETERS
++     %r2 = address of first memory area
++     %r3 = address of second memory area
++     %r4 = number of bytes to compare.  */
++
++       .text
++
++#ifndef NOT_IN_libc
++
++ENTRY(__memcmp_z196)
++	.machine "z196"
++	ltgr    %r4,%r4
++	je      .L_Z196_4
++	aghi    %r4,-1
++	srlg    %r1,%r4,8
++	ltgr    %r1,%r1
++	jne     .L_Z196_2
++.L_Z196_3:
++	exrl    %r4,.L_Z196_14
++.L_Z196_4:
++	ipm     %r2
++	sllg    %r2,%r2,34
++	srag    %r2,%r2,62
++	br      %r14
++.L_Z196_17:
++	la      %r3,256(%r3)
++	la      %r2,256(%r2)
++	aghi    %r1,-1
++	je      .L_Z196_3
++.L_Z196_2:
++	pfd     1,512(%r3)
++	pfd     1,512(%r2)
++	clc     0(256,%r3),0(%r2)
++	je      .L_Z196_17
++	ipm     %r2
++	sllg    %r2,%r2,34
++	srag    %r2,%r2,62
++	br      %r14
++.L_Z196_14:
++	clc     0(1,%r3),0(%r2)
++END(__memcmp_z196)
++
++ENTRY(__memcmp_z10)
++	.machine "z10"
++	ltgr    %r4,%r4
++	je      .L_Z10_4
++	aghi    %r4,-1
++	srlg    %r1,%r4,8
++	cgijlh  %r1,0,.L_Z10_12
++.L_Z10_3:
++	exrl    %r4,.L_Z10_15
++.L_Z10_4:
++	ipm     %r2
++	sllg    %r2,%r2,34
++	srag    %r2,%r2,62
++	br      %r14
++.L_Z10_12:
++	pfd     1,512(%r3)
++	pfd     1,512(%r2)
++	clc     0(256,%r3),0(%r2)
++	jne     .L_Z10_4
++	la      %r3,256(%r3)
++	la      %r2,256(%r2)
++	brctg   %r1,.L_Z10_12
++	j       .L_Z10_3
++.L_Z10_15:
++	clc     0(1,%r3),0(%r2)
++END(__memcmp_z10)
++
++#endif /* !NOT_IN_libc */
++
++#include "../memcmp.S"
++
++#ifdef NOT_IN_libc
++.globl   memcmp
++.set     memcmp,__memcmp_default
++.weak    bcmp
++.set	 bcmp,__memcmp_default
++#endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memcmp.S b/sysdeps/s390/s390-64/multiarch/memcmp.S
+deleted file mode 100644
+index 9a8cba8..0000000
+--- a/sysdeps/s390/s390-64/multiarch/memcmp.S
++++ /dev/null
+@@ -1,101 +0,0 @@
+-/* CPU specific memcmp implementations.  64 bit S/390 version.
+-   Copyright (C) 2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-
+-#include "sysdep.h"
+-#include "asm-syntax.h"
+-
+-/* INPUT PARAMETERS
+-     %r2 = address of first memory area
+-     %r3 = address of second memory area
+-     %r4 = number of bytes to compare.  */
+-
+-       .text
+-
+-#ifndef NOT_IN_libc
+-
+-ENTRY(__memcmp_z196)
+-	.machine "z196"
+-        ltgr    %r4,%r4
+-        je      .L_Z196_4
+-        aghi    %r4,-1
+-        srlg    %r1,%r4,8
+-        ltgr    %r1,%r1
+-        jne     .L_Z196_2
+-.L_Z196_3:
+-        exrl    %r4,.L_Z196_14
+-.L_Z196_4:
+-        ipm     %r2
+-        sllg    %r2,%r2,34
+-        srag    %r2,%r2,62
+-        br      %r14
+-.L_Z196_17:
+-        la      %r3,256(%r3)
+-        la      %r2,256(%r2)
+-        aghi    %r1,-1
+-        je      .L_Z196_3
+-.L_Z196_2:
+-        pfd     1,512(%r3)
+-        pfd     1,512(%r2)
+-        clc     0(256,%r3),0(%r2)
+-        je      .L_Z196_17
+-        ipm     %r2
+-        sllg    %r2,%r2,34
+-        srag    %r2,%r2,62
+-        br      %r14
+-.L_Z196_14:
+-        clc     0(1,%r3),0(%r2)
+-END(__memcmp_z196)
+-
+-ENTRY(__memcmp_z10)
+-	.machine "z10"
+-        ltgr    %r4,%r4
+-        je      .L_Z10_4
+-        aghi    %r4,-1
+-        srlg    %r1,%r4,8
+-        cgijlh  %r1,0,.L_Z10_12
+-.L_Z10_3:
+-        exrl    %r4,.L_Z10_15
+-.L_Z10_4:
+-        ipm     %r2
+-        sllg    %r2,%r2,34
+-        srag    %r2,%r2,62
+-        br      %r14
+-.L_Z10_12:
+-        pfd     1,512(%r3)
+-        pfd     1,512(%r2)
+-        clc     0(256,%r3),0(%r2)
+-        jne     .L_Z10_4
+-        la      %r3,256(%r3)
+-        la      %r2,256(%r2)
+-        brctg   %r1,.L_Z10_12
+-        j       .L_Z10_3
+-.L_Z10_15:
+-        clc     0(1,%r3),0(%r2)
+-END(__memcmp_z10)
+-
+-#endif
+-
+-#include "../memcmp.S"
+-
+-#ifdef NOT_IN_libc
+-.globl   memcmp
+-.set     memcmp,__memcmp_z900
+-.weak    bcmp
+-.set	 bcmp,__memcmp_z900
+-#endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memcmp.c b/sysdeps/s390/s390-64/multiarch/memcmp.c
+new file mode 100644
+index 0000000..7089d56
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/memcmp.c
+@@ -0,0 +1,24 @@
++/* Multiple versions of memcmp.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef NOT_IN_libc
++# include <ifunc-resolve.h>
++
++s390_libc_ifunc (memcmp)
++asm(".weak bcmp ; bcmp = memcmp");
++#endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memcpy-s390x.S b/sysdeps/s390/s390-64/multiarch/memcpy-s390x.S
+new file mode 100644
+index 0000000..cdb34f1
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/memcpy-s390x.S
+@@ -0,0 +1,94 @@
++/* CPU specific memcpy implementations.  64 bit S/390 version.
++   Copyright (C) 2012-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++
++#include "sysdep.h"
++#include "asm-syntax.h"
++
++/* INPUT PARAMETERS
++     %r2 = target operands address
++     %r3 = source operands address
++     %r4 = number of bytes to copy.  */
++
++       .text
++
++#if defined SHARED && !defined NOT_IN_libc
++
++ENTRY(__memcpy_z196)
++	.machine "z196"
++	ltgr    %r4,%r4
++	je      .L_Z196_4
++	aghi    %r4,-1
++	lgr     %r1,%r2
++	srlg    %r5,%r4,8
++	ltgr    %r5,%r5
++	jne     .L_Z196_5
++.L_Z196_3:
++	exrl    %r4,.L_Z196_14
++.L_Z196_4:
++	br      %r14
++.L_Z196_5:
++	cgfi    %r5,262144      # Switch to mvcle for copies >64MB
++	jh      __memcpy_mvcle
++.L_Z196_2:
++	pfd     1,768(%r3)
++	pfd     2,768(%r1)
++	mvc     0(256,%r1),0(%r3)
++	aghi    %r5,-1
++	la      %r1,256(%r1)
++	la      %r3,256(%r3)
++	jne     .L_Z196_2
++	j       .L_Z196_3
++.L_Z196_14:
++	mvc     0(1,%r1),0(%r3)
++END(__memcpy_z196)
++
++ENTRY(__memcpy_z10)
++	.machine "z10"
++	cgije   %r4,0,.L_Z10_4
++	aghi    %r4,-1
++	lgr     %r1,%r2
++	srlg    %r5,%r4,8
++	cgijlh  %r5,0,.L_Z10_13
++.L_Z10_3:
++	exrl    %r4,.L_Z10_15
++.L_Z10_4:
++	br      %r14
++.L_Z10_13:
++	cgfi    %r5,65535	# Switch to mvcle for copies >16MB
++	jh      __memcpy_mvcle
++.L_Z10_12:
++	pfd     1,768(%r3)
++	pfd     2,768(%r1)
++	mvc     0(256,%r1),0(%r3)
++	la      %r1,256(%r1)
++	la      %r3,256(%r3)
++	brctg   %r5,.L_Z10_12
++	j       .L_Z10_3
++.L_Z10_15:
++	mvc     0(1,%r1),0(%r3)
++END(__memcpy_z10)
++
++#endif /* SHARED && !defined NOT_IN_libc  */
++
++#include "../memcpy.S"
++
++#if !defined SHARED || defined NOT_IN_libc
++.globl   memcpy
++.set     memcpy,__memcpy_default
++#endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memcpy.S b/sysdeps/s390/s390-64/multiarch/memcpy.S
+deleted file mode 100644
+index 525588f..0000000
+--- a/sysdeps/s390/s390-64/multiarch/memcpy.S
++++ /dev/null
+@@ -1,94 +0,0 @@
+-/* CPU specific memcpy implementations.  64 bit S/390 version.
+-   Copyright (C) 2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-
+-#include "sysdep.h"
+-#include "asm-syntax.h"
+-
+-/* INPUT PARAMETERS
+-     %r2 = target operands address
+-     %r3 = source operands address
+-     %r4 = number of bytes to copy.  */
+-
+-       .text
+-
+-#if defined SHARED && !defined NOT_IN_libc
+-
+-ENTRY(__memcpy_z196)
+-        .machine "z196"
+-        ltgr    %r4,%r4
+-        je      .L_Z196_4
+-        aghi    %r4,-1
+-        lgr     %r1,%r2
+-        srlg    %r5,%r4,8
+-        ltgr    %r5,%r5
+-        jne     .L_Z196_5
+-.L_Z196_3:
+-        exrl    %r4,.L_Z196_14
+-.L_Z196_4:
+-        br      %r14
+-.L_Z196_5:
+-        cgfi    %r5,262144      # Switch to mvcle for copies >64MB
+-        jh      __memcpy_mvcle
+-.L_Z196_2:
+-        pfd     1,768(%r3)
+-        pfd     2,768(%r1)
+-        mvc     0(256,%r1),0(%r3)
+-        aghi    %r5,-1
+-        la      %r1,256(%r1)
+-        la      %r3,256(%r3)
+-        jne     .L_Z196_2
+-        j       .L_Z196_3
+-.L_Z196_14:
+-        mvc     0(1,%r1),0(%r3)
+-END(__memcpy_z196)
+-
+-ENTRY(__memcpy_z10)
+-	.machine "z10"
+-        cgije   %r4,0,.L_Z10_4
+-        aghi    %r4,-1
+-        lgr     %r1,%r2
+-        srlg    %r5,%r4,8
+-        cgijlh  %r5,0,.L_Z10_13
+-.L_Z10_3:
+-        exrl    %r4,.L_Z10_15
+-.L_Z10_4:
+-        br      %r14
+-.L_Z10_13:
+-        cgfi    %r5,65535	# Switch to mvcle for copies >16MB
+-        jh      __memcpy_mvcle
+-.L_Z10_12:
+-        pfd     1,768(%r3)
+-        pfd     2,768(%r1)
+-        mvc     0(256,%r1),0(%r3)
+-        la      %r1,256(%r1)
+-        la      %r3,256(%r3)
+-        brctg   %r5,.L_Z10_12
+-        j       .L_Z10_3
+-.L_Z10_15:
+-        mvc     0(1,%r1),0(%r3)
+-END(__memcpy_z10)
+-
+-#endif
+-
+-#include "../memcpy.S"
+-
+-#if !defined SHARED || defined NOT_IN_libc
+-.globl   memcpy
+-.set     memcpy,__memcpy_z900
+-#endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memcpy.c b/sysdeps/s390/s390-64/multiarch/memcpy.c
+new file mode 100644
+index 0000000..1ff31bb
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/memcpy.c
+@@ -0,0 +1,24 @@
++/* Multiple versions of memcpy.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* In the static lib memcpy is needed before the reloc is resolved.  */
++#if defined SHARED && !defined NOT_IN_libc
++# include <ifunc-resolve.h>
++
++s390_libc_ifunc (memcpy)
++#endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memset-s390x.S b/sysdeps/s390/s390-64/multiarch/memset-s390x.S
+new file mode 100644
+index 0000000..0037bdf
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/memset-s390x.S
+@@ -0,0 +1,109 @@
++/* Set a block of memory to some byte value.  64 bit S/390 version.
++   Copyright (C) 2012-2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++
++#include "sysdep.h"
++#include "asm-syntax.h"
++
++/* INPUT PARAMETERS
++     %r2 = address of memory area
++     %r3 = byte to fill memory with
++     %r4 = number of bytes to fill.  */
++
++       .text
++
++#ifndef NOT_IN_libc
++
++ENTRY(__memset_z196)
++	.machine "z196"
++	ltgr    %r4,%r4
++	je      .L_Z196_4
++	stc     %r3,0(%r2)
++	lgr     %r1,%r2
++	cghi    %r4,1
++	je      .L_Z196_4
++	aghi    %r4,-2
++	srlg    %r5,%r4,8
++	ltgr    %r5,%r5
++	jne     .L_Z196_1
++.L_Z196_3:
++	exrl    %r4,.L_Z196_17
++.L_Z196_4:
++	br      %r14
++.L_Z196_1:
++	cgfi	%r5,1048576
++	jh	__memset_mvcle	   # Switch to mvcle for >256MB
++.L_Z196_2:
++	pfd     2,1024(%r1)
++	mvc     1(256,%r1),0(%r1)
++	aghi    %r5,-1
++	la      %r1,256(%r1)
++	jne     .L_Z196_2
++	j       .L_Z196_3
++.L_Z196_17:
++	mvc     1(1,%r1),0(%r1)
++END(__memset_z196)
++
++ENTRY(__memset_z10)
++	.machine "z10"
++	cgije   %r4,0,.L_Z10_4
++	stc     %r3,0(%r2)
++	lgr     %r1,%r2
++	cgije   %r4,1,.L_Z10_4
++	aghi    %r4,-2
++	srlg    %r5,%r4,8
++	cgijlh  %r5,0,.L_Z10_15
++.L_Z10_3:
++	exrl    %r4,.L_Z10_18
++.L_Z10_4:
++	br      %r14
++.L_Z10_15:
++	cgfi	%r5,163840          # Switch to mvcle for >40MB
++	jh	__memset_mvcle
++.L_Z10_14:
++	pfd     2,1024(%r1)
++	mvc     1(256,%r1),0(%r1)
++	la      %r1,256(%r1)
++	brctg   %r5,.L_Z10_14
++	j       .L_Z10_3
++.L_Z10_18:
++	mvc     1(1,%r1),0(%r1)
++END(__memset_z10)
++
++ENTRY(__memset_mvcle)
++	aghi	%r4,2               # take back the change done by the caller
++	lgr	%r0,%r2		    # save source address
++	lgr	%r1,%r3		    # move pad byte to R1
++	lgr	%r3,%r4             # move length to r3
++	sgr	%r4,%r4		    # no source for MVCLE, only a pad byte
++	sgr	%r5,%r5
++.L0:	mvcle	%r2,%r4,0(%r1)	    # thats it, MVCLE is your friend
++	jo	.L0
++	lgr	%r2,%r0		    # return value is source address
++.L1:
++	br	%r14
++END(__memset_mvcle)
++
++#endif /* !NOT_IN_libc */
++
++#include "../memset.S"
++
++#ifdef NOT_IN_libc
++.globl   memset
++.set     memset,__memset_default
++#endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memset.S b/sysdeps/s390/s390-64/multiarch/memset.S
+deleted file mode 100644
+index 8dbb3cb..0000000
+--- a/sysdeps/s390/s390-64/multiarch/memset.S
++++ /dev/null
+@@ -1,109 +0,0 @@
+-/* Set a block of memory to some byte value.  64 bit S/390 version.
+-   Copyright (C) 2012 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-
+-#include "sysdep.h"
+-#include "asm-syntax.h"
+-
+-/* INPUT PARAMETERS
+-     %r2 = address of memory area
+-     %r3 = byte to fill memory with
+-     %r4 = number of bytes to fill.  */
+-
+-       .text
+-
+-#ifndef NOT_IN_libc
+-
+-ENTRY(__memset_z196)
+-	.machine "z196"
+-        ltgr    %r4,%r4
+-        je      .L_Z196_4
+-        stc     %r3,0(%r2)
+-        lgr     %r1,%r2
+-        cghi    %r4,1
+-        je      .L_Z196_4
+-        aghi    %r4,-2
+-        srlg    %r5,%r4,8
+-        ltgr    %r5,%r5
+-        jne     .L_Z196_1
+-.L_Z196_3:
+-        exrl    %r4,.L_Z196_17
+-.L_Z196_4:
+-        br      %r14
+-.L_Z196_1:
+-	cgfi	%r5,1048576
+-	jh	__memset_mvcle	   # Switch to mvcle for >256MB
+-.L_Z196_2:
+-        pfd     2,1024(%r1)
+-        mvc     1(256,%r1),0(%r1)
+-        aghi    %r5,-1
+-        la      %r1,256(%r1)
+-        jne     .L_Z196_2
+-        j       .L_Z196_3
+-.L_Z196_17:
+-        mvc     1(1,%r1),0(%r1)
+-END(__memset_z196)
+-
+-ENTRY(__memset_z10)
+-	.machine "z10"
+-        cgije   %r4,0,.L_Z10_4
+-        stc     %r3,0(%r2)
+-        lgr     %r1,%r2
+-        cgije   %r4,1,.L_Z10_4
+-        aghi    %r4,-2
+-        srlg    %r5,%r4,8
+-        cgijlh  %r5,0,.L_Z10_15
+-.L_Z10_3:
+-        exrl    %r4,.L_Z10_18
+-.L_Z10_4:
+-        br      %r14
+-.L_Z10_15:
+-	cgfi	%r5,163840          # Switch to mvcle for >40MB
+-	jh	__memset_mvcle
+-.L_Z10_14:
+-        pfd     2,1024(%r1)
+-        mvc     1(256,%r1),0(%r1)
+-        la      %r1,256(%r1)
+-        brctg   %r5,.L_Z10_14
+-        j       .L_Z10_3
+-.L_Z10_18:
+-        mvc     1(1,%r1),0(%r1)
+-END(__memset_z10)
+-
+-ENTRY(__memset_mvcle)
+-	aghi	%r4,2               # take back the change done by the caller
+-	lgr	%r0,%r2		    # save source address
+-	lgr	%r1,%r3		    # move pad byte to R1
+-	lgr	%r3,%r4             # move length to r3
+-	sgr	%r4,%r4		    # no source for MVCLE, only a pad byte
+-	sgr	%r5,%r5
+-.L0:	mvcle	%r2,%r4,0(%r1)	    # thats it, MVCLE is your friend
+-	jo	.L0
+-	lgr	%r2,%r0		    # return value is source address
+-.L1:
+-	br	%r14
+-END(__memset_mvcle)
+-
+-#endif
+-
+-#include "../memset.S"
+-
+-#ifdef NOT_IN_libc
+-.globl   memset
+-.set     memset,__memset_z900
+-#endif
+diff --git a/sysdeps/s390/s390-64/multiarch/memset.c b/sysdeps/s390/s390-64/multiarch/memset.c
+new file mode 100644
+index 0000000..3b15446
+--- /dev/null
++++ b/sysdeps/s390/s390-64/multiarch/memset.c
+@@ -0,0 +1,23 @@
++/* Multiple versions of memset.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef NOT_IN_libc
++# include <ifunc-resolve.h>
++
++s390_libc_ifunc (memset)
++#endif
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-6.patch b/SOURCES/glibc-rh1268008-6.patch
new file mode 100644
index 0000000..83f9e1f
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-6.patch
@@ -0,0 +1,77 @@
+From 571d49008b0c44b4aabb66b2ac3ce690fd802466 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:45:29 +0200
+Subject: [PATCH 06/30] S390: Add hwcaps value for vector facility.
+
+upstream-commit-id: 4e28fa80886c71e6aaf85016b82ce981c0f12e6d
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00075.html
+
+The HWCAP_S390_VX flag in hwcap field of auxiliary vector indicates
+if the vector facility is available and the kernel is aware of it.
+This can be tested with LD_SHOW_AUXV=1 <prog>.
+Currently it does not show te, because it was not incremented
+by commit "S/390: Add hwcap value for transactional execution.".
+Thus _DL_HWCAP_COUNT is incremented by two.
+
+ChangeLog:
+
+	* sysdeps/s390/dl-procinfo.c (_dl_s390_platforms): Add vector flag.
+	* sysdeps/s390/dl-procinfo.h: Add vector capability.
+	* sysdeps/unix/sysv/linux/s390/bits/hwcap.h (HWCAP_S390_VX): Define.
+---
+ sysdeps/s390/dl-procinfo.c                | 4 ++--
+ sysdeps/s390/dl-procinfo.h                | 3 ++-
+ sysdeps/unix/sysv/linux/s390/bits/hwcap.h | 1 +
+ 3 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/sysdeps/s390/dl-procinfo.c b/sysdeps/s390/dl-procinfo.c
+index 9590146..96d438a 100644
+--- a/sysdeps/s390/dl-procinfo.c
++++ b/sysdeps/s390/dl-procinfo.c
+@@ -46,11 +46,11 @@
+ #if !defined PROCINFO_DECL && defined SHARED
+   ._dl_s390_cap_flags
+ #else
+-PROCINFO_CLASS const char _dl_s390_cap_flags[11][9]
++PROCINFO_CLASS const char _dl_s390_cap_flags[12][9]
+ #endif
+ #ifndef PROCINFO_DECL
+ = {
+-     "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", "edat", "etf3eh", "highgprs", "te"
++     "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", "edat", "etf3eh", "highgprs", "te", "vx"
+   }
+ #endif
+ #if !defined SHARED || defined PROCINFO_DECL
+diff --git a/sysdeps/s390/dl-procinfo.h b/sysdeps/s390/dl-procinfo.h
+index 26de043..89766e0 100644
+--- a/sysdeps/s390/dl-procinfo.h
++++ b/sysdeps/s390/dl-procinfo.h
+@@ -21,7 +21,7 @@
+ #define _DL_PROCINFO_H	1
+ #include <ldsodefs.h>
+ 
+-#define _DL_HWCAP_COUNT 10
++#define _DL_HWCAP_COUNT 12
+ 
+ #define _DL_PLATFORMS_COUNT	5
+ 
+@@ -50,6 +50,7 @@ enum
+   HWCAP_S390_ETF3EH = 1 << 8,
+   HWCAP_S390_HIGH_GPRS = 1 << 9,
+   HWCAP_S390_TE = 1 << 10,
++  HWCAP_S390_VX = 1 << 11,
+ };
+ 
+ #define HWCAP_IMPORTANT (HWCAP_S390_ZARCH | HWCAP_S390_LDISP \
+diff --git a/sysdeps/unix/sysv/linux/s390/bits/hwcap.h b/sysdeps/unix/sysv/linux/s390/bits/hwcap.h
+index 59d68b0..bd2ce3a 100644
+--- a/sysdeps/unix/sysv/linux/s390/bits/hwcap.h
++++ b/sysdeps/unix/sysv/linux/s390/bits/hwcap.h
+@@ -35,3 +35,4 @@
+ #define HWCAP_S390_ETF3EH       256
+ #define HWCAP_S390_HIGH_GPRS    512
+ #define HWCAP_S390_TE           1024
++#define HWCAP_S390_VX           2048
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-7.patch b/SOURCES/glibc-rh1268008-7.patch
new file mode 100644
index 0000000..ff7b057
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-7.patch
@@ -0,0 +1,56 @@
+From 9bcfc74b3097eb84973b7b91fd676f116e206938 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:45:58 +0200
+Subject: [PATCH 07/30] S390: Add new s390 platform.
+
+upstream-commit-id: a1b0488fc9df3d895a2e5eefbcd348d3f7fe0e52
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00081.html
+
+The new IBM z13 is added to platform string array.
+The macro _DL_PLATFORMS_COUNT is incremented to 8,
+because it was not incremented by commit
+"S/390: Sync AUXV capabilities and archs with kernel".
+
+ChangeLog:
+
+	* sysdeps/s390/dl-procinfo.c (_dl_s390_cap_flags): Add z13.
+	* sysdeps/s390/dl-procinfo.h (_DL_PLATFORMS_COUNT): Increased.
+---
+ sysdeps/s390/dl-procinfo.c | 4 ++--
+ sysdeps/s390/dl-procinfo.h | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/sysdeps/s390/dl-procinfo.c b/sysdeps/s390/dl-procinfo.c
+index 96d438a..f353528 100644
+--- a/sysdeps/s390/dl-procinfo.c
++++ b/sysdeps/s390/dl-procinfo.c
+@@ -62,11 +62,11 @@ PROCINFO_CLASS const char _dl_s390_cap_flags[12][9]
+ #if !defined PROCINFO_DECL && defined SHARED
+   ._dl_s390_platforms
+ #else
+-PROCINFO_CLASS const char _dl_s390_platforms[7][7]
++PROCINFO_CLASS const char _dl_s390_platforms[8][7]
+ #endif
+ #ifndef PROCINFO_DECL
+ = {
+-    "g5", "z900", "z990", "z9-109", "z10", "z196", "zEC12"
++    "g5", "z900", "z990", "z9-109", "z10", "z196", "zEC12", "z13"
+   }
+ #endif
+ #if !defined SHARED || defined PROCINFO_DECL
+diff --git a/sysdeps/s390/dl-procinfo.h b/sysdeps/s390/dl-procinfo.h
+index 89766e0..80747f0 100644
+--- a/sysdeps/s390/dl-procinfo.h
++++ b/sysdeps/s390/dl-procinfo.h
+@@ -23,7 +23,7 @@
+ 
+ #define _DL_HWCAP_COUNT 12
+ 
+-#define _DL_PLATFORMS_COUNT	5
++#define _DL_PLATFORMS_COUNT	8
+ 
+ /* The kernel provides up to 32 capability bits with elf_hwcap.  */
+ #define _DL_FIRST_PLATFORM	32
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-8.patch b/SOURCES/glibc-rh1268008-8.patch
new file mode 100644
index 0000000..2827684
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-8.patch
@@ -0,0 +1,133 @@
+From 2d04109858181ed8c7dc3e4ae42923a26c1d3591 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:47:37 +0200
+Subject: [PATCH 08/30] S390: configure check for vector instruction support in
+ assembler.
+
+upstream-commit-id: 4f0a1cea34c05fb2acc16f1a2d291f53230eb4fb
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00153.html
+
+The S390 specific test checks if the assembler has support for the new z13
+vector instructions by compiling a vector instruction. The .machine and
+.machinemode directives are needed to compile the vector instruction without
+-march=z13 option on 31/64 bit.
+On success the macro HAVE_S390_VX_ASM_SUPPORT is defined. This macro is used
+to determine if the optimized functions can be build without compile errors.
+If the used assembler lacks vector support, then a warning is dumped while
+configuring and only the common code functions are build.
+
+The z13 instruction support was introduced in
+"[Committed] S/390: Add support for IBM z13."
+(https://sourceware.org/ml/binutils/2015-01/msg00197.html)
+
+ChangeLog:
+
+	* config.h.in (HAVE_S390_VX_ASM_SUPPORT): New macro undefine.
+	* sysdeps/s390/configure.ac: Add test for S390 vector instruction
+	assembler support.
+	* sysdeps/s390/configure: Regenerated.
+---
+ config.h.in               |  3 +++
+ sysdeps/s390/configure    | 39 +++++++++++++++++++++++++++++++++++++++
+ sysdeps/s390/configure.in | 27 +++++++++++++++++++++++++++
+ 3 files changed, 69 insertions(+)
+
+diff --git a/config.h.in b/config.h.in
+index 68321d4..f7f2388 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -110,6 +110,9 @@
+ /* Define if assembler supports Intel MPX.  */
+ #undef  HAVE_MPX_SUPPORT
+ 
++/* Define if assembler supports vector instructions on S390.  */
++#undef  HAVE_S390_VX_ASM_SUPPORT
++
+ /* Define if gcc supports FMA4.  */
+ #undef	HAVE_FMA4_SUPPORT
+ 
+diff --git a/sysdeps/s390/configure b/sysdeps/s390/configure
+index 669bb9b..cc4c1e0 100644
+--- a/sysdeps/s390/configure
++++ b/sysdeps/s390/configure
+@@ -3,3 +3,42 @@
+ 
+ $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
+ 
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for S390 vector instruction support" >&5
++$as_echo_n "checking for S390 vector instruction support... " >&6; }
++if ${libc_cv_asm_s390_vx+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  cat > conftest.c <<\EOF
++void testvecinsn ()
++{
++    __asm__ (".machine \"z13\" \n\t"
++	     ".machinemode \"zarch_nohighgprs\" \n\t"
++	     "vistrbs %%v16,%%v17 \n\t"
++	     "locghie %%r1,0" : :);
++}
++EOF
++if { ac_try='${CC-cc} --shared conftest.c -o conftest.o &> /dev/null'
++  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
++  (eval $ac_try) 2>&5
++  ac_status=$?
++  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++  test $ac_status = 0; }; } ;
++then
++  libc_cv_asm_s390_vx=yes
++else
++  libc_cv_asm_s390_vx=no
++fi
++rm -f conftest*
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_s390_vx" >&5
++$as_echo "$libc_cv_asm_s390_vx" >&6; }
++
++if test "$libc_cv_asm_s390_vx" = yes ;
++then
++  $as_echo "#define HAVE_S390_VX_ASM_SUPPORT 1" >>confdefs.h
++
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use binutils with vector-support in order to use optimized implementations." >&5
++$as_echo "$as_me: WARNING: Use binutils with vector-support in order to use optimized implementations." >&2;}
++fi
+diff --git a/sysdeps/s390/configure.in b/sysdeps/s390/configure.in
+index b5af4e1..733e356 100644
+--- a/sysdeps/s390/configure.in
++++ b/sysdeps/s390/configure.in
+@@ -4,3 +4,30 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+ dnl It is always possible to access static and hidden symbols in an
+ dnl position independent way.
+ AC_DEFINE(PI_STATIC_AND_HIDDEN)
++
++AC_CACHE_CHECK(for S390 vector instruction support, libc_cv_asm_s390_vx, [dnl
++cat > conftest.c <<\EOF
++void testvecinsn ()
++{
++    __asm__ (".machine \"z13\" \n\t"
++	     ".machinemode \"zarch_nohighgprs\" \n\t"
++	     "vistrbs %%v16,%%v17 \n\t"
++	     "locghie %%r1,0" : :);
++}
++EOF
++dnl
++dnl test, if assembler supports S390 vector instructions
++if AC_TRY_COMMAND([${CC-cc} --shared conftest.c -o conftest.o &> /dev/null]) ;
++then
++  libc_cv_asm_s390_vx=yes
++else
++  libc_cv_asm_s390_vx=no
++fi
++rm -f conftest* ])
++
++if test "$libc_cv_asm_s390_vx" = yes ;
++then
++  AC_DEFINE(HAVE_S390_VX_ASM_SUPPORT)
++else
++  AC_MSG_WARN([Use binutils with vector-support in order to use optimized implementations.])
++fi
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1268008-9.patch b/SOURCES/glibc-rh1268008-9.patch
new file mode 100644
index 0000000..dc7f114
--- /dev/null
+++ b/SOURCES/glibc-rh1268008-9.patch
@@ -0,0 +1,50 @@
+From b13a91507798183556d7e1891fe3d4cd3a947aa6 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 8 Oct 2015 10:48:13 +0200
+Subject: [PATCH 09/30] S390: Ifunc resolver macro for vector instructions.
+
+upstream-commit-id: fd484e057dd4d2813182df08584a4c48d6f1dd7a
+https://www.sourceware.org/ml/libc-alpha/2015-07/msg00076.html
+
+This patch introduces a s390 specific ifunc resolver macro for 32/64bit,
+which chooses <func>_vx with vector instructions if HWCAP_S390_VX flag
+in hwcaps is set or <func>_c if not.
+
+ChangeLog:
+
+	* sysdeps/s390/multiarch/ifunc-resolve.h (s390_vx_libc_ifunc,
+	s390_vx_libc_ifunc2): New macro function.
+---
+ sysdeps/s390/multiarch/ifunc-resolve.h | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/sysdeps/s390/multiarch/ifunc-resolve.h b/sysdeps/s390/multiarch/ifunc-resolve.h
+index 491df68..e9fd90e 100644
+--- a/sysdeps/s390/multiarch/ifunc-resolve.h
++++ b/sysdeps/s390/multiarch/ifunc-resolve.h
+@@ -73,3 +73,22 @@
+     else								\
+       return &__##FUNC##_default;					\
+   }
++
++#define s390_vx_libc_ifunc(FUNC)		\
++  s390_vx_libc_ifunc2(FUNC, FUNC)
++
++#define s390_vx_libc_ifunc2(RESOLVERFUNC, FUNC)				\
++  /* Make the declarations of the optimized functions hidden in order
++     to prevent GOT slots being generated for them.  */			\
++  extern __typeof (FUNC) RESOLVERFUNC##_vx attribute_hidden;		\
++  extern __typeof (FUNC) RESOLVERFUNC##_c attribute_hidden;		\
++  extern void *__resolve_##RESOLVERFUNC (unsigned long int) __asm__ (#FUNC); \
++									\
++  void *__resolve_##RESOLVERFUNC (unsigned long int dl_hwcap)		\
++  {									\
++    if (dl_hwcap & HWCAP_S390_VX)					\
++      return &RESOLVERFUNC##_vx;					\
++    else								\
++      return &RESOLVERFUNC##_c;						\
++  }									\
++ __asm__ (".type " #FUNC ", %gnu_indirect_function");
+-- 
+2.3.0
+
diff --git a/SOURCES/glibc-rh1276753-0.patch b/SOURCES/glibc-rh1276753-0.patch
new file mode 100644
index 0000000..7c157d5
--- /dev/null
+++ b/SOURCES/glibc-rh1276753-0.patch
@@ -0,0 +1,310 @@
+commit 5782a80f9f8ca86899b30161166f044b0b6b8590
+Author: Ondřej Bílka <neleai@seznam.cz>
+Date:   Tue Dec 10 17:56:59 2013 +0100
+
+    Drop PER_THREAD conditionals from malloc.
+
+Index: glibc-2.17-c758a686/malloc/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/malloc/Makefile
++++ glibc-2.17-c758a686/malloc/Makefile
+@@ -121,7 +121,6 @@ endif
+ tst-mcheck-ENV = MALLOC_CHECK_=3
+ tst-malloc-usable-ENV = MALLOC_CHECK_=3
+ 
+-CPPFLAGS-malloc.c += -DPER_THREAD
+ # Uncomment this for test releases.  For public releases it is too expensive.
+ #CPPFLAGS-malloc.o += -DMALLOC_DEBUG=1
+ 
+Index: glibc-2.17-c758a686/malloc/arena.c
+===================================================================
+--- glibc-2.17-c758a686.orig/malloc/arena.c
++++ glibc-2.17-c758a686/malloc/arena.c
+@@ -78,10 +78,8 @@ extern int sanity_check_heap_info_alignm
+ 
+ static tsd_key_t arena_key;
+ static mutex_t list_lock = MUTEX_INITIALIZER;
+-#ifdef PER_THREAD
+ static size_t narenas = 1;
+ static mstate free_list;
+-#endif
+ 
+ #if THREAD_STATS
+ static int stat_n_heaps;
+@@ -117,21 +115,12 @@ int __malloc_initialized = -1;
+   ptr = (mstate)tsd_getspecific(arena_key, vptr); \
+ } while(0)
+ 
+-#ifdef PER_THREAD
+ # define arena_lock(ptr, size) do { \
+   if(ptr && !arena_is_corrupt (ptr)) \
+     (void)mutex_lock(&ptr->mutex); \
+   else \
+     ptr = arena_get2(ptr, (size), NULL); \
+ } while(0)
+-#else
+-# define arena_lock(ptr, size) do { \
+-  if(ptr && !mutex_trylock(&ptr->mutex)) { \
+-    THREAD_STAT(++(ptr->stat_lock_direct)); \
+-  } else \
+-    ptr = arena_get2(ptr, (size), NULL); \
+-} while(0)
+-#endif
+ 
+ /* find the heap and corresponding arena for a given ptr */
+ 
+@@ -297,17 +286,13 @@ ptmalloc_unlock_all2 (void)
+   tsd_setspecific(arena_key, save_arena);
+   __malloc_hook = save_malloc_hook;
+   __free_hook = save_free_hook;
+-#ifdef PER_THREAD
+   free_list = NULL;
+-#endif
+   for(ar_ptr = &main_arena;;) {
+     mutex_init(&ar_ptr->mutex);
+-#ifdef PER_THREAD
+     if (ar_ptr != save_arena) {
+       ar_ptr->next_free = free_list;
+       free_list = ar_ptr;
+     }
+-#endif
+     ar_ptr = ar_ptr->next;
+     if(ar_ptr == &main_arena) break;
+   }
+@@ -428,13 +413,10 @@ ptmalloc_init (void)
+ 		{
+ 		  if (memcmp (envline, "MMAP_MAX_", 9) == 0)
+ 		    __libc_mallopt(M_MMAP_MAX, atoi(&envline[10]));
+-#ifdef PER_THREAD
+ 		  else if (memcmp (envline, "ARENA_MAX", 9) == 0)
+ 		    __libc_mallopt(M_ARENA_MAX, atoi(&envline[10]));
+-#endif
+ 		}
+ 	      break;
+-#ifdef PER_THREAD
+ 	    case 10:
+ 	      if (! __builtin_expect (__libc_enable_secure, 0))
+ 		{
+@@ -442,7 +424,6 @@ ptmalloc_init (void)
+ 		    __libc_mallopt(M_ARENA_TEST, atoi(&envline[11]));
+ 		}
+ 	      break;
+-#endif
+ 	    case 15:
+ 	      if (! __builtin_expect (__libc_enable_secure, 0))
+ 		{
+@@ -750,18 +731,14 @@ _int_new_arena(size_t size)
+   mutex_init(&a->mutex);
+   (void)mutex_lock(&a->mutex);
+ 
+-#ifdef PER_THREAD
+   (void)mutex_lock(&list_lock);
+-#endif
+ 
+   /* Add the new arena to the global list.  */
+   a->next = main_arena.next;
+   atomic_write_barrier ();
+   main_arena.next = a;
+ 
+-#ifdef PER_THREAD
+   (void)mutex_unlock(&list_lock);
+-#endif
+ 
+   THREAD_STAT(++(a->stat_lock_loop));
+ 
+@@ -769,7 +746,6 @@ _int_new_arena(size_t size)
+ }
+ 
+ 
+-#ifdef PER_THREAD
+ static mstate
+ get_free_list (void)
+ {
+@@ -846,7 +822,6 @@ reused_arena (mstate avoid_arena)
+ 
+   return result;
+ }
+-#endif
+ 
+ static mstate
+ internal_function
+@@ -854,7 +829,6 @@ arena_get2(mstate a_tsd, size_t size, ms
+ {
+   mstate a;
+ 
+-#ifdef PER_THREAD
+   static size_t narenas_limit;
+ 
+   a = get_free_list ();
+@@ -897,54 +871,6 @@ arena_get2(mstate a_tsd, size_t size, ms
+       else
+ 	a = reused_arena (avoid_arena);
+     }
+-#else
+-  if(!a_tsd)
+-    a = a_tsd = &main_arena;
+-  else {
+-    a = a_tsd->next;
+-    if(!a) {
+-      /* This can only happen while initializing the new arena. */
+-      (void)mutex_lock(&main_arena.mutex);
+-      THREAD_STAT(++(main_arena.stat_lock_wait));
+-      return &main_arena;
+-    }
+-  }
+-
+-  /* Check the global, circularly linked list for available arenas. */
+-  bool retried = false;
+- repeat:
+-  do {
+-    if(!mutex_trylock(&a->mutex)) {
+-      if (retried)
+-	(void)mutex_unlock(&list_lock);
+-      THREAD_STAT(++(a->stat_lock_loop));
+-      LIBC_PROBE (memory_arena_reuse, 2, a, a_tsd);
+-      tsd_setspecific(arena_key, (void *)a);
+-      return a;
+-    }
+-    a = a->next;
+-  } while(a != a_tsd);
+-
+-  /* If not even the list_lock can be obtained, try again.  This can
+-     happen during `atfork', or for example on systems where thread
+-     creation makes it temporarily impossible to obtain _any_
+-     locks. */
+-  if(!retried && mutex_trylock(&list_lock)) {
+-    /* We will block to not run in a busy loop.  */
+-    LIBC_PROBE (memory_arena_reuse_wait, 3, &list_lock, NULL, a_tsd);
+-    (void)mutex_lock(&list_lock);
+-
+-    /* Since we blocked there might be an arena available now.  */
+-    retried = true;
+-    a = a_tsd;
+-    goto repeat;
+-  }
+-
+-  /* Nothing immediately available, so generate a new arena.  */
+-  a = _int_new_arena(size);
+-  (void)mutex_unlock(&list_lock);
+-#endif
+-
+   return a;
+ }
+ 
+@@ -970,7 +896,6 @@ arena_get_retry (mstate ar_ptr, size_t b
+   return ar_ptr;
+ }
+ 
+-#ifdef PER_THREAD
+ static void __attribute__ ((section ("__libc_thread_freeres_fn")))
+ arena_thread_freeres (void)
+ {
+@@ -987,7 +912,6 @@ arena_thread_freeres (void)
+     }
+ }
+ text_set_element (__libc_thread_subfreeres, arena_thread_freeres);
+-#endif
+ 
+ /*
+  * Local variables:
+Index: glibc-2.17-c758a686/malloc/hooks.c
+===================================================================
+--- glibc-2.17-c758a686.orig/malloc/hooks.c
++++ glibc-2.17-c758a686/malloc/hooks.c
+@@ -464,11 +464,9 @@ __malloc_get_state(void)
+   ms->max_mmapped_mem = mp_.max_mmapped_mem;
+   ms->using_malloc_checking = using_malloc_checking;
+   ms->max_fast = get_max_fast();
+-#ifdef PER_THREAD
+   ms->arena_test = mp_.arena_test;
+   ms->arena_max = mp_.arena_max;
+   ms->narenas = narenas;
+-#endif
+   (void)mutex_unlock(&main_arena.mutex);
+   return (void*)ms;
+ }
+@@ -565,11 +563,9 @@ __malloc_set_state(void* msptr)
+     }
+   }
+   if (ms->version >= 4) {
+-#ifdef PER_THREAD
+     mp_.arena_test = ms->arena_test;
+     mp_.arena_max = ms->arena_max;
+     narenas = ms->narenas;
+-#endif
+   }
+   check_malloc_state(&main_arena);
+ 
+Index: glibc-2.17-c758a686/malloc/malloc.c
+===================================================================
+--- glibc-2.17-c758a686.orig/malloc/malloc.c
++++ glibc-2.17-c758a686/malloc/malloc.c
+@@ -1727,10 +1727,8 @@ struct malloc_state {
+   /* Linked list */
+   struct malloc_state *next;
+ 
+-#ifdef PER_THREAD
+   /* Linked list for free arenas.  */
+   struct malloc_state *next_free;
+-#endif
+ 
+   /* Memory allocated from the system in this arena.  */
+   INTERNAL_SIZE_T system_mem;
+@@ -1742,10 +1740,8 @@ struct malloc_par {
+   unsigned long    trim_threshold;
+   INTERNAL_SIZE_T  top_pad;
+   INTERNAL_SIZE_T  mmap_threshold;
+-#ifdef PER_THREAD
+   INTERNAL_SIZE_T  arena_test;
+   INTERNAL_SIZE_T  arena_max;
+-#endif
+ 
+   /* Memory map support */
+   int              n_mmaps;
+@@ -1787,18 +1783,14 @@ static struct malloc_par mp_ =
+     .n_mmaps_max    = DEFAULT_MMAP_MAX,
+     .mmap_threshold = DEFAULT_MMAP_THRESHOLD,
+     .trim_threshold = DEFAULT_TRIM_THRESHOLD,
+-#ifdef PER_THREAD
+ # define NARENAS_FROM_NCORES(n) ((n) * (sizeof(long) == 4 ? 2 : 8))
+     .arena_test     = NARENAS_FROM_NCORES (1)
+-#endif
+   };
+ 
+ 
+-#ifdef PER_THREAD
+ /*  Non public mallopt parameters.  */
+ #define M_ARENA_TEST -7
+ #define M_ARENA_MAX  -8
+-#endif
+ 
+ 
+ /* Maximum size of memory handled in fastbins.  */
+@@ -3008,11 +3000,6 @@ __libc_realloc(void* oldmem, size_t byte
+   (void)mutex_lock(&ar_ptr->mutex);
+ #endif
+ 
+-#if !defined PER_THREAD
+-  LIBC_PROBE (memory_arena_reuse_realloc, 1, ar_ptr);
+-  /* As in malloc(), remember this arena for the next allocation. */
+-  tsd_setspecific(arena_key, (void *)ar_ptr);
+-#endif
+ 
+   newp = _int_realloc(ar_ptr, oldp, oldsize, nb);
+ 
+@@ -4823,7 +4810,6 @@ int __libc_mallopt(int param_number, int
+     perturb_byte = value;
+     break;
+ 
+-#ifdef PER_THREAD
+   case M_ARENA_TEST:
+     if (value > 0)
+       {
+@@ -4839,7 +4825,6 @@ int __libc_mallopt(int param_number, int
+ 	mp_.arena_max = value;
+       }
+     break;
+-#endif
+   }
+   (void)mutex_unlock(&av->mutex);
+   return res;
diff --git a/SOURCES/glibc-rh1276753.patch b/SOURCES/glibc-rh1276753.patch
new file mode 100644
index 0000000..5577d7e
--- /dev/null
+++ b/SOURCES/glibc-rh1276753.patch
@@ -0,0 +1,654 @@
+Upstream commits:
+
+commit a62719ba90e2fa1728890ae7dc8df9e32a622e7b
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Wed Oct 28 19:32:46 2015 +0100
+
+    malloc: Prevent arena free_list from turning cyclic [BZ #19048]
+
+commit 3da825ce483903e3a881a016113b3e59fd4041de
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Wed Dec 16 12:39:48 2015 +0100
+
+    malloc: Fix attached thread reference count handling [BZ #19243]
+
+commit 90c400bd4904b0240a148f0b357a5cbc36179239
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Mon Dec 21 16:42:46 2015 +0100
+
+    malloc: Fix list_lock/arena lock deadlock [BZ #19182]
+
+commit 7962541a32eff5597bc4207e781cfac8d1bb0d87
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Wed Dec 23 17:23:33 2015 +0100
+
+    malloc: Update comment for list_lock
+
+commit 2a38688932243b5b16fb12d84c7ac1138ce50363
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Fri Feb 19 14:11:32 2016 +0100
+
+    tst-malloc-thread-exit: Use fewer system resources
+
+Also included is the following change, which has not yet been
+committed upstream:
+
+    malloc: Preserve arena free list/thread count invariant [BZ #20370]
+    
+    It is necessary to preserve the invariant that if an arena is
+    on the free list, it has thread attach count zero.  Otherwise,
+    when arena_thread_freeres sees the zero attach count, it will
+    add it, and without the invariant, an arena could get pushed
+    to the list twice, resulting in a cycle.
+    
+    One possible execution trace looks like this:
+    
+    Thread 1 examines free list and observes it as empty.
+    Thread 2 exits and adds its arena to the free list,
+      with attached_threads == 0).
+    Thread 1 selects this arena in reused_arena (not from the free list).
+    Thread 1 increments attached_threads and attaches itself.
+      (The arena remains on the free list.)
+    Thread 1 exits, decrements attached_threads,
+      and adds the arena to the free list.
+    
+    The final step creates a cycle in the usual way (by overwriting the
+    next_free member with the former list head, while there is another
+    list item pointing to the arena structure).
+    
+    tst-malloc-thread-exit exhibits this issue, but it was only visible
+    with a debugger because the incorrect fix in bug 19243 removed
+    the assert from get_free_list.
+
+
+Index: b/malloc/arena.c
+===================================================================
+--- a/malloc/arena.c
++++ b/malloc/arena.c
+@@ -77,10 +77,30 @@ extern int sanity_check_heap_info_alignm
+ /* Thread specific data */
+ 
+ static tsd_key_t arena_key;
+-static mutex_t list_lock = MUTEX_INITIALIZER;
++
++/* Arena free list.  free_list_lock synchronizes access to the
++   free_list variable below, and the next_free and attached_threads
++   members of struct malloc_state objects.  No other locks must be
++   acquired after free_list_lock has been acquired.  */
++
++static mutex_t free_list_lock = MUTEX_INITIALIZER;
+ static size_t narenas = 1;
+ static mstate free_list;
+ 
++/* list_lock prevents concurrent writes to the next member of struct
++   malloc_state objects.
++
++   Read access to the next member is supposed to synchronize with the
++   atomic_write_barrier and the write to the next member in
++   _int_new_arena.  This suffers from data races; see the FIXME
++   comments in _int_new_arena and reused_arena.
++
++   list_lock also prevents concurrent forks.  At the time list_lock is
++   acquired, no arena lock must have been acquired, but it is
++   permitted to acquire arena locks subsequently, while list_lock is
++   acquired.  */
++static mutex_t list_lock = MUTEX_INITIALIZER;
++
+ #if THREAD_STATS
+ static int stat_n_heaps;
+ #define THREAD_STAT(x) x
+@@ -221,6 +241,10 @@ ptmalloc_lock_all (void)
+ 
+   if(__malloc_initialized < 1)
+     return;
++
++  /* We do not acquire free_list_lock here because we completely
++     reconstruct free_list in ptmalloc_unlock_all2.  */
++
+   if (mutex_trylock(&list_lock))
+     {
+       void *my_arena;
+@@ -242,7 +266,10 @@ ptmalloc_lock_all (void)
+   save_free_hook = __free_hook;
+   __malloc_hook = malloc_atfork;
+   __free_hook = free_atfork;
+-  /* Only the current thread may perform malloc/free calls now. */
++  /* Only the current thread may perform malloc/free calls now.
++     save_arena will be reattached to the current thread, in
++     ptmalloc_lock_all, so save_arena->attached_threads is not
++     updated.  */
+   tsd_getspecific(arena_key, save_arena);
+   tsd_setspecific(arena_key, ATFORK_ARENA_PTR);
+  out:
+@@ -258,6 +285,9 @@ ptmalloc_unlock_all (void)
+     return;
+   if (--atfork_recursive_cntr != 0)
+     return;
++  /* Replace ATFORK_ARENA_PTR with save_arena.
++     save_arena->attached_threads was not changed in ptmalloc_lock_all
++     and is still correct.  */
+   tsd_setspecific(arena_key, save_arena);
+   __malloc_hook = save_malloc_hook;
+   __free_hook = save_free_hook;
+@@ -286,16 +316,24 @@ ptmalloc_unlock_all2 (void)
+   tsd_setspecific(arena_key, save_arena);
+   __malloc_hook = save_malloc_hook;
+   __free_hook = save_free_hook;
++  /* Push all arenas to the free list, except save_arena, which is
++     attached to the current thread.  */
++  mutex_init (&free_list_lock);
++  if (save_arena != NULL)
++    ((mstate) save_arena)->attached_threads = 1;
+   free_list = NULL;
+   for(ar_ptr = &main_arena;;) {
+     mutex_init(&ar_ptr->mutex);
+     if (ar_ptr != save_arena) {
++      /* This arena is no longer attached to any thread.  */
++      ar_ptr->attached_threads = 0;
+       ar_ptr->next_free = free_list;
+       free_list = ar_ptr;
+     }
+     ar_ptr = ar_ptr->next;
+     if(ar_ptr == &main_arena) break;
+   }
++
+   mutex_init(&list_lock);
+   atfork_recursive_cntr = 0;
+ }
+@@ -692,8 +730,25 @@ heap_trim(heap_info *heap, size_t pad)
+   return 1;
+ }
+ 
+-/* Create a new arena with initial size "size".  */
+ 
++/* If REPLACED_ARENA is not NULL, detach it from this thread.  Must be
++   called while free_list_lock is held.  */
++static void
++detach_arena (mstate replaced_arena)
++{
++  if (replaced_arena != NULL)
++    {
++      assert (replaced_arena->attached_threads > 0);
++      /* The current implementation only detaches from main_arena in
++	 case of allocation failure.  This means that it is likely not
++	 beneficial to put the arena on free_list even if the
++	 reference count reaches zero.  */
++      --replaced_arena->attached_threads;
++    }
++}
++
++
++/* Create a new arena with initial size "size".  */
+ static mstate
+ _int_new_arena(size_t size)
+ {
+@@ -714,6 +769,7 @@ _int_new_arena(size_t size)
+   }
+   a = h->ar_ptr = (mstate)(h+1);
+   malloc_init_state(a);
++  a->attached_threads = 1;
+   /*a->next = NULL;*/
+   a->system_mem = a->max_system_mem = h->size;
+   arena_mem += h->size;
+@@ -727,36 +783,68 @@ _int_new_arena(size_t size)
+   set_head(top(a), (((char*)h + h->size) - ptr) | PREV_INUSE);
+ 
+   LIBC_PROBE (memory_arena_new, 2, a, size);
++  mstate replaced_arena;
++  {
++    void *vptr = NULL;
++    replaced_arena = tsd_getspecific (arena_key, vptr);
++  }
+   tsd_setspecific(arena_key, (void *)a);
+   mutex_init(&a->mutex);
+-  (void)mutex_lock(&a->mutex);
+ 
+   (void)mutex_lock(&list_lock);
+ 
+   /* Add the new arena to the global list.  */
+   a->next = main_arena.next;
++  /* FIXME: The barrier is an attempt to synchronize with read access
++     in reused_arena, which does not acquire list_lock while
++     traversing the list.  */
+   atomic_write_barrier ();
+   main_arena.next = a;
+ 
+   (void)mutex_unlock(&list_lock);
+ 
++  (void) mutex_lock (&free_list_lock);
++  detach_arena (replaced_arena);
++  (void) mutex_unlock (&free_list_lock);
++
++  /* Lock this arena.  NB: Another thread may have been attached to
++     this arena because the arena is now accessible from the
++     main_arena.next list and could have been picked by reused_arena.
++     This can only happen for the last arena created (before the arena
++     limit is reached).  At this point, some arena has to be attached
++     to two threads.  We could acquire the arena lock before list_lock
++     to make it less likely that reused_arena picks this new arena,
++     but this could result in a deadlock with ptmalloc_lock_all.  */
++
++  (void) mutex_lock (&a->mutex);
++
+   THREAD_STAT(++(a->stat_lock_loop));
+ 
+   return a;
+ }
+ 
+-
++/* Remove an arena from free_list.  */
+ static mstate
+ get_free_list (void)
+ {
++  void *vptr = NULL;
++  mstate replaced_arena = tsd_getspecific (arena_key, vptr);
+   mstate result = free_list;
+   if (result != NULL)
+     {
+-      (void)mutex_lock(&list_lock);
++      (void)mutex_lock(&free_list_lock);
+       result = free_list;
+       if (result != NULL)
+-	free_list = result->next_free;
+-      (void)mutex_unlock(&list_lock);
++	{
++	  free_list = result->next_free;
++
++	  /* The arena will be attached to this thread.  */
++	  assert (result->attached_threads == 0);
++	  result->attached_threads = 1;
++
++	  detach_arena (replaced_arena);
++	}
++      (void)mutex_unlock(&free_list_lock);
+ 
+       if (result != NULL)
+ 	{
+@@ -770,6 +858,26 @@ get_free_list (void)
+   return result;
+ }
+ 
++/* Remove the arena from the free list (if it is present).
++   free_list_lock must have been acquired by the caller.  */
++static void
++remove_from_free_list (mstate arena)
++{
++  mstate *previous = &free_list;
++  for (mstate p = free_list; p != NULL; p = p->next_free)
++    {
++      assert (p->attached_threads == 0);
++      if (p == arena)
++	{
++	  /* Remove the requested arena from the list.  */
++	  *previous = p->next_free;
++	  break;
++	}
++      else
++	previous = &p->next_free;
++    }
++}
++
+ /* Lock and return an arena that can be reused for memory allocation.
+    Avoid AVOID_ARENA as we have already failed to allocate memory in
+    it and it is currently locked.  */
+@@ -777,16 +885,20 @@ static mstate
+ reused_arena (mstate avoid_arena)
+ {
+   mstate result;
++  /* FIXME: Access to next_to_use suffers from data races.  */
+   static mstate next_to_use;
+   if (next_to_use == NULL)
+     next_to_use = &main_arena;
+ 
++  /* Iterate over all arenas (including those linked from
++     free_list).  */
+   result = next_to_use;
+   do
+     {
+       if (!arena_is_corrupt (result) && !mutex_trylock(&result->mutex))
+ 	goto out;
+ 
++      /* FIXME: This is a data race, see _int_new_arena.  */
+       result = result->next;
+     }
+   while (result != next_to_use);
+@@ -815,6 +927,27 @@ reused_arena (mstate avoid_arena)
+   (void)mutex_lock(&result->mutex);
+ 
+  out:
++  /* Attach the arena to the current thread.  */
++  {
++    /* Update the arena thread attachment counters.   */
++    void *vptr = NULL;
++    mstate replaced_arena = tsd_getspecific (arena_key, vptr);
++    (void) mutex_lock (&free_list_lock);
++    detach_arena (replaced_arena);
++
++    /* We may have picked up an arena on the free list.  We need to
++       preserve the invariant that no arena on the free list has a
++       positive attached_threads counter (otherwise,
++       arena_thread_freeres cannot use the counter to determine if the
++       arena needs to be put on the free list).  We unconditionally
++       remove the selected arena from the free list.  The caller of
++       reused_arena checked the free list and observed it to be empty,
++       so the list is very short.  */
++    remove_from_free_list (result);
++
++    ++result->attached_threads;
++    (void) mutex_unlock (&free_list_lock);
++  }
+   LIBC_PROBE (memory_arena_reuse, 2, result, avoid_arena);
+   tsd_setspecific(arena_key, (void *)result);
+   THREAD_STAT(++(result->stat_lock_loop));
+@@ -905,10 +1038,16 @@ arena_thread_freeres (void)
+ 
+   if (a != NULL)
+     {
+-      (void)mutex_lock(&list_lock);
+-      a->next_free = free_list;
+-      free_list = a;
+-      (void)mutex_unlock(&list_lock);
++      (void)mutex_lock(&free_list_lock);
++      /* If this was the last attached thread for this arena, put the
++	 arena on the free list.  */
++      assert (a->attached_threads > 0);
++      if (--a->attached_threads == 0)
++	{
++	  a->next_free = free_list;
++	  free_list = a;
++	}
++      (void)mutex_unlock(&free_list_lock);
+     }
+ }
+ text_set_element (__libc_thread_subfreeres, arena_thread_freeres);
+Index: b/malloc/malloc.c
+===================================================================
+--- a/malloc/malloc.c
++++ b/malloc/malloc.c
+@@ -1727,8 +1727,13 @@ struct malloc_state {
+   /* Linked list */
+   struct malloc_state *next;
+ 
+-  /* Linked list for free arenas.  */
++  /* Linked list for free arenas.  Access to this field is serialized
++     by free_list_lock in arena.c. */
+   struct malloc_state *next_free;
++  /* Number of threads attached to this arena.  0 if the arena is on
++     the free list.  Access to this field is serialized by
++     free_list_lock in arena.c.  */
++  INTERNAL_SIZE_T attached_threads;
+ 
+   /* Memory allocated from the system in this arena.  */
+   INTERNAL_SIZE_T system_mem;
+@@ -1772,7 +1777,8 @@ struct malloc_par {
+ static struct malloc_state main_arena =
+   {
+     .mutex = MUTEX_INITIALIZER,
+-    .next = &main_arena
++    .next = &main_arena,
++    .attached_threads = 1,
+   };
+ 
+ /* There is only one instance of the malloc parameters.  */
+Index: b/malloc/Makefile
+===================================================================
+--- a/malloc/Makefile
++++ b/malloc/Makefile
+@@ -20,13 +20,14 @@
+ #
+ subdir	:= malloc
+ 
+-all:
++include ../Makeconfig
+ 
+ dist-headers := malloc.h
+ headers := $(dist-headers) obstack.h mcheck.h
+ tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \
+ 	 tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 \
+-	 tst-malloc-usable tst-malloc-backtrace
++	 tst-malloc-usable \
++	 tst-malloc-backtrace tst-malloc-thread-exit
+ test-srcs = tst-mtrace
+ 
+ routines = malloc morecore mcheck mtrace obstack
+@@ -43,6 +44,8 @@ libmemusage-inhibit-o = $(filter-out .os
+ 
+ $(objpfx)tst-malloc-backtrace: $(common-objpfx)nptl/libpthread.so \
+ 			       $(common-objpfx)nptl/libpthread_nonshared.a
++$(objpfx)tst-malloc-thread-exit: $(common-objpfx)nptl/libpthread.so \
++			       $(common-objpfx)nptl/libpthread_nonshared.a
+ 
+ # These should be removed by `make clean'.
+ extra-objs = mcheck-init.o libmcheck.a
+@@ -50,8 +53,6 @@ extra-objs = mcheck-init.o libmcheck.a
+ # Include the cleanup handler.
+ aux := set-freeres thread-freeres
+ 
+-include ../Makeconfig
+-
+ CPPFLAGS-memusagestat = -DNOT_IN_libc
+ 
+ # The Perl script to analyze the output of the mtrace functions.
+Index: b/malloc/tst-malloc-thread-exit.c
+===================================================================
+--- /dev/null
++++ b/malloc/tst-malloc-thread-exit.c
+@@ -0,0 +1,218 @@
++/* Test malloc with concurrent thread termination.
++   Copyright (C) 2015-2016 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This thread spawns a number of outer threads, equal to the arena
++   limit.  The outer threads run a loop which start and join two
++   different kinds of threads: the first kind allocates (attaching an
++   arena to the thread; malloc_first_thread) and waits, the second
++   kind waits and allocates (wait_first_threads).  Both kinds of
++   threads exit immediately after waiting.  The hope is that this will
++   exhibit races in thread termination and arena management,
++   particularly related to the arena free list.  */
++
++#include <errno.h>
++#include <malloc.h>
++#include <pthread.h>
++#include <stdbool.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++
++static int do_test (void);
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
++
++static bool termination_requested;
++static int inner_thread_count = 4;
++static size_t malloc_size = 32;
++
++static void
++__attribute__ ((noinline, noclone))
++unoptimized_free (void *ptr)
++{
++  free (ptr);
++}
++
++static void *
++malloc_first_thread (void * closure)
++{
++  pthread_barrier_t *barrier = closure;
++  void *ptr = malloc (malloc_size);
++  if (ptr == NULL)
++    {
++      printf ("error: malloc: %m\n");
++      abort ();
++    }
++  int ret = pthread_barrier_wait (barrier);
++  if (ret != 0 && ret != PTHREAD_BARRIER_SERIAL_THREAD)
++    {
++      errno = ret;
++      printf ("error: pthread_barrier_wait: %m\n");
++      abort ();
++    }
++  unoptimized_free (ptr);
++  return NULL;
++}
++
++static void *
++wait_first_thread (void * closure)
++{
++  pthread_barrier_t *barrier = closure;
++  int ret = pthread_barrier_wait (barrier);
++  if (ret != 0 && ret != PTHREAD_BARRIER_SERIAL_THREAD)
++    {
++      errno = ret;
++      printf ("error: pthread_barrier_wait: %m\n");
++      abort ();
++    }
++  void *ptr = malloc (malloc_size);
++  if (ptr == NULL)
++    {
++      printf ("error: malloc: %m\n");
++      abort ();
++    }
++  unoptimized_free (ptr);
++  return NULL;
++}
++
++static void *
++outer_thread (void *closure)
++{
++  pthread_t *threads = calloc (sizeof (*threads), inner_thread_count);
++  if (threads == NULL)
++    {
++      printf ("error: calloc: %m\n");
++      abort ();
++    }
++
++  while (!__atomic_load_n (&termination_requested, __ATOMIC_RELAXED))
++    {
++      pthread_barrier_t barrier;
++      int ret = pthread_barrier_init (&barrier, NULL, inner_thread_count + 1);
++      if (ret != 0)
++        {
++          errno = ret;
++          printf ("pthread_barrier_init: %m\n");
++          abort ();
++        }
++      for (int i = 0; i < inner_thread_count; ++i)
++        {
++          void *(*func) (void *);
++          if ((i  % 2) == 0)
++            func = malloc_first_thread;
++          else
++            func = wait_first_thread;
++          ret = pthread_create (threads + i, NULL, func, &barrier);
++          if (ret != 0)
++            {
++              errno = ret;
++              printf ("error: pthread_create: %m\n");
++              abort ();
++            }
++        }
++      ret = pthread_barrier_wait (&barrier);
++      if (ret != 0 && ret != PTHREAD_BARRIER_SERIAL_THREAD)
++        {
++          errno = ret;
++          printf ("pthread_wait: %m\n");
++          abort ();
++        }
++      for (int i = 0; i < inner_thread_count; ++i)
++        {
++          ret = pthread_join (threads[i], NULL);
++          if (ret != 0)
++            {
++              ret = errno;
++              printf ("error: pthread_join: %m\n");
++              abort ();
++            }
++        }
++      ret = pthread_barrier_destroy (&barrier);
++      if (ret != 0)
++        {
++          ret = errno;
++          printf ("pthread_barrier_destroy: %m\n");
++          abort ();
++        }
++    }
++
++  free (threads);
++
++  return NULL;
++}
++
++static int
++do_test (void)
++{
++  /* The number of threads should be smaller than the number of
++     arenas, so that there will be some free arenas to add to the
++     arena free list.  */
++  enum { outer_thread_count = 2 };
++  if (mallopt (M_ARENA_MAX, 8) == 0)
++    {
++      printf ("error: mallopt (M_ARENA_MAX) failed\n");
++      return 1;
++    }
++
++  /* Leave some room for shutting down all threads gracefully.  */
++  int timeout = 3;
++  if (timeout > TIMEOUT)
++    timeout = TIMEOUT - 1;
++
++  pthread_t *threads = calloc (sizeof (*threads), outer_thread_count);
++  if (threads == NULL)
++    {
++      printf ("error: calloc: %m\n");
++      abort ();
++    }
++
++  for (long i = 0; i < outer_thread_count; ++i)
++    {
++      int ret = pthread_create (threads + i, NULL, outer_thread, NULL);
++      if (ret != 0)
++        {
++          errno = ret;
++          printf ("error: pthread_create: %m\n");
++          abort ();
++        }
++    }
++
++  struct timespec ts = {timeout, 0};
++  if (nanosleep (&ts, NULL))
++    {
++      printf ("error: error: nanosleep: %m\n");
++      abort ();
++    }
++
++  __atomic_store_n (&termination_requested, true, __ATOMIC_RELAXED);
++
++  for (long i = 0; i < outer_thread_count; ++i)
++    {
++      int ret = pthread_join (threads[i], NULL);
++      if (ret != 0)
++        {
++          errno = ret;
++          printf ("error: pthread_join: %m\n");
++          abort ();
++        }
++    }
++  free (threads);
++
++  return 0;
++}
diff --git a/SOURCES/glibc-rh1288613.patch b/SOURCES/glibc-rh1288613.patch
new file mode 100644
index 0000000..1710690
--- /dev/null
+++ b/SOURCES/glibc-rh1288613.patch
@@ -0,0 +1,184 @@
+commit b57525f1a376149840f740a31535681c07152ba4
+Author: Dmitry V. Levin <ldv@altlinux.org>
+Date:   Thu Jun 18 21:40:46 2015 +0000
+
+    Fix potential hanging of gethostbyaddr_r/gethostbyname_r
+    
+    When "reorder" resolver option is enabled, threads of a multi-threaded
+    process could hang in gethostbyaddr_r, gethostbyname_r, or
+    gethostbyname2_r.
+    
+    Due to a trivial bug in _res_hconf_reorder_addrs, simultaneous
+    invocations of this function in a multi-threaded process could result to
+    _res_hconf_reorder_addrs returning without releasing the lock it holds,
+    causing other threads to block indefinitely while waiting for the lock
+    that is not going to be released.
+    
+    [BZ #17977]
+    * resolv/res_hconf.c (_res_hconf_reorder_addrs): Fix unlocking
+    when initializing interface list, based on the bug analysis
+    and the patch proposed by Eric Newton.
+    * resolv/tst-res_hconf_reorder.c: New test.
+    * resolv/Makefile [$(have-thread-library) = yes] (tests): Add
+    tst-res_hconf_reorder.
+    ($(objpfx)tst-res_hconf_reorder): Depend on $(libdl)
+    and $(shared-thread-library).
+    (tst-res_hconf_reorder-ENV): New variable.
+
+diff --git a/resolv/Makefile b/resolv/Makefile
+index f62eea4..3509d98 100644
+--- a/resolv/Makefile
++++ b/resolv/Makefile
+ ifeq ($(have-thread-library),yes)
+ extra-libs += libanl
+ routines += gai_sigqueue
++tests += tst-res_hconf_reorder
+ endif
+ extra-libs-others = $(extra-libs)
+ libresolv-routines := gethnamaddr res_comp res_debug	\
+@@ -108,6 +109,9 @@
+ 
+ $(objpfx)ga_test: $(objpfx)libanl.so $(shared-thread-library)
+ 
++$(objpfx)tst-res_hconf_reorder: $(libdl) $(shared-thread-library)
++tst-res_hconf_reorder-ENV = RESOLV_REORDER=on
++
+ $(objpfx)tst-leaks: $(objpfx)libresolv.so
+ tst-leaks-ENV = MALLOC_TRACE=$(objpfx)tst-leaks.mtrace
+ $(objpfx)mtrace-tst-leaks: $(objpfx)tst-leaks.out
+
+diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c
+index c9642ce..0d4f3f4 100644
+--- a/resolv/res_hconf.c
++++ b/resolv/res_hconf.c
+@@ -462,10 +462,10 @@
+ 	  errno = save;
+ 
+ 	  num_ifs = new_num_ifs;
+-
+-	  __libc_lock_unlock (lock);
+ 	}
+ 
++      __libc_lock_unlock (lock);
++
+       __close (sd);
+     }
+ 
+diff --git a/resolv/tst-res_hconf_reorder.c b/resolv/tst-res_hconf_reorder.c
+new file mode 100644
+index 0000000..1e7e0e2
+--- /dev/null
++++ b/resolv/tst-res_hconf_reorder.c
+@@ -0,0 +1,112 @@
++/* BZ #17977 _res_hconf_reorder_addrs test.
++
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <errno.h>
++#include <stdio.h>
++#include <string.h>
++#include <time.h>
++#include <dlfcn.h>
++#include <pthread.h>
++#include <netdb.h>
++#include <netinet/in.h>
++#include <sys/socket.h>
++
++static struct timespec ts;
++
++/* The first thread that gets a lock in _res_hconf_reorder_addrs()
++   should hold the lock long enough to make two other threads blocked.
++   This is achieved by slowing down realloc(3) that is called several times
++   by _res_hconf_reorder_addrs().  */
++
++void *
++realloc (void *ptr, size_t len)
++{
++  static void *(*fun) (void *, size_t);
++
++  if (!fun)
++    fun = dlsym (RTLD_NEXT, "realloc");
++
++  if (ts.tv_nsec)
++    nanosleep (&ts, NULL);
++
++  return (*fun) (ptr, len);
++}
++
++static void *
++resolve (void *arg)
++{
++  struct in_addr addr;
++  struct hostent ent;
++  struct hostent *result;
++  int err;
++  char buf[1024];
++
++  addr.s_addr = htonl (INADDR_LOOPBACK);
++  (void) gethostbyaddr_r ((void *) &addr, sizeof (addr), AF_INET,
++		          &ent, buf, sizeof (buf), &result, &err);
++  return arg;
++}
++
++static int
++do_test (void)
++{
++  #define N 3
++  pthread_t thr[N];
++  unsigned int i;
++  int result = 0;
++
++  /* turn on realloc slowdown */
++  ts.tv_nsec = 100000000;
++
++  for (i = 0; i < N; ++i)
++    {
++      int rc = pthread_create (&thr[i], NULL, resolve, NULL);
++
++      if (rc)
++	{
++	  printf ("pthread_create: %s\n", strerror(rc));
++	  exit (1);
++	}
++    }
++
++  for (i = 0; i < N; ++i)
++    {
++      void *retval;
++      int rc = pthread_join (thr[i], &retval);
++
++      if (rc)
++	{
++	  printf ("pthread_join: %s\n", strerror(rc));
++	  exit (1);
++	}
++      if (retval)
++	{
++	  printf ("thread %u exit status %p\n", i, retval);
++	  result = 1;
++	}
++    }
++
++  /* turn off realloc slowdown, no longer needed */
++  ts.tv_nsec = 0;
++
++  return result;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
diff --git a/SOURCES/glibc-rh1292018-0.patch b/SOURCES/glibc-rh1292018-0.patch
new file mode 100644
index 0000000..e0b4da7
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-0.patch
@@ -0,0 +1,55 @@
+commit a3d9ab5070b56b49aa91be2887fa5b118012b2cd
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Tue Mar 31 13:17:51 2015 -0700
+
+    Limit threads sharing L2 cache to 2 for SLM/KNL
+    
+    Silvermont and Knights Landing have a modular system design with two cores
+    sharing an L2 cache.  If more than 2 cores are detected to shared L2 cache,
+    it should be adjusted for Silvermont and Knights Landing.
+    
+        [BZ #18185]
+        * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Limit threads
+        sharing L2 cache to 2 for Silvermont/Knights Landing.
+
+diff --git a/sysdeps/x86_64/cacheinfo.c b/sysdeps/x86_64/cacheinfo.c
+index f1cbf50..b99fb9a 100644
+--- a/sysdeps/x86_64/cacheinfo.c
++++ b/sysdeps/x86_64/cacheinfo.c
+@@ -585,6 +585,10 @@ init_cacheinfo (void)
+       __cpuid (1, eax, ebx_1, ecx, edx);
+ #endif
+ 
++      unsigned int family = (eax >> 8) & 0x0f;
++      unsigned int model = (eax >> 4) & 0x0f;
++      unsigned int extended_model = (eax >> 12) & 0xf0;
++
+ #ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION
+       /* Intel prefers SSSE3 instructions for memory/string routines
+ 	 if they are available.  */
+@@ -647,6 +651,25 @@ init_cacheinfo (void)
+ 		}
+ 	    }
+ 	  threads += 1;
++	  if (threads > 2 && level == 2 && family == 6)
++	    {
++	      model += extended_model;
++	      switch (model)
++		{
++		case 0x57:
++		  /* Knights Landing has L2 cache shared by 2 cores.  */
++		case 0x37:
++		case 0x4a:
++		case 0x4d:
++		case 0x5a:
++		case 0x5d:
++		  /* Silvermont has L2 cache shared by 2 cores.  */
++		  threads = 2;
++		  break;
++		default:
++		  break;
++		}
++	    }
+ 	}
+       else
+ 	{
diff --git a/SOURCES/glibc-rh1292018-0a.patch b/SOURCES/glibc-rh1292018-0a.patch
new file mode 100644
index 0000000..915832b
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-0a.patch
@@ -0,0 +1,423 @@
+Required to get access to _rtld_global_ro@@GLIBC_PRIVATE
+since it's only available from ld.so.
+
+commit fab7ce3f5b4060bf62659e8b58529de4156b5a2f
+Author: Joseph Myers <joseph@codesourcery.com>
+Date:   Fri May 31 16:16:33 2013 +0000
+
+    Link extra-libs consistently with libc and ld.so.
+
+Index: glibc-2.17-c758a686/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/Makefile
++++ glibc-2.17-c758a686/Makefile
+@@ -127,6 +127,9 @@ lib: $(common-objpfx)libc.so
+ 
+ lib: $(common-objpfx)linkobj/libc.so
+ 
++# Do not filter ld.so out of libc.so link.
++$(common-objpfx)linkobj/libc.so: link-libc-deps = # empty
++
+ $(common-objpfx)linkobj/libc.so: $(elfobjdir)/soinit.os \
+ 				 $(common-objpfx)linkobj/libc_pic.a \
+ 				 $(elfobjdir)/sofini.os \
+Index: glibc-2.17-c758a686/Makerules
+===================================================================
+--- glibc-2.17-c758a686.orig/Makerules
++++ glibc-2.17-c758a686/Makerules
+@@ -470,9 +470,10 @@ link-libc-deps = $(common-objpfx)libc.so
+ # This must come after the installation rules so Make doesn't try to
+ # build shared libraries in place from the installed *_pic.a files.
+ # $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
+-# on other shared objects.
+-lib%.so: lib%_pic.a $(+preinit) $(+postinit)
+-	$(build-shlib)
++# on other shared objects.  The linking with libc and ld.so is intended
++# to be as similar as possible to a default link with an installed libc.
++lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(+interp) $(link-libc-deps)
++	$(build-shlib) $(link-libc-args)
+ 
+ define build-shlib-helper
+ $(LINK.o) -shared $(static-libgcc) -Wl,-O1 $(sysdep-LDFLAGS) \
+@@ -558,7 +559,8 @@ endef
+ 
+ build-module-helper-objlist = \
+ 	$(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\
+-		   $(filter-out %.lds $(map-file) $(+preinit) $(+postinit),$^))
++		   $(filter-out %.lds $(map-file) $(+preinit) $(+postinit) \
++				$(link-libc-deps),$^))
+ 
+ build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so)
+ build-shlib-objlist = $(build-module-helper-objlist) \
+@@ -601,6 +603,9 @@ generated += libc_pic.opts libc_pic.os.c
+ libc_pic_clean := .clean
+ endif
+ 
++# Do not filter ld.so out of libc.so link.
++$(common-objpfx)libc.so: link-libc-deps = # empty
++
+ # Use our own special initializer and finalizer files for libc.so.
+ $(common-objpfx)libc.so: $(elfobjdir)/soinit.os \
+ 			 $(common-objpfx)libc_pic.os$(libc_pic_clean) \
+@@ -660,8 +665,7 @@ include $(patsubst %,$(..)extra-modules.
+ 
+ extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
+ $(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
+-		$(objpfx)%.os $(shlib-lds) \
+-		$(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
++		$(objpfx)%.os $(shlib-lds) $(link-libs-deps)
+ 	$(build-module)
+ endif
+ 
+Index: glibc-2.17-c758a686/crypt/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/crypt/Makefile
++++ glibc-2.17-c758a686/crypt/Makefile
+@@ -72,8 +72,3 @@ endif
+ ifeq (yes,$(build-bounded))
+ $(tests:%=$(objpfx)%-bp): $(objpfx)libcrypt_b.a
+ endif
+-
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)libcrypt.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
+Index: glibc-2.17-c758a686/debug/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/debug/Makefile
++++ glibc-2.17-c758a686/debug/Makefile
+@@ -159,13 +159,3 @@ $(objpfx)xtrace: xtrace.sh
+ 	    -e 's|@PKGVERSION@|$(PKGVERSION)|' \
+ 	    -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $^ > $@.new \
+ 	&& rm -f $@ && mv $@.new $@ && chmod +x $@
+-
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)libSegFault.so: $(common-objpfx)libc.so \
+-			 $(common-objpfx)libc_nonshared.a \
+-			 $(elf-objpfx)$(rtld-installed-name)
+-$(objpfx)libpcprofile.so: $(common-objpfx)libc.so \
+-			  $(common-objpfx)libc_nonshared.a \
+-			  $(elf-objpfx)$(rtld-installed-name)
+Index: glibc-2.17-c758a686/dlfcn/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/dlfcn/Makefile
++++ glibc-2.17-c758a686/dlfcn/Makefile
+@@ -117,16 +117,9 @@ $(objpfx)bug-atexit1.out: $(objpfx)bug-a
+ $(objpfx)bug-atexit2: $(libdl)
+ $(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so
+ 
+-LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh $(elfobjdir)/ld.so \
+-			    $(common-objpfx)libc_nonshared.a
++LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh
+ $(objpfx)bug-atexit3: $(libdl)
+ $(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so
+ 
+ $(objpfx)tst-rec-dlopen: $(libdl)
+ $(objpfx)tst-rec-dlopen.out: $(objpfx)moddummy1.so $(objpfx)moddummy2.so
+-
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)libdl.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a \
+-		   $(elfobjdir)/ld.so
+Index: glibc-2.17-c758a686/hesiod/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/hesiod/Makefile
++++ glibc-2.17-c758a686/hesiod/Makefile
+@@ -33,12 +33,7 @@ libnss_hesiod-inhibit-o	= $(filter-out .
+ 
+ include ../Rules
+ 
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-# The Hesiod NSS modules also needs the resolver and some help from
++# The Hesiod NSS module also needs the resolver and some help from
+ # the file service.
+ $(objpfx)libnss_hesiod.so: $(common-objpfx)resolv/libresolv.so \
+-			   $(common-objpfx)nss/libnss_files.so \
+-			   $(common-objpfx)libc.so \
+-			   $(common-objpfx)libc_nonshared.a
++			   $(common-objpfx)nss/libnss_files.so
+Index: glibc-2.17-c758a686/iconvdata/extra-module.mk
+===================================================================
+--- glibc-2.17-c758a686.orig/iconvdata/extra-module.mk
++++ glibc-2.17-c758a686/iconvdata/extra-module.mk
+@@ -4,16 +4,9 @@ extra-modules-left := $(strip $(filter-o
+ extra-objs := $(extra-objs) $(patsubst %,%.os,$($(mod)-routines))
+ 
+ $(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))\
+-		    $(shlib-lds)
++		    $(shlib-lds) $(link-libc-deps)
+ 	$(build-module-asneeded)
+ 
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)$(mod).so: $(common-objpfx)libc.so \
+-	$(common-objpfx)/elf/ld.so \
+-	$(common-objpfx)libc_nonshared.a
+-
+ ifneq (,$(extra-modules-left))
+ include extra-module.mk
+ endif
+Index: glibc-2.17-c758a686/libidn/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/libidn/Makefile
++++ glibc-2.17-c758a686/libidn/Makefile
+@@ -33,5 +33,3 @@ include $(..)Makeconfig
+ libcidn-inhibit-o = $(filter-out .os,$(object-suffixes))
+ 
+ include $(..)Rules
+-
+-$(objpfx)libcidn.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
+Index: glibc-2.17-c758a686/locale/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/locale/Makefile
++++ glibc-2.17-c758a686/locale/Makefile
+@@ -99,9 +99,3 @@ cpp-srcs-left := $(localedef-modules) $(
+ 		 $(lib-modules)
+ lib := locale-programs
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+-
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)libBrokenLocale.so: $(common-objpfx)libc.so \
+-			     $(common-objpfx)libc_nonshared.a
+Index: glibc-2.17-c758a686/login/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/login/Makefile
++++ glibc-2.17-c758a686/login/Makefile
+@@ -76,8 +76,3 @@ endif
+ $(inst_libexecdir)/pt_chown: $(objpfx)pt_chown $(+force)
+ 	$(make-target-directory)
+ 	-$(INSTALL_PROGRAM) -m 4755 -o root $< $@
+-
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)libutil.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
+Index: glibc-2.17-c758a686/malloc/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/malloc/Makefile
++++ glibc-2.17-c758a686/malloc/Makefile
+@@ -151,7 +151,7 @@ $(objpfx)memusage: memusage.sh
+ 
+ 
+ # The implementation uses `dlsym'
+-$(objpfx)libmemusage.so: $(common-objpfx)dlfcn/libdl.so $(elfobjdir)/ld.so
++$(objpfx)libmemusage.so: $(common-objpfx)dlfcn/libdl.so
+ 
+ # Extra dependencies
+ $(foreach o,$(all-object-suffixes),$(objpfx)malloc$(o)): arena.c hooks.c
+Index: glibc-2.17-c758a686/math/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/math/Makefile
++++ glibc-2.17-c758a686/math/Makefile
+@@ -203,8 +203,3 @@ gmp-objs = $(patsubst %,$(common-objpfx)
+ $(objpfx)atest-exp: $(gmp-objs)
+ $(objpfx)atest-sincos: $(gmp-objs)
+ $(objpfx)atest-exp2: $(gmp-objs)
+-
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)libm.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
+Index: glibc-2.17-c758a686/nis/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nis/Makefile
++++ glibc-2.17-c758a686/nis/Makefile
+@@ -77,12 +77,12 @@ $(objpfx)libnss_nis.so: $(objpfx)libnsl.
+ 			$(common-objpfx)nss/libnss_files.so
+ $(objpfx)libnss_nisplus.so: $(objpfx)libnsl.so$(libnsl.so-version)
+ 
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+ libnsl-libc = $(common-objpfx)linkobj/libc.so
+-$(services:%=$(objpfx)libnss_%.so) $(objpfx)libnsl.so: $(libnsl-libc) \
+-					       $(common-objpfx)libc_nonshared.a
++# Target-specific variable setting to link objects using deprecated
++# RPC interfaces with the version of libc.so that makes them available
++# for new links:
++$(services:%=$(objpfx)libnss_%.so) $(objpfx)libnsl.so: \
++  libc-for-link = $(libnsl-libc)
+ 
+ 
+ ifeq ($(build-shared),yes)
+Index: glibc-2.17-c758a686/nptl/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl/Makefile
++++ glibc-2.17-c758a686/nptl/Makefile
+@@ -530,14 +530,6 @@ $(objpfx)libpthread.so: $(addprefix $(ob
+ $(objpfx)libpthread.so: +preinit += $(addprefix $(objpfx),$(crti-objs))
+ $(objpfx)libpthread.so: +postinit += $(addprefix $(objpfx),$(crtn-objs))
+ 
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-# Depend on ld.so too to get proper versions of ld.so symbols.
+-$(objpfx)libpthread.so: $(common-objpfx)libc.so \
+-			$(common-objpfx)libc_nonshared.a \
+-			$(elfobjdir)/ld.so
+-
+ # Make sure we link with the thread library.
+ ifeq ($(build-shared),yes)
+ $(addprefix $(objpfx), \
+Index: glibc-2.17-c758a686/nptl_db/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nptl_db/Makefile
++++ glibc-2.17-c758a686/nptl_db/Makefile
+@@ -51,12 +51,6 @@ libthread_db.so-no-z-defs = yes
+ 
+ include ../Rules
+ 
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)libthread_db.so: $(common-objpfx)libc.so \
+-			  $(common-objpfx)libc_nonshared.a
+-
+ tests: $(objpfx)db-symbols.out
+ $(objpfx)db-symbols.out: $(objpfx)db-symbols.v.i \
+ 			 $(common-objpfx)nptl/libpthread.so
+Index: glibc-2.17-c758a686/nss/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/nss/Makefile
++++ glibc-2.17-c758a686/nss/Makefile
+@@ -86,12 +86,11 @@ ifeq (yes,$(have-selinux))
+ LDLIBS-makedb		:= -lselinux
+ endif
+ 
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+ libnss-libc = $(common-objpfx)linkobj/libc.so
+-$(services:%=$(objpfx)libnss_%.so): $(libnss-libc) \
+-				    $(common-objpfx)libc_nonshared.a
++# Target-specific variable setting to link objects using deprecated
++# RPC interfaces with the version of libc.so that makes them available
++# for new links:
++$(services:%=$(objpfx)libnss_%.so): libc-for-link = $(libnss-libc)
+ 
+ $(objpfx)libnss_db.so: $(objpfx)libnss_files.so
+ 
+@@ -109,8 +108,7 @@ $(inst_vardbdir)/Makefile: db-Makefile $
+ 	$(do-install)
+ 
+ libof-nss_test1 = extramodules
+-$(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(common-objpfx)libc.so \
+-			   $(common-objpfx)libc_nonshared.a
++$(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(link-libc-deps)
+ 	$(build-module)
+ ifdef libnss_test1.so-version
+ $(objpfx)/libnss_test1.so$(libnss_test1.so-version): $(objpfx)/libnss_test1.so
+Index: glibc-2.17-c758a686/ports/sysdeps/arm/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/arm/Makefile
++++ glibc-2.17-c758a686/ports/sysdeps/arm/Makefile
+@@ -25,11 +25,6 @@ sysdep_routines += $(aeabi_constants) $(
+ static-only-routines += $(aeabi_constants)
+ endif
+ 
+-# to pull in __aeabi_read_tp, needed for tls
+-ifeq ($(subdir),malloc)
+-$(objpfx)libmemusage.so: $(common-objpfx)libc_nonshared.a
+-endif
+-
+ ifeq ($(subdir),gmon)
+ sysdep_routines += arm-mcount
+ endif
+@@ -37,7 +32,3 @@ endif
+ ifeq ($(subdir),debug)
+ CFLAGS-backtrace.c += -funwind-tables
+ endif
+-
+-ifeq ($(subdir),math)
+-$(objpfx)libm.so: $(elfobjdir)/ld.so
+-endif
+Index: glibc-2.17-c758a686/resolv/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/resolv/Makefile
++++ glibc-2.17-c758a686/resolv/Makefile
+@@ -88,23 +88,11 @@ CFLAGS-res_hconf.c = -fexceptions
+ # The BIND code elicits some harmless warnings.
+ +cflags += -Wno-strict-prototypes -Wno-write-strings
+ 
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)libresolv.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
+-# Some hosts need '__stack_chk_guard', so pull in the definition from
+-# ld.so if required.
+-ifeq (yes,$(have-ssp))
+-LDLIBS-resolv.so += $(as-needed) $(elfobjdir)/ld.so $(no-as-needed)
+-endif
+-
+ # The DNS NSS modules needs the resolver.
+-$(objpfx)libnss_dns.so: $(objpfx)libresolv.so $(common-objpfx)libc.so \
+-			$(common-objpfx)libc_nonshared.a
++$(objpfx)libnss_dns.so: $(objpfx)libresolv.so
+ 
+ # The asynchronous name lookup code needs the thread library.
+-$(objpfx)libanl.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a \
+-		    $(shared-thread-library)
++$(objpfx)libanl.so: $(shared-thread-library)
+ 
+ $(objpfx)ga_test: $(objpfx)libanl.so $(shared-thread-library)
+ 
+Index: glibc-2.17-c758a686/rt/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/rt/Makefile
++++ glibc-2.17-c758a686/rt/Makefile
+@@ -64,12 +64,7 @@ CFLAGS-librt-cancellation.c = -fasynchro
+ 
+ LDFLAGS-rt.so = -Wl,--enable-new-dtags,-z,nodelete
+ 
+-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+-# This ensures they will load libc.so for needed symbols if loaded by
+-# a statically-linked program that hasn't already loaded it.
+-$(objpfx)librt.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a \
+-		   $(shared-thread-library) \
+-		   $(elfobjdir)/ld.so
++$(objpfx)librt.so: $(shared-thread-library)
+ 
+ ifeq (yes,$(build-shared))
+ $(addprefix $(objpfx),$(tests)): $(objpfx)librt.so $(shared-thread-library)
+Index: glibc-2.17-c758a686/stdlib/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/stdlib/Makefile
++++ glibc-2.17-c758a686/stdlib/Makefile
+@@ -136,7 +136,7 @@ $(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $
+ $(objpfx)tst-putenv: $(objpfx)tst-putenvmod.so
+ LDFLAGS-tst-putenv = $(no-as-needed)
+ 
+-$(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os
++$(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os $(link-libc-deps)
+ 	$(build-module)
+ libof-tst-putenvmod = extramodules
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/fpu/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/fpu/Makefile
++++ /dev/null
+@@ -1,3 +0,0 @@
+-ifeq ($(subdir),math)
+-$(objpfx)libm.so: $(elfobjdir)/ld.so
+-endif
+Index: glibc-2.17-c758a686/sysdeps/powerpc/fpu/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/Makefile
++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/Makefile
+@@ -2,8 +2,6 @@ ifeq ($(subdir),math)
+ libm-support += fenv_const fe_nomask fe_mask t_sqrt
+ libm-tests += test-powerpc-snan
+ 
+-# libm needs ld.so to access dl_hwcap
+-$(objpfx)libm.so: $(elfobjdir)/ld.so
+ endif
+ 
+ ifeq ($(subdir),stdlib)
diff --git a/SOURCES/glibc-rh1292018-0b.patch b/SOURCES/glibc-rh1292018-0b.patch
new file mode 100644
index 0000000..a764cbb
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-0b.patch
@@ -0,0 +1,148 @@
+Needed to get future uses of all-dl-routines to include
+__get_cpu_features into the right shared object routines.
+
+commit ac9e0e5e401fa634667a8284a0db0ca886bf816b
+Author: Roland McGrath <roland@hack.frob.com>
+Date:   Fri Feb 6 10:42:08 2015 -0800
+
+    Clean up sysdep-dl-routines variable.
+
+Index: glibc-2.17-c758a686/elf/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/elf/Makefile
++++ glibc-2.17-c758a686/elf/Makefile
+@@ -22,7 +22,7 @@ subdir		:= elf
+ include ../Makeconfig
+ 
+ headers		= elf.h bits/elfclass.h link.h bits/link.h
+-routines	= $(dl-routines) dl-support dl-iteratephdr \
++routines	= $(all-dl-routines) dl-support dl-iteratephdr \
+ 		  dl-addr enbl-secure dl-profstub \
+ 		  dl-origin dl-libc dl-sym dl-tsd dl-sysdep
+ 
+@@ -43,7 +43,7 @@ shared-only-routines += dl-caller
+ 
+ # ld.so uses those routines, plus some special stuff for being the program
+ # interpreter and operating independent of libc.
+-rtld-routines	:= rtld $(dl-routines) dl-sysdep dl-environ dl-minimal
++rtld-routines	= rtld $(all-dl-routines) dl-sysdep dl-environ dl-minimal
+ all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines)
+ 
+ CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
+Index: glibc-2.17-c758a686/ports/sysdeps/aarch64/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/aarch64/Makefile
++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/Makefile
+@@ -2,8 +2,6 @@ long-double-fcts = yes
+ 
+ ifeq ($(subdir),elf)
+ sysdep-dl-routines += tlsdesc dl-tlsdesc
+-sysdep_routines += tlsdesc dl-tlsdesc
+-sysdep-rtld-routines += tlsdesc dl-tlsdesc
+ gen-as-const-headers += dl-link.sym
+ endif
+ 
+Index: glibc-2.17-c758a686/ports/sysdeps/arm/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/arm/Makefile
++++ glibc-2.17-c758a686/ports/sysdeps/arm/Makefile
+@@ -3,8 +3,8 @@ static-gnulib-arch = $(elfobjdir)/libgcc
+ 
+ ifeq ($(subdir),elf)
+ sysdep-dl-routines += tlsdesc dl-tlsdesc
+-sysdep_routines += aeabi_unwind_cpp_pr1 find_exidx tlsdesc dl-tlsdesc
+-sysdep-rtld-routines += aeabi_unwind_cpp_pr1 tlsdesc dl-tlsdesc
++sysdep_routines += aeabi_unwind_cpp_pr1 find_exidx
++sysdep-rtld-routines += aeabi_unwind_cpp_pr1
+ shared-only-routines += aeabi_unwind_cpp_pr1
+ 
+ $(objpfx)libgcc-stubs.a: $(objpfx)aeabi_unwind_cpp_pr1.os
+Index: glibc-2.17-c758a686/ports/sysdeps/hppa/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/hppa/Makefile
++++ glibc-2.17-c758a686/ports/sysdeps/hppa/Makefile
+@@ -24,8 +24,6 @@ LDFLAGS-c_pic.os += -Wl,--unique=.text*
+ ifeq ($(subdir),elf)
+ CFLAGS-rtld.c += -mdisable-fpregs
+ sysdep-dl-routines += dl-symaddr dl-fptr
+-sysdep_routines += $(sysdep-dl-routines)
+-sysdep-rtld-routines += $(sysdep-dl-routines)
+ endif
+ 
+ ifeq ($(subdir),csu)
+Index: glibc-2.17-c758a686/sysdeps/i386/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/Makefile
++++ glibc-2.17-c758a686/sysdeps/i386/Makefile
+@@ -74,8 +74,6 @@ endif
+ 
+ ifeq ($(subdir),elf)
+ sysdep-dl-routines += tlsdesc dl-tlsdesc
+-sysdep_routines += tlsdesc dl-tlsdesc
+-sysdep-rtld-routines += tlsdesc dl-tlsdesc
+ endif
+ 
+ ifeq ($(subdir),csu)
+Index: glibc-2.17-c758a686/ports/sysdeps/ia64/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/ia64/Makefile
++++ glibc-2.17-c758a686/ports/sysdeps/ia64/Makefile
+@@ -17,6 +17,4 @@ endif
+ 
+ ifeq ($(subdir),elf)
+ sysdep-dl-routines += dl-symaddr dl-fptr
+-sysdep_routines += $(sysdep-dl-routines)
+-sysdep-rtld-routines += $(sysdep-dl-routines)
+ endif
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/ia64/Makefile
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/ia64/Makefile
+@@ -14,8 +14,6 @@ endif
+ 
+ ifeq ($(subdir),elf)
+ sysdep-dl-routines += dl-static
+-sysdep_routines += $(sysdep-dl-routines)
+-sysdep-rtld-routines += $(sysdep-dl-routines)
+ endif
+ 
+ ifeq ($(subdir),rt)
+Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/mips/Makefile
++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/mips/Makefile
+@@ -49,8 +49,6 @@ ifeq ($(subdir),elf)
+ ifeq ($(build-shared),yes)
+ # This is needed for DSO loading from static binaries.
+ sysdep-dl-routines += dl-static
+-sysdep_routines += dl-static
+-sysdep-rtld-routines += dl-static
+ endif
+ endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/Makefile
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile
+@@ -21,8 +21,6 @@ sysdep_routines += dl-vdso
+ ifeq ($(build-shared),yes)
+ # This is needed for DSO loading from static binaries.
+ sysdep-dl-routines += dl-static
+-sysdep_routines += dl-static
+-sysdep-rtld-routines += dl-static
+ endif
+ endif
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/Makefile
++++ glibc-2.17-c758a686/sysdeps/x86_64/Makefile
+@@ -20,8 +20,6 @@ endif
+ 
+ ifeq ($(subdir),elf)
+ sysdep-dl-routines += tlsdesc dl-tlsdesc
+-sysdep_routines += tlsdesc dl-tlsdesc
+-sysdep-rtld-routines += tlsdesc dl-tlsdesc
+ 
+ tests += tst-quad1 tst-quad2
+ modules-names += tst-quadmod1 tst-quadmod2
diff --git a/SOURCES/glibc-rh1292018-1.patch b/SOURCES/glibc-rh1292018-1.patch
new file mode 100644
index 0000000..b54b0b3
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-1.patch
@@ -0,0 +1,1522 @@
+We add back Prefer_SSE_for_memop since we still need it for all of the
+existing era implementations for RHEL 7.3. To remove it would require
+a more wholesale backport of optmized routines.
+
+commit e2e4f56056adddc3c1efe676b40a4b4f2453103b
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Thu Aug 13 03:37:47 2015 -0700
+
+    Add _dl_x86_cpu_features to rtld_global
+    
+    This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so
+    and initializes it early before __libc_start_main is called so that
+    cpu_features is always available when it is used and we can avoid
+    calling __init_cpu_features in IFUNC selectors.
+
+Index: glibc-2.17-c758a686/sysdeps/i386/dl-machine.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/dl-machine.h
++++ glibc-2.17-c758a686/sysdeps/i386/dl-machine.h
+@@ -25,6 +25,7 @@
+ #include <sysdep.h>
+ #include <tls.h>
+ #include <dl-tlsdesc.h>
++#include <cpu-features.c>
+ 
+ /* Return nonzero iff ELF header is compatible with the running host.  */
+ static inline int __attribute__ ((unused))
+@@ -266,6 +267,8 @@ dl_platform_init (void)
+   if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0')
+     /* Avoid an empty string which would disturb us.  */
+     GLRO(dl_platform) = NULL;
++
++  init_cpu_features (&GLRO(dl_x86_cpu_features));
+ }
+ 
+ static inline Elf32_Addr
+Index: glibc-2.17-c758a686/sysdeps/i386/dl-procinfo.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/dl-procinfo.c
++++ glibc-2.17-c758a686/sysdeps/i386/dl-procinfo.c
+@@ -43,6 +43,22 @@
+ # define PROCINFO_CLASS
+ #endif
+ 
++#if !IS_IN (ldconfig)
++# if !defined PROCINFO_DECL && defined SHARED
++  ._dl_x86_cpu_features
++# else
++PROCINFO_CLASS struct cpu_features _dl_x86_cpu_features
++# endif
++# ifndef PROCINFO_DECL
++= { }
++# endif
++# if !defined SHARED || defined PROCINFO_DECL
++;
++# else
++,
++# endif
++#endif
++
+ #if !defined PROCINFO_DECL && defined SHARED
+   ._dl_x86_cap_flags
+ #else
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/cacheinfo.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/cacheinfo.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/cacheinfo.c
+@@ -8,6 +8,5 @@
+ #define __x86_64_raw_shared_cache_size_half __x86_raw_shared_cache_size_half
+ 
+ #define DISABLE_PREFETCHW
+-#define DISABLE_PREFERRED_MEMORY_INSTRUCTION
+ 
+ #include <sysdeps/x86_64/cacheinfo.c>
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/Makefile
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/Makefile
+@@ -1,5 +1,4 @@
+ ifeq ($(subdir),csu)
+-aux += init-arch
+ tests += test-multiarch
+ gen-as-const-headers += ifunc-defines.sym
+ endif
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/Versions
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/Versions
++++ /dev/null
+@@ -1,5 +0,0 @@
+-libc {
+-  GLIBC_PRIVATE {
+-    __get_cpu_features;
+-  }
+-}
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/ifunc-defines.sym
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/ifunc-defines.sym
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/ifunc-defines.sym
+@@ -4,7 +4,6 @@
+ --
+ 
+ CPU_FEATURES_SIZE	sizeof (struct cpu_features)
+-KIND_OFFSET		offsetof (struct cpu_features, kind)
+ CPUID_OFFSET		offsetof (struct cpu_features, cpuid)
+ CPUID_SIZE		sizeof (struct cpuid_registers)
+ CPUID_EAX_OFFSET	offsetof (struct cpuid_registers, eax)
+Index: glibc-2.17-c758a686/sysdeps/i386/ldsodefs.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/ldsodefs.h
++++ glibc-2.17-c758a686/sysdeps/i386/ldsodefs.h
+@@ -20,6 +20,7 @@
+ #define	_I386_LDSODEFS_H	1
+ 
+ #include <elf.h>
++#include <cpu-features.h>
+ 
+ struct La_i86_regs;
+ struct La_i86_retval;
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c
+@@ -1,5 +1,5 @@
+ #if IS_IN (ldconfig)
+ # include <sysdeps/i386/dl-procinfo.c>
+ #else
+-# include <sysdeps/generic/dl-procinfo.c>
++# include <sysdeps/x86_64/dl-procinfo.c>
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/x86/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86/Makefile
++++ glibc-2.17-c758a686/sysdeps/x86/Makefile
+@@ -7,3 +7,14 @@ $(objpfx)tst-xmmymmzmm.out: ../sysdeps/x
+ 	@echo "Checking ld.so for SSE register use.  This will take a few seconds..."
+ 	$(SHELL) $< $(objpfx) '$(NM)' '$(OBJDUMP)' '$(READELF)' > $@
+ endif
++
++ifeq ($(subdir),csu)
++gen-as-const-headers += cpu-features-offsets.sym rtld-global-offsets.sym
++endif
++
++ifeq ($(subdir),elf)
++sysdep-dl-routines += dl-get-cpu-features
++
++tests += tst-get-cpu-features
++tests-static += tst-get-cpu-features-static
++endif
+Index: glibc-2.17-c758a686/sysdeps/x86/Versions
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86/Versions
+@@ -0,0 +1,5 @@
++ld {
++  GLIBC_PRIVATE {
++    __get_cpu_features;
++  }
++}
+Index: glibc-2.17-c758a686/sysdeps/x86/cpu-features-offsets.sym
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86/cpu-features-offsets.sym
+@@ -0,0 +1,7 @@
++#define SHARED 1
++
++#include <ldsodefs.h>
++
++#define rtld_global_ro_offsetof(mem) offsetof (struct rtld_global_ro, mem)
++
++RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET rtld_global_ro_offsetof (_dl_x86_cpu_features)
+Index: glibc-2.17-c758a686/sysdeps/x86/cpu-features.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86/cpu-features.c
+@@ -0,0 +1,213 @@
++/* Initialize CPU feature data.
++   This file is part of the GNU C Library.
++   Copyright (C) 2008-2015 Free Software Foundation, Inc.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <cpuid.h>
++#include <cpu-features.h>
++
++static inline void
++get_common_indeces (struct cpu_features *cpu_features,
++		    unsigned int *family, unsigned int *model)
++{
++  unsigned int eax;
++  __cpuid (1, eax, cpu_features->cpuid[COMMON_CPUID_INDEX_1].ebx,
++	   cpu_features->cpuid[COMMON_CPUID_INDEX_1].ecx,
++	   cpu_features->cpuid[COMMON_CPUID_INDEX_1].edx);
++  GLRO(dl_x86_cpu_features).cpuid[COMMON_CPUID_INDEX_1].eax = eax;
++  *family = (eax >> 8) & 0x0f;
++  *model = (eax >> 4) & 0x0f;
++}
++
++static inline void
++init_cpu_features (struct cpu_features *cpu_features)
++{
++  unsigned int ebx, ecx, edx;
++  unsigned int family = 0;
++  unsigned int model = 0;
++  enum cpu_features_kind kind;
++
++  __cpuid (0, cpu_features->max_cpuid, ebx, ecx, edx);
++
++  /* This spells out "GenuineIntel".  */
++  if (ebx == 0x756e6547 && ecx == 0x6c65746e && edx == 0x49656e69)
++    {
++      kind = arch_kind_intel;
++
++      get_common_indeces (cpu_features, &family, &model);
++
++      /* Intel processors prefer SSE instruction for memory/string
++        routines if they are available.  */
++      cpu_features->feature[index_Prefer_SSE_for_memop]
++        |= bit_Prefer_SSE_for_memop;
++
++      unsigned int eax = cpu_features->cpuid[COMMON_CPUID_INDEX_1].eax;
++      unsigned int extended_family = (eax >> 20) & 0xff;
++      unsigned int extended_model = (eax >> 12) & 0xf0;
++      if (family == 0x0f)
++	{
++	  family += extended_family;
++	  model += extended_model;
++	}
++      else if (family == 0x06)
++	{
++	  ecx = cpu_features->cpuid[COMMON_CPUID_INDEX_1].ecx;
++	  model += extended_model;
++	  switch (model)
++	    {
++	    case 0x1c:
++	    case 0x26:
++	      /* BSF is slow on Atom.  */
++	      cpu_features->feature[index_Slow_BSF] |= bit_Slow_BSF;
++	      break;
++
++	    case 0x37:
++	    case 0x4a:
++	    case 0x4d:
++	    case 0x5a:
++	    case 0x5d:
++	      /* Unaligned load versions are faster than SSSE3
++		 on Silvermont.  */
++#if index_Fast_Unaligned_Load != index_Prefer_PMINUB_for_stringop
++# error index_Fast_Unaligned_Load != index_Prefer_PMINUB_for_stringop
++#endif
++#if index_Fast_Unaligned_Load != index_Slow_SSE4_2
++# error index_Fast_Unaligned_Load != index_Slow_SSE4_2
++#endif
++	      cpu_features->feature[index_Fast_Unaligned_Load]
++		|= (bit_Fast_Unaligned_Load
++		    | bit_Prefer_PMINUB_for_stringop
++		    | bit_Slow_SSE4_2);
++	      break;
++
++	    default:
++	      /* Unknown family 0x06 processors.  Assuming this is one
++		 of Core i3/i5/i7 processors if AVX is available.  */
++	      if ((ecx & bit_AVX) == 0)
++		break;
++
++	    case 0x1a:
++	    case 0x1e:
++	    case 0x1f:
++	    case 0x25:
++	    case 0x2c:
++	    case 0x2e:
++	    case 0x2f:
++	      /* Rep string instructions, copy backward, unaligned loads
++		 and pminub are fast on Intel Core i3, i5 and i7.  */
++#if index_Fast_Rep_String != index_Fast_Copy_Backward
++# error index_Fast_Rep_String != index_Fast_Copy_Backward
++#endif
++#if index_Fast_Rep_String != index_Fast_Unaligned_Load
++# error index_Fast_Rep_String != index_Fast_Unaligned_Load
++#endif
++#if index_Fast_Rep_String != index_Prefer_PMINUB_for_stringop
++# error index_Fast_Rep_String != index_Prefer_PMINUB_for_stringop
++#endif
++	      cpu_features->feature[index_Fast_Rep_String]
++		|= (bit_Fast_Rep_String
++		    | bit_Fast_Copy_Backward
++		    | bit_Fast_Unaligned_Load
++		    | bit_Prefer_PMINUB_for_stringop);
++	      break;
++	    }
++	}
++    }
++  /* This spells out "AuthenticAMD".  */
++  else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
++    {
++      kind = arch_kind_amd;
++
++      get_common_indeces (cpu_features, &family, &model);
++
++      ecx = cpu_features->cpuid[COMMON_CPUID_INDEX_1].ecx;
++
++      /* AMD processors prefer SSE instructions for memory/string routines
++        if they are available, otherwise they prefer integer instructions.  */
++      if ((ecx & 0x200))
++	cpu_features->feature[index_Prefer_SSE_for_memop]
++	  |= bit_Prefer_SSE_for_memop;
++
++      unsigned int eax;
++      __cpuid (0x80000000, eax, ebx, ecx, edx);
++      if (eax >= 0x80000001)
++	__cpuid (0x80000001,
++		 cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].eax,
++		 cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ebx,
++		 cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ecx,
++		 cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].edx);
++    }
++  else
++    kind = arch_kind_other;
++
++  if (cpu_features->max_cpuid >= 7)
++    __cpuid_count (7, 0,
++		   cpu_features->cpuid[COMMON_CPUID_INDEX_7].eax,
++		   cpu_features->cpuid[COMMON_CPUID_INDEX_7].ebx,
++		   cpu_features->cpuid[COMMON_CPUID_INDEX_7].ecx,
++		   cpu_features->cpuid[COMMON_CPUID_INDEX_7].edx);
++
++  /* Can we call xgetbv?  */
++  if (HAS_CPU_FEATURE (OSXSAVE))
++    {
++      unsigned int xcrlow;
++      unsigned int xcrhigh;
++      asm ("xgetbv" : "=a" (xcrlow), "=d" (xcrhigh) : "c" (0));
++      /* Is YMM and XMM state usable?  */
++      if ((xcrlow & (bit_YMM_state | bit_XMM_state)) ==
++	  (bit_YMM_state | bit_XMM_state))
++	{
++	  /* Determine if AVX is usable.  */
++	  if (HAS_CPU_FEATURE (AVX))
++	    cpu_features->feature[index_AVX_Usable] |= bit_AVX_Usable;
++#if index_AVX2_Usable != index_AVX_Fast_Unaligned_Load
++# error index_AVX2_Usable != index_AVX_Fast_Unaligned_Load
++#endif
++	  /* Determine if AVX2 is usable.  Unaligned load with 256-bit
++	     AVX registers are faster on processors with AVX2.  */
++	  if (HAS_CPU_FEATURE (AVX2))
++	    cpu_features->feature[index_AVX2_Usable]
++	      |= bit_AVX2_Usable | bit_AVX_Fast_Unaligned_Load;
++	  /* Check if OPMASK state, upper 256-bit of ZMM0-ZMM15 and
++	     ZMM16-ZMM31 state are enabled.  */
++	  if ((xcrlow & (bit_Opmask_state | bit_ZMM0_15_state
++			 | bit_ZMM16_31_state)) ==
++	      (bit_Opmask_state | bit_ZMM0_15_state | bit_ZMM16_31_state))
++	    {
++	      /* Determine if AVX512F is usable.  */
++	      if (HAS_CPU_FEATURE (AVX512F))
++		{
++		  cpu_features->feature[index_AVX512F_Usable]
++		    |= bit_AVX512F_Usable;
++		  /* Determine if AVX512DQ is usable.  */
++		  if (HAS_CPU_FEATURE (AVX512DQ))
++		    cpu_features->feature[index_AVX512DQ_Usable]
++		      |= bit_AVX512DQ_Usable;
++		}
++	    }
++	  /* Determine if FMA is usable.  */
++	  if (HAS_CPU_FEATURE (FMA))
++	    cpu_features->feature[index_FMA_Usable] |= bit_FMA_Usable;
++	  /* Determine if FMA4 is usable.  */
++	  if (HAS_CPU_FEATURE (FMA4))
++	    cpu_features->feature[index_FMA4_Usable] |= bit_FMA4_Usable;
++	}
++    }
++
++  cpu_features->family = family;
++  cpu_features->model = model;
++  cpu_features->kind = kind;
++}
+Index: glibc-2.17-c758a686/sysdeps/x86/cpu-features.h
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86/cpu-features.h
+@@ -0,0 +1,273 @@
++/* This file is part of the GNU C Library.
++   Copyright (C) 2008-2015 Free Software Foundation, Inc.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef cpu_features_h
++#define cpu_features_h
++
++#define bit_Fast_Rep_String		(1 << 0)
++#define bit_Fast_Copy_Backward		(1 << 1)
++#define bit_Slow_BSF			(1 << 2)
++#define bit_Prefer_SSE_for_memop	(1 << 3)
++#define bit_Fast_Unaligned_Load		(1 << 4)
++#define bit_Prefer_PMINUB_for_stringop	(1 << 5)
++#define bit_AVX_Usable			(1 << 6)
++#define bit_FMA_Usable			(1 << 7)
++#define bit_FMA4_Usable			(1 << 8)
++#define bit_Slow_SSE4_2			(1 << 9)
++#define bit_AVX2_Usable			(1 << 10)
++#define bit_AVX_Fast_Unaligned_Load	(1 << 11)
++#define bit_AVX512F_Usable		(1 << 12)
++#define bit_AVX512DQ_Usable		(1 << 13)
++
++/* CPUID Feature flags.  */
++
++/* COMMON_CPUID_INDEX_1.  */
++#define bit_SSE2	(1 << 26)
++#define bit_SSSE3	(1 << 9)
++#define bit_SSE4_1	(1 << 19)
++#define bit_SSE4_2	(1 << 20)
++#define bit_OSXSAVE	(1 << 27)
++#define bit_AVX		(1 << 28)
++#define bit_POPCOUNT	(1 << 23)
++#define bit_FMA		(1 << 12)
++#define bit_FMA4	(1 << 16)
++
++/* COMMON_CPUID_INDEX_7.  */
++#define bit_RTM		(1 << 11)
++#define bit_AVX2	(1 << 5)
++#define bit_AVX512F	(1 << 16)
++#define bit_AVX512DQ	(1 << 17)
++
++/* XCR0 Feature flags.  */
++#define bit_XMM_state  (1 << 1)
++#define bit_YMM_state  (2 << 1)
++#define bit_Opmask_state	(1 << 5)
++#define bit_ZMM0_15_state	(1 << 6)
++#define bit_ZMM16_31_state	(1 << 7)
++
++/* The integer bit array index for the first set of internal feature bits.  */
++#define FEATURE_INDEX_1 0
++
++/* The current maximum size of the feature integer bit array.  */
++#define FEATURE_INDEX_MAX 1
++
++#ifdef	__ASSEMBLER__
++
++# include <ifunc-defines.h>
++# include <rtld-global-offsets.h>
++
++# define index_SSE2	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_EDX_OFFSET
++# define index_SSSE3	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
++# define index_SSE4_1	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
++# define index_SSE4_2	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
++# define index_AVX	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
++# define index_AVX2	COMMON_CPUID_INDEX_7*CPUID_SIZE+CPUID_EBX_OFFSET
++
++# define index_Fast_Rep_String		FEATURE_INDEX_1*FEATURE_SIZE
++# define index_Fast_Copy_Backward	FEATURE_INDEX_1*FEATURE_SIZE
++# define index_Slow_BSF			FEATURE_INDEX_1*FEATURE_SIZE
++# define index_Prefer_SSE_for_memop	FEATURE_INDEX_1*FEATURE_SIZE
++# define index_Fast_Unaligned_Load	FEATURE_INDEX_1*FEATURE_SIZE
++# define index_Prefer_PMINUB_for_stringop FEATURE_INDEX_1*FEATURE_SIZE
++# define index_AVX_Usable		FEATURE_INDEX_1*FEATURE_SIZE
++# define index_FMA_Usable		FEATURE_INDEX_1*FEATURE_SIZE
++# define index_FMA4_Usable		FEATURE_INDEX_1*FEATURE_SIZE
++# define index_Slow_SSE4_2		FEATURE_INDEX_1*FEATURE_SIZE
++# define index_AVX2_Usable		FEATURE_INDEX_1*FEATURE_SIZE
++# define index_AVX_Fast_Unaligned_Load	FEATURE_INDEX_1*FEATURE_SIZE
++# define index_AVX512F_Usable		FEATURE_INDEX_1*FEATURE_SIZE
++# define index_AVX512DQ_Usable		FEATURE_INDEX_1*FEATURE_SIZE
++
++# if defined (_LIBC) && !IS_IN (nonlib)
++#  ifdef __x86_64__
++#   ifdef SHARED
++#    if IS_IN (rtld)
++#     define LOAD_RTLD_GLOBAL_RO_RDX
++#     define HAS_FEATURE(offset, name) \
++  testl $(bit_##name), _rtld_local_ro+offset+(index_##name)(%rip)
++#    else
++#      define LOAD_RTLD_GLOBAL_RO_RDX \
++  mov _rtld_global_ro@GOTPCREL(%rip), %RDX_LP
++#     define HAS_FEATURE(offset, name) \
++  testl $(bit_##name), \
++	RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+offset+(index_##name)(%rdx)
++#    endif
++#   else /* SHARED */
++#    define LOAD_RTLD_GLOBAL_RO_RDX
++#    define HAS_FEATURE(offset, name) \
++  testl $(bit_##name), _dl_x86_cpu_features+offset+(index_##name)(%rip)
++#   endif /* !SHARED */
++#  else  /* __x86_64__ */
++#   ifdef SHARED
++#    define LOAD_FUNC_GOT_EAX(func) \
++  leal func@GOTOFF(%edx), %eax
++#    if IS_IN (rtld)
++#    define LOAD_GOT_AND_RTLD_GLOBAL_RO \
++  LOAD_PIC_REG(dx)
++#     define HAS_FEATURE(offset, name) \
++  testl $(bit_##name), offset+(index_##name)+_rtld_local_ro@GOTOFF(%edx)
++#    else
++#     define LOAD_GOT_AND_RTLD_GLOBAL_RO \
++  LOAD_PIC_REG(dx); \
++  mov _rtld_global_ro@GOT(%edx), %ecx
++#     define HAS_FEATURE(offset, name) \
++  testl $(bit_##name), \
++	RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+offset+(index_##name)(%ecx)
++#    endif
++#   else  /* SHARED */
++#    define LOAD_FUNC_GOT_EAX(func) \
++  leal func, %eax
++#    define LOAD_GOT_AND_RTLD_GLOBAL_RO
++#    define HAS_FEATURE(offset, name) \
++  testl $(bit_##name), _dl_x86_cpu_features+offset+(index_##name)
++#   endif /* !SHARED */
++#  endif /* !__x86_64__ */
++# else /* _LIBC && !nonlib */
++#  error "Sorry, <cpu-features.h> is unimplemented for assembler"
++# endif /* !_LIBC || nonlib */
++
++/* HAS_* evaluates to true if we may use the feature at runtime.  */
++# define HAS_CPU_FEATURE(name)	HAS_FEATURE (CPUID_OFFSET, name)
++# define HAS_ARCH_FEATURE(name) HAS_FEATURE (FEATURE_OFFSET, name)
++
++#else	/* __ASSEMBLER__ */
++
++# include <sys/param.h>
++# include <sys/types.h>
++# include <sysdep.h>
++# include <stdbool.h>
++
++/* Ugly hack to make it possible to select a strstr and strcasestr
++   implementation that avoids using the stack for 16-byte aligned
++   SSE temporaries.  Doing so makes it possible to call the functions
++   with a stack that's not 16-byte aligned as can happen, for example,
++   as a result of compiling the functions' callers with the GCC
++   -mpreferred-stack-boubdary=2 or =3 option, or with the ICC
++   -falign-stack=assume-4-byte option.  See rhbz 1150282 for details.
++
++   The ifunc selector uses the unaligned version by default if this
++   file exists and is accessible.  */
++# define ENABLE_STRSTR_UNALIGNED_PATHNAME \
++    "/etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned"
++
++static bool __attribute__ ((unused))
++use_unaligned_strstr (void)
++{
++  struct stat unaligned_strstr_etc_sysconfig_file;
++
++  /* TLS may not have been set up yet, so avoid using stat since it tries to
++     set errno.  */
++  return INTERNAL_SYSCALL (stat, , 2,
++			   ENABLE_STRSTR_UNALIGNED_PATHNAME,
++			   &unaligned_strstr_etc_sysconfig_file) == 0;
++}
++
++enum
++  {
++    COMMON_CPUID_INDEX_1 = 0,
++    COMMON_CPUID_INDEX_7,
++    COMMON_CPUID_INDEX_80000001,	/* for AMD */
++    /* Keep the following line at the end.  */
++    COMMON_CPUID_INDEX_MAX
++  };
++
++struct cpu_features
++{
++  enum cpu_features_kind
++    {
++      arch_kind_unknown = 0,
++      arch_kind_intel,
++      arch_kind_amd,
++      arch_kind_other
++    } kind;
++  int max_cpuid;
++  struct cpuid_registers
++  {
++    unsigned int eax;
++    unsigned int ebx;
++    unsigned int ecx;
++    unsigned int edx;
++  } cpuid[COMMON_CPUID_INDEX_MAX];
++  unsigned int family;
++  unsigned int model;
++  unsigned int feature[FEATURE_INDEX_MAX];
++};
++
++/* Used from outside of glibc to get access to the CPU features
++   structure.  */
++extern const struct cpu_features *__get_cpu_features (void)
++     __attribute__ ((const));
++
++# if defined (_LIBC) && !IS_IN (nonlib)
++/* Unused for x86.  */
++#  define INIT_ARCH()
++#  define __get_cpu_features()	(&GLRO(dl_x86_cpu_features))
++# endif
++
++
++/* HAS_* evaluates to true if we may use the feature at runtime.  */
++# define HAS_CPU_FEATURE(name) \
++  ((__get_cpu_features ()->cpuid[index_##name].reg_##name & (bit_##name)) != 0)
++# define HAS_ARCH_FEATURE(name) \
++  ((__get_cpu_features ()->feature[index_##name] & (bit_##name)) != 0)
++
++# define index_SSE2		COMMON_CPUID_INDEX_1
++# define index_SSSE3		COMMON_CPUID_INDEX_1
++# define index_SSE4_1		COMMON_CPUID_INDEX_1
++# define index_SSE4_2		COMMON_CPUID_INDEX_1
++# define index_AVX		COMMON_CPUID_INDEX_1
++# define index_AVX2		COMMON_CPUID_INDEX_7
++# define index_AVX512F		COMMON_CPUID_INDEX_7
++# define index_AVX512DQ		COMMON_CPUID_INDEX_7
++# define index_RTM		COMMON_CPUID_INDEX_7
++# define index_FMA		COMMON_CPUID_INDEX_1
++# define index_FMA4		COMMON_CPUID_INDEX_80000001
++# define index_POPCOUNT		COMMON_CPUID_INDEX_1
++# define index_OSXSAVE		COMMON_CPUID_INDEX_1
++
++# define reg_SSE2		edx
++# define reg_SSSE3		ecx
++# define reg_SSE4_1		ecx
++# define reg_SSE4_2		ecx
++# define reg_AVX		ecx
++# define reg_AVX2		ebx
++# define reg_AVX512F		ebx
++# define reg_AVX512DQ		ebx
++# define reg_RTM		ebx
++# define reg_FMA		ecx
++# define reg_FMA4		ecx
++# define reg_POPCOUNT		ecx
++# define reg_OSXSAVE		ecx
++
++# define index_Fast_Rep_String		FEATURE_INDEX_1
++# define index_Fast_Copy_Backward	FEATURE_INDEX_1
++# define index_Slow_BSF			FEATURE_INDEX_1
++# define index_Prefer_SSE_for_memop	FEATURE_INDEX_1
++# define index_Fast_Unaligned_Load	FEATURE_INDEX_1
++# define index_Prefer_PMINUB_for_stringop FEATURE_INDEX_1
++# define index_AVX_Usable		FEATURE_INDEX_1
++# define index_FMA_Usable		FEATURE_INDEX_1
++# define index_FMA4_Usable		FEATURE_INDEX_1
++# define index_Slow_SSE4_2		FEATURE_INDEX_1
++# define index_AVX2_Usable		FEATURE_INDEX_1
++# define index_AVX_Fast_Unaligned_Load	FEATURE_INDEX_1
++# define index_AVX512F_Usable		FEATURE_INDEX_1
++# define index_AVX512DQ_Usable		FEATURE_INDEX_1
++
++#endif	/* !__ASSEMBLER__ */
++
++#endif  /* cpu_features_h */
+Index: glibc-2.17-c758a686/sysdeps/x86/dl-get-cpu-features.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86/dl-get-cpu-features.c
+@@ -0,0 +1,27 @@
++/* This file is part of the GNU C Library.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++
++#include <ldsodefs.h>
++
++#undef __get_cpu_features
++
++const struct cpu_features *
++__get_cpu_features (void)
++{
++  return &GLRO(dl_x86_cpu_features);
++}
+Index: glibc-2.17-c758a686/sysdeps/x86/libc-start.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86/libc-start.c
+@@ -0,0 +1,41 @@
++/* Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifdef SHARED
++# include <csu/libc-start.c>
++# else
++/* The main work is done in the generic function.  */
++# define LIBC_START_DISABLE_INLINE
++# define LIBC_START_MAIN generic_start_main
++# include <csu/libc-start.c>
++# include <cpu-features.h>
++# include <cpu-features.c>
++
++extern struct cpu_features _dl_x86_cpu_features;
++
++int
++__libc_start_main (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
++		   int argc, char **argv,
++		   __typeof (main) init,
++		   void (*fini) (void),
++		   void (*rtld_fini) (void), void *stack_end)
++{
++  init_cpu_features (&_dl_x86_cpu_features);
++  return generic_start_main (main, argc, argv, init, fini, rtld_fini,
++			     stack_end);
++}
++#endif
+Index: glibc-2.17-c758a686/sysdeps/x86/rtld-global-offsets.sym
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86/rtld-global-offsets.sym
+@@ -0,0 +1,7 @@
++#define SHARED 1
++
++#include <ldsodefs.h>
++
++#define rtld_global_ro_offsetof(mem) offsetof (struct rtld_global_ro, mem)
++
++RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET rtld_global_ro_offsetof (_dl_x86_cpu_features)
+Index: glibc-2.17-c758a686/sysdeps/x86/tst-get-cpu-features-static.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86/tst-get-cpu-features-static.c
+@@ -0,0 +1 @@
++#include "tst-get-cpu-features.c"
+Index: glibc-2.17-c758a686/sysdeps/x86/tst-get-cpu-features.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86/tst-get-cpu-features.c
+@@ -0,0 +1,31 @@
++/* Test case for x86 __get_cpu_features interface
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <stdlib.h>
++#include <cpu-features.h>
++
++static int
++do_test (void)
++{
++  if (__get_cpu_features ()->kind == arch_kind_unknown)
++    abort ();
++  return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../../test-skeleton.c"
+Index: glibc-2.17-c758a686/sysdeps/x86_64/cacheinfo.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/cacheinfo.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/cacheinfo.c
+@@ -21,40 +21,11 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <cpuid.h>
++#include "multiarch/init-arch.h"
+ 
+-#ifndef __cpuid_count
+-/* FIXME: Provide __cpuid_count if it isn't defined.  Copied from gcc
+-   4.4.0.  Remove this if gcc 4.4 is the minimum requirement.  */
+-# if defined(__i386__) && defined(__PIC__)
+-/* %ebx may be the PIC register.  */
+-#  define __cpuid_count(level, count, a, b, c, d)		\
+-  __asm__ ("xchg{l}\t{%%}ebx, %1\n\t"			\
+-	   "cpuid\n\t"					\
+-	   "xchg{l}\t{%%}ebx, %1\n\t"			\
+-	   : "=a" (a), "=r" (b), "=c" (c), "=d" (d)	\
+-	   : "0" (level), "2" (count))
+-# else
+-#  define __cpuid_count(level, count, a, b, c, d)		\
+-  __asm__ ("cpuid\n\t"					\
+-	   : "=a" (a), "=b" (b), "=c" (c), "=d" (d)	\
+-	   : "0" (level), "2" (count))
+-# endif
+-#endif
+-
+-#ifdef USE_MULTIARCH
+-# include "multiarch/init-arch.h"
+-
+-# define is_intel __cpu_features.kind == arch_kind_intel
+-# define is_amd __cpu_features.kind == arch_kind_amd
+-# define max_cpuid __cpu_features.max_cpuid
+-#else
+-  /* This spells out "GenuineIntel".  */
+-# define is_intel \
+-  ebx == 0x756e6547 && ecx == 0x6c65746e && edx == 0x49656e69
+-  /* This spells out "AuthenticAMD".  */
+-# define is_amd \
+-  ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65
+-#endif
++#define is_intel GLRO(dl_x86_cpu_features).kind == arch_kind_intel
++#define is_amd GLRO(dl_x86_cpu_features).kind == arch_kind_amd
++#define max_cpuid GLRO(dl_x86_cpu_features).max_cpuid
+ 
+ static const struct intel_02_cache_info
+ {
+@@ -237,21 +208,8 @@ intel_check_word (int name, unsigned int
+ 	      /* Intel reused this value.  For family 15, model 6 it
+ 		 specifies the 3rd level cache.  Otherwise the 2nd
+ 		 level cache.  */
+-	      unsigned int family;
+-	      unsigned int model;
+-#ifdef USE_MULTIARCH
+-	      family = __cpu_features.family;
+-	      model = __cpu_features.model;
+-#else
+-	      unsigned int eax;
+-	      unsigned int ebx;
+-	      unsigned int ecx;
+-	      unsigned int edx;
+-	      __cpuid (1, eax, ebx, ecx, edx);
+-
+-	      family = ((eax >> 20) & 0xff) + ((eax >> 8) & 0xf);
+-	      model = (((eax >>16) & 0xf) << 4) + ((eax >> 4) & 0xf);
+-#endif
++	      unsigned int family = GLRO(dl_x86_cpu_features).family;
++	      unsigned int model = GLRO(dl_x86_cpu_features).model;
+ 
+ 	      if (family == 15 && model == 6)
+ 		{
+@@ -478,18 +436,6 @@ long int
+ attribute_hidden
+ __cache_sysconf (int name)
+ {
+-#ifdef USE_MULTIARCH
+-  if (__cpu_features.kind == arch_kind_unknown)
+-    __init_cpu_features ();
+-#else
+-  /* Find out what brand of processor.  */
+-  unsigned int max_cpuid;
+-  unsigned int ebx;
+-  unsigned int ecx;
+-  unsigned int edx;
+-  __cpuid (0, max_cpuid, ebx, ecx, edx);
+-#endif
+-
+   if (is_intel)
+     return handle_intel (name, max_cpuid);
+ 
+@@ -525,18 +471,6 @@ long int __x86_64_raw_shared_cache_size
+ int __x86_64_prefetchw attribute_hidden;
+ #endif
+ 
+-#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION
+-/* Instructions preferred for memory and string routines.
+-
+-  0: Regular instructions
+-  1: MMX instructions
+-  2: SSE2 instructions
+-  3: SSSE3 instructions
+-
+-  */
+-int __x86_64_preferred_memory_instruction attribute_hidden;
+-#endif
+-
+ 
+ static void
+ __attribute__((constructor))
+@@ -553,14 +487,6 @@ init_cacheinfo (void)
+   unsigned int level;
+   unsigned int threads = 0;
+ 
+-#ifdef USE_MULTIARCH
+-  if (__cpu_features.kind == arch_kind_unknown)
+-    __init_cpu_features ();
+-#else
+-  int max_cpuid;
+-  __cpuid (0, max_cpuid, ebx, ecx, edx);
+-#endif
+-
+   if (is_intel)
+     {
+       data = handle_intel (_SC_LEVEL1_DCACHE_SIZE, max_cpuid);
+@@ -576,34 +502,13 @@ init_cacheinfo (void)
+ 	  shared = handle_intel (_SC_LEVEL2_CACHE_SIZE, max_cpuid);
+ 	}
+ 
+-      unsigned int ebx_1;
+-
+-#ifdef USE_MULTIARCH
+-      eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax;
+-      ebx_1 = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx;
+-      ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx;
+-      edx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx;
+-#else
+-      __cpuid (1, eax, ebx_1, ecx, edx);
+-#endif
+-
+-      unsigned int family = (eax >> 8) & 0x0f;
+-      unsigned int model = (eax >> 4) & 0x0f;
+-      unsigned int extended_model = (eax >> 12) & 0xf0;
+-
+-#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION
+-      /* Intel prefers SSSE3 instructions for memory/string routines
+-	 if they are available.  */
+-      if ((ecx & 0x200))
+-	__x86_64_preferred_memory_instruction = 3;
+-      else
+-	__x86_64_preferred_memory_instruction = 2;
+-#endif
+-
+       /* Figure out the number of logical threads that share the
+ 	 highest cache level.  */
+       if (max_cpuid >= 4)
+ 	{
++	  unsigned int family = GLRO(dl_x86_cpu_features).family;
++	  unsigned int model = GLRO(dl_x86_cpu_features).model;
++
+ 	  int i = 0;
+ 
+ 	  /* Query until desired cache level is enumerated.  */
+@@ -655,7 +560,6 @@ init_cacheinfo (void)
+ 	  threads += 1;
+ 	  if (threads > 2 && level == 2 && family == 6)
+ 	    {
+-	      model += extended_model;
+ 	      switch (model)
+ 		{
+ 		case 0x57:
+@@ -678,7 +582,9 @@ init_cacheinfo (void)
+ 	intel_bug_no_cache_info:
+ 	  /* Assume that all logical threads share the highest cache level.  */
+ 
+-	  threads = (ebx_1 >> 16) & 0xff;
++	  threads
++	    = ((GLRO(dl_x86_cpu_features).cpuid[COMMON_CPUID_INDEX_1].ebx
++		>> 16) & 0xff);
+ 	}
+ 
+       /* Cap usage of highest cache level to the number of supported
+@@ -693,25 +599,6 @@ init_cacheinfo (void)
+       long int core = handle_amd (_SC_LEVEL2_CACHE_SIZE);
+       shared = handle_amd (_SC_LEVEL3_CACHE_SIZE);
+ 
+-#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION
+-# ifdef USE_MULTIARCH
+-      eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax;
+-      ebx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx;
+-      ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx;
+-      edx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx;
+-# else
+-      __cpuid (1, eax, ebx, ecx, edx);
+-# endif
+-
+-      /* AMD prefers SSSE3 instructions for memory/string routines
+-	 if they are avaiable, otherwise it prefers integer
+-	 instructions.  */
+-      if ((ecx & 0x200))
+-	__x86_64_preferred_memory_instruction = 3;
+-      else
+-	__x86_64_preferred_memory_instruction = 0;
+-#endif
+-
+       /* Get maximum extended function. */
+       __cpuid (0x80000000, max_cpuid_ex, ebx, ecx, edx);
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/dl-machine.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/dl-machine.h
++++ glibc-2.17-c758a686/sysdeps/x86_64/dl-machine.h
+@@ -26,6 +26,7 @@
+ #include <sysdep.h>
+ #include <tls.h>
+ #include <dl-tlsdesc.h>
++#include <cpu-features.c>
+ 
+ /* Return nonzero iff ELF header is compatible with the running host.  */
+ static inline int __attribute__ ((unused))
+@@ -200,6 +201,8 @@ dl_platform_init (void)
+   if (GLRO(dl_platform) != NULL && *GLRO(dl_platform) == '\0')
+     /* Avoid an empty string which would disturb us.  */
+     GLRO(dl_platform) = NULL;
++
++  init_cpu_features (&GLRO(dl_x86_cpu_features));
+ }
+ 
+ static inline ElfW(Addr)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/dl-procinfo.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86_64/dl-procinfo.c
+@@ -0,0 +1,57 @@
++/* Data for x86-64 version of processor capability information.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* If anything should be added here check whether the size of each string
++   is still ok with the given array size.
++
++   All the #ifdefs in the definitions are quite irritating but
++   necessary if we want to avoid duplicating the information.  There
++   are three different modes:
++
++   - PROCINFO_DECL is defined.  This means we are only interested in
++     declarations.
++
++   - PROCINFO_DECL is not defined:
++
++     + if SHARED is defined the file is included in an array
++       initializer.  The .element = { ... } syntax is needed.
++
++     + if SHARED is not defined a normal array initialization is
++       needed.
++  */
++
++#ifndef PROCINFO_CLASS
++# define PROCINFO_CLASS
++#endif
++
++#if !defined PROCINFO_DECL && defined SHARED
++  ._dl_x86_cpu_features
++#else
++PROCINFO_CLASS struct cpu_features _dl_x86_cpu_features
++#endif
++#ifndef PROCINFO_DECL
++= { }
++#endif
++#if !defined SHARED || defined PROCINFO_DECL
++;
++#else
++,
++#endif
++
++#undef PROCINFO_DECL
++#undef PROCINFO_CLASS
+Index: glibc-2.17-c758a686/sysdeps/x86_64/ldsodefs.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/ldsodefs.h
++++ glibc-2.17-c758a686/sysdeps/x86_64/ldsodefs.h
+@@ -20,6 +20,7 @@
+ #define	_X86_64_LDSODEFS_H	1
+ 
+ #include <elf.h>
++#include <cpu-features.h>
+ 
+ struct La_x86_64_regs;
+ struct La_x86_64_retval;
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/Makefile
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/Makefile
+@@ -1,5 +1,4 @@
+ ifeq ($(subdir),csu)
+-aux += init-arch
+ tests += test-multiarch
+ gen-as-const-headers += ifunc-defines.sym
+ endif
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/Versions
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/Versions
++++ /dev/null
+@@ -1,5 +0,0 @@
+-libc {
+-  GLIBC_PRIVATE {
+-    __get_cpu_features;
+-  }
+-}
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/cacheinfo.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/cacheinfo.c
++++ /dev/null
+@@ -1,2 +0,0 @@
+-#define DISABLE_PREFERRED_MEMORY_INSTRUCTION
+-#include "../cacheinfo.c"
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-defines.sym
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/ifunc-defines.sym
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-defines.sym
+@@ -4,7 +4,6 @@
+ --
+ 
+ CPU_FEATURES_SIZE	sizeof (struct cpu_features)
+-KIND_OFFSET		offsetof (struct cpu_features, kind)
+ CPUID_OFFSET		offsetof (struct cpu_features, cpuid)
+ CPUID_SIZE		sizeof (struct cpuid_registers)
+ CPUID_EAX_OFFSET	offsetof (struct cpuid_registers, eax)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/init-arch.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/init-arch.c
++++ /dev/null
+@@ -1,183 +0,0 @@
+-/* Initialize CPU feature data.
+-   This file is part of the GNU C Library.
+-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+-   Contributed by Ulrich Drepper <drepper@redhat.com>.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library 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
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <atomic.h>
+-#include <cpuid.h>
+-#include "init-arch.h"
+-
+-
+-struct cpu_features __cpu_features attribute_hidden;
+-
+-
+-static void
+-get_common_indeces (unsigned int *family, unsigned int *model)
+-{
+-  __cpuid (1, __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax,
+-	   __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx,
+-	   __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx,
+-	   __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx);
+-
+-  unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax;
+-  *family = (eax >> 8) & 0x0f;
+-  *model = (eax >> 4) & 0x0f;
+-}
+-
+-
+-void
+-__init_cpu_features (void)
+-{
+-  unsigned int ebx;
+-  unsigned int ecx;
+-  unsigned int edx;
+-  unsigned int family = 0;
+-  unsigned int model = 0;
+-  enum cpu_features_kind kind;
+-
+-  __cpuid (0, __cpu_features.max_cpuid, ebx, ecx, edx);
+-
+-  /* This spells out "GenuineIntel".  */
+-  if (ebx == 0x756e6547 && ecx == 0x6c65746e && edx == 0x49656e69)
+-    {
+-      kind = arch_kind_intel;
+-
+-      get_common_indeces (&family, &model);
+-
+-      /* Intel processors prefer SSE instruction for memory/string
+-	 routines if they are available.  */
+-      __cpu_features.feature[index_Prefer_SSE_for_memop]
+-	|= bit_Prefer_SSE_for_memop;
+-
+-      unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax;
+-      unsigned int extended_family = (eax >> 20) & 0xff;
+-      unsigned int extended_model = (eax >> 12) & 0xf0;
+-      if (family == 0x0f)
+-	{
+-	  family += extended_family;
+-	  model += extended_model;
+-	}
+-      else if (family == 0x06)
+-	{
+-	  ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx;
+-	  model += extended_model;
+-	  switch (model)
+-	    {
+-	    case 0x1c:
+-	    case 0x26:
+-	      /* BSF is slow on Atom.  */
+-	      __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF;
+-	      break;
+-
+-	    default:
+-	      /* Unknown family 0x06 processors.  Assuming this is one
+-		 of Core i3/i5/i7 processors if AVX is available.  */
+-	      if ((ecx & bit_AVX) == 0)
+-		break;
+-
+-	    case 0x1a:
+-	    case 0x1e:
+-	    case 0x1f:
+-	    case 0x25:
+-	    case 0x2c:
+-	    case 0x2e:
+-	    case 0x2f:
+-	      /* Rep string instructions, copy backward, unaligned loads
+-		 and pminub are fast on Intel Core i3, i5 and i7.  */
+-#if index_Fast_Rep_String != index_Fast_Copy_Backward
+-# error index_Fast_Rep_String != index_Fast_Copy_Backward
+-#endif
+-#if index_Fast_Rep_String != index_Fast_Unaligned_Load
+-# error index_Fast_Rep_String != index_Fast_Unaligned_Load
+-#endif
+-#if index_Fast_Rep_String != index_Prefer_PMINUB_for_stringop
+-# error index_Fast_Rep_String != index_Prefer_PMINUB_for_stringop
+-#endif
+-	      __cpu_features.feature[index_Fast_Rep_String]
+-		|= (bit_Fast_Rep_String
+-		    | bit_Fast_Copy_Backward
+-		    | bit_Fast_Unaligned_Load
+-		    | bit_Prefer_PMINUB_for_stringop);
+-	      break;
+-	    }
+-	}
+-    }
+-  /* This spells out "AuthenticAMD".  */
+-  else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
+-    {
+-      kind = arch_kind_amd;
+-
+-      get_common_indeces (&family, &model);
+-
+-      ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx;
+-
+-      /* AMD processors prefer SSE instructions for memory/string routines
+-	 if they are available, otherwise they prefer integer instructions.  */
+-      if ((ecx & 0x200))
+-	__cpu_features.feature[index_Prefer_SSE_for_memop]
+-	  |= bit_Prefer_SSE_for_memop;
+-
+-      unsigned int eax;
+-      __cpuid (0x80000000, eax, ebx, ecx, edx);
+-      if (eax >= 0x80000001)
+-	__cpuid (0x80000001,
+-		 __cpu_features.cpuid[COMMON_CPUID_INDEX_80000001].eax,
+-		 __cpu_features.cpuid[COMMON_CPUID_INDEX_80000001].ebx,
+-		 __cpu_features.cpuid[COMMON_CPUID_INDEX_80000001].ecx,
+-		 __cpu_features.cpuid[COMMON_CPUID_INDEX_80000001].edx);
+-    }
+-  else
+-    kind = arch_kind_other;
+-
+-  /* Can we call xgetbv?  */
+-  if (CPUID_OSXSAVE)
+-    {
+-      unsigned int xcrlow;
+-      unsigned int xcrhigh;
+-      asm ("xgetbv" : "=a" (xcrlow), "=d" (xcrhigh) : "c" (0));
+-      /* Is YMM and XMM state usable?  */
+-      if ((xcrlow & (bit_YMM_state | bit_XMM_state)) ==
+-	  (bit_YMM_state | bit_XMM_state))
+-	{
+-	  /* Determine if AVX is usable.  */
+-	  if (CPUID_AVX)
+-	    __cpu_features.feature[index_AVX_Usable] |= bit_AVX_Usable;
+-	  /* Determine if FMA is usable.  */
+-	  if (CPUID_FMA)
+-	    __cpu_features.feature[index_FMA_Usable] |= bit_FMA_Usable;
+-	  /* Determine if FMA4 is usable.  */
+-	  if (CPUID_FMA4)
+-	    __cpu_features.feature[index_FMA4_Usable] |= bit_FMA4_Usable;
+-	}
+-    }
+-
+-  __cpu_features.family = family;
+-  __cpu_features.model = model;
+-  atomic_write_barrier ();
+-  __cpu_features.kind = kind;
+-}
+-
+-#undef __get_cpu_features
+-
+-const struct cpu_features *
+-__get_cpu_features (void)
+-{
+-  if (__cpu_features.kind == arch_kind_unknown)
+-    __init_cpu_features ();
+-
+-  return &__cpu_features;
+-}
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/init-arch.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/init-arch.h
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/init-arch.h
+@@ -15,183 +15,8 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#define bit_Fast_Rep_String		(1 << 0)
+-#define bit_Fast_Copy_Backward		(1 << 1)
+-#define bit_Slow_BSF			(1 << 2)
+-#define bit_Prefer_SSE_for_memop	(1 << 3)
+-#define bit_Fast_Unaligned_Load		(1 << 4)
+-#define bit_Prefer_PMINUB_for_stringop	(1 << 5)
+-#define bit_AVX_Usable			(1 << 6)
+-#define bit_FMA_Usable			(1 << 7)
+-#define bit_FMA4_Usable			(1 << 8)
+-
+-/* CPUID Feature flags.  */
+-#define bit_SSE2	(1 << 26)
+-#define bit_SSSE3	(1 << 9)
+-#define bit_SSE4_1	(1 << 19)
+-#define bit_SSE4_2	(1 << 20)
+-#define bit_OSXSAVE	(1 << 27)
+-#define bit_AVX		(1 << 28)
+-#define bit_POPCOUNT	(1 << 23)
+-#define bit_FMA		(1 << 12)
+-#define bit_FMA4	(1 << 16)
+-
+-/* XCR0 Feature flags.  */
+-#define bit_XMM_state  (1 << 1)
+-#define bit_YMM_state  (2 << 1)
+-
+-#ifdef	__ASSEMBLER__
+-
+-# include <ifunc-defines.h>
+-
+-# define index_SSE2	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_EDX_OFFSET
+-# define index_SSSE3	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
+-# define index_SSE4_1	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
+-# define index_SSE4_2	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
+-# define index_AVX	COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
+-
+-# define index_Fast_Rep_String		FEATURE_INDEX_1*FEATURE_SIZE
+-# define index_Fast_Copy_Backward	FEATURE_INDEX_1*FEATURE_SIZE
+-# define index_Slow_BSF			FEATURE_INDEX_1*FEATURE_SIZE
+-# define index_Prefer_SSE_for_memop	FEATURE_INDEX_1*FEATURE_SIZE
+-# define index_Fast_Unaligned_Load	FEATURE_INDEX_1*FEATURE_SIZE
+-# define index_Prefer_PMINUB_for_stringop FEATURE_INDEX_1*FEATURE_SIZE
+-# define index_AVX_Usable		FEATURE_INDEX_1*FEATURE_SIZE
+-# define index_FMA_Usable		FEATURE_INDEX_1*FEATURE_SIZE
+-# define index_FMA4_Usable		FEATURE_INDEX_1*FEATURE_SIZE
+-
+-#else	/* __ASSEMBLER__ */
+-
+-# include <sys/param.h>
+-# include <sys/types.h>
+-# include <sysdep.h>
+-# include <stdbool.h>
+-
+-/* Ugly hack to make it possible to select a strstr and strcasestr
+-   implementation that avoids using the stack for 16-byte aligned
+-   SSE temporaries.  Doing so makes it possible to call the functions
+-   with a stack that's not 16-byte aligned as can happen, for example,
+-   as a result of compiling the functions' callers with the GCC
+-   -mpreferred-stack-boubdary=2 or =3 option, or with the ICC
+-   -falign-stack=assume-4-byte option.  See rhbz 1150282 for details.
+-
+-   The ifunc selector uses the unaligned version by default if this
+-   file exists and is accessible.  */
+-# define ENABLE_STRSTR_UNALIGNED_PATHNAME \
+-    "/etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned"
+-
+-static bool __attribute__ ((unused))
+-use_unaligned_strstr (void)
+-{
+-  struct stat unaligned_strstr_etc_sysconfig_file;
+-
+-  /* TLS may not have been set up yet, so avoid using stat since it tries to
+-     set errno.  */
+-  return INTERNAL_SYSCALL (stat, , 2,
+-                           ENABLE_STRSTR_UNALIGNED_PATHNAME,
+-                           &unaligned_strstr_etc_sysconfig_file) == 0;
+-}
+-
+-enum
+-  {
+-    COMMON_CPUID_INDEX_1 = 0,
+-    COMMON_CPUID_INDEX_80000001,	/* for AMD */
+-    /* Keep the following line at the end.  */
+-    COMMON_CPUID_INDEX_MAX
+-  };
+-
+-enum
+-  {
+-    FEATURE_INDEX_1 = 0,
+-    /* Keep the following line at the end.  */
+-    FEATURE_INDEX_MAX
+-  };
+-
+-extern struct cpu_features
+-{
+-  enum cpu_features_kind
+-    {
+-      arch_kind_unknown = 0,
+-      arch_kind_intel,
+-      arch_kind_amd,
+-      arch_kind_other
+-    } kind;
+-  int max_cpuid;
+-  struct cpuid_registers
+-  {
+-    unsigned int eax;
+-    unsigned int ebx;
+-    unsigned int ecx;
+-    unsigned int edx;
+-  } cpuid[COMMON_CPUID_INDEX_MAX];
+-  unsigned int family;
+-  unsigned int model;
+-  unsigned int feature[FEATURE_INDEX_MAX];
+-} __cpu_features attribute_hidden;
+-
+-
+-extern void __init_cpu_features (void) attribute_hidden;
+-# define INIT_ARCH() \
+-  do							\
+-    if (__cpu_features.kind == arch_kind_unknown)	\
+-      __init_cpu_features ();				\
+-  while (0)
+-
+-/* Used from outside libc.so to get access to the CPU features structure.  */
+-extern const struct cpu_features *__get_cpu_features (void)
+-     __attribute__ ((const));
+-
+-# if IS_IN (libc)
+-#  define __get_cpu_features()	(&__cpu_features)
+-# endif
+-
+-# define HAS_CPU_FEATURE(idx, reg, bit) \
+-  ((__get_cpu_features ()->cpuid[idx].reg & (bit)) != 0)
+-
+-/* Following are the feature tests used throughout libc.  */
+-
+-/* CPUID_* evaluates to true if the feature flag is enabled.
+-   We always use &__cpu_features because the HAS_CPUID_* macros
+-   are called only within __init_cpu_features, where we can't
+-   call __get_cpu_features without infinite recursion.  */
+-# define HAS_CPUID_FLAG(idx, reg, bit) \
+-  (((&__cpu_features)->cpuid[idx].reg & (bit)) != 0)
+-
+-# define CPUID_OSXSAVE \
+-  HAS_CPUID_FLAG (COMMON_CPUID_INDEX_1, ecx, bit_OSXSAVE)
+-# define CPUID_AVX \
+-  HAS_CPUID_FLAG (COMMON_CPUID_INDEX_1, ecx, bit_AVX)
+-# define CPUID_FMA \
+-  HAS_CPUID_FLAG (COMMON_CPUID_INDEX_1, ecx, bit_FMA)
+-# define CPUID_FMA4 \
+-  HAS_CPUID_FLAG (COMMON_CPUID_INDEX_80000001, ecx, bit_FMA4)
+-
+-/* HAS_* evaluates to true if we may use the feature at runtime.  */
+-# define HAS_SSE2	HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, edx, bit_SSE2)
+-# define HAS_POPCOUNT	HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_POPCOUNT)
+-# define HAS_SSSE3	HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_SSSE3)
+-# define HAS_SSE4_1	HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_SSE4_1)
+-# define HAS_SSE4_2	HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_SSE4_2)
+-
+-# define index_Fast_Rep_String		FEATURE_INDEX_1
+-# define index_Fast_Copy_Backward	FEATURE_INDEX_1
+-# define index_Slow_BSF			FEATURE_INDEX_1
+-# define index_Prefer_SSE_for_memop	FEATURE_INDEX_1
+-# define index_Fast_Unaligned_Load	FEATURE_INDEX_1
+-# define index_AVX_Usable		FEATURE_INDEX_1
+-# define index_FMA_Usable		FEATURE_INDEX_1
+-# define index_FMA4_Usable		FEATURE_INDEX_1
+-
+-# define HAS_ARCH_FEATURE(name) \
+-  ((__get_cpu_features ()->feature[index_##name] & (bit_##name)) != 0)
+-
+-# define HAS_FAST_REP_STRING		HAS_ARCH_FEATURE (Fast_Rep_String)
+-# define HAS_FAST_COPY_BACKWARD		HAS_ARCH_FEATURE (Fast_Copy_Backward)
+-# define HAS_SLOW_BSF			HAS_ARCH_FEATURE (Slow_BSF)
+-# define HAS_PREFER_SSE_FOR_MEMOP	HAS_ARCH_FEATURE (Prefer_SSE_for_memop)
+-# define HAS_FAST_UNALIGNED_LOAD	HAS_ARCH_FEATURE (Fast_Unaligned_Load)
+-# define HAS_AVX			HAS_ARCH_FEATURE (AVX_Usable)
+-# define HAS_FMA			HAS_ARCH_FEATURE (FMA_Usable)
+-# define HAS_FMA4			HAS_ARCH_FEATURE (FMA4_Usable)
+-
+-#endif	/* __ASSEMBLER__ */
++#ifdef  __ASSEMBLER__
++# include <cpu-features.h>
++#else
++# include <ldsodefs.h>
++#endif
diff --git a/SOURCES/glibc-rh1292018-2.patch b/SOURCES/glibc-rh1292018-2.patch
new file mode 100644
index 0000000..4e55e09
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-2.patch
@@ -0,0 +1,1252 @@
+We keep with the idea behind this patch but adjust all of the changes
+to match the existing impelementations in RHEL 7.3.
+
+commit 0b5395f052ee09cd7e3d219af4e805c38058afb5
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Thu Aug 13 03:38:47 2015 -0700
+
+    Update x86_64 multiarch functions for <cpu-features.h>
+    
+    This patch updates x86_64 multiarch functions to use the newly defined
+    HAS_CPU_FEATURE, HAS_ARCH_FEATURE and LOAD_RTLD_GLOBAL_RO_RDX from
+    <cpu-features.h>.
+    
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_asin.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/e_asin.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_asin.c
+@@ -8,11 +8,15 @@ extern double __ieee754_acos_fma4 (doubl
+ extern double __ieee754_asin_fma4 (double);
+ 
+ libm_ifunc (__ieee754_acos,
+-	    HAS_FMA4 ? __ieee754_acos_fma4 : __ieee754_acos_sse2);
++	    HAS_ARCH_FEATURE (FMA4_Usable)
++	    ? __ieee754_acos_fma4
++	    : __ieee754_acos_sse2);
+ strong_alias (__ieee754_acos, __acos_finite)
+ 
+ libm_ifunc (__ieee754_asin,
+-	    HAS_FMA4 ? __ieee754_asin_fma4 : __ieee754_asin_sse2);
++	    HAS_ARCH_FEATURE (FMA4_Usable)
++	    ? __ieee754_asin_fma4
++	    : __ieee754_asin_sse2);
+ strong_alias (__ieee754_asin, __asin_finite)
+ 
+ # define __ieee754_acos __ieee754_acos_sse2
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_atan2.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/e_atan2.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_atan2.c
+@@ -7,14 +7,15 @@ extern double __ieee754_atan2_avx (doubl
+ # ifdef HAVE_FMA4_SUPPORT
+ extern double __ieee754_atan2_fma4 (double, double);
+ # else
+-#  undef HAS_FMA4
+-#  define HAS_FMA4 0
++#  undef HAS_ARCH_FEATURE
++#  define HAS_ARCH_FEATURE(feature) 0
+ #  define __ieee754_atan2_fma4 ((void *) 0)
+ # endif
+ 
+ libm_ifunc (__ieee754_atan2,
+-	    HAS_FMA4 ? __ieee754_atan2_fma4
+-	    : (HAS_AVX ? __ieee754_atan2_avx : __ieee754_atan2_sse2));
++	    HAS_ARCH_FEATURE (FMA4_Usable) ? __ieee754_atan2_fma4
++	    : (HAS_ARCH_FEATURE (AVX_Usable)
++	       ? __ieee754_atan2_avx : __ieee754_atan2_sse2));
+ strong_alias (__ieee754_atan2, __atan2_finite)
+ 
+ # define __ieee754_atan2 __ieee754_atan2_sse2
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_exp.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/e_exp.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_exp.c
+@@ -7,14 +7,15 @@ extern double __ieee754_exp_avx (double)
+ # ifdef HAVE_FMA4_SUPPORT
+ extern double __ieee754_exp_fma4 (double);
+ # else
+-#  undef HAS_FMA4
+-#  define HAS_FMA4 0
++#  undef HAS_ARCH_FEATURE
++#  define HAS_ARCH_FEATURE(feature) 0
+ #  define __ieee754_exp_fma4 ((void *) 0)
+ # endif
+ 
+ libm_ifunc (__ieee754_exp,
+-	    HAS_FMA4 ? __ieee754_exp_fma4
+-	    : (HAS_AVX ? __ieee754_exp_avx : __ieee754_exp_sse2));
++	    HAS_ARCH_FEATURE (FMA4_Usable) ? __ieee754_exp_fma4
++	    : (HAS_ARCH_FEATURE (AVX_Usable)
++	       ? __ieee754_exp_avx : __ieee754_exp_sse2));
+ strong_alias (__ieee754_exp, __exp_finite)
+ 
+ # define __ieee754_exp __ieee754_exp_sse2
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_log.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/e_log.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_log.c
+@@ -7,14 +7,15 @@ extern double __ieee754_log_avx (double)
+ # ifdef HAVE_FMA4_SUPPORT
+ extern double __ieee754_log_fma4 (double);
+ # else
+-#  undef HAS_FMA4
+-#  define HAS_FMA4 0
++#  undef HAS_ARCH_FEATURE
++#  define HAS_ARCH_FEATURE(feature) 0
+ #  define __ieee754_log_fma4 ((void *) 0)
+ # endif
+ 
+ libm_ifunc (__ieee754_log,
+-	    HAS_FMA4 ? __ieee754_log_fma4
+-	    : (HAS_AVX ? __ieee754_log_avx : __ieee754_log_sse2));
++	    HAS_ARCH_FEATURE (FMA4_Usable) ? __ieee754_log_fma4
++	    : (HAS_ARCH_FEATURE (AVX_Usable)
++	       ? __ieee754_log_avx : __ieee754_log_sse2));
+ strong_alias (__ieee754_log, __log_finite)
+ 
+ # define __ieee754_log __ieee754_log_sse2
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_pow.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/e_pow.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/e_pow.c
+@@ -5,7 +5,10 @@
+ extern double __ieee754_pow_sse2 (double, double);
+ extern double __ieee754_pow_fma4 (double, double);
+ 
+-libm_ifunc (__ieee754_pow, HAS_FMA4 ? __ieee754_pow_fma4 : __ieee754_pow_sse2);
++libm_ifunc (__ieee754_pow,
++	    HAS_ARCH_FEATURE (FMA4_Usable)
++	    ? __ieee754_pow_fma4
++	    : __ieee754_pow_sse2);
+ strong_alias (__ieee754_pow, __pow_finite)
+ 
+ # define __ieee754_pow __ieee754_pow_sse2
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_atan.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_atan.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_atan.c
+@@ -7,13 +7,14 @@ extern double __atan_avx (double);
+ # ifdef HAVE_FMA4_SUPPORT
+ extern double __atan_fma4 (double);
+ # else
+-#  undef HAS_FMA4
+-#  define HAS_FMA4 0
++#  undef HAS_ARCH_FEATURE
++#  define HAS_ARCH_FEATURE(feature) 0
+ #  define __atan_fma4 ((void *) 0)
+ # endif
+ 
+-libm_ifunc (atan, (HAS_FMA4 ? __atan_fma4 :
+-		   HAS_AVX ? __atan_avx : __atan_sse2));
++libm_ifunc (atan, (HAS_ARCH_FEATURE (FMA4_Usable) ? __atan_fma4 :
++		   HAS_ARCH_FEATURE (AVX_Usable)
++		   ? __atan_avx : __atan_sse2));
+ 
+ # define atan __atan_sse2
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_ceil.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_ceil.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_ceil.S
+@@ -22,10 +22,9 @@
+ 
+ ENTRY(__ceil)
+ 	.type	__ceil, @gnu_indirect_function
+-	call	__get_cpu_features@plt
+-	movq	%rax, %rdx
++	LOAD_RTLD_GLOBAL_RO_RDX
+ 	leaq	__ceil_sse41(%rip), %rax
+-	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx)
++	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
+ 	leaq	__ceil_c(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_ceilf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_ceilf.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_ceilf.S
+@@ -22,10 +22,9 @@
+ 
+ ENTRY(__ceilf)
+ 	.type	__ceilf, @gnu_indirect_function
+-	call	__get_cpu_features@plt
+-	movq	%rax, %rdx
++	LOAD_RTLD_GLOBAL_RO_RDX
+ 	leaq	__ceilf_sse41(%rip), %rax
+-	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx)
++	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
+ 	leaq	__ceilf_c(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_floor.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_floor.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_floor.S
+@@ -22,10 +22,9 @@
+ 
+ ENTRY(__floor)
+ 	.type	__floor, @gnu_indirect_function
+-	call	__get_cpu_features@plt
+-	movq	%rax, %rdx
++	LOAD_RTLD_GLOBAL_RO_RDX
+ 	leaq	__floor_sse41(%rip), %rax
+-	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx)
++	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
+ 	leaq	__floor_c(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_floorf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_floorf.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_floorf.S
+@@ -22,10 +22,10 @@
+ 
+ ENTRY(__floorf)
+ 	.type	__floorf, @gnu_indirect_function
+-	call	__get_cpu_features@plt
++	LOAD_RTLD_GLOBAL_RO_RDX
+ 	movq	%rax, %rdx
+ 	leaq	__floorf_sse41(%rip), %rax
+-	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx)
++	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
+ 	leaq	__floorf_c(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_fma.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_fma.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_fma.c
+@@ -42,14 +42,15 @@ __fma_fma4 (double x, double y, double z
+   return x;
+ }
+ # else
+-#  undef HAS_FMA4
+-#  define HAS_FMA4 0
++#  undef HAS_ARCH_FEATURE
++#  define HAS_ARCH_FEATURE(feature) 0
+ #  define __fma_fma4 ((void *) 0)
+ # endif
+ 
+ 
+-libm_ifunc (__fma, HAS_FMA
+-	    ? __fma_fma3 : (HAS_FMA4 ? __fma_fma4 : __fma_sse2));
++libm_ifunc (__fma, HAS_ARCH_FEATURE (FMA_Usable)
++	    ? __fma_fma3 : (HAS_ARCH_FEATURE (FMA4_Usable)
++			    ? __fma_fma4 : __fma_sse2));
+ weak_alias (__fma, fma)
+ 
+ # define __fma __fma_sse2
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_fmaf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_fmaf.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_fmaf.c
+@@ -41,14 +41,15 @@ __fmaf_fma4 (float x, float y, float z)
+   return x;
+ }
+ # else
+-#  undef HAS_FMA4
+-#  define HAS_FMA4 0
++#  undef HAS_ARCH_FEATURE
++#  define HAS_ARCH_FEATURE(feature) 0
+ #  define __fmaf_fma4 ((void *) 0)
+ # endif
+ 
+ 
+-libm_ifunc (__fmaf, HAS_FMA
+-	    ? __fmaf_fma3 : (HAS_FMA4 ? __fmaf_fma4 : __fmaf_sse2));
++libm_ifunc (__fmaf, HAS_ARCH_FEATURE (FMA_Usable)
++	    ? __fmaf_fma3 : (HAS_ARCH_FEATURE (FMA4_Usable)
++			     ? __fmaf_fma4 : __fmaf_sse2));
+ weak_alias (__fmaf, fmaf)
+ 
+ # define __fmaf __fmaf_sse2
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_nearbyint.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_nearbyint.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_nearbyint.S
+@@ -22,10 +22,10 @@
+ 
+ ENTRY(__nearbyint)
+ 	.type	__nearbyint, @gnu_indirect_function
+-	call	__get_cpu_features@plt
++	LOAD_RTLD_GLOBAL_RO_RDX
+ 	movq	%rax, %rdx
+ 	leaq	__nearbyint_sse41(%rip), %rax
+-	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx)
++	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
+ 	leaq	__nearbyint_c(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_nearbyintf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_nearbyintf.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_nearbyintf.S
+@@ -22,10 +22,9 @@
+ 
+ ENTRY(__nearbyintf)
+ 	.type	__nearbyintf, @gnu_indirect_function
+-	call	__get_cpu_features@plt
+-	movq	%rax, %rdx
++	LOAD_RTLD_GLOBAL_RO_RDX
+ 	leaq	__nearbyintf_sse41(%rip), %rax
+-	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx)
++	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
+ 	leaq	__nearbyintf_c(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_rint.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_rint.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_rint.S
+@@ -22,10 +22,9 @@
+ 
+ ENTRY(__rint)
+ 	.type	__rint, @gnu_indirect_function
+-	call	__get_cpu_features@plt
+-	movq	%rax, %rdx
++	LOAD_RTLD_GLOBAL_RO_RDX
+ 	leaq	__rint_sse41(%rip), %rax
+-	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx)
++	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
+ 	leaq	__rint_c(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_rintf.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_rintf.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_rintf.S
+@@ -22,10 +22,9 @@
+ 
+ ENTRY(__rintf)
+ 	.type	__rintf, @gnu_indirect_function
+-	call	__get_cpu_features@plt
+-	movq	%rax, %rdx
++	LOAD_RTLD_GLOBAL_RO_RDX
+ 	leaq	__rintf_sse41(%rip), %rax
+-	testl	$bit_SSE4_1, CPUID_OFFSET+index_SSE4_1(%rdx)
++	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
+ 	leaq	__rintf_c(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_sin.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_sin.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_sin.c
+@@ -11,18 +11,20 @@ extern double __sin_avx (double);
+ extern double __cos_fma4 (double);
+ extern double __sin_fma4 (double);
+ # else
+-#  undef HAS_FMA4
+-#  define HAS_FMA4 0
++#  undef HAS_ARCH_FEATURE
++#  define HAS_ARCH_FEATURE(feature) 0
+ #  define __cos_fma4 ((void *) 0)
+ #  define __sin_fma4 ((void *) 0)
+ # endif
+ 
+-libm_ifunc (__cos, (HAS_FMA4 ? __cos_fma4 :
+-		    HAS_AVX ? __cos_avx : __cos_sse2));
++libm_ifunc (__cos, (HAS_ARCH_FEATURE (FMA4_Usable) ? __cos_fma4 :
++		    HAS_ARCH_FEATURE (AVX_Usable)
++		    ? __cos_avx : __cos_sse2));
+ weak_alias (__cos, cos)
+ 
+-libm_ifunc (__sin, (HAS_FMA4 ? __sin_fma4 :
+-		    HAS_AVX ? __sin_avx : __sin_sse2));
++libm_ifunc (__sin, (HAS_ARCH_FEATURE (FMA4_Usable) ? __sin_fma4 :
++		    HAS_ARCH_FEATURE (AVX_Usable)
++		    ? __sin_avx : __sin_sse2));
+ weak_alias (__sin, sin)
+ 
+ # define __cos __cos_sse2
+Index: glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_tan.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/multiarch/s_tan.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/multiarch/s_tan.c
+@@ -7,13 +7,14 @@ extern double __tan_avx (double);
+ # ifdef HAVE_FMA4_SUPPORT
+ extern double __tan_fma4 (double);
+ # else
+-#  undef HAS_FMA4
+-#  define HAS_FMA4 0
++#  undef HAS_ARCH_FEATURE
++#  define HAS_ARCH_FEATURE(feature) 0
+ #  define __tan_fma4 ((void *) 0)
+ # endif
+ 
+-libm_ifunc (tan, (HAS_FMA4 ? __tan_fma4 :
+-		  HAS_AVX ? __tan_avx : __tan_sse2));
++libm_ifunc (tan, (HAS_ARCH_FEATURE (FMA4_Usable) ? __tan_fma4 :
++		  HAS_ARCH_FEATURE (AVX_Usable)
++		  ? __tan_avx : __tan_sse2));
+ 
+ # define tan __tan_sse2
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/ifunc-impl-list.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c
+@@ -39,25 +39,26 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/memcmp.S.  */
+   IFUNC_IMPL (i, name, memcmp,
+-	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_SSE4_1,
++	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_CPU_FEATURE (SSE4_1),
+ 			      __memcmp_sse4_1)
+-	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_SSSE3, __memcmp_ssse3)
++	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_CPU_FEATURE (SSSE3),
++			      __memcmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/memmove_chk.S.  */
+   IFUNC_IMPL (i, name, __memmove_chk,
+-	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_chk_ssse3_back)
+-	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_chk_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, __memmove_chk, 1,
+ 			      __memmove_chk_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/memmove.S.  */
+   IFUNC_IMPL (i, name, memmove,
+-	      IFUNC_IMPL_ADD (array, i, memmove, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_ssse3_back)
+-	      IFUNC_IMPL_ADD (array, i, memmove, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_sse2))
+ 
+@@ -74,13 +75,13 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/rawmemchr.S.  */
+   IFUNC_IMPL (i, name, rawmemchr,
+-	      IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_CPU_FEATURE (SSE4_2),
+ 			      __rawmemchr_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, rawmemchr, 1, __rawmemchr_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/stpncpy.S.  */
+   IFUNC_IMPL (i, name, stpncpy,
+-	      IFUNC_IMPL_ADD (array, i, stpncpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, stpncpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __stpncpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, stpncpy, 1,
+ 			      __stpncpy_sse2_unaligned)
+@@ -88,92 +89,105 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/stpcpy.S.  */
+   IFUNC_IMPL (i, name, stpcpy,
+-	      IFUNC_IMPL_ADD (array, i, stpcpy, HAS_SSSE3, __stpcpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, stpcpy, HAS_CPU_FEATURE (SSSE3),
++			      __stpcpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, stpcpy, 1, __stpcpy_sse2_unaligned)
+ 	      IFUNC_IMPL_ADD (array, i, stpcpy, 1, __stpcpy_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strcasecmp_l.S.  */
+   IFUNC_IMPL (i, name, strcasecmp,
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp, HAS_AVX,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp,
++			      HAS_ARCH_FEATURE (AVX_Usable),
+ 			      __strcasecmp_avx)
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp,
++			      HAS_CPU_FEATURE (SSE4_2),
+ 			      __strcasecmp_sse42)
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp,
++			      HAS_CPU_FEATURE (SSSE3),
+ 			      __strcasecmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strcasecmp, 1, __strcasecmp_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strcasecmp_l.S.  */
+   IFUNC_IMPL (i, name, strcasecmp_l,
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, HAS_AVX,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp_l,
++			      HAS_ARCH_FEATURE (AVX_Usable),
+ 			      __strcasecmp_l_avx)
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp_l,
++			      HAS_CPU_FEATURE (SSE4_2),
+ 			      __strcasecmp_l_sse42)
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp_l,
++			      HAS_CPU_FEATURE (SSSE3),
+ 			      __strcasecmp_l_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, 1,
+ 			      __strcasecmp_l_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strcasestr.c.  */
+   IFUNC_IMPL (i, name, strcasestr,
+-	      IFUNC_IMPL_ADD (array, i, strcasestr, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strcasestr, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strcasestr_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strcasestr, 1, __strcasestr_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strcat.S.  */
+   IFUNC_IMPL (i, name, strcat,
+-	      IFUNC_IMPL_ADD (array, i, strcat, HAS_SSSE3, __strcat_ssse3)
++	      IFUNC_IMPL_ADD (array, i, strcat, HAS_CPU_FEATURE (SSSE3),
++			      __strcat_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strcat, 1, __strcat_sse2_unaligned)
+ 	      IFUNC_IMPL_ADD (array, i, strcat, 1, __strcat_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strchr.S.  */
+   IFUNC_IMPL (i, name, strchr,
+-	      IFUNC_IMPL_ADD (array, i, strchr, HAS_SSE4_2, __strchr_sse42)
++	      IFUNC_IMPL_ADD (array, i, strchr, HAS_CPU_FEATURE (SSE4_2),
++			      __strchr_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strchr, 1, __strchr_sse2_no_bsf)
+ 	      IFUNC_IMPL_ADD (array, i, strchr, 1, __strchr_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strcmp.S.  */
+   IFUNC_IMPL (i, name, strcmp,
+-	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_SSE4_2, __strcmp_sse42)
+-	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_SSSE3, __strcmp_ssse3)
++	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_CPU_FEATURE (SSE4_2),
++			      __strcmp_sse42)
++	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_CPU_FEATURE (SSSE3),
++			      __strcmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strcmp, 1, __strcmp_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strcpy.S.  */
+   IFUNC_IMPL (i, name, strcpy,
+-	      IFUNC_IMPL_ADD (array, i, strcpy, HAS_SSSE3, __strcpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, strcpy, HAS_CPU_FEATURE (SSSE3),
++			      __strcpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strcpy, 1, __strcpy_sse2_unaligned)
+ 	      IFUNC_IMPL_ADD (array, i, strcpy, 1, __strcpy_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strcspn.S.  */
+   IFUNC_IMPL (i, name, strcspn,
+-	      IFUNC_IMPL_ADD (array, i, strcspn, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strcspn, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strcspn_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strcspn, 1, __strcspn_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strncase_l.S.  */
+   IFUNC_IMPL (i, name, strncasecmp,
+-	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_AVX,
++	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_ARCH_FEATURE (AVX_Usable),
+ 			      __strncasecmp_avx)
+-	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strncasecmp_sse42)
+-	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_CPU_FEATURE (SSSE3),
+ 			      __strncasecmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strncasecmp, 1,
+ 			      __strncasecmp_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strncase_l.S.  */
+   IFUNC_IMPL (i, name, strncasecmp_l,
+-	      IFUNC_IMPL_ADD (array, i, strncasecmp_l, HAS_AVX,
++	      IFUNC_IMPL_ADD (array, i, strncasecmp_l,
++			      HAS_ARCH_FEATURE (AVX_Usable),
+ 			      __strncasecmp_l_avx)
+-	      IFUNC_IMPL_ADD (array, i, strncasecmp_l, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strncasecmp_l, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strncasecmp_l_sse42)
+-	      IFUNC_IMPL_ADD (array, i, strncasecmp_l, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strncasecmp_l, HAS_CPU_FEATURE (SSSE3),
+ 			      __strncasecmp_l_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strncasecmp_l, 1,
+ 			      __strncasecmp_l_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strncat.S.  */
+   IFUNC_IMPL (i, name, strncat,
+-	      IFUNC_IMPL_ADD (array, i, strncat, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strncat, HAS_CPU_FEATURE (SSSE3),
+ 			      __strncat_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strncat, 1,
+ 			      __strncat_sse2_unaligned)
+@@ -181,7 +195,7 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/strncpy.S.  */
+   IFUNC_IMPL (i, name, strncpy,
+-	      IFUNC_IMPL_ADD (array, i, strncpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strncpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __strncpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strncpy, 1,
+ 			      __strncpy_sse2_unaligned)
+@@ -194,79 +208,83 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/strpbrk.S.  */
+   IFUNC_IMPL (i, name, strpbrk,
+-	      IFUNC_IMPL_ADD (array, i, strpbrk, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strpbrk, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strpbrk_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strpbrk, 1, __strpbrk_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strrchr.S.  */
+   IFUNC_IMPL (i, name, strrchr,
+-	      IFUNC_IMPL_ADD (array, i, strrchr, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strrchr, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strrchr_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strrchr, 1, __strrchr_sse2_no_bsf)
+ 	      IFUNC_IMPL_ADD (array, i, strrchr, 1, __strrchr_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strspn.S.  */
+   IFUNC_IMPL (i, name, strspn,
+-	      IFUNC_IMPL_ADD (array, i, strspn, HAS_SSE4_2, __strspn_sse42)
++	      IFUNC_IMPL_ADD (array, i, strspn, HAS_CPU_FEATURE (SSE4_2),
++			      __strspn_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strspn, 1, __strspn_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strstr-c.c.  */
+   IFUNC_IMPL (i, name, strstr,
+ 	      IFUNC_IMPL_ADD (array, i, strstr, use_unaligned_strstr (),
+ 			      __strstr_sse2_unaligned)
+-	      IFUNC_IMPL_ADD (array, i, strstr, HAS_SSE4_2, __strstr_sse42)
++	      IFUNC_IMPL_ADD (array, i, strstr, HAS_CPU_FEATURE (SSE4_2),
++			      __strstr_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strstr, 1, __strstr_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/wcscpy.S.  */
+   IFUNC_IMPL (i, name, wcscpy,
+-	      IFUNC_IMPL_ADD (array, i, wcscpy, HAS_SSSE3, __wcscpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, wcscpy, HAS_CPU_FEATURE (SSSE3),
++			      __wcscpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, wcscpy, 1, __wcscpy_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/wmemcmp.S.  */
+   IFUNC_IMPL (i, name, wmemcmp,
+-	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_SSE4_1,
++	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_CPU_FEATURE (SSE4_1),
+ 			      __wmemcmp_sse4_1)
+-	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_CPU_FEATURE (SSSE3),
+ 			      __wmemcmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, wmemcmp, 1, __wmemcmp_sse2))
+ 
+ #ifdef SHARED
+   /* Support sysdeps/x86_64/multiarch/memcpy_chk.S.  */
+   IFUNC_IMPL (i, name, __memcpy_chk,
+-	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_chk_ssse3_back)
+-	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_chk_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, 1,
+ 			      __memcpy_chk_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/memcpy.S.  */
+   IFUNC_IMPL (i, name, memcpy,
+-	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_ssse3_back)
+-	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3, __memcpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3), __memcpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/mempcpy_chk.S.  */
+   IFUNC_IMPL (i, name, __mempcpy_chk,
+-	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_chk_ssse3_back)
+-	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_chk_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, 1,
+ 			      __mempcpy_chk_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/mempcpy.S.  */
+   IFUNC_IMPL (i, name, mempcpy,
+-	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_ssse3_back)
+-	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, mempcpy, 1, __mempcpy_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/strlen.S.  */
+   IFUNC_IMPL (i, name, strlen,
+-	      IFUNC_IMPL_ADD (array, i, strlen, HAS_SSE4_2, __strlen_sse42)
++	      IFUNC_IMPL_ADD (array, i, strlen, HAS_CPU_FEATURE (SSE4_2),
++			      __strlen_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strlen, 1, __strlen_sse2_pminub)
+ 	      IFUNC_IMPL_ADD (array, i, strlen, 1, __strlen_sse2_no_bsf)
+ 	      IFUNC_IMPL_ADD (array, i, strlen, 1, __strlen_sse2)
+@@ -274,9 +292,9 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/strncmp.S.  */
+   IFUNC_IMPL (i, name, strncmp,
+-	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strncmp_sse42)
+-	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_CPU_FEATURE (SSSE3),
+ 			      __strncmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strncmp, 1, __strncmp_sse2))
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcmp.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcmp.S
+@@ -26,16 +26,13 @@
+ 	.text
+ ENTRY(memcmp)
+ 	.type	memcmp, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-
+-1:	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	HAS_CPU_FEATURE (SSSE3)
+ 	jnz	2f
+ 	leaq	__memcmp_sse2(%rip), %rax
+ 	ret
+ 
+-2:	testl	$bit_SSE4_1, __cpu_features+CPUID_OFFSET+index_SSE4_1(%rip)
++2:	HAS_CPU_FEATURE (SSE4_1)
+ 	jz	3f
+ 	leaq	__memcmp_sse4_1(%rip), %rax
+ 	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy.S
+@@ -29,14 +29,12 @@
+ 	.text
+ ENTRY(__new_memcpy)
+ 	.type	__new_memcpy, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__memcpy_sse2(%rip), %rax
+-	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__memcpy_sse2(%rip), %rax
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	__memcpy_ssse3(%rip), %rax
+-	testl	$bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
++	HAS_ARCH_FEATURE (Fast_Copy_Backward)
+ 	jz	2f
+ 	leaq	__memcpy_ssse3_back(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy_chk.S
+@@ -29,14 +29,12 @@
+ 	.text
+ ENTRY(__memcpy_chk)
+ 	.type	__memcpy_chk, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__memcpy_chk_sse2(%rip), %rax
+-	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__memcpy_chk_sse2(%rip), %rax
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	__memcpy_chk_ssse3(%rip), %rax
+-	testl	$bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
++	HAS_ARCH_FEATURE (Fast_Copy_Backward)
+ 	jz	2f
+ 	leaq	__memcpy_chk_ssse3_back(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memmove.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove.c
+@@ -47,8 +47,8 @@ extern __typeof (__redirect_memmove) __m
+    ifunc symbol properly.  */
+ extern __typeof (__redirect_memmove) __libc_memmove;
+ libc_ifunc (__libc_memmove,
+-	    HAS_SSSE3
+-	    ? (HAS_FAST_COPY_BACKWARD
++	    HAS_CPU_FEATURE (SSSE3)
++	    ? (HAS_ARCH_FEATURE (Fast_Copy_Backward)
+ 	       ? __memmove_ssse3_back : __memmove_ssse3)
+ 	    : __memmove_sse2)
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove_chk.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memmove_chk.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove_chk.c
+@@ -29,7 +29,7 @@ extern __typeof (__memmove_chk) __memmov
+ #include "debug/memmove_chk.c"
+ 
+ libc_ifunc (__memmove_chk,
+-	    HAS_SSSE3
+-	    ? (HAS_FAST_COPY_BACKWARD
++	    HAS_CPU_FEATURE (SSSE3)
++	    ? (HAS_ARCH_FEATURE (Fast_Copy_Backward)
+ 	       ? __memmove_chk_ssse3_back : __memmove_chk_ssse3)
+ 	    : __memmove_chk_sse2);
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/mempcpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy.S
+@@ -27,14 +27,12 @@
+ #if defined SHARED && IS_IN (libc)
+ ENTRY(__mempcpy)
+ 	.type	__mempcpy, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__mempcpy_sse2(%rip), %rax
+-	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__mempcpy_sse2(%rip), %rax
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	__mempcpy_ssse3(%rip), %rax
+-	testl	$bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
++	HAS_ARCH_FEATURE (Fast_Copy_Backward)
+ 	jz	2f
+ 	leaq	__mempcpy_ssse3_back(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/mempcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy_chk.S
+@@ -29,14 +29,12 @@
+ 	.text
+ ENTRY(__mempcpy_chk)
+ 	.type	__mempcpy_chk, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__mempcpy_chk_sse2(%rip), %rax
+-	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__mempcpy_chk_sse2(%rip), %rax
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	__mempcpy_chk_ssse3(%rip), %rax
+-	testl	$bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
++	HAS_ARCH_FEATURE (Fast_Copy_Backward)
+ 	jz	2f
+ 	leaq	__mempcpy_chk_ssse3_back(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memset.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset.S
+@@ -24,11 +24,9 @@
+ #if IS_IN (libc)
+ ENTRY(memset)
+ 	.type	memset, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__memset_x86_64(%rip), %rax
+-	testl	$bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__memset_x86_64(%rip), %rax
++	HAS_ARCH_FEATURE (Prefer_SSE_for_memop)
+ 	jz	2f
+ 	leaq	__memset_sse2(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memset_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset_chk.S
+@@ -25,11 +25,9 @@
+ # ifdef SHARED
+ ENTRY(__memset_chk)
+ 	.type	__memset_chk, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__memset_chk_x86_64(%rip), %rax
+-	testl	$bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__memset_chk_x86_64(%rip), %rax
++	HAS_ARCH_FEATURE (Prefer_SSE_for_memop)
+ 	jz	2f
+ 	leaq	__memset_chk_sse2(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/sched_cpucount.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/sched_cpucount.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/sched_cpucount.c
+@@ -33,4 +33,4 @@
+ #undef __sched_cpucount
+ 
+ libc_ifunc (__sched_cpucount,
+-	    HAS_POPCOUNT ? popcount_cpucount : generic_cpucount);
++	    HAS_CPU_FEATURE (POPCOUNT) ? popcount_cpucount : generic_cpucount);
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcat.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcat.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcat.S
+@@ -47,14 +47,12 @@
+ 	.text
+ ENTRY(STRCAT)
+ 	.type	STRCAT, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	STRCAT_SSE2_UNALIGNED(%rip), %rax
+-	testl	$bit_Fast_Unaligned_Load, __cpu_features+FEATURE_OFFSET+index_Fast_Unaligned_Load(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	STRCAT_SSE2_UNALIGNED(%rip), %rax
++	HAS_ARCH_FEATURE (Fast_Unaligned_Load)
+ 	jnz	2f
+ 	leaq	STRCAT_SSE2(%rip), %rax
+-	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	STRCAT_SSSE3(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strchr.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strchr.S
+@@ -25,15 +25,13 @@
+ 	.text
+ ENTRY(strchr)
+ 	.type	strchr, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__strchr_sse2(%rip), %rax
+-	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__strchr_sse2(%rip), %rax
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+ 	leaq	__strchr_sse42(%rip), %rax
+ 	ret
+-2:	testl	$bit_Slow_BSF, __cpu_features+FEATURE_OFFSET+index_Slow_BSF(%rip)
++2:	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	3f
+ 	leaq    __strchr_sse2_no_bsf(%rip), %rax
+ 3:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcmp.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcmp.S
+@@ -83,16 +83,12 @@
+ 	.text
+ ENTRY(STRCMP)
+ 	.type	STRCMP, @gnu_indirect_function
+-	/* Manually inlined call to __get_cpu_features.  */
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:
++	LOAD_RTLD_GLOBAL_RO_RDX
+ 	leaq	STRCMP_SSE42(%rip), %rax
+-	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jnz	2f
+ 	leaq	STRCMP_SSSE3(%rip), %rax
+-	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jnz	2f
+ 	leaq	STRCMP_SSE2(%rip), %rax
+ 2:	ret
+@@ -101,21 +97,17 @@ END(STRCMP)
+ # ifdef USE_AS_STRCASECMP_L
+ ENTRY(__strcasecmp)
+ 	.type	__strcasecmp, @gnu_indirect_function
+-	/* Manually inlined call to __get_cpu_features.  */
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:
++	LOAD_RTLD_GLOBAL_RO_RDX
+ #  ifdef HAVE_AVX_SUPPORT
+ 	leaq	__strcasecmp_avx(%rip), %rax
+-	testl	$bit_AVX_Usable, __cpu_features+FEATURE_OFFSET+index_AVX_Usable(%rip)
++	HAS_ARCH_FEATURE (AVX_Usable)
+ 	jnz	2f
+ #  endif
+ 	leaq	__strcasecmp_sse42(%rip), %rax
+-	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jnz	2f
+ 	leaq	__strcasecmp_ssse3(%rip), %rax
+-	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jnz	2f
+ 	leaq	__strcasecmp_sse2(%rip), %rax
+ 2:	ret
+@@ -125,21 +117,17 @@ weak_alias (__strcasecmp, strcasecmp)
+ # ifdef USE_AS_STRNCASECMP_L
+ ENTRY(__strncasecmp)
+ 	.type	__strncasecmp, @gnu_indirect_function
+-	/* Manually inlined call to __get_cpu_features.  */
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:
++	LOAD_RTLD_GLOBAL_RO_RDX
+ #  ifdef HAVE_AVX_SUPPORT
+ 	leaq	__strncasecmp_avx(%rip), %rax
+-	testl	$bit_AVX_Usable, __cpu_features+FEATURE_OFFSET+index_AVX_Usable(%rip)
++	HAS_ARCH_FEATURE (AVX_Usable)
+ 	jnz	2f
+ #  endif
+ 	leaq	__strncasecmp_sse42(%rip), %rax
+-	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jnz	2f
+ 	leaq	__strncasecmp_ssse3(%rip), %rax
+-	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jnz	2f
+ 	leaq	__strncasecmp_sse2(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcpy.S
+@@ -61,14 +61,12 @@
+ 	.text
+ ENTRY(STRCPY)
+ 	.type	STRCPY, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	STRCPY_SSE2_UNALIGNED(%rip), %rax
+-	testl	$bit_Fast_Unaligned_Load, __cpu_features+FEATURE_OFFSET+index_Fast_Unaligned_Load(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	STRCPY_SSE2_UNALIGNED(%rip), %rax
++	HAS_ARCH_FEATURE (Fast_Unaligned_Load)
+ 	jnz	2f
+ 	leaq	STRCPY_SSE2(%rip), %rax
+-	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	STRCPY_SSSE3(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcspn.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcspn.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcspn.S
+@@ -45,11 +45,9 @@
+ 	.text
+ ENTRY(STRCSPN)
+ 	.type	STRCSPN, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	STRCSPN_SSE2(%rip), %rax
+-	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	STRCSPN_SSE2(%rip), %rax
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+ 	leaq	STRCSPN_SSE42(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strspn.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strspn.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strspn.S
+@@ -30,11 +30,9 @@
+ 	.text
+ ENTRY(strspn)
+ 	.type	strspn, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__strspn_sse2(%rip), %rax
+-	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__strspn_sse2(%rip), %rax
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+ 	leaq	__strspn_sse42(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/test-multiarch.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/test-multiarch.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/test-multiarch.c
+@@ -75,12 +75,18 @@ do_test (int argc, char **argv)
+   int fails;
+ 
+   get_cpuinfo ();
+-  fails = check_proc ("avx", HAS_AVX, "HAS_AVX");
+-  fails += check_proc ("fma4", HAS_FMA4, "HAS_FMA4");
+-  fails += check_proc ("sse4_2", HAS_SSE4_2, "HAS_SSE4_2");
+-  fails += check_proc ("sse4_1", HAS_SSE4_1, "HAS_SSE4_1");
+-  fails += check_proc ("ssse3", HAS_SSSE3, "HAS_SSSE3");
+-  fails += check_proc ("popcnt", HAS_POPCOUNT, "HAS_POPCOUNT");
++  fails = check_proc ("avx", HAS_ARCH_FEATURE (AVX_Usable),
++		      "HAS_ARCH_FEATURE (AVX_Usable)");
++  fails += check_proc ("fma4", HAS_ARCH_FEATURE (FMA4_Usable),
++		       "HAS_ARCH_FEATURE (FMA4_Usable)");
++  fails += check_proc ("sse4_2", HAS_CPU_FEATURE (SSE4_2),
++		       "HAS_CPU_FEATURE (SSE4_2)");
++  fails += check_proc ("sse4_1", HAS_CPU_FEATURE (SSE4_1)
++		       , "HAS_CPU_FEATURE (SSE4_1)");
++  fails += check_proc ("ssse3", HAS_CPU_FEATURE (SSSE3),
++		       "HAS_CPU_FEATURE (SSSE3)");
++  fails += check_proc ("popcnt", HAS_CPU_FEATURE (POPCOUNT),
++		       "HAS_CPU_FEATURE (POPCOUNT)");
+ 
+   printf ("%d differences between /proc/cpuinfo and glibc code.\n", fails);
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wcscpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/wcscpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wcscpy.S
+@@ -27,11 +27,8 @@
+ 	.text
+ ENTRY(wcscpy)
+ 	.type	wcscpy, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-
+-1:	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	HAS_CPU_FEATURE (SSSE3)
+ 	jnz	2f
+ 	leaq	__wcscpy_sse2(%rip), %rax
+ 	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wmemcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/wmemcmp.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/wmemcmp.S
+@@ -26,16 +26,13 @@
+ 	.text
+ ENTRY(wmemcmp)
+ 	.type	wmemcmp, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-
+-1:	testl	$bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	HAS_CPU_FEATURE (SSSE3)
+ 	jnz	2f
+ 	leaq	__wmemcmp_sse2(%rip), %rax
+ 	ret
+ 
+-2:	testl	$bit_SSE4_1, __cpu_features+CPUID_OFFSET+index_SSE4_1(%rip)
++2:	HAS_CPU_FEATURE (SSE4_1)
+ 	jz	3f
+ 	leaq	__wmemcmp_sse4_1(%rip), %rax
+ 	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/rawmemchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/rawmemchr.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/rawmemchr.S
+@@ -27,12 +27,10 @@
+ 	.text
+ ENTRY(rawmemchr)
+ 	.type	rawmemchr, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	testl	$bit_Prefer_PMINUB_for_stringop, __cpu_features+FEATURE_OFFSET+index_Prefer_PMINUB_for_stringop(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	HAS_ARCH_FEATURE (Prefer_PMINUB_for_stringop)
+ 	jnz	2f
+-	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+ 	leaq	__rawmemchr_sse42(%rip), %rax
+ 	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strlen.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strlen.S
+@@ -29,18 +29,16 @@
+ 	.text
+ ENTRY(strlen)
+ 	.type	strlen, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__strlen_sse2_pminub(%rip), %rax
+-	testl	$bit_Prefer_PMINUB_for_stringop, __cpu_features+FEATURE_OFFSET+index_Prefer_PMINUB_for_stringop(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__strlen_sse2_pminub(%rip), %rax
++	HAS_ARCH_FEATURE (Prefer_PMINUB_for_stringop)
+ 	jnz	2f
+ 	leaq	__strlen_sse2(%rip), %rax
+-	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+ 	leaq	__strlen_sse42(%rip), %rax
+ 	ret
+-2:	testl	$bit_Slow_BSF, __cpu_features+FEATURE_OFFSET+index_Slow_BSF(%rip)
++2:	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	3f
+ 	leaq    __strlen_sse2_no_bsf(%rip), %rax
+ 3:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strnlen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strnlen.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strnlen.S
+@@ -27,11 +27,9 @@
+ 	.text
+ ENTRY(__strnlen)
+ 	.type	__strnlen, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__strnlen_sse2(%rip), %rax
+-	testl	$bit_Slow_BSF, __cpu_features+FEATURE_OFFSET+index_Slow_BSF(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__strnlen_sse2(%rip), %rax
++	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	2f
+ 	leaq	__strnlen_sse2_no_bsf(%rip), %rax
+ 2:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strrchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strrchr.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strrchr.S
+@@ -28,15 +28,13 @@
+ 	.text
+ ENTRY(strrchr)
+ 	.type	strrchr, @gnu_indirect_function
+-	cmpl	$0, __cpu_features+KIND_OFFSET(%rip)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leaq	__strrchr_sse2(%rip), %rax
+-	testl	$bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
++	LOAD_RTLD_GLOBAL_RO_RDX
++	leaq	__strrchr_sse2(%rip), %rax
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+ 	leaq	__strrchr_sse42(%rip), %rax
+ 	ret
+-2:	testl	$bit_Slow_BSF, __cpu_features+FEATURE_OFFSET+index_Slow_BSF(%rip)
++2:	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	3f
+ 	leaq    __strrchr_sse2_no_bsf(%rip), %rax
+ 3:	ret
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcasestr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strcasestr-c.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcasestr-c.c
+@@ -12,8 +12,8 @@ extern __typeof (__strcasestr_sse2) __st
+ 
+ #if 1
+ libc_ifunc (__strcasestr,
+-	    HAS_SSE4_2 && !use_unaligned_strstr () ? __strcasestr_sse42 :
+-	    __strcasestr_sse2);
++	    HAS_CPU_FEATURE (SSE4_2) && !use_unaligned_strstr ()
++	    ? __strcasestr_sse42 : __strcasestr_sse2);
+ #else
+ libc_ifunc (__strcasestr,
+ 	    0 ? __strcasestr_sse42 : __strcasestr_sse2);
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strstr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/strstr-c.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strstr-c.c
+@@ -42,7 +42,7 @@ extern __typeof (__redirect_strstr) __st
+ /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
+    ifunc symbol properly.  */
+ extern __typeof (__redirect_strstr) __libc_strstr;
+-libc_ifunc (__libc_strstr, HAS_SSE4_2 ? (use_unaligned_strstr () ?
++libc_ifunc (__libc_strstr, HAS_CPU_FEATURE (SSE4_2) ? (use_unaligned_strstr () ?
+ 					 __strstr_sse2_unaligned :
+ 					 __strstr_sse42) : __strstr_sse2)
+ 
diff --git a/SOURCES/glibc-rh1292018-3.patch b/SOURCES/glibc-rh1292018-3.patch
new file mode 100644
index 0000000..36b703e
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-3.patch
@@ -0,0 +1,1948 @@
+commit 1aee37a22e3977de7a89e734e0a1e112f52045f2
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Thu Aug 13 03:39:22 2015 -0700
+
+    Update i686 multiarch functions for <cpu-features.h>
+
+    This patch updates i686 multiarch functions to use the newly defined
+    HAS_CPU_FEATURE, HAS_ARCH_FEATURE, LOAD_GOT_AND_RTLD_GLOBAL_RO and
+    LOAD_FUNC_GOT_EAX from <cpu-features.h>.
+
+commit 4e940b2f4b577f3a530e0580373f7c2d569f4d63
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Sun Mar 6 08:23:24 2016 -0800
+
+    Use HAS_ARCH_FEATURE with Fast_Rep_String
+    
+    HAS_ARCH_FEATURE, not HAS_CPU_FEATURE, should be used with
+    Fast_Rep_String.
+
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/fpu/multiarch/e_expf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/fpu/multiarch/e_expf.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/fpu/multiarch/e_expf.c
+@@ -23,11 +23,15 @@ extern double __ieee754_expf_ia32 (doubl
+ 
+ double __ieee754_expf (double);
+ libm_ifunc (__ieee754_expf,
+-	    HAS_SSE2 ? __ieee754_expf_sse2 : __ieee754_expf_ia32);
++	    HAS_CPU_FEATURE (SSE2)
++	    ? __ieee754_expf_sse2
++	    : __ieee754_expf_ia32);
+ 
+ extern double __expf_finite_sse2 (double);
+ extern double __expf_finite_ia32 (double);
+ 
+ double __expf_finite (double);
+ libm_ifunc (__expf_finite,
+-	    HAS_SSE2 ? __expf_finite_sse2 : __expf_finite_ia32);
++	    HAS_CPU_FEATURE (SSE2)
++	    ? __expf_finite_sse2
++	    : __expf_finite_ia32);
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/fpu/multiarch/s_cosf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/fpu/multiarch/s_cosf.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/fpu/multiarch/s_cosf.c
+@@ -22,7 +22,7 @@ extern float __cosf_sse2 (float);
+ extern float __cosf_ia32 (float);
+ float __cosf (float);
+ 
+-libm_ifunc (__cosf, HAS_SSE2 ? __cosf_sse2 : __cosf_ia32);
++libm_ifunc (__cosf, HAS_CPU_FEATURE (SSE2) ? __cosf_sse2 : __cosf_ia32);
+ weak_alias (__cosf, cosf);
+ 
+ #define COSF __cosf_ia32
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/fpu/multiarch/s_sincosf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/fpu/multiarch/s_sincosf.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/fpu/multiarch/s_sincosf.c
+@@ -22,7 +22,8 @@ extern void __sincosf_sse2 (float, float
+ extern void __sincosf_ia32 (float, float *, float *);
+ void __sincosf (float, float *, float *);
+ 
+-libm_ifunc (__sincosf, HAS_SSE2 ? __sincosf_sse2 : __sincosf_ia32);
++libm_ifunc (__sincosf,
++	    HAS_CPU_FEATURE (SSE2) ? __sincosf_sse2 : __sincosf_ia32);
+ weak_alias (__sincosf, sincosf);
+ 
+ #define SINCOSF __sincosf_ia32
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/fpu/multiarch/s_sinf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/fpu/multiarch/s_sinf.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/fpu/multiarch/s_sinf.c
+@@ -22,7 +22,7 @@ extern float __sinf_sse2 (float);
+ extern float __sinf_ia32 (float);
+ float __sinf (float);
+ 
+-libm_ifunc (__sinf, HAS_SSE2 ? __sinf_sse2 : __sinf_ia32);
++libm_ifunc (__sinf, HAS_CPU_FEATURE (SSE2) ? __sinf_sse2 : __sinf_ia32);
+ weak_alias (__sinf, sinf);
+ #define SINF __sinf_ia32
+ #include <sysdeps/ieee754/flt-32/s_sinf.c>
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/bcopy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/bcopy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/bcopy.S
+@@ -23,46 +23,19 @@
+ 
+ /* Define multiple versions only for the definition in lib.  */
+ #if IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(bcopy)
+ 	.type	bcopy, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__bcopy_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__bcopy_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__bcopy_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__bcopy_ssse3)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__bcopy_ssse3_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(bcopy)
+-# else
+-	.text
+-ENTRY(bcopy)
+-	.type	bcopy, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__bcopy_ia32, %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+-	jz	2f
+-	leal	__bcopy_ssse3, %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+-	jz	2f
+-	leal	__bcopy_ssse3_rep, %eax
++	LOAD_FUNC_GOT_EAX(__bcopy_ssse3_rep)
+ 2:	ret
+ END(bcopy)
+-# endif
+ 
+ # undef ENTRY
+ # define ENTRY(name) \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/bzero.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/bzero.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/bzero.S
+@@ -23,46 +23,19 @@
+ 
+ /* Define multiple versions only for the definition in lib.  */
+ #if IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(__bzero)
+ 	.type	__bzero, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__bzero_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__bzero_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__bzero_sse2@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX ( __bzero_sse2)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__bzero_sse2_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(__bzero)
+-# else
+-	.text
+-ENTRY(__bzero)
+-	.type	__bzero, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__bzero_ia32, %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+-	jz	2f
+-	leal	__bzero_sse2, %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+-	jz	2f
+-	leal	__bzero_sse2_rep, %eax
++	LOAD_FUNC_GOT_EAX (__bzero_sse2_rep)
+ 2:	ret
+ END(__bzero)
+-# endif
+ 
+ # undef ENTRY
+ # define ENTRY(name) \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/ifunc-impl-list.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/ifunc-impl-list.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/ifunc-impl-list.c
+@@ -38,152 +38,152 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/i386/i686/multiarch/bcopy.S.  */
+   IFUNC_IMPL (i, name, bcopy,
+-	      IFUNC_IMPL_ADD (array, i, bcopy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, bcopy, HAS_CPU_FEATURE (SSSE3),
+ 			      __bcopy_ssse3_rep)
+-	      IFUNC_IMPL_ADD (array, i, bcopy, HAS_SSSE3, __bcopy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, bcopy, HAS_CPU_FEATURE (SSSE3), __bcopy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, bcopy, 1, __bcopy_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/bzero.S.  */
+   IFUNC_IMPL (i, name, bzero,
+-	      IFUNC_IMPL_ADD (array, i, bzero, HAS_SSE2, __bzero_sse2_rep)
+-	      IFUNC_IMPL_ADD (array, i, bzero, HAS_SSE2, __bzero_sse2)
++	      IFUNC_IMPL_ADD (array, i, bzero, HAS_CPU_FEATURE (SSE2), __bzero_sse2_rep)
++	      IFUNC_IMPL_ADD (array, i, bzero, HAS_CPU_FEATURE (SSE2), __bzero_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/memchr.S.  */
+   IFUNC_IMPL (i, name, memchr,
+-	      IFUNC_IMPL_ADD (array, i, memchr, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, memchr, HAS_CPU_FEATURE (SSE2),
+ 			      __memchr_sse2_bsf)
+-	      IFUNC_IMPL_ADD (array, i, memchr, HAS_SSE2, __memchr_sse2)
++	      IFUNC_IMPL_ADD (array, i, memchr, HAS_CPU_FEATURE (SSE2), __memchr_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, memchr, 1, __memchr_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/memcmp.S.  */
+   IFUNC_IMPL (i, name, memcmp,
+-	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_CPU_FEATURE (SSE4_2),
+ 			      __memcmp_sse4_2)
+-	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_SSSE3, __memcmp_ssse3)
++	      IFUNC_IMPL_ADD (array, i, memcmp, HAS_CPU_FEATURE (SSSE3), __memcmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/memmove_chk.S.  */
+   IFUNC_IMPL (i, name, __memmove_chk,
+-	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_chk_ssse3_rep)
+-	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_chk_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, __memmove_chk, 1,
+ 			      __memmove_chk_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/memmove.S.  */
+   IFUNC_IMPL (i, name, memmove,
+-	      IFUNC_IMPL_ADD (array, i, memmove, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_ssse3_rep)
+-	      IFUNC_IMPL_ADD (array, i, memmove, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/memrchr.S.  */
+   IFUNC_IMPL (i, name, memrchr,
+-	      IFUNC_IMPL_ADD (array, i, memrchr, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, memrchr, HAS_CPU_FEATURE (SSE2),
+ 			      __memrchr_sse2_bsf)
+-	      IFUNC_IMPL_ADD (array, i, memrchr, HAS_SSE2, __memrchr_sse2)
++	      IFUNC_IMPL_ADD (array, i, memrchr, HAS_CPU_FEATURE (SSE2), __memrchr_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, memrchr, 1, __memrchr_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/memset_chk.S.  */
+   IFUNC_IMPL (i, name, __memset_chk,
+-	      IFUNC_IMPL_ADD (array, i, __memset_chk, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, __memset_chk, HAS_CPU_FEATURE (SSE2),
+ 			      __memset_chk_sse2_rep)
+-	      IFUNC_IMPL_ADD (array, i, __memset_chk, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, __memset_chk, HAS_CPU_FEATURE (SSE2),
+ 			      __memset_chk_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, __memset_chk, 1,
+ 			      __memset_chk_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/memset.S.  */
+   IFUNC_IMPL (i, name, memset,
+-	      IFUNC_IMPL_ADD (array, i, memset, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, memset, HAS_CPU_FEATURE (SSE2),
+ 			      __memset_sse2_rep)
+-	      IFUNC_IMPL_ADD (array, i, memset, HAS_SSE2, __memset_sse2)
++	      IFUNC_IMPL_ADD (array, i, memset, HAS_CPU_FEATURE (SSE2), __memset_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, memset, 1, __memset_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/rawmemchr.S.  */
+   IFUNC_IMPL (i, name, rawmemchr,
+-	      IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_CPU_FEATURE (SSE2),
+ 			      __rawmemchr_sse2_bsf)
+-	      IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_CPU_FEATURE (SSE2),
+ 			      __rawmemchr_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, rawmemchr, 1, __rawmemchr_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/stpncpy.S.  */
+   IFUNC_IMPL (i, name, stpncpy,
+-	      IFUNC_IMPL_ADD (array, i, stpncpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, stpncpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __stpncpy_ssse3)
+-	      IFUNC_IMPL_ADD (array, i, stpncpy, HAS_SSE2, __stpncpy_sse2)
++	      IFUNC_IMPL_ADD (array, i, stpncpy, HAS_CPU_FEATURE (SSE2), __stpncpy_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, stpncpy, 1, __stpncpy_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/stpcpy.S.  */
+   IFUNC_IMPL (i, name, stpcpy,
+-	      IFUNC_IMPL_ADD (array, i, stpcpy, HAS_SSSE3, __stpcpy_ssse3)
+-	      IFUNC_IMPL_ADD (array, i, stpcpy, HAS_SSE2, __stpcpy_sse2)
++	      IFUNC_IMPL_ADD (array, i, stpcpy, HAS_CPU_FEATURE (SSSE3), __stpcpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, stpcpy, HAS_CPU_FEATURE (SSE2), __stpcpy_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, stpcpy, 1, __stpcpy_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strcasecmp.S.  */
+   IFUNC_IMPL (i, name, strcasecmp,
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strcasecmp_sse4_2)
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp, HAS_CPU_FEATURE (SSSE3),
+ 			      __strcasecmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strcasecmp, 1, __strcasecmp_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strcasecmp_l.S.  */
+   IFUNC_IMPL (i, name, strcasecmp_l,
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strcasecmp_l_sse4_2)
+-	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, HAS_CPU_FEATURE (SSSE3),
+ 			      __strcasecmp_l_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, 1,
+ 			      __strcasecmp_l_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strcasestr.c.  */
+   IFUNC_IMPL (i, name, strcasestr,
+-	      IFUNC_IMPL_ADD (array, i, strcasestr, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strcasestr, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strcasestr_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strcasestr, 1, __strcasestr_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strcat.S.  */
+   IFUNC_IMPL (i, name, strcat,
+-	      IFUNC_IMPL_ADD (array, i, strcat, HAS_SSSE3, __strcat_ssse3)
+-	      IFUNC_IMPL_ADD (array, i, strcat, HAS_SSE2, __strcat_sse2)
++	      IFUNC_IMPL_ADD (array, i, strcat, HAS_CPU_FEATURE (SSSE3), __strcat_ssse3)
++	      IFUNC_IMPL_ADD (array, i, strcat, HAS_CPU_FEATURE (SSE2), __strcat_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, strcat, 1, __strcat_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strchr.S.  */
+   IFUNC_IMPL (i, name, strchr,
+-	      IFUNC_IMPL_ADD (array, i, strchr, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, strchr, HAS_CPU_FEATURE (SSE2),
+ 			      __strchr_sse2_bsf)
+-	      IFUNC_IMPL_ADD (array, i, strchr, HAS_SSE2, __strchr_sse2)
++	      IFUNC_IMPL_ADD (array, i, strchr, HAS_CPU_FEATURE (SSE2), __strchr_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, strchr, 1, __strchr_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strcmp.S.  */
+   IFUNC_IMPL (i, name, strcmp,
+-	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strcmp_sse4_2)
+-	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_SSSE3, __strcmp_ssse3)
++	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_CPU_FEATURE (SSSE3), __strcmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strcmp, 1, __strcmp_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strcpy.S.  */
+   IFUNC_IMPL (i, name, strcpy,
+-	      IFUNC_IMPL_ADD (array, i, strcpy, HAS_SSSE3, __strcpy_ssse3)
+-	      IFUNC_IMPL_ADD (array, i, strcpy, HAS_SSE2, __strcpy_sse2)
++	      IFUNC_IMPL_ADD (array, i, strcpy, HAS_CPU_FEATURE (SSSE3), __strcpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, strcpy, HAS_CPU_FEATURE (SSE2), __strcpy_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, strcpy, 1, __strcpy_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strcspn.S.  */
+   IFUNC_IMPL (i, name, strcspn,
+-	      IFUNC_IMPL_ADD (array, i, strcspn, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strcspn, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strcspn_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strcspn, 1, __strcspn_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strncase.S.  */
+   IFUNC_IMPL (i, name, strncasecmp,
+-	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strncasecmp_sse4_2)
+-	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_CPU_FEATURE (SSSE3),
+ 			      __strncasecmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strncasecmp, 1,
+ 			      __strncasecmp_ia32))
+@@ -191,133 +191,133 @@ __libc_ifunc_impl_list (const char *name
+   /* Support sysdeps/i386/i686/multiarch/strncase_l.S.  */
+   IFUNC_IMPL (i, name, strncasecmp_l,
+ 	      IFUNC_IMPL_ADD (array, i, strncasecmp_l,
+-			      HAS_SSE4_2, __strncasecmp_l_sse4_2)
++			      HAS_CPU_FEATURE (SSE4_2), __strncasecmp_l_sse4_2)
+ 	      IFUNC_IMPL_ADD (array, i, strncasecmp_l,
+-			      HAS_SSSE3, __strncasecmp_l_ssse3)
++			      HAS_CPU_FEATURE (SSSE3), __strncasecmp_l_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strncasecmp_l, 1,
+ 			      __strncasecmp_l_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strncat.S.  */
+   IFUNC_IMPL (i, name, strncat,
+-	      IFUNC_IMPL_ADD (array, i, strncat, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strncat, HAS_CPU_FEATURE (SSSE3),
+ 			      __strncat_ssse3)
+-	      IFUNC_IMPL_ADD (array, i, strncat, HAS_SSE2, __strncat_sse2)
++	      IFUNC_IMPL_ADD (array, i, strncat, HAS_CPU_FEATURE (SSE2), __strncat_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, strncat, 1, __strncat_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strncpy.S.  */
+   IFUNC_IMPL (i, name, strncpy,
+-	      IFUNC_IMPL_ADD (array, i, strncpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strncpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __strncpy_ssse3)
+-	      IFUNC_IMPL_ADD (array, i, strncpy, HAS_SSE2, __strncpy_sse2)
++	      IFUNC_IMPL_ADD (array, i, strncpy, HAS_CPU_FEATURE (SSE2), __strncpy_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, strncpy, 1, __strncpy_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strnlen.S.  */
+   IFUNC_IMPL (i, name, strnlen,
+-	      IFUNC_IMPL_ADD (array, i, strnlen, HAS_SSE2, __strnlen_sse2)
++	      IFUNC_IMPL_ADD (array, i, strnlen, HAS_CPU_FEATURE (SSE2), __strnlen_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, strnlen, 1, __strnlen_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strpbrk.S.  */
+   IFUNC_IMPL (i, name, strpbrk,
+-	      IFUNC_IMPL_ADD (array, i, strpbrk, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strpbrk, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strpbrk_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strpbrk, 1, __strpbrk_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strrchr.S.  */
+   IFUNC_IMPL (i, name, strrchr,
+-	      IFUNC_IMPL_ADD (array, i, strrchr, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, strrchr, HAS_CPU_FEATURE (SSE2),
+ 			      __strrchr_sse2_bsf)
+-	      IFUNC_IMPL_ADD (array, i, strrchr, HAS_SSE2, __strrchr_sse2)
++	      IFUNC_IMPL_ADD (array, i, strrchr, HAS_CPU_FEATURE (SSE2), __strrchr_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, strrchr, 1, __strrchr_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strspn.S.  */
+   IFUNC_IMPL (i, name, strspn,
+-	      IFUNC_IMPL_ADD (array, i, strspn, HAS_SSE4_2, __strspn_sse42)
++	      IFUNC_IMPL_ADD (array, i, strspn, HAS_CPU_FEATURE (SSE4_2), __strspn_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strspn, 1, __strspn_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strstr-c.c.  */
+   IFUNC_IMPL (i, name, strstr,
+-	      IFUNC_IMPL_ADD (array, i, strstr, HAS_SSE4_2, __strstr_sse42)
++	      IFUNC_IMPL_ADD (array, i, strstr, HAS_CPU_FEATURE (SSE4_2), __strstr_sse42)
+ 	      IFUNC_IMPL_ADD (array, i, strstr, 1, __strstr_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/wcschr.S.  */
+   IFUNC_IMPL (i, name, wcschr,
+-	      IFUNC_IMPL_ADD (array, i, wcschr, HAS_SSE2, __wcschr_sse2)
++	      IFUNC_IMPL_ADD (array, i, wcschr, HAS_CPU_FEATURE (SSE2), __wcschr_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, wcschr, 1, __wcschr_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/wcscmp.S.  */
+   IFUNC_IMPL (i, name, wcscmp,
+-	      IFUNC_IMPL_ADD (array, i, wcscmp, HAS_SSE2, __wcscmp_sse2)
++	      IFUNC_IMPL_ADD (array, i, wcscmp, HAS_CPU_FEATURE (SSE2), __wcscmp_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, wcscmp, 1, __wcscmp_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/wcscpy.S.  */
+   IFUNC_IMPL (i, name, wcscpy,
+-	      IFUNC_IMPL_ADD (array, i, wcscpy, HAS_SSSE3, __wcscpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, wcscpy, HAS_CPU_FEATURE (SSSE3), __wcscpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, wcscpy, 1, __wcscpy_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/wcslen.S.  */
+   IFUNC_IMPL (i, name, wcslen,
+-	      IFUNC_IMPL_ADD (array, i, wcslen, HAS_SSE2, __wcslen_sse2)
++	      IFUNC_IMPL_ADD (array, i, wcslen, HAS_CPU_FEATURE (SSE2), __wcslen_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, wcslen, 1, __wcslen_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/wcsrchr.S.  */
+   IFUNC_IMPL (i, name, wcsrchr,
+-	      IFUNC_IMPL_ADD (array, i, wcsrchr, HAS_SSE2, __wcsrchr_sse2)
++	      IFUNC_IMPL_ADD (array, i, wcsrchr, HAS_CPU_FEATURE (SSE2), __wcsrchr_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, wcsrchr, 1, __wcsrchr_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/wmemcmp.S.  */
+   IFUNC_IMPL (i, name, wmemcmp,
+-	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_CPU_FEATURE (SSE4_2),
+ 			      __wmemcmp_sse4_2)
+-	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_CPU_FEATURE (SSSE3),
+ 			      __wmemcmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, wmemcmp, 1, __wmemcmp_ia32))
+ 
+ #ifdef SHARED
+   /* Support sysdeps/i386/i686/multiarch/memcpy_chk.S.  */
+   IFUNC_IMPL (i, name, __memcpy_chk,
+-	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_chk_ssse3_rep)
+-	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_chk_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, 1,
+ 			      __memcpy_chk_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/memcpy.S.  */
+   IFUNC_IMPL (i, name, memcpy,
+-	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_ssse3_rep)
+-	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3, __memcpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3), __memcpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/mempcpy_chk.S.  */
+   IFUNC_IMPL (i, name, __mempcpy_chk,
+-	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_chk_ssse3_rep)
+-	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_chk_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, 1,
+ 			      __mempcpy_chk_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/mempcpy.S.  */
+   IFUNC_IMPL (i, name, mempcpy,
+-	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_ssse3_rep)
+-	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, mempcpy, 1, __mempcpy_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strlen.S.  */
+   IFUNC_IMPL (i, name, strlen,
+-	      IFUNC_IMPL_ADD (array, i, strlen, HAS_SSE2,
++	      IFUNC_IMPL_ADD (array, i, strlen, HAS_CPU_FEATURE (SSE2),
+ 			      __strlen_sse2_bsf)
+-	      IFUNC_IMPL_ADD (array, i, strlen, HAS_SSE2, __strlen_sse2)
++	      IFUNC_IMPL_ADD (array, i, strlen, HAS_CPU_FEATURE (SSE2), __strlen_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, strlen, 1, __strlen_ia32))
+ 
+   /* Support sysdeps/i386/i686/multiarch/strncmp.S.  */
+   IFUNC_IMPL (i, name, strncmp,
+-	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_SSE4_2,
++	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_CPU_FEATURE (SSE4_2),
+ 			      __strncmp_sse4_2)
+-	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_SSSE3,
++	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_CPU_FEATURE (SSSE3),
+ 			      __strncmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, strncmp, 1, __strncmp_ia32))
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memchr.S
+@@ -22,46 +22,22 @@
+ #include <init-arch.h>
+ 
+ #if IS_IN (libc)
+-# define CFI_POP(REG) \
+-	cfi_adjust_cfa_offset (-4); \
+-	cfi_restore (REG)
+-
+-# define CFI_PUSH(REG) \
+-	cfi_adjust_cfa_offset (4); \
+-	cfi_rel_offset (REG, 0)
+-
+ 	.text
+ ENTRY(__memchr)
+ 	.type	__memchr, @gnu_indirect_function
+-	pushl	%ebx
+-	CFI_PUSH (%ebx)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-
+-1:	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	testl	$bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx)
++	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	3f
+ 
+-	leal	__memchr_sse2@GOTOFF(%ebx), %eax
+-	popl	%ebx
+-	CFI_POP	(%ebx)
++	LOAD_FUNC_GOT_EAX ( __memchr_sse2)
+ 	ret
+ 
+-	CFI_PUSH (%ebx)
+-
+-2:	leal	__memchr_ia32@GOTOFF(%ebx), %eax
+-	popl	%ebx
+-	CFI_POP	(%ebx)
++2:	LOAD_FUNC_GOT_EAX (__memchr_ia32)
+ 	ret
+ 
+-	CFI_PUSH (%ebx)
+-
+-3:	leal	__memchr_sse2_bsf@GOTOFF(%ebx), %eax
+-	popl	%ebx
+-	CFI_POP	(%ebx)
++3:	LOAD_FUNC_GOT_EAX (__memchr_sse2_bsf)
+ 	ret
+ END(__memchr)
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcmp.S
+@@ -23,46 +23,19 @@
+ 
+ /* Define multiple versions only for the definition in libc. */
+ #if IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(memcmp)
+ 	.type	memcmp, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memcmp_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__memcmp_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__memcmp_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__memcmp_ssse3)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+-	leal	__memcmp_sse4_2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(memcmp)
+-# else
+-	.text
+-ENTRY(memcmp)
+-	.type	memcmp, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memcmp_ia32, %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+-	jz	2f
+-	leal	__memcmp_ssse3, %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
+-	jz	2f
+-	leal	__memcmp_sse4_2, %eax
++	LOAD_FUNC_GOT_EAX (__memcmp_sse4_2)
+ 2:	ret
+ END(memcmp)
+-# endif
+ 
+ # undef ENTRY
+ # define ENTRY(name) \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy.S
+@@ -28,24 +28,15 @@
+ 	.text
+ ENTRY(memcpy)
+ 	.type	memcpy, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memcpy_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__memcpy_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__memcpy_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__memcpy_ssse3)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__memcpy_ssse3_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__memcpy_ssse3_rep)
++2:	ret
+ END(memcpy)
+ 
+ # undef ENTRY
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memcpy_chk.S
+@@ -29,24 +29,15 @@
+ 	.text
+ ENTRY(__memcpy_chk)
+ 	.type	__memcpy_chk, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memcpy_chk_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__memcpy_chk_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__memcpy_chk_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__memcpy_chk_ssse3)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__memcpy_chk_ssse3_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__memcpy_chk_ssse3_rep)
++2:	ret
+ END(__memcpy_chk)
+ # else
+ #  include "../memcpy_chk.S"
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memmove.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memmove.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memmove.S
+@@ -23,32 +23,23 @@
+ 
+ /* Define multiple versions only for the definition in lib.  */
+ #if IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(memmove)
+ 	.type	memmove, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memmove_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__memmove_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__memmove_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__memmove_ssse3)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__memmove_ssse3_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__memmove_ssse3_rep)
++2:	ret
+ END(memmove)
+ 
+-# undef ENTRY
+-# define ENTRY(name) \
++# ifdef SHARED
++#  undef ENTRY
++#  define ENTRY(name) \
+ 	.type __memmove_ia32, @function; \
+ 	.p2align 4; \
+ 	.globl __memmove_ia32; \
+@@ -56,24 +47,9 @@ END(memmove)
+ 	__memmove_ia32: cfi_startproc; \
+ 	CALL_MCOUNT
+ # else
+-	.text
+-ENTRY(memmove)
+-	.type	memmove, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memmove_ia32, %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+-	jz	2f
+-	leal	__memmove_ssse3, %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+-	jz	2f
+-	leal	__memmove_ssse3_rep, %eax
+-2:	ret
+-END(memmove)
+ 
+-# undef ENTRY
+-# define ENTRY(name) \
++#  undef ENTRY
++#  define ENTRY(name) \
+ 	.type __memmove_ia32, @function; \
+ 	.globl __memmove_ia32; \
+ 	.p2align 4; \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memmove_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memmove_chk.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memmove_chk.S
+@@ -23,46 +23,21 @@
+ 
+ /* Define multiple versions only for the definition in lib.  */
+ #if IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(__memmove_chk)
+ 	.type	__memmove_chk, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memmove_chk_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__memmove_chk_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__memmove_chk_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__memmove_chk_ssse3)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__memmove_chk_ssse3_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(__memmove_chk)
+-# else
+-	.text
+-ENTRY(__memmove_chk)
+-	.type	__memmove_chk, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memmove_chk_ia32, %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+-	jz	2f
+-	leal	__memmove_chk_ssse3, %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+-	jz	2f
+-	leal	__memmove_chk_ssse3_rep, %eax
++	LOAD_FUNC_GOT_EAX (__memmove_chk_ssse3_rep)
+ 2:	ret
+ END(__memmove_chk)
+ 
++# ifndef SHARED
+ 	.type __memmove_chk_ssse3, @function
+ 	.p2align 4;
+ __memmove_chk_ssse3:
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/mempcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/mempcpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/mempcpy.S
+@@ -28,24 +28,15 @@
+ 	.text
+ ENTRY(__mempcpy)
+ 	.type	__mempcpy, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__mempcpy_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__mempcpy_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__mempcpy_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__mempcpy_ssse3)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__mempcpy_ssse3_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__mempcpy_ssse3_rep)
++2:	ret
+ END(__mempcpy)
+ 
+ # undef ENTRY
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/mempcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/mempcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/mempcpy_chk.S
+@@ -29,24 +29,15 @@
+ 	.text
+ ENTRY(__mempcpy_chk)
+ 	.type	__mempcpy_chk, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__mempcpy_chk_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__mempcpy_chk_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__mempcpy_chk_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__mempcpy_chk_ssse3)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__mempcpy_chk_ssse3_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__mempcpy_chk_ssse3_rep)
++2:	ret
+ END(__mempcpy_chk)
+ # else
+ #  include "../mempcpy_chk.S"
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memrchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memrchr.S
+@@ -22,46 +22,22 @@
+ #include <init-arch.h>
+ 
+ #if IS_IN (libc)
+-# define CFI_POP(REG) \
+-	cfi_adjust_cfa_offset (-4); \
+-	cfi_restore (REG)
+-
+-# define CFI_PUSH(REG) \
+-	cfi_adjust_cfa_offset (4); \
+-	cfi_rel_offset (REG, 0)
+-
+ 	.text
+ ENTRY(__memrchr)
+ 	.type	__memrchr, @gnu_indirect_function
+-	pushl	%ebx
+-	CFI_PUSH (%ebx)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-
+-1:	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	testl	$bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx)
++	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	3f
+ 
+-	leal	__memrchr_sse2@GOTOFF(%ebx), %eax
+-	popl	%ebx
+-	CFI_POP	(%ebx)
++	LOAD_FUNC_GOT_EAX (__memrchr_sse2)
+ 	ret
+ 
+-	CFI_PUSH (%ebx)
+-
+-2:	leal	__memrchr_ia32@GOTOFF(%ebx), %eax
+-	popl	%ebx
+-	CFI_POP	(%ebx)
++2:	LOAD_FUNC_GOT_EAX (__memrchr_ia32)
+ 	ret
+ 
+-	CFI_PUSH (%ebx)
+-
+-3:	leal	__memrchr_sse2_bsf@GOTOFF(%ebx), %eax
+-	popl	%ebx
+-	CFI_POP	(%ebx)
++3:	LOAD_FUNC_GOT_EAX (__memrchr_sse2_bsf)
+ 	ret
+ END(__memrchr)
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memset.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset.S
+@@ -23,46 +23,19 @@
+ 
+ /* Define multiple versions only for the definition in lib.  */
+ #if IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(memset)
+ 	.type	memset, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memset_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__memset_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__memset_sse2@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__memset_sse2)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__memset_sse2_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(memset)
+-# else
+-	.text
+-ENTRY(memset)
+-	.type	memset, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memset_ia32, %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+-	jz	2f
+-	leal	__memset_sse2, %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+-	jz	2f
+-	leal	__memset_sse2_rep, %eax
++	LOAD_FUNC_GOT_EAX (__memset_sse2_rep)
+ 2:	ret
+ END(memset)
+-# endif
+ 
+ # undef ENTRY
+ # define ENTRY(name) \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/memset_chk.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/memset_chk.S
+@@ -23,50 +23,26 @@
+ 
+ /* Define multiple versions only for the definition in lib.  */
+ #if IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(__memset_chk)
+ 	.type	__memset_chk, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memset_chk_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__memset_chk_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__memset_chk_sse2@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__memset_chk_sse2)
++	HAS_ARCH_FEATURE (Fast_Rep_String)
+ 	jz	2f
+-	leal	__memset_chk_sse2_rep@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__memset_chk_sse2_rep)
++2:	ret
+ END(__memset_chk)
+ 
++# ifdef SHARED
+ strong_alias (__memset_chk, __memset_zero_constant_len_parameter)
+ 	.section .gnu.warning.__memset_zero_constant_len_parameter
+ 	.string "memset used with constant zero length parameter; this could be due to transposed parameters"
+ # else
+ 	.text
+-ENTRY(__memset_chk)
+-	.type	__memset_chk, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__memset_chk_ia32, %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+-	jz	2f
+-	leal	__memset_chk_sse2, %eax
+-	testl	$bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features
+-	jz	2f
+-	leal	__memset_chk_sse2_rep, %eax
+-2:	ret
+-END(__memset_chk)
+-
+ 	.type __memset_chk_sse2, @function
+ 	.p2align 4;
+ __memset_chk_sse2:
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/rawmemchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/rawmemchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/rawmemchr.S
+@@ -22,46 +22,22 @@
+ #include <init-arch.h>
+ 
+ #if IS_IN (libc)
+-# define CFI_POP(REG) \
+-	cfi_adjust_cfa_offset (-4); \
+-	cfi_restore (REG)
+-
+-# define CFI_PUSH(REG) \
+-	cfi_adjust_cfa_offset (4); \
+-	cfi_rel_offset (REG, 0)
+-
+ 	.text
+ ENTRY(__rawmemchr)
+ 	.type	__rawmemchr, @gnu_indirect_function
+-	pushl	%ebx
+-	CFI_PUSH (%ebx)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-
+-1:	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	testl	$bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx)
++	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	3f
+ 
+-	leal	__rawmemchr_sse2@GOTOFF(%ebx), %eax
+-	popl	%ebx
+-	CFI_POP	(%ebx)
++	LOAD_FUNC_GOT_EAX (__rawmemchr_sse2)
+ 	ret
+ 
+-	CFI_PUSH (%ebx)
+-
+-2:	leal	__rawmemchr_ia32@GOTOFF(%ebx), %eax
+-	popl	%ebx
+-	CFI_POP	(%ebx)
++2:	LOAD_FUNC_GOT_EAX (__rawmemchr_ia32)
+ 	ret
+ 
+-	CFI_PUSH (%ebx)
+-
+-3:	leal	__rawmemchr_sse2_bsf@GOTOFF(%ebx), %eax
+-	popl	%ebx
+-	CFI_POP	(%ebx)
++3:	LOAD_FUNC_GOT_EAX (__rawmemchr_sse2_bsf)
+ 	ret
+ END(__rawmemchr)
+ 
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/s_fma.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/s_fma.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/s_fma.c
+@@ -26,7 +26,8 @@
+ extern double __fma_ia32 (double x, double y, double z) attribute_hidden;
+ extern double __fma_fma (double x, double y, double z) attribute_hidden;
+ 
+-libm_ifunc (__fma, HAS_FMA ? __fma_fma : __fma_ia32);
++libm_ifunc (__fma,
++	    HAS_ARCH_FEATURE (FMA_Usable) ? __fma_fma : __fma_ia32);
+ weak_alias (__fma, fma)
+ 
+ # define __fma __fma_ia32
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/s_fmaf.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/s_fmaf.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/s_fmaf.c
+@@ -26,7 +26,8 @@
+ extern float __fmaf_ia32 (float x, float y, float z) attribute_hidden;
+ extern float __fmaf_fma (float x, float y, float z) attribute_hidden;
+ 
+-libm_ifunc (__fmaf, HAS_FMA ? __fmaf_fma : __fmaf_ia32);
++libm_ifunc (__fmaf,
++	    HAS_ARCH_FEATURE (FMA_Usable) ? __fmaf_fma : __fmaf_ia32);
+ weak_alias (__fmaf, fmaf)
+ 
+ # define __fmaf __fmaf_ia32
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcasecmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcasecmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcasecmp.S
+@@ -20,48 +20,18 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifdef SHARED
+ 	.text
+ ENTRY(__strcasecmp)
+ 	.type	__strcasecmp, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strcasecmp_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__strcasecmp_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__strcasecmp_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__strcasecmp_ssse3)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+-	leal	__strcasecmp_sse4_2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(__strcasecmp)
+-#else
+-	.text
+-ENTRY(__strcasecmp)
+-	.type	__strcasecmp, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strcasecmp_ia32, %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+-	jz	2f
+-	leal	__strcasecmp_ssse3, %eax
+-#if 0
+-	// XXX Temporarily
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
+-	jz	2f
+-	leal	__strcasecmp_sse4_2, %eax
+-#endif
++	LOAD_FUNC_GOT_EAX (__strcasecmp_sse4_2)
+ 2:	ret
+ END(__strcasecmp)
+-#endif
+ 
+ weak_alias (__strcasecmp, strcasecmp)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcat.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcat.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcat.S
+@@ -45,52 +45,22 @@
+    need strncat before the initialization happened.  */
+ #if IS_IN (libc)
+ 
+-# ifdef SHARED
+ 	.text
+ ENTRY(STRCAT)
+ 	.type	STRCAT, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	STRCAT_IA32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (STRCAT_IA32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	STRCAT_SSE2@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (STRCAT_SSE2)
++	HAS_ARCH_FEATURE (Fast_Unaligned_Load)
+ 	jnz	2f
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	STRCAT_SSSE3@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(STRCAT)
+-# else
+-
+-ENTRY(STRCAT)
+-	.type	STRCAT, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	STRCAT_IA32, %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+-	jz	2f
+-	leal	STRCAT_SSE2, %eax
+-	testl	$bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features
+-	jnz	2f
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+-	jz	2f
+-	leal	STRCAT_SSSE3, %eax
++	LOAD_FUNC_GOT_EAX (STRCAT_SSSE3)
+ 2:	ret
+ END(STRCAT)
+ 
+-# endif
+-
+ # undef ENTRY
+ # define ENTRY(name) \
+ 	.type STRCAT_IA32, @function; \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strchr.S
+@@ -25,24 +25,15 @@
+ 	.text
+ ENTRY(strchr)
+ 	.type	strchr, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strchr_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__strchr_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__strchr_sse2_bsf@GOTOFF(%ebx), %eax
+-	testl	$bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__strchr_sse2_bsf)
++	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	2f
+-	leal	__strchr_sse2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__strchr_sse2)
++2:	ret
+ END(strchr)
+ 
+ # undef ENTRY
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcmp.S
+@@ -51,46 +51,19 @@
+    define multiple versions for strncmp in static library since we
+    need strncmp before the initialization happened.  */
+ #if (defined SHARED || !defined USE_AS_STRNCMP) && IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(STRCMP)
+ 	.type	STRCMP, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__STRCMP_IA32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__STRCMP_IA32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__STRCMP_SSSE3@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__STRCMP_SSSE3)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+-	leal	__STRCMP_SSE4_2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(STRCMP)
+-# else
+-	.text
+-ENTRY(STRCMP)
+-	.type	STRCMP, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__STRCMP_IA32, %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+-	jz	2f
+-	leal	__STRCMP_SSSE3, %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
+-	jz	2f
+-	leal	__STRCMP_SSE4_2, %eax
++	LOAD_FUNC_GOT_EAX (__STRCMP_SSE4_2)
+ 2:	ret
+ END(STRCMP)
+-# endif
+ 
+ # undef ENTRY
+ # define ENTRY(name) \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcpy.S
+@@ -61,52 +61,22 @@
+    need strncpy before the initialization happened.  */
+ #if IS_IN (libc)
+ 
+-# ifdef SHARED
+ 	.text
+ ENTRY(STRCPY)
+ 	.type	STRCPY, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	STRCPY_IA32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (STRCPY_IA32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	STRCPY_SSE2@GOTOFF(%ebx), %eax
+-	testl	$bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (STRCPY_SSE2)
++	HAS_ARCH_FEATURE (Fast_Unaligned_Load)
+ 	jnz	2f
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	STRCPY_SSSE3@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(STRCPY)
+-# else
+-
+-ENTRY(STRCPY)
+-	.type	STRCPY, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	STRCPY_IA32, %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features
+-	jz	2f
+-	leal	STRCPY_SSE2, %eax
+-	testl	$bit_Fast_Unaligned_Load, FEATURE_OFFSET+index_Fast_Unaligned_Load+__cpu_features
+-	jnz	2f
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+-	jz	2f
+-	leal	STRCPY_SSSE3, %eax
++	LOAD_FUNC_GOT_EAX (STRCPY_SSSE3)
+ 2:	ret
+ END(STRCPY)
+ 
+-# endif
+-
+ # undef ENTRY
+ # define ENTRY(name) \
+ 	.type STRCPY_IA32, @function; \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcspn.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strcspn.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strcspn.S
+@@ -42,40 +42,16 @@
+    define multiple versions for strpbrk in static library since we
+    need strpbrk before the initialization happened.  */
+ #if (defined SHARED || !defined USE_AS_STRPBRK) && IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(STRCSPN)
+ 	.type	STRCSPN, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	STRCSPN_IA32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (STRCSPN_IA32)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+-	leal	STRCSPN_SSE42@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
+-END(STRCSPN)
+-# else
+-	.text
+-ENTRY(STRCSPN)
+-	.type	STRCSPN, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	STRCSPN_IA32, %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
+-	jz	2f
+-	leal	STRCSPN_SSE42, %eax
++	LOAD_FUNC_GOT_EAX (STRCSPN_SSE42)
+ 2:	ret
+ END(STRCSPN)
+-# endif
+ 
+ # undef ENTRY
+ # define ENTRY(name) \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strlen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strlen.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strlen.S
+@@ -28,24 +28,15 @@
+ 	.text
+ ENTRY(strlen)
+ 	.type	strlen, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strlen_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__strlen_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__strlen_sse2_bsf@GOTOFF(%ebx), %eax
+-	testl	$bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__strlen_sse2_bsf)
++	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	2f
+-	leal	__strlen_sse2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__strlen_sse2)
++2:	ret
+ END(strlen)
+ 
+ # undef ENTRY
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strncase.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strncase.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strncase.S
+@@ -20,48 +20,18 @@
+ #include <sysdep.h>
+ #include <init-arch.h>
+ 
+-#ifdef SHARED
+ 	.text
+ ENTRY(__strncasecmp)
+ 	.type	__strncasecmp, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strncasecmp_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__strncasecmp_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__strncasecmp_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__strncasecmp_ssse3)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+-	leal	__strncasecmp_sse4_2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
+-END(__strncasecmp)
+-#else
+-	.text
+-ENTRY(__strncasecmp)
+-	.type	__strncasecmp, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strncasecmp_ia32, %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+-	jz	2f
+-	leal	__strncasecmp_ssse3, %eax
+-#if 0
+-	// XXX Temporarily
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
+-	jz	2f
+-	leal	__strncasecmp_sse4_2, %eax
+-#endif
++	LOAD_FUNC_GOT_EAX (__strncasecmp_sse4_2)
+ 2:	ret
+ END(__strncasecmp)
+-#endif
+ 
+ weak_alias (__strncasecmp, strncasecmp)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strnlen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strnlen.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strnlen.S
+@@ -25,21 +25,12 @@
+ 	.text
+ ENTRY(__strnlen)
+ 	.type	__strnlen, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strnlen_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__strnlen_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__strnlen_sse2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__strnlen_sse2)
++2:	ret
+ END(__strnlen)
+ 
+ weak_alias(__strnlen, strnlen)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strrchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strrchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strrchr.S
+@@ -25,24 +25,15 @@
+ 	.text
+ ENTRY(strrchr)
+ 	.type	strrchr, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strrchr_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__strrchr_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__strrchr_sse2_bsf@GOTOFF(%ebx), %eax
+-	testl	$bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__strrchr_sse2_bsf)
++	HAS_ARCH_FEATURE (Slow_BSF)
+ 	jz	2f
+-	leal	__strrchr_sse2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__strrchr_sse2)
++2:	ret
+ END(strrchr)
+ 
+ # undef ENTRY
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strspn.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strspn.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strspn.S
+@@ -27,40 +27,16 @@
+ 
+ /* Define multiple versions only for the definition in libc.  */
+ #if IS_IN (libc)
+-# ifdef SHARED
+ 	.text
+ ENTRY(strspn)
+ 	.type	strspn, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strspn_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__strspn_ia32)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+-	leal	__strspn_sse42@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
+-END(strspn)
+-# else
+-	.text
+-ENTRY(strspn)
+-	.type	strspn, @gnu_indirect_function
+-	cmpl	$0, KIND_OFFSET+__cpu_features
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__strspn_ia32, %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
+-	jz	2f
+-	leal	__strspn_sse42, %eax
++	LOAD_FUNC_GOT_EAX (__strspn_sse42)
+ 2:	ret
+ END(strspn)
+-# endif
+ 
+ # undef ENTRY
+ # define ENTRY(name) \
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcschr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcschr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcschr.S
+@@ -25,20 +25,11 @@
+ 	.text
+ ENTRY(wcschr)
+ 	.type	wcschr, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__wcschr_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__wcschr_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__wcschr_sse2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__wcschr_sse2)
++2:	ret
+ END(wcschr)
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcscmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscmp.S
+@@ -28,20 +28,11 @@
+ 	.text
+ ENTRY(wcscmp)
+ 	.type	wcscmp, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__wcscmp_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__wcscmp_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__wcscmp_sse2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__wcscmp_sse2)
++2:	ret
+ END(wcscmp)
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcscpy.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcscpy.S
+@@ -26,20 +26,11 @@
+ 	.text
+ ENTRY(wcscpy)
+ 	.type	wcscpy, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__wcscpy_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__wcscpy_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__wcscpy_ssse3@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__wcscpy_ssse3)
++2:	ret
+ END(wcscpy)
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcslen.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcslen.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcslen.S
+@@ -25,21 +25,12 @@
+ 	.text
+ ENTRY(__wcslen)
+ 	.type	__wcslen, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__wcslen_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__wcslen_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__wcslen_sse2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__wcslen_sse2)
++2:	ret
+ END(__wcslen)
+ 
+ weak_alias(__wcslen, wcslen)
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcsrchr.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wcsrchr.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wcsrchr.S
+@@ -25,20 +25,11 @@
+ 	.text
+ ENTRY(wcsrchr)
+ 	.type	wcsrchr, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__wcsrchr_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__wcsrchr_ia32)
++	HAS_CPU_FEATURE (SSE2)
+ 	jz	2f
+-	leal	__wcsrchr_sse2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4);
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__wcsrchr_sse2)
++2:	ret
+ END(wcsrchr)
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wmemcmp.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/wmemcmp.S
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/wmemcmp.S
+@@ -27,23 +27,14 @@
+ 	.text
+ ENTRY(wmemcmp)
+ 	.type	wmemcmp, @gnu_indirect_function
+-	pushl	%ebx
+-	cfi_adjust_cfa_offset (4)
+-	cfi_rel_offset (ebx, 0)
+-	LOAD_PIC_REG(bx)
+-	cmpl	$0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+-	jne	1f
+-	call	__init_cpu_features
+-1:	leal	__wmemcmp_ia32@GOTOFF(%ebx), %eax
+-	testl	$bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
++	LOAD_GOT_AND_RTLD_GLOBAL_RO
++	LOAD_FUNC_GOT_EAX (__wmemcmp_ia32)
++	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+-	leal	__wmemcmp_ssse3@GOTOFF(%ebx), %eax
+-	testl	$bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
++	LOAD_FUNC_GOT_EAX (__wmemcmp_ssse3)
++	HAS_CPU_FEATURE (SSE4_2)
+ 	jz	2f
+-	leal	__wmemcmp_sse4_2@GOTOFF(%ebx), %eax
+-2:	popl	%ebx
+-	cfi_adjust_cfa_offset (-4)
+-	cfi_restore (ebx)
+-	ret
++	LOAD_FUNC_GOT_EAX (__wmemcmp_sse4_2)
++2:	ret
+ END(wmemcmp)
+ #endif
+Index: glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strstr-c.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/i386/i686/multiarch/strstr-c.c
++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strstr-c.c
+@@ -24,7 +24,7 @@ extern __typeof (__redirect_strstr) __st
+    ifunc symbol properly.  */
+ extern __typeof (__redirect_strstr) __libc_strstr;
+ libc_ifunc (__libc_strstr,
+-	    HAS_SSE4_2 && !use_unaligned_strstr () ?
++	    HAS_CPU_FEATURE (SSE4_2) && !use_unaligned_strstr () ?
+ 	    __strstr_sse42 : __strstr_ia32)
+ 
+ #undef strstr
diff --git a/SOURCES/glibc-rh1292018-4.patch b/SOURCES/glibc-rh1292018-4.patch
new file mode 100644
index 0000000..1e03502
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-4.patch
@@ -0,0 +1,41 @@
+commit 37dd6a19ca36b84cdef7e51dffcb68a2cbf54a6a
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Fri Aug 14 05:30:17 2015 -0700
+
+    Remove incorrect register mov in floorf/nearbyint on x86_64
+    
+    The change in 0b5395f052ee09cd7e3d219af4e805c38058afb5 replaced calls
+    to __get_cpu_features@plt followed by a mov from rax to rdx, with a
+    single macro LOAD_RTLD_GLOBAL_RO_RDX.  It is pretty clear that there
+    was a typo in s_floorf and __nearbyint due to which the (now incorrect)
+    mov was not removed.  This patch removes that mov.
+    
+        * sysdeps/x86_64/fpu/multiarch/s_floorf.S (__floorf): Remove
+        unnecessary movq.
+        * sysdeps/x86_64/fpu/multiarch/s_nearbyint.S (__nearbyint):
+        Likewise.
+
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_floorf.S b/sysdeps/x86_64/fpu/multiarch/s_floorf.S
+index f60f662..9d67847 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_floorf.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_floorf.S
+@@ -23,7 +23,6 @@
+ ENTRY(__floorf)
+ 	.type	__floorf, @gnu_indirect_function
+ 	LOAD_RTLD_GLOBAL_RO_RDX
+-	movq	%rax, %rdx
+ 	leaq	__floorf_sse41(%rip), %rax
+ 	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
+diff --git a/sysdeps/x86_64/fpu/multiarch/s_nearbyint.S b/sysdeps/x86_64/fpu/multiarch/s_nearbyint.S
+index 109395c..2c13024 100644
+--- a/sysdeps/x86_64/fpu/multiarch/s_nearbyint.S
++++ b/sysdeps/x86_64/fpu/multiarch/s_nearbyint.S
+@@ -23,7 +23,6 @@
+ ENTRY(__nearbyint)
+ 	.type	__nearbyint, @gnu_indirect_function
+ 	LOAD_RTLD_GLOBAL_RO_RDX
+-	movq	%rax, %rdx
+ 	leaq	__nearbyint_sse41(%rip), %rax
+ 	HAS_CPU_FEATURE (SSE4_1)
+ 	jnz	2f
diff --git a/SOURCES/glibc-rh1292018-5.patch b/SOURCES/glibc-rh1292018-5.patch
new file mode 100644
index 0000000..ce0422b
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-5.patch
@@ -0,0 +1,26 @@
+commit c9afcaaafaf9126a973883528eed8d0058a264c0
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Tue Dec 15 11:46:54 2015 -0800
+
+    Enable Silvermont optimizations for Knights Landing
+
+    Knights Landing processor is based on Silvermont.  This patch enables
+    Silvermont optimizations for Knights Landing.
+
+        * sysdeps/x86/cpu-features.c (init_cpu_features): Enable
+        Silvermont optimizations for Knights Landing.
+
+diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c
+index fba3ef0..aff894c 100644
+--- a/sysdeps/x86/cpu-features.c
++++ b/sysdeps/x86/cpu-features.c
+@@ -78,6 +78,9 @@ init_cpu_features (struct cpu_features *cpu_features)
+ 	      cpu_features->feature[index_Slow_BSF] |= bit_Slow_BSF;
+ 	      break;
+ 
++	    case 0x57:
++	      /* Knights Landing.  Enable Silvermont optimizations.  */
++
+ 	    case 0x37:
+ 	    case 0x4a:
+ 	    case 0x4d:
diff --git a/SOURCES/glibc-rh1292018-6.patch b/SOURCES/glibc-rh1292018-6.patch
new file mode 100644
index 0000000..50c3775
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-6.patch
@@ -0,0 +1,189 @@
+commit b9eb92ab05204df772eb4929eccd018637c9f3e9
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Wed Oct 21 14:44:23 2015 -0700
+
+    Add Prefer_MAP_32BIT_EXEC to map executable pages with MAP_32BIT
+    
+    According to Silvermont software optimization guide, for 64-bit
+    applications, branch prediction performance can be negatively impacted
+    when the target of a branch is more than 4GB away from the branch.  Add
+    the Prefer_MAP_32BIT_EXEC bit so that mmap will try to map executable
+    pages with MAP_32BIT first.  NB: MAP_32BIT will map to lower 2GB, not
+    lower 4GB, address.  Prefer_MAP_32BIT_EXEC reduces bits available for
+    address space layout randomization (ASLR), which is always disabled for
+    SUID programs and can only be enabled by setting environment variable,
+    LD_PREFER_MAP_32BIT_EXEC.
+    
+    On Fedora 23, this patch speeds up GCC 5 testsuite by 3% on Silvermont.
+    
+        [BZ #19367]
+        * sysdeps/unix/sysv/linux/wordsize-64/mmap.c: New file.
+        * sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h: Likewise.
+        * sysdeps/unix/sysv/linux/x86_64/64/mmap.c: Likewise.
+        * sysdeps/x86/cpu-features.h (bit_Prefer_MAP_32BIT_EXEC): New.
+        (index_Prefer_MAP_32BIT_EXEC): Likewise.
+
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/wordsize-64/mmap.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/wordsize-64/mmap.c
+@@ -0,0 +1,40 @@
++/* Linux mmap system call.  64-bit version.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public License as
++   published by the Free Software Foundation; either version 2.1 of the
++   License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sys/types.h>
++#include <sys/mman.h>
++#include <errno.h>
++#include <sysdep.h>
++
++/* An architecture may override this.  */
++#ifndef MMAP_PREPARE
++# define MMAP_PREPARE(addr, len, prot, flags, fd, offset)
++#endif
++
++__ptr_t
++__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
++{
++  MMAP_PREPARE (addr, len, prot, flags, fd, offset);
++  return (__ptr_t) INLINE_SYSCALL (mmap, 6, addr, len, prot, flags,
++				   fd, offset);
++}
++
++weak_alias (__mmap, mmap)
++weak_alias (__mmap, mmap64)
++weak_alias (__mmap, __mmap64)
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
+@@ -0,0 +1,44 @@
++/* Optional code to distinguish library flavours.  x86-64 version.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef _DL_LIBRECON_H
++
++#include <sysdeps/unix/sysv/linux/dl-librecon.h>
++
++/* Recognizing extra environment variables.  For 64-bit applications,
++   branch prediction performance may be negatively impacted when the
++   target of a branch is more than 4GB away from the branch.  Add the
++   Prefer_MAP_32BIT_EXEC bit so that mmap will try to map executable
++   pages with MAP_32BIT first.  NB: MAP_32BIT will map to lower 2GB,
++   not lower 4GB, address.  Prefer_MAP_32BIT_EXEC reduces bits available
++   for address space layout randomization (ASLR).  Prefer_MAP_32BIT_EXEC
++   is always disabled for SUID programs and can be enabled by setting
++   environment variable, LD_PREFER_MAP_32BIT_EXEC.  */
++#define EXTRA_LD_ENVVARS \
++  case 21:							      \
++    if (memcmp (envline, "PREFER_MAP_32BIT_EXEC", 21) == 0)	      \
++      GLRO(dl_x86_cpu_features).feature[index_Prefer_MAP_32BIT_EXEC]  \
++	= bit_Prefer_MAP_32BIT_EXEC;				      \
++    break;
++
++/* Extra unsecure variables.  The names are all stuffed in a single
++   string which means they have to be terminated with a '\0' explicitly.  */
++#define EXTRA_UNSECURE_ENVVARS \
++  "LD_PREFER_MAP_32BIT_EXEC\0"
++
++#endif /* dl-librecon.h */
+Index: glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/64/mmap.c
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/64/mmap.c
+@@ -0,0 +1,37 @@
++/* Linux mmap system call.  x86-64 version.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public License as
++   published by the Free Software Foundation; either version 2.1 of the
++   License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <ldsodefs.h>
++
++/* If the Prefer_MAP_32BIT_EXEC bit is set, try to map executable pages
++   with MAP_32BIT first.  */
++#define MMAP_PREPARE(addr, len, prot, flags, fd, offset)		\
++  if ((addr) == NULL							\
++      && ((prot) & PROT_EXEC) != 0					\
++      && HAS_ARCH_FEATURE (Prefer_MAP_32BIT_EXEC))			\
++    {									\
++      __ptr_t ret = (__ptr_t) INLINE_SYSCALL (mmap, 6, (addr), (len),	\
++					      (prot),			\
++					      (flags) | MAP_32BIT,	\
++					      (fd), (offset));		\
++      if (ret != MAP_FAILED)						\
++	return ret;							\
++    }
++
++#include <sysdeps/unix/sysv/linux/wordsize-64/mmap.c>
+Index: glibc-2.17-c758a686/sysdeps/x86/cpu-features.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86/cpu-features.h
++++ glibc-2.17-c758a686/sysdeps/x86/cpu-features.h
+@@ -32,6 +32,7 @@
+ #define bit_AVX_Fast_Unaligned_Load	(1 << 11)
+ #define bit_AVX512F_Usable		(1 << 12)
+ #define bit_AVX512DQ_Usable		(1 << 13)
++#define bit_Prefer_MAP_32BIT_EXEC	(1 << 16)
+ 
+ /* CPUID Feature flags.  */
+ 
+@@ -91,6 +92,7 @@
+ # define index_AVX_Fast_Unaligned_Load	FEATURE_INDEX_1*FEATURE_SIZE
+ # define index_AVX512F_Usable		FEATURE_INDEX_1*FEATURE_SIZE
+ # define index_AVX512DQ_Usable		FEATURE_INDEX_1*FEATURE_SIZE
++# define index_Prefer_MAP_32BIT_EXEC	FEATURE_INDEX_1*FEATURE_SIZE
+ 
+ # if defined (_LIBC) && !IS_IN (nonlib)
+ #  ifdef __x86_64__
+@@ -267,6 +269,7 @@ extern const struct cpu_features *__get_
+ # define index_AVX_Fast_Unaligned_Load	FEATURE_INDEX_1
+ # define index_AVX512F_Usable		FEATURE_INDEX_1
+ # define index_AVX512DQ_Usable		FEATURE_INDEX_1
++# define index_Prefer_MAP_32BIT_EXEC	FEATURE_INDEX_1
+ 
+ #endif	/* !__ASSEMBLER__ */
+ 
diff --git a/SOURCES/glibc-rh1292018-7.patch b/SOURCES/glibc-rh1292018-7.patch
new file mode 100644
index 0000000..fc87662
--- /dev/null
+++ b/SOURCES/glibc-rh1292018-7.patch
@@ -0,0 +1,26 @@
+commit a4754272958a8368701bb2a8d6b0c224fe3b4e73
+Author: H.J. Lu <hjl.tools@gmail.com>
+Date:   Thu Mar 3 14:51:40 2016 -0800
+
+    Or bit_Prefer_MAP_32BIT_EXEC in EXTRA_LD_ENVVARS
+    
+    We should turn on bit_Prefer_MAP_32BIT_EXEC in EXTRA_LD_ENVVARS without
+    overriding other bits.
+    
+      [BZ #19758]
+      * sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
+      (EXTRA_LD_ENVVARS): Or bit_Prefer_MAP_32BIT_EXEC.
+
+diff --git a/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h b/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
+index c9db5ea..a759934 100644
+--- a/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
++++ b/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
+@@ -33,7 +33,7 @@
+   case 21:							      \
+     if (memcmp (envline, "PREFER_MAP_32BIT_EXEC", 21) == 0)	      \
+       GLRO(dl_x86_cpu_features).feature[index_Prefer_MAP_32BIT_EXEC]  \
+-	= bit_Prefer_MAP_32BIT_EXEC;				      \
++	|= bit_Prefer_MAP_32BIT_EXEC;				      \
+     break;
+ 
+ /* Extra unsecure variables.  The names are all stuffed in a single
diff --git a/SOURCES/glibc-rh1293433.patch b/SOURCES/glibc-rh1293433.patch
new file mode 100644
index 0000000..853e53d
--- /dev/null
+++ b/SOURCES/glibc-rh1293433.patch
@@ -0,0 +1,45 @@
+commit 5a9af6376d43b58c6545feb86002812a57956654
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Fri Sep 25 20:20:33 2015 +0200
+
+    Fix inconsistent passwd compensation in nss/bug17079.c
+    
+    It used to be common practice to have a statically linked shell for an
+    alternative root account, as in:
+    
+    root:x:0:0:root:/root:/bin/bash
+    toor:x:0:0:root recovery account:/root:/sbin/sash
+    
+    This causes problems with passwd NSS tests because a UID-based lookup
+    will only retrieve one of those entries.  The original version of
+    nss/bug17079.c detected this, but failed to use this information later
+    on.
+
+diff --git a/nss/bug17079.c b/nss/bug17079.c
+index 9846737..0249922 100644
+--- a/nss/bug17079.c
++++ b/nss/bug17079.c
+@@ -72,7 +72,11 @@ init_test_items (void)
+       struct passwd *pwd2 = getpwuid (test_items[i].pw_uid);
+       if (pwd1 == NULL || !equal (pwd1, test_items + i)
+           || pwd2 == NULL || !equal (pwd2, test_items + i))
+-        test_items[i].pw_name = NULL;
++        {
++          printf ("info: skipping user \"%s\", UID %ld due to inconsistency\n",
++                  test_items[i].pw_name, (long) test_items[i].pw_uid);
++          test_items[i].pw_name = NULL;
++        }
+       else
+         found = true;
+     }
+@@ -195,6 +199,10 @@ test_buffer_size (size_t buffer_size)
+   for (int i = 0; i < test_count; ++i)
+     for (size_t padding_size = 0; padding_size < 3; ++padding_size)
+       {
++        /* Skip entries with inconsistent name/UID lookups.  */
++        if (test_items[i].pw_name == NULL)
++          continue;
++
+         test_one (test_items + i, buffer_size, '\0', padding_size);
+         if (padding_size > 0)
+           {
diff --git a/SOURCES/glibc-rh1293916.patch b/SOURCES/glibc-rh1293916.patch
new file mode 100644
index 0000000..b2ec485
--- /dev/null
+++ b/SOURCES/glibc-rh1293916.patch
@@ -0,0 +1,195 @@
+--- a/iconvdata/Makefile
++++ b/iconvdata/Makefile
+@@ -67,7 +67,8 @@
+ 
+ ifeq (yes,$(build-shared))
+ tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 \
+-	tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9
++	tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9 \
++	bug-iconv10
+ ifeq ($(have-thread-library),yes)
+ tests += bug-iconv3
+ endif
+@@ -286,6 +287,8 @@
+ 			 $(addprefix $(objpfx),$(modules.so))
+ $(objpfx)bug-iconv5.out: $(objpfx)gconv-modules \
+ 			 $(addprefix $(objpfx),$(modules.so))
++$(objpfx)bug-iconv10.out: $(objpfx)gconv-modules \
++			  $(addprefix $(objpfx),$(modules.so))
+ $(objpfx)tst-loading.out: $(objpfx)gconv-modules \
+ 			  $(addprefix $(objpfx),$(modules.so))
+ $(objpfx)tst-iconv4.out: $(objpfx)gconv-modules \
+
+diff --git a/iconvdata/bug-iconv10.c b/iconvdata/bug-iconv10.c
+new file mode 100644
+index 0000000..98353a2
+--- /dev/null
++++ b/iconvdata/bug-iconv10.c
+@@ -0,0 +1,77 @@ 
++/* bug 17197: check for redundant shift character at block boundary.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <iconv.h>
++#include <locale.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <errno.h>
++
++static int
++do_test (void)
++{
++  iconv_t cd = iconv_open ("IBM930", "UTF-8");
++  if (cd == (iconv_t) -1)
++    {
++      puts ("iconv_open failed");
++      return 1;
++    }
++
++  char instr1[] = "\xc2\xa6.";
++  const char expstr1[4] = "\016Bj\017";
++  const char expstr2[] = "K";
++  char outstr[4];
++  size_t inlen = sizeof (instr1);
++  size_t outlen = sizeof (outstr);
++  char *inptr = instr1;
++  char *outptr = outstr;
++  size_t r = iconv (cd, &inptr, &inlen, &outptr, &outlen);
++  if (r != -1
++      || errno != E2BIG
++      || inlen != sizeof (instr1) - 2
++      || inptr != instr1 + 2
++      || outlen != 0
++      || memcmp (outstr, expstr1, sizeof (expstr1)) != 0)
++    {
++      puts ("wrong first conversion");
++      return 1;
++    }
++
++  outlen = sizeof (outstr);
++  outptr = outstr;
++  r = iconv (cd, &inptr, &inlen, &outptr, &outlen);
++  if (r != 0
++      || inlen != 0
++      || outlen != sizeof (outstr) - sizeof (expstr2)
++      || memcmp (outstr, expstr2, sizeof (expstr2)) != 0)
++    {
++      puts ("wrong second conversion");
++      return 1;
++    }
++
++  if (iconv_close (cd) != 0)
++    {
++      puts ("iconv_close failed");
++      return 1;
++    }
++  return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- a/iconvdata/ibm930.c	2015-12-01 18:13:56.799658234 -0500
++++ b/iconvdata/ibm930.c	2015-12-01 18:14:12.729906742 -0500
+@@ -257,6 +257,7 @@ enum
+ 		break;							      \
+ 	      }								      \
+ 	    *outptr++ = SI;						      \
++	    curcs = sb;							      \
+ 	  }								      \
+ 									      \
+ 	if (__builtin_expect (outptr + 1 > outend, 0))			      \
+@@ -270,7 +271,6 @@ enum
+ 	  *outptr++ = 0x5b;						      \
+ 	else								      \
+ 	  *outptr++ = cp[0];						      \
+-	curcs = sb;							      \
+       }									      \
+ 									      \
+     /* Now that we wrote the output increment the input pointer.  */	      \
+--- a/iconvdata/ibm933.c	2015-12-01 18:13:56.799658234 -0500
++++ b/iconvdata/ibm933.c	2015-12-01 18:14:12.729906742 -0500
+@@ -255,6 +255,7 @@ enum
+ 		break;							      \
+ 	      }								      \
+ 	    *outptr++ = SI;						      \
++	    curcs = sb;							      \
+ 	  }								      \
+ 									      \
+ 	if (__builtin_expect (outptr + 1 > outend, 0))			      \
+@@ -263,7 +264,6 @@ enum
+ 	    break;							      \
+ 	  }								      \
+ 	*outptr++ = cp[0];						      \
+-	curcs = sb;							      \
+       }									      \
+ 									      \
+     /* Now that we wrote the output increment the input pointer.  */	      \
+--- a/iconvdata/ibm935.c	2015-12-01 18:13:56.799658234 -0500
++++ b/iconvdata/ibm935.c	2015-12-01 18:14:12.729906742 -0500
+@@ -255,6 +255,7 @@ enum
+ 		break;							      \
+ 	      }								      \
+ 	    *outptr++ = SI;						      \
++	    curcs = sb;							      \
+ 	  }								      \
+ 									      \
+ 	if (__builtin_expect (outptr + 1 > outend, 0))			      \
+@@ -263,7 +264,6 @@ enum
+ 	    break;							      \
+ 	  }								      \
+ 	*outptr++ = cp[0];						      \
+-	curcs = sb;							      \
+       }									      \
+ 									      \
+     /* Now that we wrote the output increment the input pointer.  */	      \
+--- a/iconvdata/ibm937.c	2015-12-01 18:13:56.799658234 -0500
++++ b/iconvdata/ibm937.c	2015-12-01 18:14:12.729906742 -0500
+@@ -255,6 +255,7 @@ enum
+ 		break;							      \
+ 	      }								      \
+ 	    *outptr++ = SI;						      \
++	    curcs = sb;							      \
+ 	  }								      \
+ 									      \
+ 	if (__builtin_expect (outptr + 1 > outend, 0))			      \
+@@ -263,7 +264,6 @@ enum
+ 	    break;							      \
+ 	  }								      \
+ 	*outptr++ = cp[0];						      \
+-	curcs = sb;							      \
+       }									      \
+ 									      \
+     /* Now that we wrote the output increment the input pointer.  */	      \
+--- a/iconvdata/ibm939.c	2015-12-01 18:13:56.799658234 -0500
++++ b/iconvdata/ibm939.c	2015-12-01 18:14:12.739906898 -0500
+@@ -255,6 +255,7 @@ enum
+ 		break;							      \
+ 	      }								      \
+ 	    *outptr++ = SI;						      \
++	    curcs = sb;							      \
+ 	  }								      \
+ 									      \
+ 	if (__builtin_expect (outptr + 1 > outend, 0))			      \
+@@ -268,7 +269,6 @@ enum
+ 	  *outptr++ = 0xb2;						      \
+ 	else								      \
+ 	  *outptr++ = cp[0];						      \
+-	curcs = sb;							      \
+       }									      \
+ 									      \
+     /* Now that we wrote the output increment the input pointer.  */	      \
diff --git a/SOURCES/glibc-rh1293976-2.patch b/SOURCES/glibc-rh1293976-2.patch
index e5656b7..e4c275a 100644
--- a/SOURCES/glibc-rh1293976-2.patch
+++ b/SOURCES/glibc-rh1293976-2.patch
@@ -30,42 +30,25 @@ Index: glibc-2.17-c758a686/malloc/Makefile
 ===================================================================
 --- glibc-2.17-c758a686.orig/malloc/Makefile
 +++ glibc-2.17-c758a686/malloc/Makefile
-@@ -20,13 +20,16 @@
- #
- subdir	:= malloc
- 
-+include ../Makeconfig
-+
- all:
- 
- dist-headers := malloc.h
- headers := $(dist-headers) obstack.h mcheck.h
+@@ -27,7 +27,8 @@ headers := $(dist-headers) obstack.h mch
  tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \
  	 tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 \
--	 tst-malloc-usable tst-malloc-backtrace
-+	 tst-malloc-usable tst-malloc-backtrace \
+ 	 tst-malloc-usable \
+-	 tst-malloc-backtrace tst-malloc-thread-exit
++	 tst-malloc-backtrace tst-malloc-thread-exit \
 +	 tst-malloc-thread-fail
  test-srcs = tst-mtrace
  
  routines = malloc morecore mcheck mtrace obstack
-@@ -43,6 +46,8 @@ libmemusage-inhibit-o = $(filter-out .os
+@@ -44,6 +45,8 @@ libmemusage-inhibit-o = $(filter-out .os
  
  $(objpfx)tst-malloc-backtrace: $(common-objpfx)nptl/libpthread.so \
  			       $(common-objpfx)nptl/libpthread_nonshared.a
 +$(objpfx)tst-malloc-thread-fail: $(common-objpfx)nptl/libpthread.so \
 +			       $(common-objpfx)nptl/libpthread_nonshared.a
+ $(objpfx)tst-malloc-thread-exit: $(common-objpfx)nptl/libpthread.so \
+ 			       $(common-objpfx)nptl/libpthread_nonshared.a
  
- # These should be removed by `make clean'.
- extra-objs = mcheck-init.o libmcheck.a
-@@ -50,8 +55,6 @@ extra-objs = mcheck-init.o libmcheck.a
- # Include the cleanup handler.
- aux := set-freeres thread-freeres
- 
--include ../Makeconfig
--
- CPPFLAGS-memusagestat = -DNOT_IN_libc
- 
- # The Perl script to analyze the output of the mtrace functions.
 Index: glibc-2.17-c758a686/malloc/tst-malloc-thread-fail.c
 ===================================================================
 --- /dev/null
diff --git a/SOURCES/glibc-rh1296297-1.patch b/SOURCES/glibc-rh1296297-1.patch
new file mode 100644
index 0000000..8c827ed
--- /dev/null
+++ b/SOURCES/glibc-rh1296297-1.patch
@@ -0,0 +1,185 @@
+Add --list-archive FILE support to localedef.
+
+This feature largely supports the integrated work
+for InstLang support, and does not explicitly change
+any help text or behaviour at the API level for these
+routines. The basic purpose is to allow a file name to
+propagate to through the internal APIs to be used instead
+of the default locale archive. Given that build-locale-archive
+links against copies of the internal API it can use these
+non-public APIs without problem.
+
+commit eaa1d42819c1d43f27552dfa55accfcc4ac25d54
+Author: Carlos O'Donell <carlos@redhat.com>
+Date:   Mon Feb 24 22:33:35 2014 -0500
+
+    Fix failure load locale template.
+    
+    The call to open_tmpl_archive was being passed a pointer to an
+    object allocated on the stack. The object on the stack is not
+    guaranteed to be initialized to zero so we need to minimally
+    initialize `fname' in the struct locarhandle to ensure that
+    open_tml_archive loads the default tempalte.
+    
+    This error was seen while debugging glibc installs in a qemu
+    VM where it is more likely the stack pages were dirty. It has
+    not been reported on non-VM systems.
+
+commit f6520166f41d58832351d35cfa987ecbb44f5986
+Author: Carlos O'Donell <carlos@redhat.com>
+Date:   Fri Oct 18 23:27:45 2013 -0400
+
+    Allow fill_archive to be called with NULL fname.
+    
+    The fill_archive function should support being
+    called with a NULL fname argument. A NULL fname
+    argument indicates that the default archive should
+    be opened. We enable this by setting ah.fname to
+    NULL before initializing ah or calling open_archive.
+    This way if fname is NULL then ah.fname remains NULL
+    and open_archive opens the default archive.
+
+commit c2021d0b305d436734709186c8c5dca254f77770
+Author: Carlos O'Donell <carlos@redhat.com>
+Date:   Thu Oct 3 05:22:51 2013 -0400
+
+[snip]
+    - Support `--list-archive FILE' in localedef utility.
+
+Index: glibc-2.17-c758a686/locale/locarchive.h
+===================================================================
+--- glibc-2.17-c758a686.orig/locale/locarchive.h
++++ glibc-2.17-c758a686/locale/locarchive.h
+@@ -80,6 +80,8 @@ struct locrecent
+ 
+ struct locarhandle
+ {
++  /* Full path to the locale archive file.  */
++  const char *fname;
+   int fd;
+   void *addr;
+   size_t mmaped;
+Index: glibc-2.17-c758a686/locale/programs/localedef.c
+===================================================================
+--- glibc-2.17-c758a686.orig/locale/programs/localedef.c
++++ glibc-2.17-c758a686/locale/programs/localedef.c
+@@ -202,7 +202,7 @@ main (int argc, char *argv[])
+ 
+   /* Handle a few special cases.  */
+   if (list_archive)
+-    show_archive_content (verbose);
++    show_archive_content (remaining > 1 ? argv[remaining] : NULL, verbose);
+   if (add_to_archive)
+     return add_locales_to_archive (argc - remaining, &argv[remaining],
+ 				   replace_archive);
+Index: glibc-2.17-c758a686/locale/programs/localedef.h
+===================================================================
+--- glibc-2.17-c758a686.orig/locale/programs/localedef.h
++++ glibc-2.17-c758a686/locale/programs/localedef.h
+@@ -176,7 +176,8 @@ extern int add_locales_to_archive (size_
+ /* Removed named locales from archive.  */
+ extern int delete_locales_from_archive (size_t nlist, char *list[]);
+ 
+-/* List content of locale archive.  */
+-extern void show_archive_content (int verbose) __attribute__ ((noreturn));
++/* List content of locale archive. If FNAME is non-null use that as
++   the locale archive to list, otherwise the default.  */
++extern void show_archive_content (char *fname, int verbose) __attribute__ ((noreturn));
+ 
+ #endif /* localedef.h */
+Index: glibc-2.17-c758a686/locale/programs/locarchive.c
+===================================================================
+--- glibc-2.17-c758a686.orig/locale/programs/locarchive.c
++++ glibc-2.17-c758a686/locale/programs/locarchive.c
+@@ -197,6 +197,7 @@ create_archive (const char *archivefname
+ 	     _("cannot change mode of new locale archive"));
+     }
+ 
++  ah->fname = NULL;
+   ah->fd = fd;
+   ah->addr = p;
+   ah->mmaped = total;
+@@ -519,11 +520,19 @@ open_archive (struct locarhandle *ah, bo
+   struct locarhead head;
+   int retry = 0;
+   size_t prefix_len = output_prefix ? strlen (output_prefix) : 0;
+-  char archivefname[prefix_len + sizeof (ARCHIVE_NAME)];
+-
+-  if (output_prefix)
+-    memcpy (archivefname, output_prefix, prefix_len);
+-  strcpy (archivefname + prefix_len, ARCHIVE_NAME);
++  char fname[prefix_len + sizeof (ARCHIVE_NAME)];
++  char *archivefname = ah->fname;
++  bool defaultfname = false;
++
++  /* If ah has a non-NULL fname open that otherwise open the default.  */
++  if (archivefname == NULL)
++    {
++      defaultfname = true;
++      archivefname = fname;
++      if (output_prefix)
++        memcpy (archivefname, output_prefix, prefix_len);
++      strcpy (archivefname + prefix_len, ARCHIVE_NAME);
++    }
+ 
+   while (1)
+     {
+@@ -531,8 +540,11 @@ open_archive (struct locarhandle *ah, bo
+       fd = open64 (archivefname, readonly ? O_RDONLY : O_RDWR);
+       if (fd == -1)
+ 	{
+-	  /* Maybe the file does not yet exist.  */
+-	  if (errno == ENOENT)
++	  /* Maybe the file does not yet exist? If we are opening
++	     the default locale archive we ignore the failure and
++	     list an empty archive, otherwise we print an error
++	     and exit.  */
++	  if (errno == ENOENT && defaultfname)
+ 	    {
+ 	      if (readonly)
+ 		{
+@@ -1258,6 +1270,7 @@ add_locales_to_archive (nlist, list, rep
+ 
+   /* Open the archive.  This call never returns if we cannot
+      successfully open the archive.  */
++  ah.fname = NULL;
+   open_archive (&ah, false);
+ 
+   while (nlist-- > 0)
+@@ -1457,6 +1470,7 @@ delete_locales_from_archive (nlist, list
+ 
+   /* Open the archive.  This call never returns if we cannot
+      successfully open the archive.  */
++  ah.fname = NULL;
+   open_archive (&ah, false);
+ 
+   head = ah.addr;
+@@ -1545,7 +1559,7 @@ dataentcmp (const void *a, const void *b
+ 
+ 
+ void
+-show_archive_content (int verbose)
++show_archive_content (char *fname, int verbose)
+ {
+   struct locarhandle ah;
+   struct locarhead *head;
+@@ -1555,6 +1569,7 @@ show_archive_content (int verbose)
+ 
+   /* Open the archive.  This call never returns if we cannot
+      successfully open the archive.  */
++  ah.fname = fname;
+   open_archive (&ah, true);
+ 
+   head = ah.addr;
+Index: glibc-2.17-c758a686/locale/programs/locfile.c
+===================================================================
+--- glibc-2.17-c758a686.orig/locale/programs/locfile.c
++++ glibc-2.17-c758a686/locale/programs/locfile.c
+@@ -337,6 +337,7 @@ write_all_categories (struct localedef_t
+ 
+       /* Open the archive.  This call never returns if we cannot
+ 	 successfully open the archive.  */
++      ah.fname = NULL;
+       open_archive (&ah, false);
+ 
+       if (add_locale_to_archive (&ah, locname, to_archive, true) != 0)
diff --git a/SOURCES/glibc-rh1296297.patch b/SOURCES/glibc-rh1296297.patch
new file mode 100644
index 0000000..875e760
--- /dev/null
+++ b/SOURCES/glibc-rh1296297.patch
@@ -0,0 +1,356 @@
+Adds --install-langs support build-locale-archive.
+
+commit 0457f649e3fe6299efe384da13dfc923bbe65707
+Author: Carlos O'Donell <carlos@systemhalted.org>
+Date:   Thu Sep 17 12:24:49 2015 -0400
+
+[snip]
+    - Fix --install-langs bug which causes SIGABRT (#1262040).
+
+commit 91764bd9ec690d4b8a886c0a3a104aac12d340d2
+Author: Carlos O'Donell <carlos@systemhalted.org>
+Date:   Thu Mar 5 16:05:43 2015 -0500
+
+    Resolves: #156477
+    
+    - Support installing only those locales specified by the RPM macro
+      %%_install_langs (#156477).
+
+Index: glibc-2.17-c758a686/releng/build-locale-archive.c
+===================================================================
+--- glibc-2.17-c758a686.orig/releng/build-locale-archive.c
++++ glibc-2.17-c758a686/releng/build-locale-archive.c
+@@ -8,6 +8,7 @@
+ #include <stdbool.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <getopt.h>
+ #include <string.h>
+ #include <sys/mman.h>
+ #include <sys/stat.h>
+@@ -21,6 +22,7 @@ const char *alias_file = DATADIR "/local
+ const char *locar_file = PREFIX "/lib/locale/locale-archive";
+ const char *tmpl_file = PREFIX "/lib/locale/locale-archive.tmpl";
+ const char *loc_path = PREFIX "/lib/locale/";
++/* Flags set by `--verbose` option.  */
+ int be_quiet = 1;
+ int verbose = 0;
+ int max_locarchive_open_retry = 10;
+@@ -96,7 +98,7 @@ open_tmpl_archive (struct locarhandle *a
+   struct stat64 st;
+   int fd;
+   struct locarhead head;
+-  const char *archivefname = tmpl_file;
++  const char *archivefname = ah->fname == NULL ? tmpl_file : ah->fname;
+ 
+   /* Open the archive.  We must have exclusive write access.  */
+   fd = open64 (archivefname, O_RDONLY);
+@@ -116,7 +118,7 @@ open_tmpl_archive (struct locarhandle *a
+   ah->mmaped = (head.sumhash_offset
+ 		+ head.sumhash_size * sizeof (struct sumhashent));
+   if (ah->mmaped > (unsigned long) st.st_size)
+-    error (EXIT_FAILURE, 0, "locale archite template file truncated");
++    error (EXIT_FAILURE, 0, "locale archive template file truncated");
+   ah->mmaped = st.st_size;
+   ah->reserved = st.st_size;
+ 
+@@ -250,7 +252,10 @@ compute_data (struct locarhandle *ah, st
+ }
+ 
+ static int
+-fill_archive (struct locarhandle *tmpl_ah, size_t nlist, char *list[],
++fill_archive (struct locarhandle *tmpl_ah,
++	      const char *fname,
++	      size_t install_langs_count, char *install_langs_list[],
++	      size_t nlist, char *list[],
+ 	      const char *primary)
+ {
+   struct locarhandle ah;
+@@ -281,11 +286,40 @@ fill_archive (struct locarhandle *tmpl_a
+   for (cnt = used = 0; cnt < head->namehash_size; ++cnt)
+     if (namehashtab[cnt].locrec_offset != 0)
+       {
++	char * name;
++	int i;
+ 	assert (used < head->namehash_used);
+-	names[used].name = tmpl_ah->addr + namehashtab[cnt].name_offset;
+-	names[used++].locrec
+-	  = (struct locrecent *) ((char *) tmpl_ah->addr +
+-				  namehashtab[cnt].locrec_offset);
++        name = tmpl_ah->addr + namehashtab[cnt].name_offset;
++        if (install_langs_count == 0)
++          {
++	    /* Always intstall the entry.  */
++            names[used].name = name;
++            names[used++].locrec
++                = (struct locrecent *) ((char *) tmpl_ah->addr +
++                                        namehashtab[cnt].locrec_offset);
++          }
++        else
++          {
++	    /* Only install the entry if the user asked for it via
++	       --install-langs.  */
++            for (i = 0; i < install_langs_count; i++)
++              {
++		/* Add one for "_" and one for the null terminator.  */
++		size_t len = strlen (install_langs_list[i]) + 2;
++		char *install_lang = (char *)xmalloc (len);
++                strcpy (install_lang, install_langs_list[i]);
++                if (strchr (install_lang, '_') == NULL)
++                  strcat (install_lang, "_");
++                if (strncmp (name, install_lang, strlen (install_lang)) == 0)
++                  {
++                    names[used].name = name;
++                    names[used++].locrec
++		      = (struct locrecent *) ((char *)tmpl_ah->addr
++					      + namehashtab[cnt].locrec_offset);
++                  }
++		free (install_lang);
++              }
++          }
+       }
+ 
+   /* Sort the names.  */
+@@ -304,6 +338,9 @@ fill_archive (struct locarhandle *tmpl_a
+ 
+   /* Open the archive.  This call never returns if we cannot
+      successfully open the archive.  */
++  ah.fname = NULL;
++  if (fname != NULL)
++    ah.fname = fname;
+   open_archive (&ah, false);
+ 
+   if (primary != NULL)
+@@ -532,24 +569,197 @@ fill_archive (struct locarhandle *tmpl_a
+   return result;
+ }
+ 
+-int main ()
++void usage()
++{
++  printf ("\
++Usage: build-locale-archive [OPTION]... [TEMPLATE-FILE] [ARCHIVE-FILE]\n\
++ Builds a locale archive from a template file.\n\
++ Options:\n\
++  -h, --help                 Print this usage message.\n\
++  -v, --verbose              Verbose execution.\n\
++  -l, --install-langs=LIST   Only include locales given in LIST into the \n\
++                             locale archive.  LIST is a colon separated list\n\
++                             of locale prefixes, for example \"de:en:ja\".\n\
++                             The special argument \"all\" means to install\n\
++                             all languages and it must be present by itself.\n\
++                             If \"all\" is present with any other language it\n\
++                             will be treated as the name of a locale.\n\
++                             If the --install-langs option is missing, all\n\
++                             locales are installed. The colon separated list\n\
++                             can contain any strings matching the beginning of\n\
++                             locale names.\n\
++                             If a string does not contain a \"_\", it is added.\n\
++                             Examples:\n\
++                               --install-langs=\"en\"\n\
++                                 installs en_US, en_US.iso88591,\n\
++                                 en_US.iso885915, en_US.utf8,\n\
++                                 en_GB ...\n\
++                               --install-langs=\"en_US.utf8\"\n\
++                                 installs only en_US.utf8.\n\
++                               --install-langs=\"ko\"\n\
++                                 installs ko_KR, ko_KR.euckr,\n\
++                                 ko_KR.utf8 but *not* kok_IN\n\
++                                 because \"ko\" does not contain\n\
++                                 \"_\" and it is silently added\n\
++                               --install-langs\"ko:kok\"\n\
++                                 installs ko_KR, ko_KR.euckr,\n\
++                                 ko_KR.utf8, kok_IN, and\n\
++                                 kok_IN.utf8.\n\
++                               --install-langs=\"POSIX\" will\n\
++                                 installs *no* locales at all\n\
++                                 because POSIX matches none of\n\
++                                 the locales. Actually, any string\n\
++                                 matching nothing will do that.\n\
++                                 POSIX and C will always be\n\
++                                 available because they are\n\
++                                 builtin.\n\
++                             Aliases are installed as well,\n\
++                             i.e. --install-langs=\"de\"\n\
++                             will install not only every locale starting with\n\
++                             \"de\" but also the aliases \"deutsch\"\n\
++                             and and \"german\" although the latter does not\n\
++                             start with \"de\".\n\
++\n\
++  If the arguments TEMPLATE-FILE and ARCHIVE-FILE are not given the locations\n\
++  where the glibc used expects these files are used by default.\n\
++");
++}
++
++int main (int argc, char *argv[])
+ {
+   char path[4096];
+   DIR *dirp;
+   struct dirent64 *d;
+   struct stat64 st;
+   char *list[16384], *primary;
++  char *lang;
++  int install_langs_count = 0;
++  int i;
++  char *install_langs_arg, *ila_start;
++  char **install_langs_list;
+   unsigned int cnt = 0;
+   struct locarhandle tmpl_ah;
++  char *new_locar_fname = NULL;
+   size_t loc_path_len = strlen (loc_path);
+ 
++  while (1)
++    {
++      int c;
++
++      static struct option long_options[] =
++        {
++            {"help",            no_argument,       0, 'h'},
++            {"verbose",         no_argument,       0, 'v'},
++            {"install-langs",   required_argument, 0, 'l'},
++            {0, 0, 0, 0}
++        };
++      /* getopt_long stores the option index here. */
++      int option_index = 0;
++
++      c = getopt_long (argc, argv, "vhl:",
++                       long_options, &option_index);
++
++      /* Detect the end of the options. */
++      if (c == -1)
++        break;
++
++      switch (c)
++        {
++        case 0:
++          printf ("unknown option %s", long_options[option_index].name);
++          if (optarg)
++            printf (" with arg %s", optarg);
++          printf ("\n");
++          usage ();
++          exit (1);
++
++        case 'v':
++          verbose = 1;
++          be_quiet = 0;
++          break;
++
++        case 'h':
++          usage ();
++          exit (0);
++
++        case 'l':
++          install_langs_arg = ila_start = strdup (optarg);
++          /* If the argument to --install-lang is "all", do
++             not limit the list of languages to install and install
++             them all.  We do not support installing a single locale
++	     called "all".  */
++#define MAGIC_INSTALL_ALL "all"
++          if (install_langs_arg != NULL
++	      && install_langs_arg[0] != '\0'
++	      && !(strncmp(install_langs_arg, MAGIC_INSTALL_ALL,
++			   strlen(MAGIC_INSTALL_ALL)) == 0
++		   && strlen (install_langs_arg) == 3))
++            {
++	      /* Count the number of languages we will install.  */
++              while (true)
++                {
++                  lang = strtok(install_langs_arg, ":;,");
++                  if (lang == NULL)
++                    break;
++                  install_langs_count++;
++                  install_langs_arg = NULL;
++                }
++	      free (ila_start);
++	      /* Copy the list.  */
++	      install_langs_list = (char **)xmalloc (sizeof(char *) * install_langs_count);
++	      install_langs_arg = ila_start = strdup (optarg);
++	      install_langs_count = 0;
++	      while (true)
++                {
++                  lang = strtok(install_langs_arg, ":;,");
++                  if (lang == NULL)
++                    break;
++                  install_langs_list[install_langs_count] = lang;
++		  install_langs_count++;
++                  install_langs_arg = NULL;
++                }
++            }
++          break;
++
++        case '?':
++          /* getopt_long already printed an error message. */
++          usage ();
++          exit (0);
++
++        default:
++          abort ();
++        }
++    }
++  tmpl_ah.fname = NULL;
++  if (optind < argc)
++    tmpl_ah.fname = argv[optind];
++  if (optind + 1 < argc)
++    new_locar_fname = argv[optind + 1];
++  if (verbose)
++    {
++      if (tmpl_ah.fname)
++        printf("input archive file specified on command line: %s\n",
++               tmpl_ah.fname);
++      else
++        printf("using default input archive file.\n");
++      if (new_locar_fname)
++        printf("output archive file specified on command line: %s\n",
++               new_locar_fname);
++      else
++        printf("using default output archive file.\n");
++    }
++
+   dirp = opendir (loc_path);
+   if (dirp == NULL)
+     error (EXIT_FAILURE, errno, "cannot open directory \"%s\"", loc_path);
+ 
+   open_tmpl_archive (&tmpl_ah);
+ 
+-  unlink (locar_file);
++  if (new_locar_fname)
++    unlink (new_locar_fname);
++  else
++    unlink (locar_file);
++
+   primary = getenv ("LC_ALL");
+   if (primary == NULL)
+     primary = getenv ("LANG");
+@@ -560,7 +770,8 @@ int main ()
+ 	  && strncmp (primary, "zh", 2) != 0)
+ 	{
+ 	  char *ptr = malloc (strlen (primary) + strlen (".utf8") + 1), *p, *q;
+-
++	  /* This leads to invalid locales sometimes:
++	     de_DE.iso885915@euro -> de_DE.utf8@euro */
+ 	  if (ptr != NULL)
+ 	    {
+ 	      p = ptr;
+@@ -623,10 +834,19 @@ int main ()
+       cnt++;
+     }
+   closedir (dirp);
+-  fill_archive (&tmpl_ah, cnt, list, primary);
++  /* Store the archive to the file specified as the second argument on the
++     command line or the default locale archive.  */
++  fill_archive (&tmpl_ah, new_locar_fname,
++                install_langs_count, install_langs_list,
++                cnt, list, primary);
+   close_archive (&tmpl_ah);
+   truncate (tmpl_file, 0);
+-  char *argv[] = { "/usr/sbin/tzdata-update", NULL };
+-  execve (argv[0], (char *const *)argv, (char *const *)&argv[1]);
++  if (install_langs_count > 0)
++    {
++      free (ila_start);
++      free (install_langs_list);
++    }
++  char *tz_argv[] = { "/usr/sbin/tzdata-update", NULL };
++  execve (tz_argv[0], (char *const *)tz_argv, (char *const *)&tz_argv[1]);
+   exit (0);
+ }
diff --git a/SOURCES/glibc-rh1298349.patch b/SOURCES/glibc-rh1298349.patch
new file mode 100644
index 0000000..863c215
--- /dev/null
+++ b/SOURCES/glibc-rh1298349.patch
@@ -0,0 +1,239 @@
+commit 0897c551c0a098020f145885de06a5c10e5cc96b
+Author: Carlos O'Donell <carlos@systemhalted.org>
+Date:   Wed Jan 21 10:08:18 2015 -0500
+
+    tst-getpw: Rewrite.
+    
+    The test is rewritten to look for the testable conditions and
+    exit once they are all detected. This prevents the test from
+    iterating over 2000 UIDs and looking up each one. It speeds up
+    the test and prevents it from failing if the system under test
+    has an NSS-based passwd that is slower than the test timeout.
+    
+    See:
+    https://sourceware.org/ml/libc-alpha/2015-01/msg00394.html
+
+diff --git a/pwd/tst-getpw.c b/pwd/tst-getpw.c
+index 059c9e0..e3e101b 100644
+--- a/pwd/tst-getpw.c
++++ b/pwd/tst-getpw.c
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1999-2016 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -15,26 +15,100 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#include <stdio.h>
+ #include <pwd.h>
++#include <errno.h>
++#include <stdbool.h>
++
++/* We want to test getpw by calling it with a uid that does
++   exist and one that doesn't exist. We track if we've met those
++   conditions and exit. We also track if we've failed due to lack
++   of memory. That constitutes all of the standard failure cases.  */
++bool seen_hit;
++bool seen_miss;
++bool seen_oom;
++
++/* How many errors we've had while running the test.  */
++int errors;
+ 
+ static void
+ check (uid_t uid)
+ {
++  int ret;
+   char buf[1024];
+ 
+-  (void) getpw (uid, buf);
++  ret = getpw (uid, buf);
++
++  /* Successfully read a password line.  */
++  if (ret == 0 && !seen_hit)
++    {
++      printf ("PASS: Read a password line given a uid.\n");
++      seen_hit = true;
++    }
++
++  /* Failed to read a password line. Why?  */
++  if (ret == -1)
++    {
++      /* No entry?  Technically the errno could be any number
++	 of values including ESRCH, EBADP or EPERM depending
++	 on the quality of the nss module that implements the
++	 underlying lookup. It should be 0 for getpw.*/
++      if (errno == 0 && !seen_miss)
++	{
++	  printf ("PASS: Found an invalid uid.\n");
++	  seen_miss = true;
++	  return;
++	}
++
++      /* Out of memory?  */
++      if (errno == ENOMEM && !seen_oom)
++	{
++	  printf ("FAIL: Failed with ENOMEM.\n");
++	  seen_oom = true;
++	  errors++;
++	}
++
++      /* We don't expect any other values for errno.  */
++      if (errno != ENOMEM && errno != 0)
++	errors++;
++    }
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
++  int ret;
+   uid_t uid;
+ 
+-  /* Just call it a different number of times the range should be
+-     large enough to find some existing and some non existing uids.  */
++  /* Should return -1 and set errnot to EINVAL.  */
++  ret = getpw (0, NULL);
++  if (ret == -1 && errno == EINVAL)
++    {
++      printf ("PASS: NULL buffer returns -1 and sets errno to EINVAL.\n");
++    }
++  else
++    {
++      printf ("FAIL: NULL buffer did not return -1 or set errno to EINVAL.\n");
++      errors++;
++    }
++
++  /* Look for one matching uid, one non-found uid and then stop.
++     Set an upper limit at the 16-bit UID mark; no need to go farther.  */
++  for (uid = 0; uid < ((uid_t) 65535); ++uid)
++    {
++      check (uid);
++      if (seen_miss && seen_hit)
++	break;
++    }
+ 
+-  for (uid = 0; uid < 2000; ++uid)
+-    check (uid);
++  if (!seen_hit)
++    printf ("FAIL: Did not read even one password line given a uid.\n");
+ 
+-  return 0;
++  if (!seen_miss)
++    printf ("FAIL: Did not find even one invalid uid.\n");
++
++  return errors;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#include <stdio.h>
+ #include <pwd.h>
++#include <errno.h>
++#include <stdbool.h>
++
++/* We want to test getpw by calling it with a uid that does
++   exist and one that doesn't exist. We track if we've met those
++   conditions and exit. We also track if we've failed due to lack
++   of memory. That constitutes all of the standard failure cases.  */
++bool seen_hit;
++bool seen_miss;
++bool seen_oom;
++
++/* How many errors we've had while running the test.  */
++int errors;
+ 
+ static void
+ check (uid_t uid)
+ {
++  int ret;
+   char buf[1024];
+ 
+-  (void) getpw (uid, buf);
++  ret = getpw (uid, buf);
++
++  /* Successfully read a password line.  */
++  if (ret == 0 && !seen_hit)
++    {
++      printf ("PASS: Read a password line given a uid.\n");
++      seen_hit = true;
++    }
++
++  /* Failed to read a password line. Why?  */
++  if (ret == -1)
++    {
++      /* No entry?  Technically the errno could be any number
++	 of values including ESRCH, EBADP or EPERM depending
++	 on the quality of the nss module that implements the
++	 underlying lookup. It should be 0 for getpw.*/
++      if (errno == 0 && !seen_miss)
++	{
++	  printf ("PASS: Found an invalid uid.\n");
++	  seen_miss = true;
++	  return;
++	}
++
++      /* Out of memory?  */
++      if (errno == ENOMEM && !seen_oom)
++	{
++	  printf ("FAIL: Failed with ENOMEM.\n");
++	  seen_oom = true;
++	  errors++;
++	}
++
++      /* We don't expect any other values for errno.  */
++      if (errno != ENOMEM && errno != 0)
++	errors++;
++    }
+ }
+ 
+ static int
+ do_test (void)
+ {
++  int ret;
+   uid_t uid;
+ 
+-  /* Just call it a different number of times the range should be
+-     large enough to find some existing and some non existing uids.  */
++  /* Should return -1 and set errnot to EINVAL.  */
++  ret = getpw (0, NULL);
++  if (ret == -1 && errno == EINVAL)
++    {
++      printf ("PASS: NULL buffer returns -1 and sets errno to EINVAL.\n");
++    }
++  else
++    {
++      printf ("FAIL: NULL buffer did not return -1 or set errno to EINVAL.\n");
++      errors++;
++    }
++
++  /* Look for one matching uid, one non-found uid and then stop.
++     Set an upper limit at the 16-bit UID mark; no need to go farther.  */
++  for (uid = 0; uid < ((uid_t) 65535); ++uid)
++    {
++      check (uid);
++      if (seen_miss && seen_hit)
++	break;
++    }
++
++  if (!seen_hit)
++    printf ("FAIL: Did not read even one password line given a uid.\n");
+ 
+-  for (uid = 0; uid < 2000; ++uid)
+-    check (uid);
++  if (!seen_miss)
++    printf ("FAIL: Did not find even one invalid uid.\n");
+ 
+-  return 0;
++  return errors;
+ }
+ 
+ #define TEST_FUNCTION do_test ()
diff --git a/SOURCES/glibc-rh1298354.patch b/SOURCES/glibc-rh1298354.patch
new file mode 100644
index 0000000..c6e66f8
--- /dev/null
+++ b/SOURCES/glibc-rh1298354.patch
@@ -0,0 +1,2805 @@
+commit 29955b5d9658b02d3a678d1f785db3d1e63184ca
+Author: Arjun Shankar <arjun.is@lostca.se>
+Date:   Wed Nov 5 15:24:08 2014 +0530
+
+    Modify several tests to use test-skeleton.c
+    
+    This patch modifies several test cases to use test-skeleton.c.
+    It was generated by a bash script written for this purpose and
+    thus excludes several other tests which I deemed worth a visual
+    inspection before making the change.
+    
+    I intend to follow up with individual patches to the tests
+    skipped by the script.
+    
+    The script itself resides at http://git.io/WODAmg and should
+    reproduce this very patch when run against master.
+    
+    ChangeLog:
+    
+    2014-10-30  Arjun Shankar  <arjun.is@lostca.se>
+    
+    	* catgets/test-gencat.c: Use test-skeleton.c.
+    	* catgets/tst-catgets.c: Likewise.
+    	* csu/tst-empty.c: Likewise.
+    	* elf/tst-audit2.c: Likewise.
+    	* elf/tst-global1.c: Likewise.
+    	* elf/tst-pathopt.c: Likewise.
+    	* elf/tst-piemod1.c: Likewise.
+    	* elf/tst-tls10.c: Likewise.
+    	* elf/tst-tls11.c: Likewise.
+    	* elf/tst-tls12.c: Likewise.
+    	* gnulib/tst-gcc.c: Likewise.
+    	* iconvdata/tst-e2big.c: Likewise.
+    	* iconvdata/tst-loading.c: Likewise.
+    	* iconv/tst-iconv1.c: Likewise.
+    	* iconv/tst-iconv2.c: Likewise.
+    	* inet/test-inet6_opt.c: Likewise.
+    	* inet/tst-gethnm.c: Likewise.
+    	* inet/tst-network.c: Likewise.
+    	* inet/tst-ntoa.c: Likewise.
+    	* intl/tst-codeset.c: Likewise.
+    	* intl/tst-gettext2.c: Likewise.
+    	* intl/tst-gettext3.c: Likewise.
+    	* intl/tst-ngettext.c: Likewise.
+    	* intl/tst-translit.c: Likewise.
+    	* io/test-stat.c: Likewise.
+    	* libio/test-fmemopen.c: Likewise.
+    	* libio/tst-freopen.c: Likewise.
+    	* libio/tst-sscanf.c: Likewise.
+    	* libio/tst-ungetwc1.c: Likewise.
+    	* libio/tst-ungetwc2.c: Likewise.
+    	* libio/tst-widetext.c: Likewise.
+    	* localedata/tst-ctype.c: Likewise.
+    	* localedata/tst-digits.c: Likewise.
+    	* localedata/tst-leaks.c: Likewise.
+    	* localedata/tst-mbswcs1.c: Likewise.
+    	* localedata/tst-mbswcs2.c: Likewise.
+    	* localedata/tst-mbswcs3.c: Likewise.
+    	* localedata/tst-mbswcs4.c: Likewise.
+    	* localedata/tst-mbswcs5.c: Likewise.
+    	* localedata/tst-setlocale.c: Likewise.
+    	* localedata/tst-trans.c: Likewise.
+    	* localedata/tst-wctype.c: Likewise.
+    	* localedata/tst-xlocale1.c: Likewise.
+    	* login/tst-grantpt.c: Likewise.
+    	* malloc/tst-calloc.c: Likewise.
+    	* malloc/tst-malloc.c: Likewise.
+    	* malloc/tst-mallocstate.c: Likewise.
+    	* malloc/tst-mcheck.c: Likewise.
+    	* malloc/tst-mtrace.c: Likewise.
+    	* malloc/tst-obstack.c: Likewise.
+    	* math/atest-exp2.c: Likewise.
+    	* math/atest-exp.c: Likewise.
+    	* math/atest-sincos.c: Likewise.
+    	* math/test-matherr.c: Likewise.
+    	* math/test-misc.c: Likewise.
+    	* math/test-powl.c: Likewise.
+    	* math/tst-definitions.c: Likewise.
+    	* misc/tst-dirname.c: Likewise.
+    	* misc/tst-efgcvt.c: Likewise.
+    	* misc/tst-fdset.c: Likewise.
+    	* misc/tst-hsearch.c: Likewise.
+    	* misc/tst-mntent2.c: Likewise.
+    	* nptl/tst-sem7.c: Likewise.
+    	* nptl/tst-sem8.c: Likewise.
+    	* nptl/tst-sem9.c: Likewise.
+    	* nss/test-netdb.c: Likewise.
+    	* posix/tst-fnmatch.c: Likewise.
+    	* posix/tst-getlogin.c: Likewise.
+    	* posix/tst-gnuglob.c: Likewise.
+    	* posix/tst-mmap.c: Likewise.
+    	* resolv/tst-inet_ntop.c: Likewise.
+    	* rt/tst-timer.c: Likewise.
+    	* stdio-common/test-fseek.c: Likewise.
+    	* stdio-common/test-popen.c: Likewise.
+    	* stdio-common/test-vfprintf.c: Likewise.
+    	* stdio-common/tst-cookie.c: Likewise.
+    	* stdio-common/tst-fileno.c: Likewise.
+    	* stdio-common/tst-gets.c: Likewise.
+    	* stdio-common/tst-obprintf.c: Likewise.
+    	* stdio-common/tst-perror.c: Likewise.
+    	* stdio-common/tst-sprintf2.c: Likewise.
+    	* stdio-common/tst-sprintf3.c: Likewise.
+    	* stdio-common/tst-sprintf.c: Likewise.
+    	* stdio-common/tst-swprintf.c: Likewise.
+    	* stdio-common/tst-tmpnam.c: Likewise.
+    	* stdio-common/tst-unbputc.c: Likewise.
+    	* stdio-common/tst-wc-printf.c: Likewise.
+    	* stdlib/tst-environ.c: Likewise.
+    	* stdlib/tst-fmtmsg.c: Likewise.
+    	* stdlib/tst-limits.c: Likewise.
+    	* stdlib/tst-rand48-2.c: Likewise.
+    	* stdlib/tst-rand48.c: Likewise.
+    	* stdlib/tst-random2.c: Likewise.
+    	* stdlib/tst-random.c: Likewise.
+    	* stdlib/tst-strtol.c: Likewise.
+    	* stdlib/tst-strtoll.c: Likewise.
+    	* stdlib/tst-xpg-basename.c: Likewise.
+    	* string/test-ffs.c: Likewise.
+    	* string/tst-bswap.c: Likewise.
+    	* string/tst-inlcall.c: Likewise.
+    	* string/tst-strtok.c: Likewise.
+    	* string/tst-strxfrm.c: Likewise.
+    	* sysdeps/x86_64/tst-audit10.c: Likewise.
+    	* elf/tst-audit3.c: Likewise.
+    	* elf/tst-audit4.c: Likewise.
+    	* elf/tst-audit5.c: Likewise.
+    	* time/tst-ftime_l.c: Likewise.
+    	* time/tst-getdate.c: Likewise.
+    	* time/tst-mktime3.c: Likewise.
+    	* time/tst-mktime.c: Likewise.
+    	* time/tst-posixtz.c: Likewise.
+    	* time/tst-strptime2.c: Likewise.
+    	* time/tst-strptime3.c: Likewise.
+    	* wcsmbs/tst-btowc.c: Likewise.
+    	* wcsmbs/tst-mbrtowc.c: Likewise.
+    	* wcsmbs/tst-mbsrtowcs.c: Likewise.
+    	* wcsmbs/tst-wchar-h.c: Likewise.
+    	* wcsmbs/tst-wcpncpy.c: Likewise.
+    	* wcsmbs/tst-wcrtomb.c: Likewise.
+    	* wcsmbs/tst-wcsnlen.c: Likewise.
+    	* wcsmbs/tst-wcstof.c: Likewise.
+
+diff --git a/catgets/test-gencat.c b/catgets/test-gencat.c
+index eaa9b89..282974c 100644
+--- a/catgets/test-gencat.c
++++ b/catgets/test-gencat.c
+@@ -3,8 +3,8 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   nl_catd catalog;
+   setlocale (LC_ALL, "");
+@@ -29,3 +29,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/catgets/tst-catgets.c b/catgets/tst-catgets.c
+index fdaa834..a0a4089 100644
+--- a/catgets/tst-catgets.c
++++ b/catgets/tst-catgets.c
+@@ -14,8 +14,8 @@ static const char *msgs[] =
+ 
+ #define ROUNDS 5
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int rnd;
+   int result = 0;
+@@ -64,3 +64,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/csu/tst-empty.c b/csu/tst-empty.c
+index 980dcd6..e99468e 100644
+--- a/csu/tst-empty.c
++++ b/csu/tst-empty.c
+@@ -1,6 +1,9 @@
+ /* The most useful C program known to man.  */
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/elf/tst-audit2.c b/elf/tst-audit2.c
+index b4fa906..acad1b0 100644
+--- a/elf/tst-audit2.c
++++ b/elf/tst-audit2.c
+@@ -31,8 +31,8 @@ calloc (size_t n, size_t m)
+   return ptr;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   if (magic[1] != MAGIC1 || magic[0] != MAGIC2)
+     {
+@@ -42,3 +42,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/elf/tst-global1.c b/elf/tst-global1.c
+index 1611b51..4df335c 100644
+--- a/elf/tst-global1.c
++++ b/elf/tst-global1.c
+@@ -1,8 +1,8 @@
+ #include <dlfcn.h>
+ #include <stdio.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   void *h1 = dlopen ("$ORIGIN/testobj6.so", RTLD_GLOBAL|RTLD_LAZY);
+   if (h1 == NULL)
+@@ -34,3 +34,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/elf/tst-pathopt.c b/elf/tst-pathopt.c
+index 1f7aac2..8d73ad4 100644
+--- a/elf/tst-pathopt.c
++++ b/elf/tst-pathopt.c
+@@ -4,8 +4,8 @@
+ #include <stdlib.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   void *h;
+   int (*fp) (int);
+@@ -37,3 +37,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/elf/tst-piemod1.c b/elf/tst-piemod1.c
+index ad439da..6e98b5f 100644
+--- a/elf/tst-piemod1.c
++++ b/elf/tst-piemod1.c
+@@ -6,8 +6,8 @@ foo (void)
+   return 21;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int val = foo ();
+   if (val != 34)
+@@ -18,3 +18,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/elf/tst-tls10.c b/elf/tst-tls10.c
+index 347243f..eb1ecb9 100644
+--- a/elf/tst-tls10.c
++++ b/elf/tst-tls10.c
+@@ -8,8 +8,8 @@ __thread struct A local = { 1, 2, 3 };
+   if (p->a != S || p->b != S + 1 || p->c != S + 2)	\
+     abort ()
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   struct A *p;
+   if (local.a != 1 || local.b != 2 || local.c != 3)
+@@ -35,3 +35,6 @@ main (void)
+ 
+   exit (0);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/elf/tst-tls11.c b/elf/tst-tls11.c
+index 8a2fef4..8ceac14 100644
+--- a/elf/tst-tls11.c
++++ b/elf/tst-tls11.c
+@@ -5,8 +5,8 @@
+   if (p->a != S || p->b != S + 1 || p->c != S + 2)	\
+     abort ()
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   struct A *p;
+   check1 ();
+@@ -24,3 +24,6 @@ main (void)
+ 
+   exit (0);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/elf/tst-tls12.c b/elf/tst-tls12.c
+index 9086d17..8093894 100644
+--- a/elf/tst-tls12.c
++++ b/elf/tst-tls12.c
+@@ -5,8 +5,8 @@
+   if (p->a != S || p->b != S + 1 || p->c != S + 2)	\
+     abort ()
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   struct A *p;
+   check1 ();
+@@ -15,3 +15,6 @@ main (void)
+ 
+   exit (0);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/gnulib/tst-gcc.c b/gnulib/tst-gcc.c
+index 71fab28..9f4ba83 100644
+--- a/gnulib/tst-gcc.c
++++ b/gnulib/tst-gcc.c
+@@ -51,8 +51,8 @@
+   })
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   int __integer_type;
+@@ -71,3 +71,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/iconv/tst-iconv1.c b/iconv/tst-iconv1.c
+index d806ce6..0609f50 100644
+--- a/iconv/tst-iconv1.c
++++ b/iconv/tst-iconv1.c
+@@ -5,8 +5,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char utf8[5];
+   wchar_t ucs4[5];
+@@ -42,3 +42,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/iconv/tst-iconv2.c b/iconv/tst-iconv2.c
+index 5036ad1..0672a51 100644
+--- a/iconv/tst-iconv2.c
++++ b/iconv/tst-iconv2.c
+@@ -25,8 +25,8 @@
+ #include <string.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char buf[3];
+   const wchar_t wc[1] = L"a";
+@@ -97,3 +97,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/iconvdata/tst-e2big.c b/iconvdata/tst-e2big.c
+index 9533eb0..8de64b2 100644
+--- a/iconvdata/tst-e2big.c
++++ b/iconvdata/tst-e2big.c
+@@ -95,10 +95,13 @@ test_tscii (void)
+   test ("TSCII", inbuf, sizeof (inbuf), 9);
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   test_euc_jisx0213 ();
+   test_tscii ();
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/iconvdata/tst-loading.c b/iconvdata/tst-loading.c
+index 0d8a959..eff9d78 100644
+--- a/iconvdata/tst-loading.c
++++ b/iconvdata/tst-loading.c
+@@ -114,8 +114,8 @@ static const char inbuf[] =
+ "     function.  Later modifications of the variable have no effect.\n";
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   size_t count = TEST_ROUNDS;
+   int result = 0;
+@@ -180,3 +180,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/inet/test-inet6_opt.c b/inet/test-inet6_opt.c
+index 3bf319e..a7ebf00 100644
+--- a/inet/test-inet6_opt.c
++++ b/inet/test-inet6_opt.c
+@@ -194,8 +194,8 @@ decode_inet6_opt (void *eb, socklen_t el)
+   return ret;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   void *eb;
+   socklen_t el;
+@@ -206,3 +206,6 @@ main (void)
+     return 1;
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/inet/tst-gethnm.c b/inet/tst-gethnm.c
+index 8af44d6..dd3a547 100644
+--- a/inet/tst-gethnm.c
++++ b/inet/tst-gethnm.c
+@@ -10,8 +10,8 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   struct hostent *ent;
+   struct in_addr hostaddr;
+@@ -62,3 +62,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/inet/tst-network.c b/inet/tst-network.c
+index fc90bd7..cc840e0 100644
+--- a/inet/tst-network.c
++++ b/inet/tst-network.c
+@@ -51,8 +51,8 @@ struct
+ };
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int errors = 0;
+   size_t i;
+@@ -76,3 +76,6 @@ main (void)
+ 
+   return errors != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/inet/tst-ntoa.c b/inet/tst-ntoa.c
+index 9be91eb..ef82d4d 100644
+--- a/inet/tst-ntoa.c
++++ b/inet/tst-ntoa.c
+@@ -22,8 +22,8 @@ test (unsigned int inaddr, const char *expected)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -34,3 +34,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/intl/tst-codeset.c b/intl/tst-codeset.c
+index f5b37ec..37f731e 100644
+--- a/intl/tst-codeset.c
++++ b/intl/tst-codeset.c
+@@ -23,8 +23,8 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char *s;
+   int result = 0;
+@@ -55,3 +55,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/intl/tst-gettext2.c b/intl/tst-gettext2.c
+index 075680a..3c44165 100644
+--- a/intl/tst-gettext2.c
++++ b/intl/tst-gettext2.c
+@@ -40,8 +40,8 @@ struct data_t strings[] =
+ const int lang_cnt = 3;
+ const char *lang[] = {"lang1", "lang2", "lang3"};
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int i;
+ 
+@@ -70,3 +70,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/intl/tst-gettext3.c b/intl/tst-gettext3.c
+index dd88987..11e9b08 100644
+--- a/intl/tst-gettext3.c
++++ b/intl/tst-gettext3.c
+@@ -24,8 +24,8 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char *s;
+   int result = 0;
+@@ -57,3 +57,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/intl/tst-ngettext.c b/intl/tst-ngettext.c
+index 4fb0ca2..71e91b9 100644
+--- a/intl/tst-ngettext.c
++++ b/intl/tst-ngettext.c
+@@ -25,8 +25,8 @@
+ #include <string.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   const char *strs[2] = { "singular", "plural" };
+   unsigned long int i;
+@@ -63,3 +63,6 @@ main (void)
+ 
+   return res;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/intl/tst-translit.c b/intl/tst-translit.c
+index 1aecee7..299fa40 100644
+--- a/intl/tst-translit.c
++++ b/intl/tst-translit.c
+@@ -24,8 +24,8 @@
+ #include <string.h>
+ #include <unistd.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   const char *s;
+@@ -49,3 +49,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/io/test-stat.c b/io/test-stat.c
+index c5cfd26..e9c8468 100644
+--- a/io/test-stat.c
++++ b/io/test-stat.c
+@@ -25,8 +25,8 @@
+ #include <stddef.h>
+ #include <sys/stat.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   /* With _FILE_OFFSET_BITS=64 struct stat and struct stat64 should
+      be identical.  */
+@@ -65,3 +65,6 @@ main (void)
+ #endif
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/libio/test-fmemopen.c b/libio/test-fmemopen.c
+index 3099894..211176e 100644
+--- a/libio/test-fmemopen.c
++++ b/libio/test-fmemopen.c
+@@ -22,8 +22,8 @@ static char buffer[] = "foobar";
+ #include <stdio.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int ch;
+   FILE *stream;
+@@ -37,3 +37,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/libio/tst-freopen.c b/libio/tst-freopen.c
+index f9e7177..94284ec 100644
+--- a/libio/tst-freopen.c
++++ b/libio/tst-freopen.c
+@@ -22,8 +22,8 @@
+ #include <string.h>
+ #include <unistd.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char name[] = "/tmp/tst-freopen.XXXXXX";
+   const char * const test = "Let's test freopen.\n";
+@@ -100,3 +100,6 @@ main (void)
+   unlink (name);
+   exit (0);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/libio/tst-sscanf.c b/libio/tst-sscanf.c
+index b1a2b84..fb4be34 100644
+--- a/libio/tst-sscanf.c
++++ b/libio/tst-sscanf.c
+@@ -3,8 +3,8 @@
+ 
+ #define WCS_LENGTH 256
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   const char cnv[] ="%l[abc]";
+   const char str[] = "abbcXab";
+@@ -18,3 +18,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/libio/tst-ungetwc1.c b/libio/tst-ungetwc1.c
+index f74c407..f71b390 100644
+--- a/libio/tst-ungetwc1.c
++++ b/libio/tst-ungetwc1.c
+@@ -7,8 +7,8 @@
+ #include <unistd.h>
+ #include <wchar.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   FILE *fp;
+   const char *str = "abcdef";
+@@ -79,3 +79,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/libio/tst-ungetwc2.c b/libio/tst-ungetwc2.c
+index d15e287..a7c5193 100644
+--- a/libio/tst-ungetwc2.c
++++ b/libio/tst-ungetwc2.c
+@@ -7,8 +7,8 @@
+ #include <unistd.h>
+ #include <wchar.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   FILE *fp;
+   const char *str = "abcdef";
+@@ -79,3 +79,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/libio/tst-widetext.c b/libio/tst-widetext.c
+index 179763e..acab72b 100644
+--- a/libio/tst-widetext.c
++++ b/libio/tst-widetext.c
+@@ -31,8 +31,8 @@
+ #define SIZE 210000
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char name[] = "/tmp/widetext.out.XXXXXX";
+   char mbbuf[SIZE];
+@@ -367,3 +367,6 @@ main (void)
+ 
+   return status;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-ctype.c b/localedata/tst-ctype.c
+index ceda891..a4e8fcf 100644
+--- a/localedata/tst-ctype.c
++++ b/localedata/tst-ctype.c
+@@ -61,8 +61,8 @@ static struct classes
+   }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   const char *cp;
+   const char *cp2;
+@@ -447,3 +447,6 @@ punct = %04x  alnum = %04x\n",
+   printf ("  No errors for `%s' locale\n\n\n", setlocale (LC_ALL, NULL));
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-digits.c b/localedata/tst-digits.c
+index 9b3ebcd..76356e9 100644
+--- a/localedata/tst-digits.c
++++ b/localedata/tst-digits.c
+@@ -111,8 +111,8 @@ static struct wprintf_int_test
+   (sizeof (wprintf_int_tests) / sizeof (wprintf_int_tests[0]))
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int cnt;
+   int failures;
+@@ -246,3 +246,6 @@ main (void)
+ 
+   return status;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-leaks.c b/localedata/tst-leaks.c
+index 7a4b557..ccd44f2 100644
+--- a/localedata/tst-leaks.c
++++ b/localedata/tst-leaks.c
+@@ -1,8 +1,8 @@
+ #include <locale.h>
+ #include <mcheck.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int cnt;
+ 
+@@ -16,3 +16,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-mbswcs1.c b/localedata/tst-mbswcs1.c
+index 14f1372..1404829 100644
+--- a/localedata/tst-mbswcs1.c
++++ b/localedata/tst-mbswcs1.c
+@@ -33,8 +33,8 @@
+     }									  \
+   putc ('\n', stdout)
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   const unsigned char buf[6] = { 0x25,  0xe2, 0x82, 0xac,  0xce, 0xbb };
+   mbstate_t state;
+@@ -60,3 +60,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-mbswcs2.c b/localedata/tst-mbswcs2.c
+index 25fa951..9cd95d6 100644
+--- a/localedata/tst-mbswcs2.c
++++ b/localedata/tst-mbswcs2.c
+@@ -35,8 +35,8 @@
+     }									\
+   putc ('\n', stdout)
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   unsigned char buf[6] = { 0x25,  0xe2, 0x82, 0xac,  0xce, 0xbb };
+   mbstate_t state;
+@@ -62,3 +62,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-mbswcs3.c b/localedata/tst-mbswcs3.c
+index 8db65c5..a068541 100644
+--- a/localedata/tst-mbswcs3.c
++++ b/localedata/tst-mbswcs3.c
+@@ -38,8 +38,8 @@
+     putc ('\n', stdout);						\
+   }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   unsigned char buf[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+   const unsigned char bufcheck[6] = { 0x25, 0xe2, 0x82, 0xac, 0xce, 0xbb };
+@@ -73,3 +73,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-mbswcs4.c b/localedata/tst-mbswcs4.c
+index 09b7417..a4fe60d 100644
+--- a/localedata/tst-mbswcs4.c
++++ b/localedata/tst-mbswcs4.c
+@@ -34,8 +34,8 @@
+     }									\
+   putc ('\n', stdout)
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   unsigned char buf[6] = { 0x25,  0xe2, 0x82, 0xac,  0xce, 0xbb };
+   mbstate_t state;
+@@ -60,3 +60,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-mbswcs5.c b/localedata/tst-mbswcs5.c
+index e18862c..c44f12a 100644
+--- a/localedata/tst-mbswcs5.c
++++ b/localedata/tst-mbswcs5.c
+@@ -37,8 +37,8 @@
+     putc ('\n', stdout);						\
+   }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   unsigned char buf[7] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+   const unsigned char bufcheck[7] = { 0x25, 0xe2, 0x82, 0xac, 0xce, 0xbb, 0 };
+@@ -72,3 +72,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-setlocale.c b/localedata/tst-setlocale.c
+index 1f8e68d..a09a4de 100644
+--- a/localedata/tst-setlocale.c
++++ b/localedata/tst-setlocale.c
+@@ -3,8 +3,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char q[30];
+   char *s;
+@@ -23,3 +23,6 @@ main (void)
+ 
+   return strcmp (s, "de_DE.UTF-8") != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-trans.c b/localedata/tst-trans.c
+index 5e09631..0b0be83 100644
+--- a/localedata/tst-trans.c
++++ b/localedata/tst-trans.c
+@@ -24,8 +24,8 @@
+ #include <wchar.h>
+ #include <wctype.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char buf[30];
+   wchar_t wbuf[30];
+@@ -68,3 +68,6 @@ main (void)
+ 
+   return errors;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-wctype.c b/localedata/tst-wctype.c
+index bd2b057..eb72030 100644
+--- a/localedata/tst-wctype.c
++++ b/localedata/tst-wctype.c
+@@ -24,8 +24,8 @@
+ #include <wchar.h>
+ #include <wctype.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   wctype_t wct;
+   wchar_t buf[1000];
+@@ -141,3 +141,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/localedata/tst-xlocale1.c b/localedata/tst-xlocale1.c
+index 297c9ad..9f545a0 100644
+--- a/localedata/tst-xlocale1.c
++++ b/localedata/tst-xlocale1.c
+@@ -20,8 +20,8 @@ static struct
+ #define ntests (sizeof (tests) / sizeof (tests[0]))
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   size_t cnt;
+   int result = 0;
+@@ -73,3 +73,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/login/tst-grantpt.c b/login/tst-grantpt.c
+index 5078dac..65bb344 100644
+--- a/login/tst-grantpt.c
++++ b/login/tst-grantpt.c
+@@ -66,8 +66,8 @@ test_einval (void)
+   return ret;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -76,3 +76,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/malloc/tst-calloc.c b/malloc/tst-calloc.c
+index 51e6c25..7ad5124 100644
+--- a/malloc/tst-calloc.c
++++ b/malloc/tst-calloc.c
+@@ -104,8 +104,8 @@ null_test (void)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   /* We are allocating blocks with `calloc' and check whether every
+      block is completely cleared.  We first try this for some fixed
+@@ -123,3 +123,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/malloc/tst-malloc.c b/malloc/tst-malloc.c
+index a75ab1e..2685315 100644
+--- a/malloc/tst-malloc.c
++++ b/malloc/tst-malloc.c
+@@ -29,8 +29,8 @@ merror (const char *msg)
+   printf ("Error: %s\n", msg);
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   void *p, *q;
+   int save;
+@@ -75,3 +75,6 @@ main (void)
+ 
+   return errors != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/malloc/tst-mallocstate.c b/malloc/tst-mallocstate.c
+index 69c4500..539539e 100644
+--- a/malloc/tst-mallocstate.c
++++ b/malloc/tst-mallocstate.c
+@@ -29,8 +29,8 @@ merror (const char *msg)
+   printf ("Error: %s\n", msg);
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   void *p1, *p2;
+   void *save_state;
+@@ -79,3 +79,6 @@ main (void)
+  * c-basic-offset: 2
+  * End:
+  */
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/malloc/tst-mcheck.c b/malloc/tst-mcheck.c
+index 478ca8c..bd9ab0e 100644
+--- a/malloc/tst-mcheck.c
++++ b/malloc/tst-mcheck.c
+@@ -29,8 +29,8 @@ merror (const char *msg)
+   printf ("Error: %s\n", msg);
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   void *p, *q;
+ 
+@@ -88,3 +88,6 @@ main (void)
+ 
+   return errors != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/malloc/tst-mtrace.c b/malloc/tst-mtrace.c
+index 9b5151c..b2c0c2c 100644
+--- a/malloc/tst-mtrace.c
++++ b/malloc/tst-mtrace.c
+@@ -30,8 +30,8 @@ static void print (const void *node, VISIT value, int level);
+ static FILE *fp;
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   void *root = NULL;
+   size_t linelen = 0;
+@@ -100,3 +100,6 @@ print (const void *node, VISIT value, int level)
+   if (value == postorder || value == leaf)
+     fprintf (fp, "%3d: %s", ++cnt, *(const char **) node);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/malloc/tst-obstack.c b/malloc/tst-obstack.c
+index 769697f..ee1385d 100644
+--- a/malloc/tst-obstack.c
++++ b/malloc/tst-obstack.c
+@@ -25,8 +25,8 @@ verbose_free (void *buf)
+   printf ("free (%p)\n", buf);
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   int align = 2;
+@@ -62,3 +62,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/math/atest-exp.c b/math/atest-exp.c
+index 3a538b2..6a551de 100644
+--- a/math/atest-exp.c
++++ b/math/atest-exp.c
+@@ -102,8 +102,8 @@ mpn_bitsize(const mp_limb_t *SRC_PTR, mp_size_t SIZE)
+    return i * mpbpl + j;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+    mp1 ex, x, xt, e2, e3;
+    int i;
+@@ -190,3 +190,6 @@ main (void)
+ 
+    return failures == 0 ? 0 : 1;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/math/atest-exp2.c b/math/atest-exp2.c
+index 3442715..945bb7a 100644
+--- a/math/atest-exp2.c
++++ b/math/atest-exp2.c
+@@ -144,8 +144,8 @@ mpn_bitsize(const mp_limb_t *SRC_PTR, mp_size_t SIZE)
+   return i * mpbpl + j;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   mp1 ex, x, xt, e2, e3;
+   int i;
+@@ -227,3 +227,6 @@ main (void)
+ 
+   return failures == 0 ? 0 : 1;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/math/atest-sincos.c b/math/atest-sincos.c
+index 5ad59b2..1f5e730 100644
+--- a/math/atest-sincos.c
++++ b/math/atest-sincos.c
+@@ -141,8 +141,8 @@ mpn_bitsize (const mp_limb_t *SRC_PTR, mp_size_t SIZE)
+    return i * mpbpl + j;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   mp1 si, co, x, ox, xt, s2, c2, s3, c3;
+   int i;
+@@ -277,3 +277,6 @@ main (void)
+ 
+    return (sin_failures == 0 && cos_failures == 0) ? 0 : 1;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/math/test-matherr.c b/math/test-matherr.c
+index cd09a39..6983879 100644
+--- a/math/test-matherr.c
++++ b/math/test-matherr.c
+@@ -12,10 +12,13 @@ matherr (struct exception *s)
+   return 1;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   _LIB_VERSION = _SVID_;
+   acos (2.0);
+   return fail;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/math/test-misc.c b/math/test-misc.c
+index 3fd2bca..4801bfe 100644
+--- a/math/test-misc.c
++++ b/math/test-misc.c
+@@ -25,8 +25,8 @@
+ #include <string.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -1201,3 +1201,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/math/test-powl.c b/math/test-powl.c
+index fd2a1cb..66ef886 100644
+--- a/math/test-powl.c
++++ b/math/test-powl.c
+@@ -21,8 +21,8 @@
+ #include <float.h>
+ #include <ieee754.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -48,3 +48,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/math/tst-definitions.c b/math/tst-definitions.c
+index 2501c8c..76a4125 100644
+--- a/math/tst-definitions.c
++++ b/math/tst-definitions.c
+@@ -21,8 +21,8 @@
+ #include <stdio.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -44,3 +44,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/misc/tst-dirname.c b/misc/tst-dirname.c
+index d8f33df..d6c05ad 100644
+--- a/misc/tst-dirname.c
++++ b/misc/tst-dirname.c
+@@ -37,8 +37,8 @@ test (const char *input, const char *result)
+   return retval;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -67,3 +67,6 @@ main (void)
+ 
+   return result != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/misc/tst-efgcvt.c b/misc/tst-efgcvt.c
+index 303042d..11427a0 100644
+--- a/misc/tst-efgcvt.c
++++ b/misc/tst-efgcvt.c
+@@ -200,8 +200,8 @@ special (void)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   test (ecvt_tests, ecvt, "ecvt");
+   test (fcvt_tests, fcvt, "fcvt");
+@@ -211,3 +211,6 @@ main (void)
+ 
+   return error_count;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/misc/tst-fdset.c b/misc/tst-fdset.c
+index 78a34e9..ef93ac3 100644
+--- a/misc/tst-fdset.c
++++ b/misc/tst-fdset.c
+@@ -20,8 +20,8 @@
+ #include <stdio.h>
+ #include <sys/types.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int retval = 0;
+   int i;
+@@ -62,3 +62,6 @@ main (void)
+ 
+   return retval;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/misc/tst-hsearch.c b/misc/tst-hsearch.c
+index 6c19b22..d390f1d 100644
+--- a/misc/tst-hsearch.c
++++ b/misc/tst-hsearch.c
+@@ -1,8 +1,8 @@
+ #include <search.h>
+ #include <stdio.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int a = 1;
+   int b = 2;
+@@ -29,3 +29,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/misc/tst-mntent2.c b/misc/tst-mntent2.c
+index 6c25e01..e61d506 100644
+--- a/misc/tst-mntent2.c
++++ b/misc/tst-mntent2.c
+@@ -3,8 +3,8 @@
+ #include <string.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   struct mntent mef;
+@@ -39,3 +39,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/nptl/tst-sem7.c b/nptl/tst-sem7.c
+index d0e7f05..4fc5f1f 100644
+--- a/nptl/tst-sem7.c
++++ b/nptl/tst-sem7.c
+@@ -31,8 +31,8 @@ remove_sem (int status, void *arg)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   sem_t *s;
+   sem_t *s2;
+@@ -106,3 +106,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/nptl/tst-sem8.c b/nptl/tst-sem8.c
+index 1aeb1e1..4d7197c 100644
+--- a/nptl/tst-sem8.c
++++ b/nptl/tst-sem8.c
+@@ -31,8 +31,8 @@ remove_sem (int status, void *arg)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   sem_t *s;
+   int i;
+@@ -71,3 +71,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/nptl/tst-sem9.c b/nptl/tst-sem9.c
+index 9727486..b7d81a9 100644
+--- a/nptl/tst-sem9.c
++++ b/nptl/tst-sem9.c
+@@ -31,8 +31,8 @@ remove_sem (int status, void *arg)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   sem_t *s;
+   int i;
+@@ -78,3 +78,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/nss/test-netdb.c b/nss/test-netdb.c
+index 1620b5b..384f32b 100644
+--- a/nss/test-netdb.c
++++ b/nss/test-netdb.c
+@@ -356,8 +356,8 @@ setdb (const char *dbname)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   /*
+     setdb ("db");
+@@ -376,3 +376,6 @@ main (void)
+ 
+   return (error_count != 0);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/posix/tst-fnmatch.c b/posix/tst-fnmatch.c
+index ff2674c..021734d 100644
+--- a/posix/tst-fnmatch.c
++++ b/posix/tst-fnmatch.c
+@@ -33,8 +33,8 @@ static char *flag_output (int flags);
+ static char *escape (const char *str, size_t *reslenp, char **resbuf);
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char *linebuf = NULL;
+   size_t linebuflen = 0;
+@@ -388,3 +388,6 @@ escape (const char *str, size_t *reslenp, char **resbufp)
+ 
+   return resbuf;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/posix/tst-getlogin.c b/posix/tst-getlogin.c
+index 1393c3a..141a699 100644
+--- a/posix/tst-getlogin.c
++++ b/posix/tst-getlogin.c
+@@ -19,8 +19,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char *login;
+   int errors = 0;
+@@ -55,3 +55,6 @@ main (void)
+ 
+   return errors != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/posix/tst-gnuglob.c b/posix/tst-gnuglob.c
+index 1c72357..39b5b24 100644
+--- a/posix/tst-gnuglob.c
++++ b/posix/tst-gnuglob.c
+@@ -379,8 +379,8 @@ test_result (const char *fmt, int flags, glob_t *gl, const char *str[])
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   glob_t gl;
+   int errval;
+@@ -497,3 +497,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/posix/tst-mmap.c b/posix/tst-mmap.c
+index c03acf5..5e52b49 100644
+--- a/posix/tst-mmap.c
++++ b/posix/tst-mmap.c
+@@ -6,8 +6,8 @@
+ #include <sys/mman.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   FILE *fp;
+@@ -195,3 +195,6 @@ main (void)
+   /* That's it.  */
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/resolv/tst-inet_ntop.c b/resolv/tst-inet_ntop.c
+index f968ec4..f0de063 100644
+--- a/resolv/tst-inet_ntop.c
++++ b/resolv/tst-inet_ntop.c
+@@ -4,8 +4,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   struct in_addr addr4;
+   struct in6_addr addr6;
+@@ -109,3 +109,6 @@ main (void)
+   
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/rt/tst-timer.c b/rt/tst-timer.c
+index f35d3e7..87f6491 100644
+--- a/rt/tst-timer.c
++++ b/rt/tst-timer.c
+@@ -20,8 +20,8 @@
+ 
+ /* This file is only used if there is no other implementation and it should
+    means that there is no implementation of POSIX timers.  */
+-int
+-main (void)
++static int
++do_test (void)
+ {
+ #ifdef _POSIX_TIMERS
+   /* There should be a test.  */
+@@ -30,3 +30,6 @@ main (void)
+   return 0;
+ #endif
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/test-fseek.c b/stdio-common/test-fseek.c
+index fe57df6..8a7f1ae 100644
+--- a/stdio-common/test-fseek.c
++++ b/stdio-common/test-fseek.c
+@@ -19,8 +19,8 @@
+ 
+ #define TESTFILE "/tmp/test.dat"
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   FILE *fp;
+   int i, j;
+@@ -82,3 +82,6 @@ main (void)
+   puts ((i > 255) ? "Test succeeded." : "Test FAILED!");
+   return (i > 255) ? 0 : 1;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/test-popen.c b/stdio-common/test-popen.c
+index d36cd61..1f1c88a 100644
+--- a/stdio-common/test-popen.c
++++ b/stdio-common/test-popen.c
+@@ -49,8 +49,8 @@ read_data (FILE *stream)
+     }
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   FILE *output, *input;
+   int wstatus, rstatus;
+@@ -100,3 +100,6 @@ main (void)
+   puts (wstatus | rstatus  ? "Test FAILED!" : "Test succeeded.");
+   return (wstatus | rstatus);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/test-vfprintf.c b/stdio-common/test-vfprintf.c
+index a936c28..9cc56d7 100644
+--- a/stdio-common/test-vfprintf.c
++++ b/stdio-common/test-vfprintf.c
+@@ -36,8 +36,8 @@ const char *locs[] =
+ 
+ char large[50000];
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char buf[25];
+   size_t i;
+@@ -124,3 +124,6 @@ main (void)
+ 
+   return res;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-cookie.c b/stdio-common/tst-cookie.c
+index dcdabf3..030e684 100644
+--- a/stdio-common/tst-cookie.c
++++ b/stdio-common/tst-cookie.c
+@@ -63,8 +63,8 @@ cookieclose (void *cookie)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   cookie_io_functions_t fcts;
+   char buf[1];
+@@ -90,3 +90,6 @@ main (void)
+ 
+   return errors != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-fileno.c b/stdio-common/tst-fileno.c
+index a0c8853..753df9f 100644
+--- a/stdio-common/tst-fileno.c
++++ b/stdio-common/tst-fileno.c
+@@ -28,10 +28,13 @@ check (const char *name, FILE *stream, int fd)
+   return sfd != fd;
+ }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   return (check ("stdin", stdin, STDIN_FILENO) ||
+ 	  check ("stdout", stdout, STDOUT_FILENO) ||
+ 	  check ("stderr", stderr, STDERR_FILENO));
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-gets.c b/stdio-common/tst-gets.c
+index 7f78fc1..052f1f9 100644
+--- a/stdio-common/tst-gets.c
++++ b/stdio-common/tst-gets.c
+@@ -21,8 +21,8 @@
+ #include <string.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char buf[100];
+   int result = 0;
+@@ -61,3 +61,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-obprintf.c b/stdio-common/tst-obprintf.c
+index 39e8fda..5151593 100644
+--- a/stdio-common/tst-obprintf.c
++++ b/stdio-common/tst-obprintf.c
+@@ -4,8 +4,8 @@
+ #include <stdlib.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   struct obstack ob;
+   int n;
+@@ -40,3 +40,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-perror.c b/stdio-common/tst-perror.c
+index b809c2f..416b120 100644
+--- a/stdio-common/tst-perror.c
++++ b/stdio-common/tst-perror.c
+@@ -24,8 +24,8 @@
+ #define WC_EXP_LEN (sizeof (WC_EXP) - 1)
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int fd;
+   char fname[] = "/tmp/tst-perror.XXXXXX";
+@@ -152,3 +152,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-sprintf.c b/stdio-common/tst-sprintf.c
+index c4e911f..2fe373f 100644
+--- a/stdio-common/tst-sprintf.c
++++ b/stdio-common/tst-sprintf.c
+@@ -4,8 +4,8 @@
+ #include <string.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char buf[100];
+   int result = 0;
+@@ -73,3 +73,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-sprintf2.c b/stdio-common/tst-sprintf2.c
+index 422278d..0ddf15b 100644
+--- a/stdio-common/tst-sprintf2.c
++++ b/stdio-common/tst-sprintf2.c
+@@ -3,8 +3,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+ #if LDBL_MANT_DIG >= 106
+   volatile union { long double l; long long x[2]; } u, v;
+@@ -82,3 +82,6 @@ main (void)
+ #endif
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-sprintf3.c b/stdio-common/tst-sprintf3.c
+index e54b23b..e927761 100644
+--- a/stdio-common/tst-sprintf3.c
++++ b/stdio-common/tst-sprintf3.c
+@@ -22,8 +22,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+ #if LDBL_MANT_DIG >= 106
+   volatile union { long double l; long long x[2]; } u, v;
+@@ -88,3 +88,6 @@ main (void)
+ #endif
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-swprintf.c b/stdio-common/tst-swprintf.c
+index e65234b..ce62c6b 100644
+--- a/stdio-common/tst-swprintf.c
++++ b/stdio-common/tst-swprintf.c
+@@ -12,8 +12,8 @@
+ 
+ const char input[] = "\x8e\xa1g\x8e\xa2h\x8e\xa3i\x8e\xa4j";
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   wchar_t buf[1000];
+ #define nbuf (sizeof (buf) / sizeof (buf[0]))
+@@ -54,3 +54,6 @@ swprintf (.., .., L\"%ls\", \"%ls\") produced \"%ls\", not \"%ls\"\n",	      \
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-tmpnam.c b/stdio-common/tst-tmpnam.c
+index a3bd9fb..3b97064 100644
+--- a/stdio-common/tst-tmpnam.c
++++ b/stdio-common/tst-tmpnam.c
+@@ -19,8 +19,8 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   const char *name;
+   int retval = 0;
+@@ -48,3 +48,6 @@ main (void)
+ 
+   return retval;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-unbputc.c b/stdio-common/tst-unbputc.c
+index bbd8622..7200a82 100644
+--- a/stdio-common/tst-unbputc.c
++++ b/stdio-common/tst-unbputc.c
+@@ -1,11 +1,14 @@
+ #include <stdio.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   putc ('1', stderr);
+   putc ('2', stderr);
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdio-common/tst-wc-printf.c b/stdio-common/tst-wc-printf.c
+index abbeeb5..2a2acb5 100644
+--- a/stdio-common/tst-wc-printf.c
++++ b/stdio-common/tst-wc-printf.c
+@@ -4,8 +4,8 @@
+ #include <string.h>
+ #include <wctype.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   wchar_t tmp[3];
+   tmp[0] = '8';
+@@ -20,3 +20,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-environ.c b/stdlib/tst-environ.c
+index 3316d7e..b1de2f9 100644
+--- a/stdlib/tst-environ.c
++++ b/stdlib/tst-environ.c
+@@ -25,8 +25,8 @@
+ 
+ char putenv_val[100] = VAR "=some longer value";
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   const char *valp;
+@@ -219,3 +219,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-fmtmsg.c b/stdlib/tst-fmtmsg.c
+index c3748d6..b7948c5 100644
+--- a/stdlib/tst-fmtmsg.c
++++ b/stdlib/tst-fmtmsg.c
+@@ -7,8 +7,8 @@
+ 
+ #define MM_TEST 10
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -80,3 +80,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-limits.c b/stdlib/tst-limits.c
+index 265b9db..6e51dca 100644
+--- a/stdlib/tst-limits.c
++++ b/stdlib/tst-limits.c
+@@ -16,8 +16,8 @@ bitval (int bits)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -67,3 +67,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-rand48-2.c b/stdlib/tst-rand48-2.c
+index 3079b98..8b8fef4 100644
+--- a/stdlib/tst-rand48-2.c
++++ b/stdlib/tst-rand48-2.c
+@@ -3,8 +3,8 @@
+ #include <stdlib.h>
+ #include <time.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   time_t t = time (NULL);
+   int i, ret = 0;
+@@ -111,3 +111,6 @@ main (void)
+ 
+   return ret;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-rand48.c b/stdlib/tst-rand48.c
+index 52e1b96..973c62e 100644
+--- a/stdlib/tst-rand48.c
++++ b/stdlib/tst-rand48.c
+@@ -8,8 +8,8 @@
+ #endif
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   unsigned short int xs[3] = { 0x0001, 0x0012, 0x0123 };
+   unsigned short int lxs[7];
+@@ -388,3 +388,6 @@ drand48() and erand48 in lines %d and %d produce different results\n",
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-random.c b/stdlib/tst-random.c
+index 47195d6..8fe0993 100644
+--- a/stdlib/tst-random.c
++++ b/stdlib/tst-random.c
+@@ -46,8 +46,8 @@ const unsigned int seed[3] = { 0x12344321U, 0xEE11DD22U, 0xFEDCBA98 };
+ 
+ void fail (const char *msg, int s, int i) __attribute__ ((__noreturn__));
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   long int rnd[nseq][nrnd];	/* pseudorandom numbers */
+   char* state[nseq];		/* state for PRNG */
+@@ -117,3 +117,6 @@ fail (const char *msg, int s, int i)
+   printf ("%s (seq %d, pos %d).\n", msg, s, i);
+   exit (1);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-random2.c b/stdlib/tst-random2.c
+index 0553b62..da840f3 100644
+--- a/stdlib/tst-random2.c
++++ b/stdlib/tst-random2.c
+@@ -20,8 +20,8 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int pass;
+   int ret = 0;
+@@ -56,3 +56,6 @@ main (void)
+     }
+   return ret;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-strtol.c b/stdlib/tst-strtol.c
+index eebd8f7..448102a 100644
+--- a/stdlib/tst-strtol.c
++++ b/stdlib/tst-strtol.c
+@@ -534,8 +534,8 @@ static const struct ltest tests[] =
+ /* Prototypes for local functions.  */
+ static void expand (char *dst, int c);
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   register const struct ltest *lt;
+   char *ep;
+@@ -623,3 +623,6 @@ expand (dst, c)
+   else
+     (void) sprintf (dst, "%#.3o", (unsigned int) c);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-strtoll.c b/stdlib/tst-strtoll.c
+index 0c77254..93f1a56 100644
+--- a/stdlib/tst-strtoll.c
++++ b/stdlib/tst-strtoll.c
+@@ -309,8 +309,8 @@ static const struct ltest tests[] =
+ /* Prototypes for local functions.  */
+ static void expand (char *dst, int c);
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   register const struct ltest *lt;
+   char *ep;
+@@ -398,3 +398,6 @@ expand (dst, c)
+   else
+     (void) sprintf (dst, "%#.3o", (unsigned int) c);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/stdlib/tst-xpg-basename.c b/stdlib/tst-xpg-basename.c
+index 61e2e4b..facc783 100644
+--- a/stdlib/tst-xpg-basename.c
++++ b/stdlib/tst-xpg-basename.c
+@@ -37,8 +37,8 @@ static struct
+ };
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   size_t i = 0;
+   int errors = 0;
+@@ -64,3 +64,6 @@ main (void)
+ 
+   return errors;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/string/test-ffs.c b/string/test-ffs.c
+index 7ac1dd6..a64a1cc 100644
+--- a/string/test-ffs.c
++++ b/string/test-ffs.c
+@@ -21,8 +21,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int failures = 0;
+   int i;
+@@ -61,3 +61,6 @@ main (void)
+ 
+   return failures;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/string/tst-bswap.c b/string/tst-bswap.c
+index cca704c..6c1c911 100644
+--- a/string/tst-bswap.c
++++ b/string/tst-bswap.c
+@@ -21,8 +21,8 @@
+ 
+ extern unsigned long long int wash (unsigned long long int a);
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -71,3 +71,6 @@ wash (unsigned long long int a)
+      regards the argument to the bswap_*() functions as constant.  */
+   return a + 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/string/tst-inlcall.c b/string/tst-inlcall.c
+index 32d8863..0f8b1bd 100644
+--- a/string/tst-inlcall.c
++++ b/string/tst-inlcall.c
+@@ -31,8 +31,8 @@
+ #include <fcntl.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int status;
+   int errors = 0;
+@@ -80,3 +80,6 @@ main (void)
+     }
+   return status;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/string/tst-strtok.c b/string/tst-strtok.c
+index 7e34aee..6fbef9f 100644
+--- a/string/tst-strtok.c
++++ b/string/tst-strtok.c
+@@ -2,8 +2,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   char buf[1] = { 0 };
+   int result = 0;
+@@ -21,3 +21,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/string/tst-strxfrm.c b/string/tst-strxfrm.c
+index 2ae2e29..f48cfc0 100644
+--- a/string/tst-strxfrm.c
++++ b/string/tst-strxfrm.c
+@@ -58,8 +58,8 @@ test (const char *locale)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -69,3 +69,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/sysdeps/x86_64/tst-audit10.c b/sysdeps/x86_64/tst-audit10.c
+index 24c9696..8d6721a 100644
+--- a/sysdeps/x86_64/tst-audit10.c
++++ b/sysdeps/x86_64/tst-audit10.c
+@@ -45,8 +45,8 @@ avx512_enabled (void)
+ 
+ extern __m512i audit_test (__m512i, __m512i, __m512i, __m512i,
+ 			   __m512i, __m512i, __m512i, __m512i);
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   /* Run AVX512 test only if AVX512 is supported.  */
+   if (avx512_enabled ())
+@@ -62,9 +62,12 @@ main (void)
+   return 0;
+ }
+ #else
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   return 0;
+ }
+ #endif
++
++#define TEST_FUNCTION do_test ()
++#include "../../test-skeleton.c"
+diff --git a/elf/tst-audit3.c b/elf/tst-audit3.c
+index d00db99..0602aa2 100644
+--- a/elf/tst-audit3.c
++++ b/elf/tst-audit3.c
+@@ -7,8 +7,8 @@
+ 
+ extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i,
+ 			   __m128i, __m128i, __m128i, __m128i);
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   __m128i xmm = _mm_setzero_si128 ();
+   __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm);
+@@ -18,3 +18,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../../test-skeleton.c"
+diff --git a/elf/tst-audit4.c b/elf/tst-audit4.c
+index c4f1d5b..44d5123 100644
+--- a/elf/tst-audit4.c
++++ b/elf/tst-audit4.c
+@@ -25,8 +25,8 @@ avx_enabled (void)
+ 
+ extern __m256i audit_test (__m256i, __m256i, __m256i, __m256i,
+ 			   __m256i, __m256i, __m256i, __m256i);
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   /* Run AVX test only if AVX is supported.  */
+   if (avx_enabled ())
+@@ -41,9 +41,12 @@ main (void)
+   return 0;
+ }
+ #else
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   return 0;
+ }
+ #endif
++
++#define TEST_FUNCTION do_test ()
++#include "../../test-skeleton.c"
+diff --git a/elf/tst-audit5.c b/elf/tst-audit5.c
+index 0094fee..225b4c8 100644
+--- a/elf/tst-audit5.c
++++ b/elf/tst-audit5.c
+@@ -7,8 +7,8 @@
+ 
+ extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i,
+ 			   __m128i, __m128i, __m128i, __m128i);
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   __m128i xmm = _mm_setzero_si128 ();
+   __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm);
+@@ -19,3 +19,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../../test-skeleton.c"
+diff --git a/time/tst-ftime_l.c b/time/tst-ftime_l.c
+index fc3d78d..6690efe 100644
+--- a/time/tst-ftime_l.c
++++ b/time/tst-ftime_l.c
+@@ -6,8 +6,8 @@
+ #include <wchar.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   locale_t l;
+   locale_t old;
+@@ -124,3 +124,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/time/tst-getdate.c b/time/tst-getdate.c
+index fd87923..b3377ee 100644
+--- a/time/tst-getdate.c
++++ b/time/tst-getdate.c
+@@ -76,8 +76,8 @@ report_date_error (int err)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int errors = 0;
+   size_t i;
+@@ -121,3 +121,6 @@ main (void)
+     printf ("No errors found.\n");
+   return errors != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/time/tst-mktime.c b/time/tst-mktime.c
+index 416a856..c147360 100644
+--- a/time/tst-mktime.c
++++ b/time/tst-mktime.c
+@@ -3,8 +3,8 @@
+ #include <string.h>
+ #include <time.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   struct tm time_str, *tm;
+   time_t t;
+@@ -68,3 +68,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/time/tst-mktime3.c b/time/tst-mktime3.c
+index 60d0e0b..c738e53 100644
+--- a/time/tst-mktime3.c
++++ b/time/tst-mktime3.c
+@@ -17,8 +17,8 @@ struct tm expected[] =
+   { .tm_sec = 5, .tm_mday = 1, .tm_year = 102, .tm_wday = 2 }
+ };
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   setenv ("TZ", "UTC", 1);
+   int i;
+@@ -48,3 +48,6 @@ main (void)
+     }
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/time/tst-posixtz.c b/time/tst-posixtz.c
+index 019d92a..c1ea267 100644
+--- a/time/tst-posixtz.c
++++ b/time/tst-posixtz.c
+@@ -28,8 +28,8 @@ struct
+     "1999/02/25 15:18:12 dst=0 zone=EST" },
+ };
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   size_t cnt;
+@@ -116,3 +116,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/time/tst-strptime2.c b/time/tst-strptime2.c
+index 73552bb..bcd6cc8 100644
+--- a/time/tst-strptime2.c
++++ b/time/tst-strptime2.c
+@@ -26,8 +26,8 @@ static const struct
+ #define ntests (sizeof (tests) / sizeof (tests[0]))
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -57,3 +57,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/time/tst-strptime3.c b/time/tst-strptime3.c
+index 9a8c648..75b57c1 100644
+--- a/time/tst-strptime3.c
++++ b/time/tst-strptime3.c
+@@ -4,8 +4,8 @@
+ #include <time.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   struct tm tm;
+@@ -53,3 +53,6 @@ main (void)
+ 
+   return 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/wcsmbs/tst-btowc.c b/wcsmbs/tst-btowc.c
+index d793622..dc34f2b 100644
+--- a/wcsmbs/tst-btowc.c
++++ b/wcsmbs/tst-btowc.c
+@@ -74,8 +74,8 @@ eof_test (void)
+ 
+ 
+ /* Test the btowc() function for a few locales with known character sets.  */
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -172,3 +172,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/wcsmbs/tst-mbrtowc.c b/wcsmbs/tst-mbrtowc.c
+index 3e1eb72..a30b619 100644
+--- a/wcsmbs/tst-mbrtowc.c
++++ b/wcsmbs/tst-mbrtowc.c
+@@ -151,8 +151,8 @@ utf8_test (void)
+ }
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -230,3 +230,6 @@ check_ascii (const char *locname)
+ 
+   return res != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/wcsmbs/tst-mbsrtowcs.c b/wcsmbs/tst-mbsrtowcs.c
+index 8d7e2cb..405534d 100644
+--- a/wcsmbs/tst-mbsrtowcs.c
++++ b/wcsmbs/tst-mbsrtowcs.c
+@@ -21,8 +21,8 @@
+ #include <string.h>
+ #include <wchar.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   const unsigned char buf[] = { 'a', 'b', '\0', 'c', 'd', '\0', 'e' };
+   wchar_t out[sizeof (buf)];
+@@ -62,3 +62,6 @@ main (void)
+     }
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/wcsmbs/tst-wchar-h.c b/wcsmbs/tst-wchar-h.c
+index 4cf2dd0..fd2ad56 100644
+--- a/wcsmbs/tst-wchar-h.c
++++ b/wcsmbs/tst-wchar-h.c
+@@ -1,9 +1,12 @@
+ #include <stdlib.h>
+ #include <wchar.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   mbstate_t x;
+   return sizeof (x) - sizeof (mbstate_t);
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/wcsmbs/tst-wcpncpy.c b/wcsmbs/tst-wcpncpy.c
+index 74765e7..4cf4aec 100644
+--- a/wcsmbs/tst-wcpncpy.c
++++ b/wcsmbs/tst-wcpncpy.c
+@@ -20,8 +20,8 @@
+ #include <wchar.h>
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -74,3 +74,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/wcsmbs/tst-wcrtomb.c b/wcsmbs/tst-wcrtomb.c
+index 3f052f3..cad343e 100644
+--- a/wcsmbs/tst-wcrtomb.c
++++ b/wcsmbs/tst-wcrtomb.c
+@@ -26,8 +26,8 @@
+ static int check_ascii (const char *locname);
+ 
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+ 
+@@ -92,3 +92,6 @@ check_ascii (const char *locname)
+ 
+   return res != 0;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/wcsmbs/tst-wcsnlen.c b/wcsmbs/tst-wcsnlen.c
+index 60e64ad..8d4b8b5 100644
+--- a/wcsmbs/tst-wcsnlen.c
++++ b/wcsmbs/tst-wcsnlen.c
+@@ -27,8 +27,8 @@
+       printf ("wcsnlen (L\"%s\", %d) = %d, not %d\n", Str, Max, n, Exp);      \
+     }
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   int n;
+@@ -48,3 +48,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff --git a/wcsmbs/tst-wcstof.c b/wcsmbs/tst-wcstof.c
+index 197cb5c..576a58c 100644
+--- a/wcsmbs/tst-wcstof.c
++++ b/wcsmbs/tst-wcstof.c
+@@ -4,8 +4,8 @@
+ #include <string.h>
+ #include <wctype.h>
+ 
+-int
+-main (void)
++static int
++do_test (void)
+ {
+   int result = 0;
+   char buf[100];
+@@ -21,3 +21,6 @@ main (void)
+ 
+   return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
diff --git a/SOURCES/glibc-rh1298526-0.patch b/SOURCES/glibc-rh1298526-0.patch
new file mode 100644
index 0000000..e7f5809
--- /dev/null
+++ b/SOURCES/glibc-rh1298526-0.patch
@@ -0,0 +1,348 @@
+commit 83d776f979342f923b5c3d2a5b43afab841c6086
+Author: Andrew Senkevich <andrew.senkevich@intel.com>
+Date:   Sat Dec 19 02:47:28 2015 +0300
+
+    Added memset optimized with AVX512 for KNL hardware.
+    
+    It shows improvement up to 28% over AVX2 memset (performance results
+    attached at <https://sourceware.org/ml/libc-alpha/2015-12/msg00052.html>).
+    
+        * sysdeps/x86_64/multiarch/memset-avx512-no-vzeroupper.S: New file.
+        * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Added new file.
+        * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Added new tests.
+        * sysdeps/x86_64/multiarch/memset.S: Added new IFUNC branch.
+        * sysdeps/x86_64/multiarch/memset_chk.S: Likewise.
+        * sysdeps/x86/cpu-features.h (bit_Prefer_No_VZEROUPPER,
+        index_Prefer_No_VZEROUPPER): New.
+        * sysdeps/x86/cpu-features.c (init_cpu_features): Set the
+        Prefer_No_VZEROUPPER for Knights Landing.
+
+Index: glibc-2.17-c758a686/sysdeps/x86/cpu-features.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86/cpu-features.c
++++ glibc-2.17-c758a686/sysdeps/x86/cpu-features.c
+@@ -76,6 +76,8 @@ init_cpu_features (struct cpu_features *
+ 
+ 	    case 0x57:
+ 	      /* Knights Landing.  Enable Silvermont optimizations.  */
++	      cpu_features->feature[index_Prefer_No_VZEROUPPER]
++		|= bit_Prefer_No_VZEROUPPER;
+ 
+ 	    case 0x37:
+ 	    case 0x4a:
+Index: glibc-2.17-c758a686/sysdeps/x86/cpu-features.h
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86/cpu-features.h
++++ glibc-2.17-c758a686/sysdeps/x86/cpu-features.h
+@@ -33,6 +33,7 @@
+ #define bit_AVX512F_Usable		(1 << 12)
+ #define bit_AVX512DQ_Usable		(1 << 13)
+ #define bit_Prefer_MAP_32BIT_EXEC	(1 << 16)
++#define bit_Prefer_No_VZEROUPPER	(1 << 17)
+ 
+ /* CPUID Feature flags.  */
+ 
+@@ -93,6 +94,7 @@
+ # define index_AVX512F_Usable		FEATURE_INDEX_1*FEATURE_SIZE
+ # define index_AVX512DQ_Usable		FEATURE_INDEX_1*FEATURE_SIZE
+ # define index_Prefer_MAP_32BIT_EXEC	FEATURE_INDEX_1*FEATURE_SIZE
++# define index_Prefer_No_VZEROUPPER	FEATURE_INDEX_1*FEATURE_SIZE
+ 
+ # if defined (_LIBC) && !IS_IN (nonlib)
+ #  ifdef __x86_64__
+@@ -270,6 +272,7 @@ extern const struct cpu_features *__get_
+ # define index_AVX512F_Usable		FEATURE_INDEX_1
+ # define index_AVX512DQ_Usable		FEATURE_INDEX_1
+ # define index_Prefer_MAP_32BIT_EXEC	FEATURE_INDEX_1
++# define index_Prefer_No_VZEROUPPER     FEATURE_INDEX_1
+ 
+ #endif	/* !__ASSEMBLER__ */
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/Makefile
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/Makefile
+@@ -16,7 +16,8 @@ sysdep_routines += strncat-c stpncpy-c s
+ 		   strcat-sse2-unaligned strncat-sse2-unaligned \
+ 		   strcat-ssse3 strncat-ssse3 strlen-sse2-pminub \
+ 		   strnlen-sse2-no-bsf strrchr-sse2-no-bsf strchr-sse2-no-bsf \
+-		   memcmp-ssse3 strstr-sse2-unaligned
++		   memcmp-ssse3 strstr-sse2-unaligned \
++		   memset-avx512-no-vzeroupper
+ ifeq (yes,$(config-cflags-sse4))
+ sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c varshift
+ CFLAGS-varshift.c += -msse4
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/ifunc-impl-list.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c
+@@ -20,6 +20,7 @@
+ #include <string.h>
+ #include <wchar.h>
+ #include <ifunc-impl-list.h>
++#include <sysdep.h>
+ #include "init-arch.h"
+ 
+ /* Maximum number of IFUNC implementations.  */
+@@ -66,12 +67,24 @@ __libc_ifunc_impl_list (const char *name
+   IFUNC_IMPL (i, name, __memset_chk,
+ 	      IFUNC_IMPL_ADD (array, i, __memset_chk, 1, __memset_chk_sse2)
+ 	      IFUNC_IMPL_ADD (array, i, __memset_chk, 1,
+-			      __memset_chk_x86_64))
++			      __memset_chk_x86_64)
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	      IFUNC_IMPL_ADD (array, i, __memset_chk,
++			      HAS_ARCH_FEATURE (AVX512F_Usable),
++			      __memset_chk_avx512_no_vzeroupper)
++#endif
++	      )
+ 
+   /* Support sysdeps/x86_64/multiarch/memset.S.  */
+   IFUNC_IMPL (i, name, memset,
+ 	      IFUNC_IMPL_ADD (array, i, memset, 1, __memset_sse2)
+-	      IFUNC_IMPL_ADD (array, i, memset, 1, __memset_x86_64))
++	      IFUNC_IMPL_ADD (array, i, memset, 1, __memset_x86_64)
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	      IFUNC_IMPL_ADD (array, i, memset,
++			      HAS_ARCH_FEATURE (AVX512F_Usable),
++			      __memset_avx512_no_vzeroupper)
++#endif
++	     )
+ 
+   /* Support sysdeps/x86_64/multiarch/rawmemchr.S.  */
+   IFUNC_IMPL (i, name, rawmemchr,
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset-avx512-no-vzeroupper.S
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset-avx512-no-vzeroupper.S
+@@ -0,0 +1,194 @@
++/* memset optimized with AVX512 for KNL hardware.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#if defined HAVE_AVX512_ASM_SUPPORT && IS_IN (libc)
++
++#include "asm-syntax.h"
++#ifndef MEMSET
++# define MEMSET __memset_avx512_no_vzeroupper
++# define MEMSET_CHK __memset_chk_avx512_no_vzeroupper
++#endif
++
++	.section .text,"ax",@progbits
++#if defined PIC
++ENTRY (MEMSET_CHK)
++	cmpq	%rdx, %rcx
++	jb	HIDDEN_JUMPTARGET (__chk_fail)
++END (MEMSET_CHK)
++#endif
++
++ENTRY (MEMSET)
++	vpxor	%xmm0, %xmm0, %xmm0
++	vmovd	%esi, %xmm1
++	lea	(%rdi, %rdx), %rsi
++	mov	%rdi, %rax
++	vpshufb	%xmm0, %xmm1, %xmm0
++	cmp	$16, %rdx
++	jb	L(less_16bytes)
++	cmp	$512, %rdx
++	vbroadcastss	%xmm0, %zmm2
++	ja	L(512bytesormore)
++	cmp	$256, %rdx
++	jb	L(less_256bytes)
++	vmovups	%zmm2, (%rdi)
++	vmovups %zmm2, 0x40(%rdi)
++	vmovups %zmm2, 0x80(%rdi)
++	vmovups %zmm2, 0xC0(%rdi)
++	vmovups %zmm2, -0x100(%rsi)
++	vmovups %zmm2, -0xC0(%rsi)
++	vmovups %zmm2, -0x80(%rsi)
++	vmovups %zmm2, -0x40(%rsi)
++	ret
++
++L(less_256bytes):
++	cmp	$128, %dl
++	jb	L(less_128bytes)
++	vmovups	%zmm2, (%rdi)
++	vmovups %zmm2, 0x40(%rdi)
++	vmovups %zmm2, -0x80(%rsi)
++	vmovups %zmm2, -0x40(%rsi)
++	ret
++
++L(less_128bytes):
++	cmp	$64, %dl
++	jb	L(less_64bytes)
++	vmovups	%zmm2, (%rdi)
++	vmovups	%zmm2, -0x40(%rsi)
++	ret
++
++L(less_64bytes):
++	cmp	$32, %dl
++	jb	L(less_32bytes)
++	vmovdqu	%ymm2, (%rdi)
++	vmovdqu %ymm2, -0x20(%rsi)
++	ret
++
++L(less_32bytes):
++	vmovdqu %xmm0, (%rdi)
++	vmovdqu %xmm0, -0x10(%rsi)
++	ret
++
++L(less_16bytes):
++	cmp	$8, %dl
++	jb	L(less_8bytes)
++	vmovq	%xmm0, (%rdi)
++	vmovq	%xmm0, -0x08(%rsi)
++	ret
++
++L(less_8bytes):
++	vmovd	%xmm0, %ecx
++	cmp	$4, %dl
++	jb	L(less_4bytes)
++	mov	%ecx, (%rdi)
++	mov	%ecx, -0x04(%rsi)
++	ret
++
++L(less_4bytes):
++	cmp	$2, %dl
++	jb	L(less_2bytes)
++	mov	%cx, (%rdi)
++	mov	%cx, -0x02(%rsi)
++	ret
++
++L(less_2bytes):
++	cmp	$1, %dl
++	jb	L(less_1bytes)
++	mov	%cl, (%rdi)
++L(less_1bytes):
++	ret
++
++L(512bytesormore):
++	mov	__x86_64_shared_cache_size_half(%rip), %rcx
++	cmp	%rcx, %rdx
++	ja	L(preloop_large)
++	cmp	$1024, %rdx
++	ja	L(1024bytesormore)
++
++	vmovups	%zmm2, (%rdi)
++	vmovups	%zmm2, 0x40(%rdi)
++	vmovups	%zmm2, 0x80(%rdi)
++	vmovups	%zmm2, 0xC0(%rdi)
++	vmovups	%zmm2, 0x100(%rdi)
++	vmovups	%zmm2, 0x140(%rdi)
++	vmovups	%zmm2, 0x180(%rdi)
++	vmovups	%zmm2, 0x1C0(%rdi)
++	vmovups %zmm2, -0x200(%rsi)
++	vmovups %zmm2, -0x1C0(%rsi)
++	vmovups %zmm2, -0x180(%rsi)
++	vmovups %zmm2, -0x140(%rsi)
++	vmovups %zmm2, -0x100(%rsi)
++	vmovups %zmm2, -0xC0(%rsi)
++	vmovups %zmm2, -0x80(%rsi)
++	vmovups %zmm2, -0x40(%rsi)
++	ret
++
++/* Align on 64 and loop with aligned stores.  */
++L(1024bytesormore):
++	sub	$0x100, %rsi
++	vmovups	%zmm2, (%rax)
++	and	$-0x40, %rdi
++	add	$0x40, %rdi
++
++L(gobble_256bytes_loop):
++	vmovaps	%zmm2, (%rdi)
++	vmovaps	%zmm2, 0x40(%rdi)
++	vmovaps	%zmm2, 0x80(%rdi)
++	vmovaps	%zmm2, 0xC0(%rdi)
++	add	$0x100, %rdi
++	cmp	%rsi, %rdi
++	jb	L(gobble_256bytes_loop)
++	vmovups %zmm2, (%rsi)
++	vmovups %zmm2, 0x40(%rsi)
++	vmovups %zmm2, 0x80(%rsi)
++	vmovups %zmm2, 0xC0(%rsi)
++	ret
++
++/* Align on 128 and loop with non-temporal stores.  */
++L(preloop_large):
++	and	$-0x80, %rdi
++	add	$0x80, %rdi
++	vmovups	%zmm2, (%rax)
++	vmovups	%zmm2, 0x40(%rax)
++	sub	$0x200, %rsi
++
++L(gobble_512bytes_nt_loop):
++	vmovntdq %zmm2, (%rdi)
++	vmovntdq %zmm2, 0x40(%rdi)
++	vmovntdq %zmm2, 0x80(%rdi)
++	vmovntdq %zmm2, 0xC0(%rdi)
++	vmovntdq %zmm2, 0x100(%rdi)
++	vmovntdq %zmm2, 0x140(%rdi)
++	vmovntdq %zmm2, 0x180(%rdi)
++	vmovntdq %zmm2, 0x1C0(%rdi)
++	add	$0x200, %rdi
++	cmp	%rsi, %rdi
++	jb	L(gobble_512bytes_nt_loop)
++	sfence
++	vmovups %zmm2, (%rsi)
++	vmovups %zmm2, 0x40(%rsi)
++	vmovups %zmm2, 0x80(%rsi)
++	vmovups %zmm2, 0xC0(%rsi)
++	vmovups	%zmm2, 0x100(%rsi)
++	vmovups	%zmm2, 0x140(%rsi)
++	vmovups	%zmm2, 0x180(%rsi)
++	vmovups	%zmm2, 0x1C0(%rsi)
++	ret
++END (MEMSET)
++#endif
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memset.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset.S
+@@ -29,6 +29,13 @@ ENTRY(memset)
+ 	HAS_ARCH_FEATURE (Prefer_SSE_for_memop)
+ 	jz	2f
+ 	leaq	__memset_sse2(%rip), %rax
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	HAS_ARCH_FEATURE (AVX512F_Usable)
++	jz	2f
++	HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
++	jz	2f
++	leaq	__memset_avx512_no_vzeroupper(%rip), %rax
++#endif
+ 2:	ret
+ END(memset)
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memset_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memset_chk.S
+@@ -30,6 +30,13 @@ ENTRY(__memset_chk)
+ 	HAS_ARCH_FEATURE (Prefer_SSE_for_memop)
+ 	jz	2f
+ 	leaq	__memset_chk_sse2(%rip), %rax
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	HAS_ARCH_FEATURE (AVX512F_Usable)
++	jz	2f
++	HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
++	jz	2f
++	leaq	__memset_chk_avx512_no_vzeroupper(%rip), %rax
++#endif
+ 2:	ret
+ END(__memset_chk)
+ 
diff --git a/SOURCES/glibc-rh1298526-1.patch b/SOURCES/glibc-rh1298526-1.patch
new file mode 100644
index 0000000..d364530
--- /dev/null
+++ b/SOURCES/glibc-rh1298526-1.patch
@@ -0,0 +1,725 @@
+commit 72276d6e8843db6df5971b06787f0a5e39bda138
+Author: Andrew Senkevich <andrew.senkevich@intel.com>
+Date:   Sat Jan 16 00:49:45 2016 +0300
+
+    Added memcpy/memmove family optimized with AVX512 for KNL hardware.
+
+    Added AVX512 implementations of memcpy, mempcpy, memmove, memcpy_chk,
+    mempcpy_chk, memmove_chk.
+    It shows average improvement more than 30% over AVX versions on KNL
+    hardware (performance results in the thread
+    <https://sourceware.org/ml/libc-alpha/2016-01/msg00258.html>).
+
+        * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Added new files.
+        * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Added new tests.
+        * sysdeps/x86_64/multiarch/memcpy-avx512-no-vzeroupper.S: New file.
+        * sysdeps/x86_64/multiarch/mempcpy-avx512-no-vzeroupper.S: Likewise.
+        * sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S: Likewise.
+        * sysdeps/x86_64/multiarch/memcpy.S: Added new IFUNC branch.
+        * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise.
+        * sysdeps/x86_64/multiarch/memmove.c: Likewise.
+        * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise.
+        * sysdeps/x86_64/multiarch/mempcpy.S: Likewise.
+        * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise.
+
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/Makefile
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/Makefile
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/Makefile
+@@ -17,7 +17,8 @@ sysdep_routines += strncat-c stpncpy-c s
+ 		   strcat-ssse3 strncat-ssse3 strlen-sse2-pminub \
+ 		   strnlen-sse2-no-bsf strrchr-sse2-no-bsf strchr-sse2-no-bsf \
+ 		   memcmp-ssse3 strstr-sse2-unaligned \
+-		   memset-avx512-no-vzeroupper
++		   memset-avx512-no-vzeroupper memcpy-avx512-no-vzeroupper \
++		   mempcpy-avx512-no-vzeroupper memmove-avx512-no-vzeroupper
+ ifeq (yes,$(config-cflags-sse4))
+ sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c varshift
+ CFLAGS-varshift.c += -msse4
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/ifunc-impl-list.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c
+@@ -24,7 +24,7 @@
+ #include "init-arch.h"
+ 
+ /* Maximum number of IFUNC implementations.  */
+-#define MAX_IFUNC	4
++#define MAX_IFUNC	5
+ 
+ /* Fill ARRAY of MAX elements with IFUNC implementations for function
+    NAME supported on target machine and return the number of valid
+@@ -46,8 +46,11 @@ __libc_ifunc_impl_list (const char *name
+ 			      __memcmp_ssse3)
+ 	      IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_sse2))
+ 
+-  /* Support sysdeps/x86_64/multiarch/memmove_chk.S.  */
++  /* Support sysdeps/x86_64/multiarch/memmove_chk.c.  */
+   IFUNC_IMPL (i, name, __memmove_chk,
++	      IFUNC_IMPL_ADD (array, i, __memmove_chk,
++			      HAS_ARCH_FEATURE (AVX512F_Usable),
++			      __memmove_chk_avx512_no_vzeroupper)
+ 	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_chk_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_CPU_FEATURE (SSSE3),
+@@ -57,6 +60,9 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/memmove.S.  */
+   IFUNC_IMPL (i, name, memmove,
++	      IFUNC_IMPL_ADD (array, i, memmove,
++			      HAS_ARCH_FEATURE (AVX512F_Usable),
++			      __memmove_avx512_no_vzeroupper)
+ 	      IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3),
+@@ -263,6 +269,9 @@ __libc_ifunc_impl_list (const char *name
+ #ifdef SHARED
+   /* Support sysdeps/x86_64/multiarch/memcpy_chk.S.  */
+   IFUNC_IMPL (i, name, __memcpy_chk,
++	      IFUNC_IMPL_ADD (array, i, __memcpy_chk,
++			      HAS_ARCH_FEATURE (AVX512F_Usable),
++			      __memcpy_chk_avx512_no_vzeroupper)
+ 	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_chk_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_CPU_FEATURE (SSSE3),
+@@ -274,11 +283,18 @@ __libc_ifunc_impl_list (const char *name
+   IFUNC_IMPL (i, name, memcpy,
+ 	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_ssse3_back)
+-	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3), __memcpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3),
++			      __memcpy_ssse3)
++	      IFUNC_IMPL_ADD (array, i, memcpy,
++			      HAS_ARCH_FEATURE (AVX512F_Usable),
++			      __memcpy_avx512_no_vzeroupper)
+ 	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/mempcpy_chk.S.  */
+   IFUNC_IMPL (i, name, __mempcpy_chk,
++	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk,
++			      HAS_ARCH_FEATURE (AVX512F_Usable),
++			      __mempcpy_chk_avx512_no_vzeroupper)
+ 	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_chk_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_CPU_FEATURE (SSSE3),
+@@ -288,6 +304,9 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/mempcpy.S.  */
+   IFUNC_IMPL (i, name, mempcpy,
++	      IFUNC_IMPL_ADD (array, i, mempcpy,
++			      HAS_ARCH_FEATURE (AVX512F_Usable),
++			      __mempcpy_avx512_no_vzeroupper)
+ 	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3),
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy-avx512-no-vzeroupper.S
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy-avx512-no-vzeroupper.S
+@@ -0,0 +1,408 @@
++/* memcpy optimized with AVX512 for KNL hardware.
++   Copyright (C) 2016 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++
++#if defined HAVE_AVX512_ASM_SUPPORT && IS_IN (libc) \
++    && (defined SHARED \
++	|| defined USE_AS_MEMMOVE \
++	|| !defined USE_MULTIARCH)
++
++#include "asm-syntax.h"
++#ifndef MEMCPY
++# define MEMCPY		__memcpy_avx512_no_vzeroupper
++# define MEMCPY_CHK	__memcpy_chk_avx512_no_vzeroupper
++#endif
++
++	.section .text,"ax",@progbits
++#if !defined USE_AS_BCOPY
++ENTRY (MEMCPY_CHK)
++	cmpq	%rdx, %rcx
++	jb	HIDDEN_JUMPTARGET (__chk_fail)
++END (MEMCPY_CHK)
++#endif
++
++ENTRY (MEMCPY)
++	mov	%rdi, %rax
++#ifdef USE_AS_MEMPCPY
++	add	%rdx, %rax
++#endif
++	lea	(%rsi, %rdx), %rcx
++	lea	(%rdi, %rdx), %r9
++	cmp	$512, %rdx
++	ja	L(512bytesormore)
++
++L(check):
++	cmp	$16, %rdx
++	jbe	L(less_16bytes)
++	cmp	$256, %rdx
++	jb	L(less_256bytes)
++	vmovups	(%rsi), %zmm0
++	vmovups 0x40(%rsi), %zmm1
++	vmovups 0x80(%rsi), %zmm2
++	vmovups 0xC0(%rsi), %zmm3
++	vmovups	-0x100(%rcx), %zmm4
++	vmovups -0xC0(%rcx), %zmm5
++	vmovups -0x80(%rcx), %zmm6
++	vmovups -0x40(%rcx), %zmm7
++	vmovups %zmm0, (%rdi)
++	vmovups %zmm1, 0x40(%rdi)
++	vmovups %zmm2, 0x80(%rdi)
++	vmovups %zmm3, 0xC0(%rdi)
++	vmovups	%zmm4, -0x100(%r9)
++	vmovups %zmm5, -0xC0(%r9)
++	vmovups %zmm6, -0x80(%r9)
++	vmovups %zmm7, -0x40(%r9)
++	ret
++
++L(less_256bytes):
++	cmp	$128, %dl
++	jb	L(less_128bytes)
++	vmovups	(%rsi), %zmm0
++	vmovups 0x40(%rsi), %zmm1
++	vmovups -0x80(%rcx), %zmm2
++	vmovups -0x40(%rcx), %zmm3
++	vmovups	%zmm0, (%rdi)
++	vmovups %zmm1, 0x40(%rdi)
++	vmovups %zmm2, -0x80(%r9)
++	vmovups %zmm3, -0x40(%r9)
++	ret
++
++L(less_128bytes):
++	cmp	$64, %dl
++	jb	L(less_64bytes)
++	vmovdqu (%rsi), %ymm0
++	vmovdqu 0x20(%rsi), %ymm1
++	vmovdqu -0x40(%rcx), %ymm2
++	vmovdqu -0x20(%rcx), %ymm3
++	vmovdqu %ymm0, (%rdi)
++	vmovdqu %ymm1, 0x20(%rdi)
++	vmovdqu %ymm2, -0x40(%r9)
++	vmovdqu %ymm3, -0x20(%r9)
++	ret
++
++L(less_64bytes):
++	cmp	$32, %dl
++	jb	L(less_32bytes)
++	vmovdqu	(%rsi), %ymm0
++	vmovdqu -0x20(%rcx), %ymm1
++	vmovdqu	%ymm0, (%rdi)
++	vmovdqu	%ymm1, -0x20(%r9)
++	ret
++
++L(less_32bytes):
++	vmovdqu (%rsi), %xmm0
++	vmovdqu -0x10(%rcx), %xmm1
++	vmovdqu %xmm0, (%rdi)
++	vmovdqu %xmm1, -0x10(%r9)
++	ret
++
++L(less_16bytes):
++	cmp	$8, %dl
++	jb	L(less_8bytes)
++	movq	(%rsi), %rsi
++	movq	-0x8(%rcx), %rcx
++	movq	%rsi, (%rdi)
++	movq	%rcx, -0x8(%r9)
++	ret
++
++L(less_8bytes):
++	cmp	$4, %dl
++	jb	L(less_4bytes)
++	mov	(%rsi), %esi
++	mov	-0x4(%rcx), %ecx
++	mov	%esi, (%rdi)
++	mov	%ecx, -0x4(%r9)
++	ret
++
++L(less_4bytes):
++	cmp	$2, %dl
++	jb	L(less_2bytes)
++	mov	(%rsi), %si
++	mov	-0x2(%rcx), %cx
++	mov	%si, (%rdi)
++	mov	%cx, -0x2(%r9)
++	ret
++
++L(less_2bytes):
++	cmp	$1, %dl
++	jb	L(less_1bytes)
++	mov	(%rsi), %cl
++	mov	%cl, (%rdi)
++L(less_1bytes):
++	ret
++
++L(512bytesormore):
++#ifdef SHARED_CACHE_SIZE_HALF
++	mov	$SHARED_CACHE_SIZE_HALF, %r8
++#else
++	mov	__x86_64_shared_cache_size_half(%rip), %r8
++#endif
++	cmp	%r8, %rdx
++	jae	L(preloop_large)
++	cmp	$1024, %rdx
++	ja	L(1024bytesormore)
++	prefetcht1 (%rsi)
++	prefetcht1 0x40(%rsi)
++	prefetcht1 0x80(%rsi)
++	prefetcht1 0xC0(%rsi)
++	prefetcht1 0x100(%rsi)
++	prefetcht1 0x140(%rsi)
++	prefetcht1 0x180(%rsi)
++	prefetcht1 0x1C0(%rsi)
++	prefetcht1 -0x200(%rcx)
++	prefetcht1 -0x1C0(%rcx)
++	prefetcht1 -0x180(%rcx)
++	prefetcht1 -0x140(%rcx)
++	prefetcht1 -0x100(%rcx)
++	prefetcht1 -0xC0(%rcx)
++	prefetcht1 -0x80(%rcx)
++	prefetcht1 -0x40(%rcx)
++	vmovups	(%rsi), %zmm0
++	vmovups 0x40(%rsi), %zmm1
++	vmovups 0x80(%rsi), %zmm2
++	vmovups 0xC0(%rsi), %zmm3
++	vmovups	0x100(%rsi), %zmm4
++	vmovups 0x140(%rsi), %zmm5
++	vmovups 0x180(%rsi), %zmm6
++	vmovups 0x1C0(%rsi), %zmm7
++	vmovups	-0x200(%rcx), %zmm8
++	vmovups -0x1C0(%rcx), %zmm9
++	vmovups -0x180(%rcx), %zmm10
++	vmovups -0x140(%rcx), %zmm11
++	vmovups	-0x100(%rcx), %zmm12
++	vmovups -0xC0(%rcx), %zmm13
++	vmovups -0x80(%rcx), %zmm14
++	vmovups -0x40(%rcx), %zmm15
++	vmovups %zmm0, (%rdi)
++	vmovups %zmm1, 0x40(%rdi)
++	vmovups %zmm2, 0x80(%rdi)
++	vmovups %zmm3, 0xC0(%rdi)
++	vmovups %zmm4, 0x100(%rdi)
++	vmovups %zmm5, 0x140(%rdi)
++	vmovups %zmm6, 0x180(%rdi)
++	vmovups %zmm7, 0x1C0(%rdi)
++	vmovups	%zmm8, -0x200(%r9)
++	vmovups %zmm9, -0x1C0(%r9)
++	vmovups %zmm10, -0x180(%r9)
++	vmovups %zmm11, -0x140(%r9)
++	vmovups	%zmm12, -0x100(%r9)
++	vmovups %zmm13, -0xC0(%r9)
++	vmovups %zmm14, -0x80(%r9)
++	vmovups %zmm15, -0x40(%r9)
++	ret
++
++L(1024bytesormore):
++	cmp	%rsi, %rdi
++	ja	L(1024bytesormore_bkw)
++	sub	$512, %r9
++	vmovups -0x200(%rcx), %zmm8
++	vmovups -0x1C0(%rcx), %zmm9
++	vmovups -0x180(%rcx), %zmm10
++	vmovups -0x140(%rcx), %zmm11
++	vmovups	-0x100(%rcx), %zmm12
++	vmovups -0xC0(%rcx), %zmm13
++	vmovups -0x80(%rcx), %zmm14
++	vmovups -0x40(%rcx), %zmm15
++	prefetcht1 (%rsi)
++	prefetcht1 0x40(%rsi)
++	prefetcht1 0x80(%rsi)
++	prefetcht1 0xC0(%rsi)
++	prefetcht1 0x100(%rsi)
++	prefetcht1 0x140(%rsi)
++	prefetcht1 0x180(%rsi)
++	prefetcht1 0x1C0(%rsi)
++
++/* Loop with unaligned memory access.  */
++L(gobble_512bytes_loop):
++	vmovups	(%rsi), %zmm0
++	vmovups 0x40(%rsi), %zmm1
++	vmovups 0x80(%rsi), %zmm2
++	vmovups 0xC0(%rsi), %zmm3
++	vmovups	0x100(%rsi), %zmm4
++	vmovups 0x140(%rsi), %zmm5
++	vmovups 0x180(%rsi), %zmm6
++	vmovups 0x1C0(%rsi), %zmm7
++	add	$512, %rsi
++	prefetcht1 (%rsi)
++	prefetcht1 0x40(%rsi)
++	prefetcht1 0x80(%rsi)
++	prefetcht1 0xC0(%rsi)
++	prefetcht1 0x100(%rsi)
++	prefetcht1 0x140(%rsi)
++	prefetcht1 0x180(%rsi)
++	prefetcht1 0x1C0(%rsi)
++	vmovups	%zmm0, (%rdi)
++	vmovups %zmm1, 0x40(%rdi)
++	vmovups %zmm2, 0x80(%rdi)
++	vmovups %zmm3, 0xC0(%rdi)
++	vmovups	%zmm4, 0x100(%rdi)
++	vmovups %zmm5, 0x140(%rdi)
++	vmovups %zmm6, 0x180(%rdi)
++	vmovups %zmm7, 0x1C0(%rdi)
++	add	$512, %rdi
++	cmp	%r9, %rdi
++	jb	L(gobble_512bytes_loop)
++	vmovups %zmm8, (%r9)
++	vmovups %zmm9, 0x40(%r9)
++	vmovups %zmm10, 0x80(%r9)
++	vmovups %zmm11, 0xC0(%r9)
++	vmovups %zmm12, 0x100(%r9)
++	vmovups %zmm13, 0x140(%r9)
++	vmovups %zmm14, 0x180(%r9)
++	vmovups %zmm15, 0x1C0(%r9)
++	ret
++
++L(1024bytesormore_bkw):
++	add	$512, %rdi
++	vmovups	0x1C0(%rsi), %zmm8
++	vmovups 0x180(%rsi), %zmm9
++	vmovups 0x140(%rsi), %zmm10
++	vmovups 0x100(%rsi), %zmm11
++	vmovups	0xC0(%rsi), %zmm12
++	vmovups 0x80(%rsi), %zmm13
++	vmovups 0x40(%rsi), %zmm14
++	vmovups (%rsi), %zmm15
++	prefetcht1 -0x40(%rcx)
++	prefetcht1 -0x80(%rcx)
++	prefetcht1 -0xC0(%rcx)
++	prefetcht1 -0x100(%rcx)
++	prefetcht1 -0x140(%rcx)
++	prefetcht1 -0x180(%rcx)
++	prefetcht1 -0x1C0(%rcx)
++	prefetcht1 -0x200(%rcx)
++
++/* Backward loop with unaligned memory access.  */
++L(gobble_512bytes_loop_bkw):
++	vmovups -0x40(%rcx), %zmm0
++	vmovups -0x80(%rcx), %zmm1
++	vmovups -0xC0(%rcx), %zmm2
++	vmovups	-0x100(%rcx), %zmm3
++	vmovups -0x140(%rcx), %zmm4
++	vmovups -0x180(%rcx), %zmm5
++	vmovups -0x1C0(%rcx), %zmm6
++	vmovups	-0x200(%rcx), %zmm7
++	sub	$512, %rcx
++	prefetcht1 -0x40(%rcx)
++	prefetcht1 -0x80(%rcx)
++	prefetcht1 -0xC0(%rcx)
++	prefetcht1 -0x100(%rcx)
++	prefetcht1 -0x140(%rcx)
++	prefetcht1 -0x180(%rcx)
++	prefetcht1 -0x1C0(%rcx)
++	prefetcht1 -0x200(%rcx)
++	vmovups %zmm0, -0x40(%r9)
++	vmovups %zmm1, -0x80(%r9)
++	vmovups %zmm2, -0xC0(%r9)
++	vmovups	%zmm3, -0x100(%r9)
++	vmovups %zmm4, -0x140(%r9)
++	vmovups %zmm5, -0x180(%r9)
++	vmovups %zmm6, -0x1C0(%r9)
++	vmovups	%zmm7, -0x200(%r9)
++	sub	$512, %r9
++	cmp	%rdi, %r9
++	ja	L(gobble_512bytes_loop_bkw)
++	vmovups %zmm8, -0x40(%rdi)
++	vmovups %zmm9, -0x80(%rdi)
++	vmovups %zmm10, -0xC0(%rdi)
++	vmovups %zmm11, -0x100(%rdi)
++	vmovups %zmm12, -0x140(%rdi)
++	vmovups %zmm13, -0x180(%rdi)
++	vmovups %zmm14, -0x1C0(%rdi)
++	vmovups %zmm15, -0x200(%rdi)
++	ret
++
++L(preloop_large):
++	cmp	%rsi, %rdi
++	ja	L(preloop_large_bkw)
++	vmovups	(%rsi), %zmm4
++	vmovups	0x40(%rsi), %zmm5
++
++/* Align destination for access with non-temporal stores in the loop.  */
++	mov	%rdi, %r8
++	and	$-0x80, %rdi
++	add	$0x80, %rdi
++	sub	%rdi, %r8
++	sub	%r8, %rsi
++	add	%r8, %rdx
++L(gobble_256bytes_nt_loop):
++	prefetcht1 0x200(%rsi)
++	prefetcht1 0x240(%rsi)
++	prefetcht1 0x280(%rsi)
++	prefetcht1 0x2C0(%rsi)
++	prefetcht1 0x300(%rsi)
++	prefetcht1 0x340(%rsi)
++	prefetcht1 0x380(%rsi)
++	prefetcht1 0x3C0(%rsi)
++	vmovdqu64 (%rsi), %zmm0
++	vmovdqu64 0x40(%rsi), %zmm1
++	vmovdqu64 0x80(%rsi), %zmm2
++	vmovdqu64 0xC0(%rsi), %zmm3
++	vmovntdq %zmm0, (%rdi)
++	vmovntdq %zmm1, 0x40(%rdi)
++	vmovntdq %zmm2, 0x80(%rdi)
++	vmovntdq %zmm3, 0xC0(%rdi)
++	sub	$256, %rdx
++	add	$256, %rsi
++	add	$256, %rdi
++	cmp	$256, %rdx
++	ja	L(gobble_256bytes_nt_loop)
++	sfence
++	vmovups	%zmm4, (%rax)
++	vmovups	%zmm5, 0x40(%rax)
++	jmp	L(check)
++
++L(preloop_large_bkw):
++	vmovups -0x80(%rcx), %zmm4
++	vmovups -0x40(%rcx), %zmm5
++
++/* Align end of destination for access with non-temporal stores.  */
++	mov	%r9, %r8
++	and	$-0x80, %r9
++	sub	%r9, %r8
++	sub	%r8, %rcx
++	sub	%r8, %rdx
++	add	%r9, %r8
++L(gobble_256bytes_nt_loop_bkw):
++	prefetcht1 -0x400(%rcx)
++	prefetcht1 -0x3C0(%rcx)
++	prefetcht1 -0x380(%rcx)
++	prefetcht1 -0x340(%rcx)
++	prefetcht1 -0x300(%rcx)
++	prefetcht1 -0x2C0(%rcx)
++	prefetcht1 -0x280(%rcx)
++	prefetcht1 -0x240(%rcx)
++	vmovdqu64 -0x100(%rcx), %zmm0
++	vmovdqu64 -0xC0(%rcx), %zmm1
++	vmovdqu64 -0x80(%rcx), %zmm2
++	vmovdqu64 -0x40(%rcx), %zmm3
++	vmovntdq %zmm0,	-0x100(%r9)
++	vmovntdq %zmm1,	-0xC0(%r9)
++	vmovntdq %zmm2,	-0x80(%r9)
++	vmovntdq %zmm3,	-0x40(%r9)
++	sub	$256, %rdx
++	sub	$256, %rcx
++	sub	$256, %r9
++	cmp	$256, %rdx
++	ja	L(gobble_256bytes_nt_loop_bkw)
++	sfence
++	vmovups	%zmm4, -0x80(%r8)
++	vmovups	%zmm5, -0x40(%r8)
++	jmp	L(check)
++END (MEMCPY)
++#endif
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy.S
+@@ -30,7 +30,15 @@
+ ENTRY(__new_memcpy)
+ 	.type	__new_memcpy, @gnu_indirect_function
+ 	LOAD_RTLD_GLOBAL_RO_RDX
+-	leaq	__memcpy_sse2(%rip), %rax
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	HAS_ARCH_FEATURE (AVX512F_Usable)
++	jz	1f
++	HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
++	jz	1f
++	leaq    __memcpy_avx512_no_vzeroupper(%rip), %rax
++	ret
++#endif
++1:	leaq	__memcpy_sse2(%rip), %rax
+ 	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	__memcpy_ssse3(%rip), %rax
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy_chk.S
+@@ -30,7 +30,15 @@
+ ENTRY(__memcpy_chk)
+ 	.type	__memcpy_chk, @gnu_indirect_function
+ 	LOAD_RTLD_GLOBAL_RO_RDX
+-	leaq	__memcpy_chk_sse2(%rip), %rax
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	HAS_ARCH_FEATURE (AVX512F_Usable)
++	jz      1f
++#	HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
++#	jz      1f
++	leaq    __memcpy_avx512_no_vzeroupper(%rip), %rax
++	ret
++#endif
++1:	leaq	__memcpy_chk_sse2(%rip), %rax
+ 	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	__memcpy_chk_ssse3(%rip), %rax
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove-avx512-no-vzeroupper.S
+@@ -0,0 +1,22 @@
++/* memmove optimized with AVX512 for KNL hardware.
++   Copyright (C) 2016 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define USE_AS_MEMMOVE
++#define MEMCPY		__memmove_avx512_no_vzeroupper
++#define MEMCPY_CHK	__memmove_chk_avx512_no_vzeroupper
++#include "memcpy-avx512-no-vzeroupper.S"
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memmove.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove.c
+@@ -35,6 +35,9 @@
+ extern __typeof (__redirect_memmove) __memmove_sse2 attribute_hidden;
+ extern __typeof (__redirect_memmove) __memmove_ssse3 attribute_hidden;
+ extern __typeof (__redirect_memmove) __memmove_ssse3_back attribute_hidden;
++# ifdef HAVE_AVX512_ASM_SUPPORT
++extern __typeof (__redirect_memmove) __memmove_avx512_no_vzeroupper attribute_hidden;
++# endif
+ #endif
+ 
+ #include "string/memmove.c"
+@@ -47,10 +50,16 @@ extern __typeof (__redirect_memmove) __m
+    ifunc symbol properly.  */
+ extern __typeof (__redirect_memmove) __libc_memmove;
+ libc_ifunc (__libc_memmove,
+-	    HAS_CPU_FEATURE (SSSE3)
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	    HAS_ARCH_FEATURE (AVX512F_Usable)
++	      && HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
++	    ? __memmove_avx512_no_vzeroupper
++	    :
++#endif
++	    (HAS_CPU_FEATURE (SSSE3)
+ 	    ? (HAS_ARCH_FEATURE (Fast_Copy_Backward)
+ 	       ? __memmove_ssse3_back : __memmove_ssse3)
+-	    : __memmove_sse2)
++	    : __memmove_sse2))
+ 
+ strong_alias (__libc_memmove, memmove)
+ 
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove_chk.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memmove_chk.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memmove_chk.c
+@@ -25,11 +25,20 @@
+ extern __typeof (__memmove_chk) __memmove_chk_sse2 attribute_hidden;
+ extern __typeof (__memmove_chk) __memmove_chk_ssse3 attribute_hidden;
+ extern __typeof (__memmove_chk) __memmove_chk_ssse3_back attribute_hidden;
++# ifdef HAVE_AVX512_ASM_SUPPORT
++extern __typeof (__memmove_chk) __memmove_chk_avx512_no_vzeroupper attribute_hidden;
++# endif
+ 
+ #include "debug/memmove_chk.c"
+ 
+ libc_ifunc (__memmove_chk,
+-	    HAS_CPU_FEATURE (SSSE3)
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	    HAS_ARCH_FEATURE (AVX512F_Usable)
++	      && HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
++	    ? __memmove_chk_avx512_no_vzeroupper
++	    :
++#endif
++	    (HAS_CPU_FEATURE (SSSE3)
+ 	    ? (HAS_ARCH_FEATURE (Fast_Copy_Backward)
+ 	       ? __memmove_chk_ssse3_back : __memmove_chk_ssse3)
+-	    : __memmove_chk_sse2);
++	    : __memmove_chk_sse2));
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy-avx512-no-vzeroupper.S
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy-avx512-no-vzeroupper.S
+@@ -0,0 +1,22 @@
++/* mempcpy optimized with AVX512 for KNL hardware.
++   Copyright (C) 2016 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#define USE_AS_MEMPCPY
++#define MEMCPY		__mempcpy_avx512_no_vzeroupper
++#define MEMCPY_CHK	__mempcpy_chk_avx512_no_vzeroupper
++#include "memcpy-avx512-no-vzeroupper.S"
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/mempcpy.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy.S
+@@ -28,7 +28,15 @@
+ ENTRY(__mempcpy)
+ 	.type	__mempcpy, @gnu_indirect_function
+ 	LOAD_RTLD_GLOBAL_RO_RDX
+-	leaq	__mempcpy_sse2(%rip), %rax
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	HAS_ARCH_FEATURE (AVX512F_Usable)
++	jz	1f
++	HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
++	jz	1f
++	leaq    __mempcpy_avx512_no_vzeroupper(%rip), %rax
++	ret
++#endif
++1:	leaq	__mempcpy_sse2(%rip), %rax
+ 	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	__mempcpy_ssse3(%rip), %rax
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/mempcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/mempcpy_chk.S
+@@ -30,7 +30,15 @@
+ ENTRY(__mempcpy_chk)
+ 	.type	__mempcpy_chk, @gnu_indirect_function
+ 	LOAD_RTLD_GLOBAL_RO_RDX
+-	leaq	__mempcpy_chk_sse2(%rip), %rax
++#ifdef HAVE_AVX512_ASM_SUPPORT
++	HAS_ARCH_FEATURE (AVX512F_Usable)
++	jz	1f
++	HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
++	jz	1f
++	leaq    __mempcpy_chk_avx512_no_vzeroupper(%rip), %rax
++	ret
++#endif
++1:	leaq	__mempcpy_chk_sse2(%rip), %rax
+ 	HAS_CPU_FEATURE (SSSE3)
+ 	jz	2f
+ 	leaq	__mempcpy_chk_ssse3(%rip), %rax
diff --git a/SOURCES/glibc-rh1298526-2.patch b/SOURCES/glibc-rh1298526-2.patch
new file mode 100644
index 0000000..51d0806
--- /dev/null
+++ b/SOURCES/glibc-rh1298526-2.patch
@@ -0,0 +1,25 @@
+commit 214a44f3949624623bd9f5ced82a47915259324e
+Author: Andrew Senkevich <andrew.senkevich@intel.com>
+Date:   Sat Jan 16 14:42:26 2016 +0300
+
+    Fixed typos in __memcpy_chk.
+
+        * sysdeps/x86_64/multiarch/memcpy_chk.S: Fixed typos.
+
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy_chk.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/memcpy_chk.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/memcpy_chk.S
+@@ -33,9 +33,9 @@ ENTRY(__memcpy_chk)
+ #ifdef HAVE_AVX512_ASM_SUPPORT
+ 	HAS_ARCH_FEATURE (AVX512F_Usable)
+ 	jz      1f
+-#	HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
+-#	jz      1f
+-	leaq    __memcpy_avx512_no_vzeroupper(%rip), %rax
++	HAS_ARCH_FEATURE (Prefer_No_VZEROUPPER)
++	jz      1f
++	leaq    __memcpy_chk_avx512_no_vzeroupper(%rip), %rax
+ 	ret
+ #endif
+ 1:	leaq	__memcpy_chk_sse2(%rip), %rax
diff --git a/SOURCES/glibc-rh1298526-3.patch b/SOURCES/glibc-rh1298526-3.patch
new file mode 100644
index 0000000..80b7577
--- /dev/null
+++ b/SOURCES/glibc-rh1298526-3.patch
@@ -0,0 +1,82 @@
+commit df782dc690775d93b0cc1076655a9b92b5a44ad0
+Author: Andrew Senkevich <andrew.senkevich@intel.com>
+Date:   Tue Jan 19 14:34:53 2016 +0300
+
+    Fixed build with assembler w/o AVX-512 support.
+
+        * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Fixed build with
+        assembler not supporting AVX-512.
+
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/multiarch/ifunc-impl-list.c
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c
+@@ -48,9 +48,11 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/memmove_chk.c.  */
+   IFUNC_IMPL (i, name, __memmove_chk,
++#ifdef HAVE_AVX512_ASM_SUPPORT
+ 	      IFUNC_IMPL_ADD (array, i, __memmove_chk,
+ 			      HAS_ARCH_FEATURE (AVX512F_Usable),
+ 			      __memmove_chk_avx512_no_vzeroupper)
++#endif
+ 	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_chk_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_CPU_FEATURE (SSSE3),
+@@ -60,9 +62,11 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/memmove.S.  */
+   IFUNC_IMPL (i, name, memmove,
++#ifdef HAVE_AVX512_ASM_SUPPORT
+ 	      IFUNC_IMPL_ADD (array, i, memmove,
+ 			      HAS_ARCH_FEATURE (AVX512F_Usable),
+ 			      __memmove_avx512_no_vzeroupper)
++#endif
+ 	      IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3),
+ 			      __memmove_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, memmove, HAS_CPU_FEATURE (SSSE3),
+@@ -269,9 +273,11 @@ __libc_ifunc_impl_list (const char *name
+ #ifdef SHARED
+   /* Support sysdeps/x86_64/multiarch/memcpy_chk.S.  */
+   IFUNC_IMPL (i, name, __memcpy_chk,
++#ifdef HAVE_AVX512_ASM_SUPPORT
+ 	      IFUNC_IMPL_ADD (array, i, __memcpy_chk,
+ 			      HAS_ARCH_FEATURE (AVX512F_Usable),
+ 			      __memcpy_chk_avx512_no_vzeroupper)
++#endif
+ 	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_chk_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_CPU_FEATURE (SSSE3),
+@@ -285,16 +291,20 @@ __libc_ifunc_impl_list (const char *name
+ 			      __memcpy_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __memcpy_ssse3)
++#ifdef HAVE_AVX512_ASM_SUPPORT
+ 	      IFUNC_IMPL_ADD (array, i, memcpy,
+ 			      HAS_ARCH_FEATURE (AVX512F_Usable),
+ 			      __memcpy_avx512_no_vzeroupper)
++#endif
+ 	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_sse2))
+ 
+   /* Support sysdeps/x86_64/multiarch/mempcpy_chk.S.  */
+   IFUNC_IMPL (i, name, __mempcpy_chk,
++#ifdef HAVE_AVX512_ASM_SUPPORT
+ 	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk,
+ 			      HAS_ARCH_FEATURE (AVX512F_Usable),
+ 			      __mempcpy_chk_avx512_no_vzeroupper)
++#endif
+ 	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_chk_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_CPU_FEATURE (SSSE3),
+@@ -304,9 +314,11 @@ __libc_ifunc_impl_list (const char *name
+ 
+   /* Support sysdeps/x86_64/multiarch/mempcpy.S.  */
+   IFUNC_IMPL (i, name, mempcpy,
++#ifdef HAVE_AVX512_ASM_SUPPORT
+ 	      IFUNC_IMPL_ADD (array, i, mempcpy,
+ 			      HAS_ARCH_FEATURE (AVX512F_Usable),
+ 			      __mempcpy_avx512_no_vzeroupper)
++#endif
+ 	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3),
+ 			      __mempcpy_ssse3_back)
+ 	      IFUNC_IMPL_ADD (array, i, mempcpy, HAS_CPU_FEATURE (SSSE3),
diff --git a/SOURCES/glibc-rh1298526-4.patch b/SOURCES/glibc-rh1298526-4.patch
new file mode 100644
index 0000000..a0c92f1
--- /dev/null
+++ b/SOURCES/glibc-rh1298526-4.patch
@@ -0,0 +1,61 @@
+Allows testing of AVX512 changes in a chroot (normally as root)
+without build issues.
+
+commit d7e06450b9d730d7b62ba52f611585810fa902df
+Author: Carlos O'Donell <carlos@redhat.com>
+Date:   Tue Jul 16 17:55:43 2013 -0400
+
+    BZ #15711: Avoid circular dependency for syscall.h
+    
+    The generated header is compiled with `-ffreestanding' to avoid any
+    circular dependencies against the installed implementation headers.
+    Such a dependency would require the implementation header to be
+    installed before the generated header could be built (See bug 15711).
+    In current practice the generated header dependencies do not include
+    any of the implementation headers removed by the use of `-ffreestanding'.
+    
+    ---
+    
+    2013-07-15  Carlos O'Donell  <carlos@redhat.com>
+    
+        [BZ #15711]
+        * sysdeps/unix/sysv/linux/Makefile ($(objpfx)bits/syscall%h):
+        Avoid system header dependency with -ffreestanding.
+        ($(objpfx)bits/syscall%d): Likewise.
+
+diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
+index f580635..94916a2 100644
+--- a/sysdeps/unix/sysv/linux/Makefile
++++ b/sysdeps/unix/sysv/linux/Makefile
+@@ -50,6 +50,13 @@ tests += tst-clone
+ # be the condition for those options to use in a C #if condition.
+ # abi-includes may be defined to a list of headers to include
+ # in the generated header, if the default does not suffice.
++#
++# The generated header is compiled with `-ffreestanding' to avoid any
++# circular dependencies against the installed implementation headers.
++# Such a dependency would require the implementation header to be
++# installed before the generated header could be built (See bug 15711).
++# In current practice the generated header dependencies do not include
++# any of the implementation headers removed by the use of `-ffreestanding'.
+ 
+ $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/syscall.h
+ 	$(make-target-directory)
+@@ -64,7 +71,7 @@ $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/
+ 	 echo ''; \
+ 	 $(if $(abi-variants), \
+ 	 $(foreach v,$(abi-variants),\
+-	 $(CC) -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
++	 $(CC) -ffreestanding -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
+ 	       -x c $(sysincludes) $< $(abi-$(v)-options) \
+ 	       -D_LIBC -dM | \
+ 	 sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
+@@ -75,7 +82,7 @@ $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/
+ 	 $(if $(abi-$(v)-condition),echo '#endif';) \
+ 	 rm -f $(@:.d=.h).new$(v); \
+ 	 ), \
+-	 $(CC) -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
++	 $(CC) -ffreestanding -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
+ 	       -x c $(sysincludes) $< \
+ 	       -D_LIBC -dM | \
+ 	 sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
diff --git a/SOURCES/glibc-rh1302086-1.patch b/SOURCES/glibc-rh1302086-1.patch
new file mode 100644
index 0000000..2ed2fdc
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-1.patch
@@ -0,0 +1,35 @@
+commit 196f456b842ee96e1bf1e5ae6ed21ba427dee3f3
+Author: Marcus Shawcroft <marcus.shawcroft@linaro.org>
+Date:   Tue Jan 7 16:16:35 2014 +0000
+
+    [AArch64] Fix FP_ROUNDMODE.
+    
+    [BZ #16387] Fix FP_ROUNDMODE to extract the correct bits from FPCR.
+
+diff --git a/ports/sysdeps/aarch64/fpu/fpu_control.h b/ports/sysdeps/aarch64/fpu/fpu_control.h
+index 79ab5fb..6a265e8 100644
+--- a/ports/sysdeps/aarch64/fpu/fpu_control.h
++++ b/ports/sysdeps/aarch64/fpu/fpu_control.h
+@@ -59,6 +59,9 @@
+                    E E D D
+                        E E
+  */
++
++#define _FPU_FPCR_RM_MASK  0xc00000
++
+ #define _FPU_FPCR_MASK_IXE 0x1000
+ #define _FPU_FPCR_MASK_UFE 0x0800
+ #define _FPU_FPCR_MASK_OFE 0x0400
+diff --git a/ports/sysdeps/aarch64/soft-fp/sfp-machine.h b/ports/sysdeps/aarch64/soft-fp/sfp-machine.h
+index d21d00a..9bb94e5 100644
+--- a/ports/sysdeps/aarch64/soft-fp/sfp-machine.h
++++ b/ports/sysdeps/aarch64/soft-fp/sfp-machine.h
+@@ -47,7 +47,7 @@
+ 
+ #define _FP_DECL_EX		fpu_control_t _fcw
+ 
+-#define FP_ROUNDMODE		(_fcw & 0x3)
++#define FP_ROUNDMODE		(_fcw & _FPU_FPCR_RM_MASK)
+ 
+ #define FP_RND_NEAREST		FE_TONEAREST
+ #define FP_RND_ZERO		FE_TOWARDZERO
diff --git a/SOURCES/glibc-rh1302086-10.patch b/SOURCES/glibc-rh1302086-10.patch
new file mode 100644
index 0000000..f466f41
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-10.patch
@@ -0,0 +1,205 @@
+commit e6d90d675d4cae810be76a5ff41b8ae8bd6bc914
+Author: Wilco Dijkstra <wdijkstr@arm.com>
+Date:   Mon Jun 23 17:15:41 2014 +0100
+
+    Add generic HAVE_RM_CTX implementation
+    
+    This patch adds a generic implementation of HAVE_RM_CTX using standard
+    fenv calls. As a result math functions using SET_RESTORE_ROUND* macros
+    do not suffer from a large slowdown on targets which do not implement
+    optimized libc_fe*_ctx inline functions. Most of the libc_fe* inline
+    functions are now unused and could be removed in the future (there are
+    a few math functions left which use a mixture of standard fenv calls
+    and libc_fe* inline functions - they could be updated to use
+    SET_RESTORE_ROUND or improved to avoid expensive fenv manipulations
+    across just a few FP instructions).
+    
+    libc_feholdsetround*_noex_ctx is added to enable better optimization of
+    SET_RESTORE_ROUND_NOEX* implementations.
+    
+    Performance measurements on ARM and x86 of sin() show significant gains
+    over the current default, fairly close to a highly optimized fenv_private:
+    
+                            ARM   x86
+    no fenv_private      : 100%  100%
+    generic HAVE_RM_CTX  : 250%  350%
+    fenv_private (CTX)   : 250%  450%
+    
+    2014-06-23  Will Newton  <will.newton@linaro.org>
+    	    Wilco  <wdijkstr@arm.com>
+    
+    	* sysdeps/generic/math_private.h: Add generic HAVE_RM_CTX
+    	implementation.  Include get-rounding-mode.h.
+    	[!HAVE_RM_CTX]: Define HAVE_RM_CTX to zero.
+    	[!libc_feholdsetround_noex_ctx]: Define
+    	libc_feholdsetround_noex_ctx.
+    	[!libc_feholdsetround_noexf_ctx]: Define
+    	libc_feholdsetround_noexf_ctx.
+    	[!libc_feholdsetround_noexl_ctx]: Define
+    	libc_feholdsetround_noexl_ctx.
+    	(libc_feholdsetround_ctx): New function.
+    	(libc_feresetround_ctx): New function.
+    	(libc_feholdsetround_noex_ctx): New function.
+    	(libc_feresetround_noex_ctx): New function.
+
+diff --git a/sysdeps/generic/math_private.h b/sysdeps/generic/math_private.h
+index 9b881a3..94c1e4a 100644
+--- a/sysdeps/generic/math_private.h
++++ b/sysdeps/generic/math_private.h
+@@ -20,6 +20,7 @@
+ #include <stdint.h>
+ #include <sys/types.h>
+ #include <fenv.h>
++#include <get-rounding-mode.h>
+ 
+ /* The original fdlibm code used statements like:
+ 	n0 = ((*(int*)&one)>>29)^1;		* index of high word *
+@@ -551,12 +552,26 @@ default_libc_feupdateenv_test (fenv_t *e, int ex)
+ # define libc_feresetround_noexl libc_fesetenvl
+ #endif
+ 
++#ifndef HAVE_RM_CTX
++# define HAVE_RM_CTX 0
++#endif
++
+ #if HAVE_RM_CTX
+ /* Set/Restore Rounding Modes only when necessary.  If defined, these functions
+    set/restore floating point state only if the state needed within the lexical
+    block is different from the current state.  This saves a lot of time when
+    the floating point unit is much slower than the fixed point units.  */
+ 
++# ifndef libc_feholdsetround_noex_ctx
++#   define libc_feholdsetround_noex_ctx  libc_feholdsetround_ctx
++# endif
++# ifndef libc_feholdsetround_noexf_ctx
++#   define libc_feholdsetround_noexf_ctx libc_feholdsetroundf_ctx
++# endif
++# ifndef libc_feholdsetround_noexl_ctx
++#   define libc_feholdsetround_noexl_ctx libc_feholdsetroundl_ctx
++# endif
++
+ # ifndef libc_feresetround_noex_ctx
+ #   define libc_feresetround_noex_ctx  libc_fesetenv_ctx
+ # endif
+@@ -567,24 +582,80 @@ default_libc_feupdateenv_test (fenv_t *e, int ex)
+ #   define libc_feresetround_noexl_ctx libc_fesetenvl_ctx
+ # endif
+ 
+-# ifndef libc_feholdsetround_53bit_ctx
+-#   define libc_feholdsetround_53bit_ctx libc_feholdsetround_ctx
+-# endif
++#else
+ 
+-# ifndef libc_feresetround_53bit_ctx
+-#   define libc_feresetround_53bit_ctx libc_feresetround_ctx
+-# endif
++/* Default implementation using standard fenv functions.
++   Avoid unnecessary rounding mode changes by first checking the
++   current rounding mode.  Note the use of __glibc_unlikely is
++   important for performance.  */
+ 
+-# define SET_RESTORE_ROUND_GENERIC(RM,ROUNDFUNC,CLEANUPFUNC) \
+-  struct rm_ctx ctx __attribute__((cleanup(CLEANUPFUNC ## _ctx)));	      \
+-  ROUNDFUNC ## _ctx (&ctx, (RM))
+-#else
+-# define SET_RESTORE_ROUND_GENERIC(RM, ROUNDFUNC, CLEANUPFUNC) \
+-  fenv_t __libc_save_rm __attribute__((cleanup(CLEANUPFUNC)));	\
+-  ROUNDFUNC (&__libc_save_rm, (RM))
++static __always_inline void
++libc_feholdsetround_ctx (struct rm_ctx *ctx, int round)
++{
++  ctx->updated_status = false;
++
++  /* Update rounding mode only if different.  */
++  if (__glibc_unlikely (round != get_rounding_mode ()))
++    {
++      ctx->updated_status = true;
++      fegetenv (&ctx->env);
++      fesetround (round);
++    }
++}
++
++static __always_inline void
++libc_feresetround_ctx (struct rm_ctx *ctx)
++{
++  /* Restore the rounding mode if updated.  */
++  if (__glibc_unlikely (ctx->updated_status))
++    feupdateenv (&ctx->env);
++}
++
++static __always_inline void
++libc_feholdsetround_noex_ctx (struct rm_ctx *ctx, int round)
++{
++  /* Save exception flags and rounding mode.  */
++  fegetenv (&ctx->env);
++
++  /* Update rounding mode only if different.  */
++  if (__glibc_unlikely (round != get_rounding_mode ()))
++    fesetround (round);
++}
++
++static __always_inline void
++libc_feresetround_noex_ctx (struct rm_ctx *ctx)
++{
++  /* Restore exception flags and rounding mode.  */
++  fesetenv (&ctx->env);
++}
++
++# define libc_feholdsetroundf_ctx libc_feholdsetround_ctx
++# define libc_feholdsetroundl_ctx libc_feholdsetround_ctx
++# define libc_feresetroundf_ctx   libc_feresetround_ctx
++# define libc_feresetroundl_ctx   libc_feresetround_ctx
++
++# define libc_feholdsetround_noexf_ctx libc_feholdsetround_noex_ctx
++# define libc_feholdsetround_noexl_ctx libc_feholdsetround_noex_ctx
++# define libc_feresetround_noexf_ctx   libc_feresetround_noex_ctx
++# define libc_feresetround_noexl_ctx   libc_feresetround_noex_ctx
++
++#endif
++
++#ifndef libc_feholdsetround_53bit_ctx
++#  define libc_feholdsetround_53bit_ctx libc_feholdsetround_ctx
++#endif
++#ifndef libc_feresetround_53bit_ctx
++#  define libc_feresetround_53bit_ctx libc_feresetround_ctx
+ #endif
+ 
+-/* Save and restore the rounding mode within a lexical block.  */
++#define SET_RESTORE_ROUND_GENERIC(RM,ROUNDFUNC,CLEANUPFUNC) \
++  struct rm_ctx ctx __attribute__((cleanup (CLEANUPFUNC ## _ctx))); \
++  ROUNDFUNC ## _ctx (&ctx, (RM))
++
++/* Set the rounding mode within a lexical block.  Restore the rounding mode to
++   the value at the start of the block.  The exception mode must be preserved.
++   Exceptions raised within the block must be set in the exception flags.
++   Non-stop mode may be enabled inside the block.  */
+ 
+ #define SET_RESTORE_ROUND(RM) \
+   SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround, libc_feresetround)
+@@ -593,15 +664,21 @@ default_libc_feupdateenv_test (fenv_t *e, int ex)
+ #define SET_RESTORE_ROUNDL(RM) \
+   SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundl, libc_feresetroundl)
+ 
+-/* Save and restore the rounding mode within a lexical block, and also
+-   the set of exceptions raised within the block may be discarded.  */
++/* Set the rounding mode within a lexical block.  Restore the rounding mode to
++   the value at the start of the block.  The exception mode must be preserved.
++   Exceptions raised within the block must be discarded, and exception flags
++   are restored to the value at the start of the block.
++   Non-stop mode may be enabled inside the block.  */
+ 
+ #define SET_RESTORE_ROUND_NOEX(RM) \
+-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround, libc_feresetround_noex)
++  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_noex, \
++			     libc_feresetround_noex)
+ #define SET_RESTORE_ROUND_NOEXF(RM) \
+-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundf, libc_feresetround_noexf)
++  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_noexf, \
++			     libc_feresetround_noexf)
+ #define SET_RESTORE_ROUND_NOEXL(RM) \
+-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundl, libc_feresetround_noexl)
++  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_noexl, \
++			     libc_feresetround_noexl)
+ 
+ /* Like SET_RESTORE_ROUND, but also set rounding precision to 53 bits.  */
+ #define SET_RESTORE_ROUND_53BIT(RM) \
diff --git a/SOURCES/glibc-rh1302086-11.patch b/SOURCES/glibc-rh1302086-11.patch
new file mode 100644
index 0000000..be5596e
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-11.patch
@@ -0,0 +1,61 @@
+commit 656b84c2ef525e3b69802c9057c5897e327b0332
+Author: Wilco Dijkstra <wdijkstr@arm.com>
+Date:   Thu Aug 7 16:29:55 2014 +0000
+
+    This patch adds new function libc_feholdsetround_noex_aarch64_ctx, enabling
+    further optimization. libc_feholdsetround_aarch64_ctx now only needs to
+    read the FPCR in the typical case, avoiding a redundant FPSR read.
+    Performance results show a good improvement (5-10% on sin()) on cores with
+    expensive FPCR/FPSR instructions.
+
+diff --git a/ports/sysdeps/aarch64/fpu/math_private.h b/ports/sysdeps/aarch64/fpu/math_private.h
+index 023c9d0..b13c030 100644
+--- a/ports/sysdeps/aarch64/fpu/math_private.h
++++ b/ports/sysdeps/aarch64/fpu/math_private.h
+@@ -228,12 +228,9 @@ static __always_inline void
+ libc_feholdsetround_aarch64_ctx (struct rm_ctx *ctx, int r)
+ {
+   fpu_control_t fpcr;
+-  fpu_fpsr_t fpsr;
+   int round;
+ 
+   _FPU_GETCW (fpcr);
+-  _FPU_GETFPSR (fpsr);
+-  ctx->env.__fpsr = fpsr;
+ 
+   /* Check whether rounding modes are different.  */
+   round = (fpcr ^ r) & _FPU_FPCR_RM_MASK;
+@@ -264,6 +261,33 @@ libc_feresetround_aarch64_ctx (struct rm_ctx *ctx)
+ #define libc_feresetroundl_ctx		libc_feresetround_aarch64_ctx
+ 
+ static __always_inline void
++libc_feholdsetround_noex_aarch64_ctx (struct rm_ctx *ctx, int r)
++{
++  fpu_control_t fpcr;
++  fpu_fpsr_t fpsr;
++  int round;
++
++  _FPU_GETCW (fpcr);
++  _FPU_GETFPSR (fpsr);
++  ctx->env.__fpsr = fpsr;
++
++  /* Check whether rounding modes are different.  */
++  round = (fpcr ^ r) & _FPU_FPCR_RM_MASK;
++  ctx->updated_status = round != 0;
++
++  /* Set the rounding mode if changed.  */
++  if (__glibc_unlikely (round != 0))
++    {
++      ctx->env.__fpcr = fpcr;
++      _FPU_SETCW (fpcr ^ round);
++    }
++}
++
++#define libc_feholdsetround_noex_ctx	libc_feholdsetround_noex_aarch64_ctx
++#define libc_feholdsetround_noexf_ctx	libc_feholdsetround_noex_aarch64_ctx
++#define libc_feholdsetround_noexl_ctx	libc_feholdsetround_noex_aarch64_ctx
++
++static __always_inline void
+ libc_feresetround_noex_aarch64_ctx (struct rm_ctx *ctx)
+ {
+   /* Restore the rounding mode if updated.  */
diff --git a/SOURCES/glibc-rh1302086-2.patch b/SOURCES/glibc-rh1302086-2.patch
new file mode 100644
index 0000000..1618aad
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-2.patch
@@ -0,0 +1,226 @@
+commit 7e0b6763e96ef9706ea9ecc7fad83fc97b837913
+Author: Ian Bolton <ian.bolton@arm.com>
+Date:   Wed Apr 16 14:41:52 2014 +0000
+
+    [AArch64] Provide initial implementation of math_private.h.
+
+diff --git a/ports/sysdeps/aarch64/fpu/math_private.h b/ports/sysdeps/aarch64/fpu/math_private.h
+new file mode 100644
+index 0000000..dbf203d
+--- /dev/null
++++ b/ports/sysdeps/aarch64/fpu/math_private.h
+@@ -0,0 +1,214 @@
++/* Private floating point rounding and exceptions handling.  AArch64 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef AARCH64_MATH_PRIVATE_H
++#define AARCH64_MATH_PRIVATE_H 1
++
++#include <fenv.h>
++#include <fpu_control.h>
++
++static __always_inline void
++libc_feholdexcept_aarch64 (fenv_t *envp)
++{
++  fpu_control_t fpcr, new_fpcr, fpsr, new_fpsr;
++
++  _FPU_GETCW (fpcr);
++  _FPU_GETFPSR (fpsr);
++  envp->__fpcr = fpcr;
++  envp->__fpsr = fpsr;
++
++  /* Clear exception flags and set all exceptions to non-stop.  */
++  new_fpcr = fpcr & ~(FE_ALL_EXCEPT << FE_EXCEPT_SHIFT);
++  new_fpsr = fpsr & ~FE_ALL_EXCEPT;
++
++  if (__glibc_unlikely (new_fpcr != fpcr))
++    _FPU_SETCW (new_fpcr);
++
++  if (new_fpsr != fpsr)
++    _FPU_SETFPSR (new_fpsr);
++}
++
++#define libc_feholdexcept  libc_feholdexcept_aarch64
++#define libc_feholdexceptf libc_feholdexcept_aarch64
++#define libc_feholdexceptl libc_feholdexcept_aarch64
++
++static __always_inline void
++libc_fesetround_aarch64 (int round)
++{
++  fpu_control_t fpcr;
++
++  _FPU_GETCW (fpcr);
++
++  /* Check whether rounding modes are different.  */
++  round = (fpcr ^ round) & FE_TOWARDZERO;
++
++  /* Set new rounding mode if different.  */
++  if (__glibc_unlikely (round != 0))
++    _FPU_SETCW (fpcr ^ round);
++}
++
++#define libc_fesetround  libc_fesetround_aarch64
++#define libc_fesetroundf libc_fesetround_aarch64
++#define libc_fesetroundl libc_fesetround_aarch64
++
++static __always_inline void
++libc_feholdexcept_setround_aarch64 (fenv_t *envp, int round)
++{
++  fpu_control_t fpcr, new_fpcr, fpsr, new_fpsr;
++
++  _FPU_GETCW (fpcr);
++  _FPU_GETFPSR (fpsr);
++  envp->__fpcr = fpcr;
++  envp->__fpsr = fpsr;
++
++  /* Clear exception flags, set all exceptions to non-stop,
++     and set new rounding mode.  */
++  new_fpcr = fpcr & ~((FE_ALL_EXCEPT << FE_EXCEPT_SHIFT) | FE_TOWARDZERO);
++  new_fpcr |= round;
++  new_fpsr = fpsr & ~FE_ALL_EXCEPT;
++
++  if (__glibc_unlikely (new_fpcr != fpcr))
++    _FPU_SETCW (new_fpcr);
++
++  if (new_fpsr != fpsr)
++    _FPU_SETFPSR (new_fpsr);
++}
++
++#define libc_feholdexcept_setround  libc_feholdexcept_setround_aarch64
++#define libc_feholdexcept_setroundf libc_feholdexcept_setround_aarch64
++#define libc_feholdexcept_setroundl libc_feholdexcept_setround_aarch64
++
++static __always_inline int
++libc_fetestexcept_aarch64 (int ex)
++{
++  fpu_control_t fpsr;
++
++  _FPU_GETFPSR (fpsr);
++  return fpsr & ex & FE_ALL_EXCEPT;
++}
++
++#define libc_fetestexcept  libc_fetestexcept_aarch64
++#define libc_fetestexceptf libc_fetestexcept_aarch64
++#define libc_fetestexceptl libc_fetestexcept_aarch64
++
++static __always_inline void
++libc_fesetenv_aarch64 (const fenv_t *envp)
++{
++  fpu_control_t fpcr, new_fpcr;
++
++  _FPU_GETCW (fpcr);
++  new_fpcr = envp->__fpcr;
++
++  if (__glibc_unlikely (fpcr != new_fpcr))
++    _FPU_SETCW (new_fpcr);
++
++  _FPU_SETFPSR (envp->__fpsr);
++}
++
++#define libc_fesetenv  libc_fesetenv_aarch64
++#define libc_fesetenvf libc_fesetenv_aarch64
++#define libc_fesetenvl libc_fesetenv_aarch64
++#define libc_feresetround_noex  libc_fesetenv_aarch64
++#define libc_feresetround_noexf libc_fesetenv_aarch64
++#define libc_feresetround_noexl libc_fesetenv_aarch64
++
++static __always_inline int
++libc_feupdateenv_test_aarch64 (const fenv_t *envp, int ex)
++{
++  fpu_control_t fpcr, new_fpcr, fpsr, new_fpsr;
++  int excepts;
++
++  _FPU_GETCW (fpcr);
++  _FPU_GETFPSR (fpsr);
++
++  /* Merge current exception flags with the saved fenv.  */
++  excepts = fpsr & FE_ALL_EXCEPT;
++  new_fpcr = envp->__fpcr;
++  new_fpsr = envp->__fpsr | excepts;
++
++  if (__glibc_unlikely (fpcr != new_fpcr))
++    _FPU_SETCW (new_fpcr);
++
++  if (fpsr != new_fpsr)
++    _FPU_SETFPSR (new_fpsr);
++
++  /* Raise the exceptions if enabled in the new FP state.  */
++  if (__glibc_unlikely (excepts & (new_fpcr >> FE_EXCEPT_SHIFT)))
++    feraiseexcept (excepts);
++
++  return excepts & ex;
++}
++
++#define libc_feupdateenv_test  libc_feupdateenv_test_aarch64
++#define libc_feupdateenv_testf libc_feupdateenv_test_aarch64
++#define libc_feupdateenv_testl libc_feupdateenv_test_aarch64
++
++static __always_inline void
++libc_feupdateenv_aarch64 (const fenv_t *envp)
++{
++  libc_feupdateenv_test_aarch64 (envp, 0);
++}
++
++#define libc_feupdateenv  libc_feupdateenv_aarch64
++#define libc_feupdateenvf libc_feupdateenv_aarch64
++#define libc_feupdateenvl libc_feupdateenv_aarch64
++
++static __always_inline void
++libc_feholdsetround_aarch64 (fenv_t *envp, int round)
++{
++  fpu_control_t fpcr, fpsr;
++
++  _FPU_GETCW (fpcr);
++  _FPU_GETFPSR (fpsr);
++  envp->__fpcr = fpcr;
++  envp->__fpsr = fpsr;
++
++  /* Check whether rounding modes are different.  */
++  round = (fpcr ^ round) & FE_TOWARDZERO;
++
++  /* Set new rounding mode if different.  */
++  if (__glibc_unlikely (round != 0))
++    _FPU_SETCW (fpcr ^ round);
++}
++
++#define libc_feholdsetround  libc_feholdsetround_aarch64
++#define libc_feholdsetroundf libc_feholdsetround_aarch64
++#define libc_feholdsetroundl libc_feholdsetround_aarch64
++
++static __always_inline void
++libc_feresetround_aarch64 (fenv_t *envp)
++{
++  fpu_control_t fpcr, round;
++
++  _FPU_GETCW (fpcr);
++
++  /* Check whether rounding modes are different.  */
++  round = (envp->__fpcr ^ fpcr) & FE_TOWARDZERO;
++
++  /* Restore the rounding mode if it was changed.  */
++  if (__glibc_unlikely (round != 0))
++    _FPU_SETCW (fpcr ^ round);
++}
++
++#define libc_feresetround  libc_feresetround_aarch64
++#define libc_feresetroundf libc_feresetround_aarch64
++#define libc_feresetroundl libc_feresetround_aarch64
++
++#include_next <math_private.h>
++
++#endif
diff --git a/SOURCES/glibc-rh1302086-3.patch b/SOURCES/glibc-rh1302086-3.patch
new file mode 100644
index 0000000..ef5a995
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-3.patch
@@ -0,0 +1,72 @@
+commit bc93ab2946efe008bb0ce2d4d3c212bd01384fca
+Author: Ian Bolton <ian.bolton@arm.com>
+Date:   Wed Apr 16 23:41:04 2014 +0100
+
+    [AArch64] Define HAVE_RM_CTX and related hooks.
+
+diff --git a/ports/sysdeps/aarch64/fpu/math_private.h b/ports/sysdeps/aarch64/fpu/math_private.h
+index dbf203d..7424952 100644
+--- a/ports/sysdeps/aarch64/fpu/math_private.h
++++ b/ports/sysdeps/aarch64/fpu/math_private.h
+@@ -209,6 +209,61 @@ libc_feresetround_aarch64 (fenv_t *envp)
+ #define libc_feresetroundf libc_feresetround_aarch64
+ #define libc_feresetroundl libc_feresetround_aarch64
+ 
++/* We have support for rounding mode context.  */
++#define HAVE_RM_CTX 1
++
++static __always_inline void
++libc_feholdsetround_aarch64_ctx (struct rm_ctx *ctx, int r)
++{
++  fpu_control_t fpcr, fpsr, round;
++
++  _FPU_GETCW (fpcr);
++  _FPU_GETFPSR (fpsr);
++  ctx->env.__fpsr = fpsr;
++
++  /* Check whether rounding modes are different.  */
++  round = (fpcr ^ r) & FE_TOWARDZERO;
++  ctx->updated_status = round != 0;
++
++  /* Set the rounding mode if changed.  */
++  if (__glibc_unlikely (round != 0))
++    {
++      ctx->env.__fpcr = fpcr;
++      _FPU_SETCW (fpcr ^ round);
++    }
++}
++
++#define libc_feholdsetround_ctx		libc_feholdsetround_aarch64_ctx
++#define libc_feholdsetroundf_ctx	libc_feholdsetround_aarch64_ctx
++#define libc_feholdsetroundl_ctx	libc_feholdsetround_aarch64_ctx
++
++static __always_inline void
++libc_feresetround_aarch64_ctx (struct rm_ctx *ctx)
++{
++  /* Restore the rounding mode if updated.  */
++  if (__glibc_unlikely (ctx->updated_status))
++    _FPU_SETCW (ctx->env.__fpcr);
++}
++
++#define libc_feresetround_ctx		libc_feresetround_aarch64_ctx
++#define libc_feresetroundf_ctx		libc_feresetround_aarch64_ctx
++#define libc_feresetroundl_ctx		libc_feresetround_aarch64_ctx
++
++static __always_inline void
++libc_feresetround_noex_aarch64_ctx (struct rm_ctx *ctx)
++{
++  /* Restore the rounding mode if updated.  */
++  if (__glibc_unlikely (ctx->updated_status))
++    _FPU_SETCW (ctx->env.__fpcr);
++
++  /* Write new FPSR to restore exception flags.  */
++  _FPU_SETFPSR (ctx->env.__fpsr);
++}
++
++#define libc_feresetround_noex_ctx	libc_feresetround_noex_aarch64_ctx
++#define libc_feresetround_noexf_ctx	libc_feresetround_noex_aarch64_ctx
++#define libc_feresetround_noexl_ctx	libc_feresetround_noex_aarch64_ctx
++
+ #include_next <math_private.h>
+ 
+ #endif
diff --git a/SOURCES/glibc-rh1302086-4.patch b/SOURCES/glibc-rh1302086-4.patch
new file mode 100644
index 0000000..01acc8c
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-4.patch
@@ -0,0 +1,34 @@
+commit 39e6cd8d643779188fd43d9e2d5ed4e47a64d924
+Author: Ian Bolton <ian.bolton@arm.com>
+Date:   Thu Apr 17 15:31:01 2014 +0000
+
+    Add fenv test support for AArch64.
+
+diff --git a/ports/sysdeps/aarch64/math-tests.h b/ports/sysdeps/aarch64/math-tests.h
+new file mode 100644
+index 0000000..6a0b898
+--- /dev/null
++++ b/ports/sysdeps/aarch64/math-tests.h
+@@ -0,0 +1,22 @@
++/* Configuration for math tests.  AArch64 version.
++   Copyright (C) 2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* Trapping exceptions are optional on AArch64.  */
++#define EXCEPTION_ENABLE_SUPPORTED(EXCEPT)	((EXCEPT) == 0)
++
++#include_next <math-tests.h>
diff --git a/SOURCES/glibc-rh1302086-5.patch b/SOURCES/glibc-rh1302086-5.patch
new file mode 100644
index 0000000..5332152
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-5.patch
@@ -0,0 +1,229 @@
+commit e5e0d9a4f632735cf3bb440eecb5caee5eea44c1
+Author: Ian Bolton <ian.bolton@arm.com>
+Date:   Thu Apr 24 07:15:33 2014 +0100
+
+    [AArch64] Suppress unnecessary FPSR and FPCR writes.
+
+diff --git a/ports/sysdeps/aarch64/fpu/fclrexcpt.c b/ports/sysdeps/aarch64/fpu/fclrexcpt.c
+index 531269f..b24f0ff 100644
+--- a/ports/sysdeps/aarch64/fpu/fclrexcpt.c
++++ b/ports/sysdeps/aarch64/fpu/fclrexcpt.c
+@@ -23,13 +23,15 @@ int
+ feclearexcept (int excepts)
+ {
+   fpu_fpsr_t fpsr;
++  fpu_fpsr_t fpsr_new;
+ 
+   excepts &= FE_ALL_EXCEPT;
+ 
+   _FPU_GETFPSR (fpsr);
+-  fpsr = (fpsr & ~FE_ALL_EXCEPT) | (fpsr & FE_ALL_EXCEPT & ~excepts);
++  fpsr_new = (fpsr & ~FE_ALL_EXCEPT) | (fpsr & FE_ALL_EXCEPT & ~excepts);
+ 
+-  _FPU_SETFPSR (fpsr);
++  if (fpsr != fpsr_new)
++    _FPU_SETFPSR (fpsr_new);
+ 
+   return 0;
+ }
+diff --git a/ports/sysdeps/aarch64/fpu/fedisblxcpt.c b/ports/sysdeps/aarch64/fpu/fedisblxcpt.c
+index 719d52f..c43335c 100644
+--- a/ports/sysdeps/aarch64/fpu/fedisblxcpt.c
++++ b/ports/sysdeps/aarch64/fpu/fedisblxcpt.c
+@@ -23,6 +23,7 @@ int
+ fedisableexcept (int excepts)
+ {
+   fpu_control_t fpcr;
++  fpu_control_t fpcr_new;
+   int original_excepts;
+ 
+   _FPU_GETCW (fpcr);
+@@ -31,9 +32,10 @@ fedisableexcept (int excepts)
+ 
+   excepts &= FE_ALL_EXCEPT;
+ 
+-  fpcr &= ~(excepts << FE_EXCEPT_SHIFT);
++  fpcr_new = fpcr & ~(excepts << FE_EXCEPT_SHIFT);
+ 
+-  _FPU_SETCW (fpcr);
++  if (fpcr != fpcr_new)
++    _FPU_SETCW (fpcr_new);
+ 
+   return original_excepts;
+ }
+diff --git a/ports/sysdeps/aarch64/fpu/feenablxcpt.c b/ports/sysdeps/aarch64/fpu/feenablxcpt.c
+index 07a4bbb..70e413c 100644
+--- a/ports/sysdeps/aarch64/fpu/feenablxcpt.c
++++ b/ports/sysdeps/aarch64/fpu/feenablxcpt.c
+@@ -23,6 +23,7 @@ int
+ feenableexcept (int excepts)
+ {
+   fpu_control_t fpcr;
++  fpu_control_t fpcr_new;
+   int original_excepts;
+ 
+   _FPU_GETCW (fpcr);
+@@ -31,9 +32,10 @@ feenableexcept (int excepts)
+ 
+   excepts &= FE_ALL_EXCEPT;
+ 
+-  fpcr |= (excepts << FE_EXCEPT_SHIFT);
++  fpcr_new = fpcr | (excepts << FE_EXCEPT_SHIFT);
+ 
+-  _FPU_SETCW (fpcr);
++  if (fpcr != fpcr_new)
++    _FPU_SETCW (fpcr_new);
+ 
+   /* Trapping exceptions are optional in AArch64 the relevant enable
+      bits in FPCR are RES0 hence the absence of support can be
+diff --git a/ports/sysdeps/aarch64/fpu/feholdexcpt.c b/ports/sysdeps/aarch64/fpu/feholdexcpt.c
+index 0514ac1..973ba4a 100644
+--- a/ports/sysdeps/aarch64/fpu/feholdexcpt.c
++++ b/ports/sysdeps/aarch64/fpu/feholdexcpt.c
+@@ -22,8 +22,10 @@
+ int
+ feholdexcept (fenv_t *envp)
+ {
+-  fpu_fpsr_t fpsr;
+   fpu_control_t fpcr;
++  fpu_control_t fpcr_new;
++  fpu_fpsr_t fpsr;
++  fpu_fpsr_t fpsr_new;
+ 
+   _FPU_GETCW (fpcr);
+   envp->__fpcr = fpcr;
+@@ -32,14 +34,16 @@ feholdexcept (fenv_t *envp)
+   envp->__fpsr = fpsr;
+ 
+   /* Now set all exceptions to non-stop.  */
+-  fpcr &= ~(FE_ALL_EXCEPT << FE_EXCEPT_SHIFT);
++  fpcr_new = fpcr & ~(FE_ALL_EXCEPT << FE_EXCEPT_SHIFT);
+ 
+   /* And clear all exception flags.  */
+-  fpsr &= ~FE_ALL_EXCEPT;
++  fpsr_new = fpsr & ~FE_ALL_EXCEPT;
+ 
+-  _FPU_SETFPSR (fpsr);
++  if (fpsr != fpsr_new)
++    _FPU_SETFPSR (fpsr_new);
+ 
+-  _FPU_SETCW (fpcr);
++  if (fpcr != fpcr_new)
++    _FPU_SETCW (fpcr_new);
+ 
+   return 0;
+ }
+diff --git a/ports/sysdeps/aarch64/fpu/fesetenv.c b/ports/sysdeps/aarch64/fpu/fesetenv.c
+index a2434e3..30193e9 100644
+--- a/ports/sysdeps/aarch64/fpu/fesetenv.c
++++ b/ports/sysdeps/aarch64/fpu/fesetenv.c
+@@ -23,34 +23,38 @@ int
+ fesetenv (const fenv_t *envp)
+ {
+   fpu_control_t fpcr;
+-  fpu_fpsr_t fpsr;
++  fpu_control_t fpcr_new;
+   fpu_control_t updated_fpcr;
++  fpu_fpsr_t fpsr;
++  fpu_fpsr_t fpsr_new;
+ 
+   _FPU_GETCW (fpcr);
+   _FPU_GETFPSR (fpsr);
+ 
+-  fpcr &= _FPU_RESERVED;
+-  fpsr &= _FPU_FPSR_RESERVED;
++  fpcr_new = fpcr & _FPU_RESERVED;
++  fpsr_new = fpsr & _FPU_FPSR_RESERVED;
+ 
+   if (envp == FE_DFL_ENV)
+     {
+-      fpcr |= _FPU_DEFAULT;
+-      fpsr |= _FPU_FPSR_DEFAULT;
++      fpcr_new |= _FPU_DEFAULT;
++      fpsr_new |= _FPU_FPSR_DEFAULT;
+     }
+   else if (envp == FE_NOMASK_ENV)
+     {
+-      fpcr |= _FPU_FPCR_IEEE;
+-      fpsr |= _FPU_FPSR_IEEE;
++      fpcr_new |= _FPU_FPCR_IEEE;
++      fpsr_new |= _FPU_FPSR_IEEE;
+     }
+   else
+     {
+-      fpcr |= envp->__fpcr & ~_FPU_RESERVED;
+-      fpsr |= envp->__fpsr & ~_FPU_FPSR_RESERVED;
++      fpcr_new |= envp->__fpcr & ~_FPU_RESERVED;
++      fpsr_new |= envp->__fpsr & ~_FPU_FPSR_RESERVED;
+     }
+ 
+-  _FPU_SETFPSR (fpsr);
++  if (fpsr != fpsr_new)
++    _FPU_SETFPSR (fpsr_new);
+ 
+-  _FPU_SETCW (fpcr);
++  if (fpcr != fpcr_new)
++    _FPU_SETCW (fpcr_new);
+ 
+   /* Trapping exceptions are optional in AArch64 the relevant enable
+      bits in FPCR are RES0 hence the absence of support can be
+@@ -58,7 +62,7 @@ fesetenv (const fenv_t *envp)
+      value.  */
+ 
+   _FPU_GETCW (updated_fpcr);
+-  if ((updated_fpcr & fpcr) != fpcr)
++  if ((updated_fpcr & fpcr_new) != fpcr_new)
+     return 1;
+ 
+   return 0;
+diff --git a/ports/sysdeps/aarch64/fpu/fesetround.c b/ports/sysdeps/aarch64/fpu/fesetround.c
+index 40a05f6..225096a 100644
+--- a/ports/sysdeps/aarch64/fpu/fesetround.c
++++ b/ports/sysdeps/aarch64/fpu/fesetround.c
+@@ -23,6 +23,7 @@ int
+ fesetround (int round)
+ {
+   fpu_control_t fpcr;
++  fpu_control_t fpcr_new;
+ 
+   switch (round)
+     {
+@@ -31,9 +32,10 @@ fesetround (int round)
+     case FE_DOWNWARD:
+     case FE_TOWARDZERO:
+       _FPU_GETCW (fpcr);
+-      fpcr = (fpcr & ~FE_TOWARDZERO) | round;
++      fpcr_new = (fpcr & ~FE_TOWARDZERO) | round;
+ 
+-      _FPU_SETCW (fpcr);
++      if (fpcr != fpcr_new)
++	_FPU_SETCW (fpcr_new);
+       return 0;
+ 
+     default:
+diff --git a/ports/sysdeps/aarch64/fpu/fsetexcptflg.c b/ports/sysdeps/aarch64/fpu/fsetexcptflg.c
+index 49cd1e4..60bb1c9 100644
+--- a/ports/sysdeps/aarch64/fpu/fsetexcptflg.c
++++ b/ports/sysdeps/aarch64/fpu/fsetexcptflg.c
+@@ -24,16 +24,18 @@ int
+ fesetexceptflag (const fexcept_t *flagp, int excepts)
+ {
+   fpu_fpsr_t fpsr;
++  fpu_fpsr_t fpsr_new;
+ 
+   /* Get the current environment.  */
+   _FPU_GETFPSR (fpsr);
+ 
+   /* Set the desired exception mask.  */
+-  fpsr &= ~(excepts & FE_ALL_EXCEPT);
+-  fpsr |= (*flagp & excepts & FE_ALL_EXCEPT);
++  fpsr_new = fpsr & ~(excepts & FE_ALL_EXCEPT);
++  fpsr_new |= (*flagp & excepts & FE_ALL_EXCEPT);
+ 
+   /* Save state back to the FPU.  */
+-  _FPU_SETFPSR (fpsr);
++  if (fpsr != fpsr_new)
++    _FPU_SETFPSR (fpsr_new);
+ 
+   return 0;
+ }
diff --git a/SOURCES/glibc-rh1302086-6.patch b/SOURCES/glibc-rh1302086-6.patch
new file mode 100644
index 0000000..a336dad
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-6.patch
@@ -0,0 +1,81 @@
+commit c95b3011018893fcc473279768a67a24a73bbef2
+Author: Wilco <wdijkstr@arm.com>
+Date:   Mon Jun 2 12:20:17 2014 +0100
+
+    [AArch64] Rewrite feupdateenv (BZ 17009).
+
+diff --git a/ports/sysdeps/aarch64/fpu/feupdateenv.c b/ports/sysdeps/aarch64/fpu/feupdateenv.c
+index 6d64a9b..ac2f6fe 100644
+--- a/ports/sysdeps/aarch64/fpu/feupdateenv.c
++++ b/ports/sysdeps/aarch64/fpu/feupdateenv.c
+@@ -22,16 +22,65 @@
+ int
+ feupdateenv (const fenv_t *envp)
+ {
++  fpu_control_t fpcr;
++  fpu_control_t fpcr_new;
++  fpu_control_t updated_fpcr;
+   fpu_fpsr_t fpsr;
++  fpu_fpsr_t fpsr_new;
++  int excepts;
+ 
+-  /* Get the current exception state.  */
++  _FPU_GETCW (fpcr);
+   _FPU_GETFPSR (fpsr);
++  excepts = fpsr & FE_ALL_EXCEPT;
+ 
+-  /* Install new environment.  */
+-  fesetenv (envp);
++  if ((envp != FE_DFL_ENV) && (envp != FE_NOMASK_ENV))
++    {
++      fpcr_new = envp->__fpcr;
++      fpsr_new = envp->__fpsr | excepts;
+ 
+-  /* Raise the saved exceptions.  */
+-  feraiseexcept (fpsr & FE_ALL_EXCEPT);
++      if (fpcr != fpcr_new)
++        _FPU_SETCW (fpcr_new);
++
++      if (fpsr != fpsr_new)
++        _FPU_SETFPSR (fpsr_new);
++
++      if (excepts & (fpcr_new >> FE_EXCEPT_SHIFT))
++        return feraiseexcept (excepts);
++
++      return 0;
++    }
++
++  fpcr_new = fpcr & _FPU_RESERVED;
++  fpsr_new = fpsr & (_FPU_FPSR_RESERVED | FE_ALL_EXCEPT);
++
++  if (envp == FE_DFL_ENV)
++    {
++      fpcr_new |= _FPU_DEFAULT;
++      fpsr_new |= _FPU_FPSR_DEFAULT;
++    }
++  else
++    {
++      fpcr_new |= _FPU_FPCR_IEEE;
++      fpsr_new |= _FPU_FPSR_IEEE;
++    }
++
++  _FPU_SETFPSR (fpsr_new);
++
++  if (fpcr != fpcr_new)
++    {
++      _FPU_SETCW (fpcr_new);
++
++      /* Trapping exceptions are optional in AArch64; the relevant enable
++	 bits in FPCR are RES0 hence the absence of support can be detected
++	 by reading back the FPCR and comparing with the required value.  */
++      _FPU_GETCW (updated_fpcr);
++
++      if (fpcr_new & ~updated_fpcr)
++        return 1;
++    }
++
++  if (excepts & (fpcr_new >> FE_EXCEPT_SHIFT))
++    return feraiseexcept (excepts);
+ 
+   return 0;
+ }
diff --git a/SOURCES/glibc-rh1302086-7.patch b/SOURCES/glibc-rh1302086-7.patch
new file mode 100644
index 0000000..4665299
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-7.patch
@@ -0,0 +1,24 @@
+commit a88dadbed5d7589ac7880efe62ea511844107795
+Author: Wilco <wdijkstr@arm.com>
+Date:   Mon Jun 2 12:44:21 2014 +0100
+
+    [AArch64] Remove ISB after FPCR write.
+
+diff --git a/ports/sysdeps/aarch64/fpu/fpu_control.h b/ports/sysdeps/aarch64/fpu/fpu_control.h
+index 6a265e8..d5a890d 100644
+--- a/ports/sysdeps/aarch64/fpu/fpu_control.h
++++ b/ports/sysdeps/aarch64/fpu/fpu_control.h
+@@ -24,11 +24,8 @@
+ #define _FPU_GETCW(fpcr) \
+   __asm__ __volatile__ ("mrs	%0, fpcr" : "=r" (fpcr))
+ 
+-#define _FPU_SETCW(fpcr)				   \
+-  {							   \
+-    __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (fpcr)); \
+-    __asm__ __volatile__ ("isb");			   \
+-  }
++#define _FPU_SETCW(fpcr) \
++  __asm__ __volatile__ ("msr	fpcr, %0" : : "r" (fpcr))
+ 
+ #define _FPU_GETFPSR(fpsr) \
+   __asm__ __volatile__ ("mrs	%0, fpsr" : "=r" (fpsr))
diff --git a/SOURCES/glibc-rh1302086-8.patch b/SOURCES/glibc-rh1302086-8.patch
new file mode 100644
index 0000000..e2248be
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-8.patch
@@ -0,0 +1,96 @@
+commit 0b4366bc9bca9be8a2208455545c138bcd1e826c
+Author: Wilco <wdijkstr@arm.com>
+Date:   Tue Jun 3 08:08:36 2014 +0000
+
+    [AArch64] Cleanup declarations in math_private.h.
+
+diff --git a/ports/sysdeps/aarch64/fpu/math_private.h b/ports/sysdeps/aarch64/fpu/math_private.h
+index 7424952..a3f466b 100644
+--- a/ports/sysdeps/aarch64/fpu/math_private.h
++++ b/ports/sysdeps/aarch64/fpu/math_private.h
+@@ -25,7 +25,10 @@
+ static __always_inline void
+ libc_feholdexcept_aarch64 (fenv_t *envp)
+ {
+-  fpu_control_t fpcr, new_fpcr, fpsr, new_fpsr;
++  fpu_control_t fpcr;
++  fpu_control_t new_fpcr;
++  fpu_fpsr_t fpsr;
++  fpu_fpsr_t new_fpsr;
+ 
+   _FPU_GETCW (fpcr);
+   _FPU_GETFPSR (fpsr);
+@@ -69,7 +72,10 @@ libc_fesetround_aarch64 (int round)
+ static __always_inline void
+ libc_feholdexcept_setround_aarch64 (fenv_t *envp, int round)
+ {
+-  fpu_control_t fpcr, new_fpcr, fpsr, new_fpsr;
++  fpu_control_t fpcr;
++  fpu_control_t new_fpcr;
++  fpu_fpsr_t fpsr;
++  fpu_fpsr_t new_fpsr;
+ 
+   _FPU_GETCW (fpcr);
+   _FPU_GETFPSR (fpsr);
+@@ -96,7 +102,7 @@ libc_feholdexcept_setround_aarch64 (fenv_t *envp, int round)
+ static __always_inline int
+ libc_fetestexcept_aarch64 (int ex)
+ {
+-  fpu_control_t fpsr;
++  fpu_fpsr_t fpsr;
+ 
+   _FPU_GETFPSR (fpsr);
+   return fpsr & ex & FE_ALL_EXCEPT;
+@@ -109,7 +115,8 @@ libc_fetestexcept_aarch64 (int ex)
+ static __always_inline void
+ libc_fesetenv_aarch64 (const fenv_t *envp)
+ {
+-  fpu_control_t fpcr, new_fpcr;
++  fpu_control_t fpcr;
++  fpu_control_t new_fpcr;
+ 
+   _FPU_GETCW (fpcr);
+   new_fpcr = envp->__fpcr;
+@@ -130,7 +137,10 @@ libc_fesetenv_aarch64 (const fenv_t *envp)
+ static __always_inline int
+ libc_feupdateenv_test_aarch64 (const fenv_t *envp, int ex)
+ {
+-  fpu_control_t fpcr, new_fpcr, fpsr, new_fpsr;
++  fpu_control_t fpcr;
++  fpu_control_t new_fpcr;
++  fpu_fpsr_t fpsr;
++  fpu_fpsr_t new_fpsr;
+   int excepts;
+ 
+   _FPU_GETCW (fpcr);
+@@ -171,7 +181,8 @@ libc_feupdateenv_aarch64 (const fenv_t *envp)
+ static __always_inline void
+ libc_feholdsetround_aarch64 (fenv_t *envp, int round)
+ {
+-  fpu_control_t fpcr, fpsr;
++  fpu_control_t fpcr;
++  fpu_fpsr_t fpsr;
+ 
+   _FPU_GETCW (fpcr);
+   _FPU_GETFPSR (fpsr);
+@@ -193,7 +204,8 @@ libc_feholdsetround_aarch64 (fenv_t *envp, int round)
+ static __always_inline void
+ libc_feresetround_aarch64 (fenv_t *envp)
+ {
+-  fpu_control_t fpcr, round;
++  fpu_control_t fpcr;
++  int round;
+ 
+   _FPU_GETCW (fpcr);
+ 
+@@ -215,7 +227,9 @@ libc_feresetround_aarch64 (fenv_t *envp)
+ static __always_inline void
+ libc_feholdsetround_aarch64_ctx (struct rm_ctx *ctx, int r)
+ {
+-  fpu_control_t fpcr, fpsr, round;
++  fpu_control_t fpcr;
++  fpu_fpsr_t fpsr;
++  int round;
+ 
+   _FPU_GETCW (fpcr);
+   _FPU_GETFPSR (fpsr);
diff --git a/SOURCES/glibc-rh1302086-9.patch b/SOURCES/glibc-rh1302086-9.patch
new file mode 100644
index 0000000..4a1ef3e
--- /dev/null
+++ b/SOURCES/glibc-rh1302086-9.patch
@@ -0,0 +1,68 @@
+commit 693096cc7b397a709f075865993027c14c06d3e5
+Author: Wilco <wdijkstr@arm.com>
+Date:   Tue Jun 3 08:10:39 2014 +0000
+
+    [AArch64] Switch from FE_TOWARDZERO to _FPU_FPCR_RM_MASK
+
+diff --git a/ports/sysdeps/aarch64/fpu/get-rounding-mode.h b/ports/sysdeps/aarch64/fpu/get-rounding-mode.h
+index 5c1615d..425b50e 100644
+--- a/ports/sysdeps/aarch64/fpu/get-rounding-mode.h
++++ b/ports/sysdeps/aarch64/fpu/get-rounding-mode.h
+@@ -32,7 +32,7 @@ get_rounding_mode (void)
+   fpu_control_t fpcr;
+ 
+   _FPU_GETCW (fpcr);
+-  return fpcr & FE_TOWARDZERO;
++  return fpcr & _FPU_FPCR_RM_MASK;
+ }
+ 
+ #endif /* get-rounding-mode.h */
+diff --git a/ports/sysdeps/aarch64/fpu/math_private.h b/ports/sysdeps/aarch64/fpu/math_private.h
+index a3f466b..023c9d0 100644
+--- a/ports/sysdeps/aarch64/fpu/math_private.h
++++ b/ports/sysdeps/aarch64/fpu/math_private.h
+@@ -58,7 +58,7 @@ libc_fesetround_aarch64 (int round)
+   _FPU_GETCW (fpcr);
+ 
+   /* Check whether rounding modes are different.  */
+-  round = (fpcr ^ round) & FE_TOWARDZERO;
++  round = (fpcr ^ round) & _FPU_FPCR_RM_MASK;
+ 
+   /* Set new rounding mode if different.  */
+   if (__glibc_unlikely (round != 0))
+@@ -84,7 +84,7 @@ libc_feholdexcept_setround_aarch64 (fenv_t *envp, int round)
+ 
+   /* Clear exception flags, set all exceptions to non-stop,
+      and set new rounding mode.  */
+-  new_fpcr = fpcr & ~((FE_ALL_EXCEPT << FE_EXCEPT_SHIFT) | FE_TOWARDZERO);
++  new_fpcr = fpcr & ~((FE_ALL_EXCEPT << FE_EXCEPT_SHIFT) | _FPU_FPCR_RM_MASK);
+   new_fpcr |= round;
+   new_fpsr = fpsr & ~FE_ALL_EXCEPT;
+ 
+@@ -190,7 +190,7 @@ libc_feholdsetround_aarch64 (fenv_t *envp, int round)
+   envp->__fpsr = fpsr;
+ 
+   /* Check whether rounding modes are different.  */
+-  round = (fpcr ^ round) & FE_TOWARDZERO;
++  round = (fpcr ^ round) & _FPU_FPCR_RM_MASK;
+ 
+   /* Set new rounding mode if different.  */
+   if (__glibc_unlikely (round != 0))
+@@ -210,7 +210,7 @@ libc_feresetround_aarch64 (fenv_t *envp)
+   _FPU_GETCW (fpcr);
+ 
+   /* Check whether rounding modes are different.  */
+-  round = (envp->__fpcr ^ fpcr) & FE_TOWARDZERO;
++  round = (envp->__fpcr ^ fpcr) & _FPU_FPCR_RM_MASK;
+ 
+   /* Restore the rounding mode if it was changed.  */
+   if (__glibc_unlikely (round != 0))
+@@ -236,7 +236,7 @@ libc_feholdsetround_aarch64_ctx (struct rm_ctx *ctx, int r)
+   ctx->env.__fpsr = fpsr;
+ 
+   /* Check whether rounding modes are different.  */
+-  round = (fpcr ^ r) & FE_TOWARDZERO;
++  round = (fpcr ^ r) & _FPU_FPCR_RM_MASK;
+   ctx->updated_status = round != 0;
+ 
+   /* Set the rounding mode if changed.  */
diff --git a/SOURCES/glibc-rh1308728.patch b/SOURCES/glibc-rh1308728.patch
new file mode 100644
index 0000000..e1f1e8c
--- /dev/null
+++ b/SOURCES/glibc-rh1308728.patch
@@ -0,0 +1,38 @@
+commit 58a1335e76a553e1cf4edeebc27f16fc9b53d6e6
+Author: Petr Baudis <pasky@ucw.cz>
+Date:   Thu Mar 14 01:16:53 2013 +0100
+
+    Fix __times() handling of EFAULT when buf is NULL
+
+diff --git a/sysdeps/unix/sysv/linux/times.c b/sysdeps/unix/sysv/linux/times.c
+index f3b5f01..e59bb4e 100644
+--- a/sysdeps/unix/sysv/linux/times.c
++++ b/sysdeps/unix/sysv/linux/times.c
+@@ -26,13 +26,14 @@ __times (struct tms *buf)
+   INTERNAL_SYSCALL_DECL (err);
+   clock_t ret = INTERNAL_SYSCALL (times, err, 1, buf);
+   if (INTERNAL_SYSCALL_ERROR_P (ret, err)
+-      && __builtin_expect (INTERNAL_SYSCALL_ERRNO (ret, err) == EFAULT, 0))
++      && __builtin_expect (INTERNAL_SYSCALL_ERRNO (ret, err) == EFAULT, 0)
++      && buf)
+     {
+       /* This might be an error or not.  For architectures which have
+ 	 no separate return value and error indicators we cannot
+ 	 distinguish a return value of -1 from an error.  Do it the
+-	 hard way.  We crash applications which pass in an invalid BUF
+-	 pointer.  */
++	 hard way.  We crash applications which pass in an invalid
++	 non-NULL BUF pointer.  Linux allows BUF to be NULL. */
+ #define touch(v) \
+       do {								      \
+ 	clock_t temp = v;						      \
+@@ -44,7 +45,8 @@ __times (struct tms *buf)
+       touch (buf->tms_cutime);
+       touch (buf->tms_cstime);
+ 
+-      /* If we come here the memory is valid and the kernel did not
++      /* If we come here the memory is valid (or BUF is NULL, which is
++       * a valid condition for the kernel syscall) and the kernel did not
+ 	 return an EFAULT error.  Return the value given by the kernel.  */
+     }
+ 
diff --git a/SOURCES/glibc-rh1321993.patch b/SOURCES/glibc-rh1321993.patch
new file mode 100644
index 0000000..c229e3b
--- /dev/null
+++ b/SOURCES/glibc-rh1321993.patch
@@ -0,0 +1,32 @@
+commit 317b199b4aff8cfa27f2302ab404d2bb5032b9a4
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Tue Mar 29 12:57:56 2016 +0200
+
+    CVE-2016-3075: Stack overflow in _nss_dns_getnetbyname_r [BZ #19879]
+    
+    The defensive copy is not needed because the name may not alias the
+    output buffer.
+
+diff --git a/resolv/nss_dns/dns-network.c b/resolv/nss_dns/dns-network.c
+index 2eb2f67..8f301a7 100644
+--- a/resolv/nss_dns/dns-network.c
++++ b/resolv/nss_dns/dns-network.c
+@@ -118,17 +118,14 @@ _nss_dns_getnetbyname_r (const char *name, struct netent *result,
+   } net_buffer;
+   querybuf *orig_net_buffer;
+   int anslen;
+-  char *qbuf;
+   enum nss_status status;
+ 
+   if (__res_maybe_init (&_res, 0) == -1)
+     return NSS_STATUS_UNAVAIL;
+ 
+-  qbuf = strdupa (name);
+-
+   net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024);
+ 
+-  anslen = __libc_res_nsearch (&_res, qbuf, C_IN, T_PTR, net_buffer.buf->buf,
++  anslen = __libc_res_nsearch (&_res, name, C_IN, T_PTR, net_buffer.buf->buf,
+ 			       1024, &net_buffer.ptr, NULL, NULL, NULL, NULL);
+   if (anslen < 0)
+     {
diff --git a/SOURCES/glibc-rh1324427-1.patch b/SOURCES/glibc-rh1324427-1.patch
new file mode 100644
index 0000000..76d1570
--- /dev/null
+++ b/SOURCES/glibc-rh1324427-1.patch
@@ -0,0 +1,891 @@
+commit 4603c51ef7989d7eb800cdd6f42aab206f891077
+Author: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date:   Thu Mar 31 17:37:16 2016 +0200
+
+    S390: Save and restore fprs/vrs while resolving symbols.
+    
+    On s390, no fpr/vrs were saved while resolving a symbol
+    via _dl_runtime_resolve/_dl_runtime_profile.
+    
+    According to the abi, the fpr-arguments are defined as call clobbered.
+    In leaf-functions, gcc 4.9 and newer can use fprs for saving/restoring gprs
+    instead of saving them to the stack.
+    If gcc do this in one of the resolver-functions, then the floating point
+    arguments of a library-function are invalid for the first library-function-call.
+    Thus, this patch saves/restores the fprs around the resolving code.
+    
+    The same could occur for vector registers. Furthermore an ifunc-resolver
+    could also clobber the vector/floating point argument registers.
+    Thus this patch provides the further variants _dl_runtime_resolve_vx/
+    _dl_runtime_profile_vx, which are used if the kernel claims, that
+    we run on a machine with vector registers.
+    
+    Furthermore, if _dl_runtime_profile calls _dl_call_pltexit,
+    the pointers to inregs-/outregs-structs were setup invalid.
+    Now they point to the correct location in the stack-frame.
+    Before branching back to the caller, the return values are now
+    restored instead of containing the return values of the
+    _dl_call_pltexit() call.
+    On s390-32, an endless loop occurs if _dl_call_pltexit() should be called.
+    Now, this code-path branches to this function instead of just after the
+    preceding basr-instruction.
+    
+    ChangeLog:
+    
+    	* sysdeps/s390/s390-32/dl-trampoline.S: Include dl-trampoline.h twice
+    	to create a non-vector/vector version for _dl_runtime_resolve and
+    	_dl_runtime_profile. Move implementation to ...
+    	* sysdeps/s390/s390-32/dl-trampoline.h: ... here.
+    	(_dl_runtime_resolve) Save and restore fpr/vrs.
+    	(_dl_runtime_profile) Save and restore vrs and fix some issues
+    	if _dl_call_pltexit is called.
+    	* sysdeps/s390/s390-32/dl-machine.h (elf_machine_runtime_setup):
+    	Choose the correct resolver function if running on a machine with vx.
+    	* sysdeps/s390/s390-64/dl-trampoline.S: Include dl-trampoline.h twice
+    	to create a non-vector/vector version for _dl_runtime_resolve and
+    	_dl_runtime_profile. Move implementation to ...
+    	* sysdeps/s390/s390-64/dl-trampoline.h: ... here.
+    	(_dl_runtime_resolve) Save and restore fpr/vrs.
+    	(_dl_runtime_profile) Save and restore vrs and fix some issues
+    	* sysdeps/s390/s390-64/dl-machine.h: (elf_machine_runtime_setup):
+    	Choose the correct resolver function if running on a machine with vx.
+
+diff --git a/sysdeps/s390/s390-32/dl-machine.h b/sysdeps/s390/s390-32/dl-machine.h
+index 14bde3b..ec0ae4a 100644
+--- a/sysdeps/s390/s390-32/dl-machine.h
++++ b/sysdeps/s390/s390-32/dl-machine.h
+@@ -89,6 +89,11 @@
+ {
+   extern void _dl_runtime_resolve (Elf32_Word);
+   extern void _dl_runtime_profile (Elf32_Word);
++#if defined HAVE_S390_VX_ASM_SUPPORT
++  extern void _dl_runtime_resolve_vx (Elf32_Word);
++  extern void _dl_runtime_profile_vx (Elf32_Word);
++#endif
++
+ 
+   if (l->l_info[DT_JMPREL] && lazy)
+     {
+@@ -116,7 +121,14 @@
+ 	 end in this function.  */
+       if (__builtin_expect (profile, 0))
+ 	{
++#if defined HAVE_S390_VX_ASM_SUPPORT
++	  if (GLRO(dl_hwcap) & HWCAP_S390_VX)
++	    got[2] = (Elf32_Addr) &_dl_runtime_profile_vx;
++	  else
++	    got[2] = (Elf32_Addr) &_dl_runtime_profile;
++#else
+ 	  got[2] = (Elf32_Addr) &_dl_runtime_profile;
++#endif
+ 
+ 	  if (GLRO(dl_profile) != NULL
+ 	      && _dl_name_match_p (GLRO(dl_profile), l))
+@@ -125,9 +137,18 @@
+ 	    GL(dl_profile_map) = l;
+ 	}
+       else
+-	/* This function will get called to fix up the GOT entry indicated by
+-	   the offset on the stack, and then jump to the resolved address.  */
+-	got[2] = (Elf32_Addr) &_dl_runtime_resolve;
++	{
++	  /* This function will get called to fix up the GOT entry indicated by
++	     the offset on the stack, and then jump to the resolved address.  */
++#if defined HAVE_S390_VX_ASM_SUPPORT
++	  if (GLRO(dl_hwcap) & HWCAP_S390_VX)
++	    got[2] = (Elf32_Addr) &_dl_runtime_resolve_vx;
++	  else
++	    got[2] = (Elf32_Addr) &_dl_runtime_resolve;
++#else
++	  got[2] = (Elf32_Addr) &_dl_runtime_resolve;
++#endif
++	}
+     }
+ 
+   return lazy;
+diff --git a/sysdeps/s390/s390-32/dl-trampoline.S b/sysdeps/s390/s390-32/dl-trampoline.S
+index 1645610..859183c 100644
+--- a/sysdeps/s390/s390-32/dl-trampoline.S
++++ b/sysdeps/s390/s390-32/dl-trampoline.S
+@@ -16,130 +16,18 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-/* This code is used in dl-runtime.c to call the `fixup' function
+-   and then redirect to the address it returns.  */
+-
+-/* The PLT stubs will call _dl_runtime_resolve/_dl_runtime_profile
+- * with the following linkage:
+- *   r2 - r6 : parameter registers
+- *   f0, f2 : floating point parameter registers
+- *   24(r15), 28(r15) : PLT arguments PLT1, PLT2
+- *   96(r15) : additional stack parameters
+- * The normal clobber rules for function calls apply:
+- *   r0 - r5 : call clobbered
+- *   r6 - r13 :	 call saved
+- *   r14 : return address (call clobbered)
+- *   r15 : stack pointer (call saved)
+- *   f4, f6 : call saved
+- *   f0 - f3, f5, f7 - f15 : call clobbered
+- */
+-
+ #include <sysdep.h>
+ 
+ 	.text
+-	.globl _dl_runtime_resolve
+-	.type _dl_runtime_resolve, @function
+-	cfi_startproc
+-	.align 16
+-_dl_runtime_resolve:
+-	stm    %r2,%r5,32(%r15)		# save registers
+-	st     %r14,8(%r15)
+-	cfi_offset (r14, -88)
+-	lr     %r0,%r15			# create stack frame
+-	ahi    %r15,-96
+-	cfi_adjust_cfa_offset (96)
+-	st     0,0(%r15)
+-	lm     %r2,%r3,120(%r15)	# load args saved by PLT
+-	basr   %r1,0
+-0:	l      %r14,1f-0b(%r1)
+-	bas    %r14,0(%r14,%r1)		# call resolver
+-	lr     %r1,%r2			# function addr returned in r2
+-	ahi    %r15,96			# remove stack frame
+-	cfi_adjust_cfa_offset (-96)
+-	l      %r14,8(15)		# restore registers
+-	lm     %r2,%r5,32(%r15)
+-	br     %r1
+-1:	.long  _dl_fixup - 0b
+-	cfi_endproc
+-	.size _dl_runtime_resolve, .-_dl_runtime_resolve
+-
+-
+-#ifndef PROF
+-	.globl _dl_runtime_profile
+-	.type _dl_runtime_profile, @function
+-	cfi_startproc
+-	.align 16
+-_dl_runtime_profile:
+-	stm    %r2,%r6,32(%r15)		# save registers
+-	std    %f0,56(%r15)
+-	std    %f2,64(%r15)
+-	st     %r6,8(%r15)
+-	st     %r12,12(%r15)
+-	st     %r14,16(%r15)
+-	cfi_offset (r6, -64)
+-	cfi_offset (f0, -40)
+-	cfi_offset (f2, -32)
+-	cfi_offset (r12, -84)
+-	cfi_offset (r14, -80)
+-	lr     %r12,%r15		# create stack frame
+-	cfi_def_cfa_register (12)
+-	ahi    %r15,-96
+-	st     %r12,0(%r15)
+-	lm     %r2,%r3,24(%r12)		# load arguments saved by PLT
+-	lr     %r4,%r14			# return address as third parameter
+-	basr   %r1,0
+-0:	l      %r14,6f-0b(%r1)
+-	la     %r5,32(%r12)		# pointer to struct La_s390_32_regs
+-	la     %r6,20(%r12)		# long int * framesize
+-	bas    %r14,0(%r14,%r1)		# call resolver
+-	lr     %r1,%r2			# function addr returned in r2
+-	icm    %r0,15,20(%r12)		# load & test framesize
+-	jnm    2f
+-
+-	lm     %r2,%r6,32(%r12)
+-	ld     %f0,56(%r12)
+-	ld     %f2,64(%r12)
+-	lr     %r15,%r12		# remove stack frame
+-	cfi_def_cfa_register (15)
+-	l      %r14,16(%r15)		# restore registers
+-	l      %r12,12(%r15)
+-	br     %r1			# tail-call to the resolved function
+-
+-	cfi_def_cfa_register (12)
+-2:	jz     4f			# framesize == 0 ?
+-	ahi    %r0,7			# align framesize to 8
+-	lhi    %r2,-8
+-	nr     %r0,%r2
+-	slr    %r15,%r0			# make room for framesize bytes
+-	st     %r12,0(%r15)
+-	la     %r2,96(%r15)
+-	la     %r3,96(%r12)
+-	srl    %r0,3
+-3:	mvc    0(8,%r2),0(%r3)		# copy additional parameters
+-	la     %r2,8(%r2)
+-	la     %r3,8(%r3)
+-	brct   %r0,3b
+-4:	lm     %r2,%r6,32(%r12)		# load register parameters
+-	ld     %f0,56(%r12)
+-	ld     %f2,64(%r12)
+-	basr   %r14,%r1			# call resolved function
+-	stm    %r2,%r3,72(%r12)
+-	std    %f0,80(%r12)
+-	lm     %r2,%r3,24(%r12)		# load arguments saved by PLT
+-	basr   %r1,0
+-5:	l      %r14,7f-5b(%r1)
+-	la     %r4,32(%r12)		# pointer to struct La_s390_32_regs
+-	la     %r5,72(%r12)		# pointer to struct La_s390_32_retval
+-	basr   %r14,%r1			# call _dl_call_pltexit
+-
+-	lr     %r15,%r12		# remove stack frame
+-	cfi_def_cfa_register (15)
+-	l      %r14,16(%r15)		# restore registers
+-	l      %r12,12(%r15)
+-	br     %r14
+-
+-6:	.long  _dl_profile_fixup - 0b
+-7:	.long  _dl_call_pltexit - 5b
+-	cfi_endproc
+-	.size _dl_runtime_profile, .-_dl_runtime_profile
++/* Create variant of _dl_runtime_resolve/profile for machines before z13.
++   No vector registers are saved/restored.  */
++#include <dl-trampoline.h>
++
++#if defined HAVE_S390_VX_ASM_SUPPORT
++/* Create variant of _dl_runtime_resolve/profile for z13 and newer.
++   The vector registers are saved/restored, too.*/
++# define _dl_runtime_resolve _dl_runtime_resolve_vx
++# define _dl_runtime_profile _dl_runtime_profile_vx
++# define RESTORE_VRS
++# include <dl-trampoline.h>
+ #endif
+diff --git a/sysdeps/s390/s390-32/dl-trampoline.h b/sysdeps/s390/s390-32/dl-trampoline.h
+new file mode 100644
+index 0000000..a152a7b
+--- /dev/null
++++ b/sysdeps/s390/s390-32/dl-trampoline.h
+@@ -0,0 +1,215 @@
++/* PLT trampolines.  s390 version.
++   Copyright (C) 2016 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* This code is used in dl-runtime.c to call the `fixup' function
++   and then redirect to the address it returns.  */
++
++/* The PLT stubs will call _dl_runtime_resolve/_dl_runtime_profile
++ * with the following linkage:
++ *   r2 - r6 : parameter registers
++ *   f0, f2 : floating point parameter registers
++ *   v24, v26, v28, v30, v25, v27, v29, v31 : vector parameter registers
++ *   24(r15), 28(r15) : PLT arguments PLT1, PLT2
++ *   96(r15) : additional stack parameters
++ * The normal clobber rules for function calls apply:
++ *   r0 - r5 : call clobbered
++ *   r6 - r13 :	call saved
++ *   r14 : return address (call clobbered)
++ *   r15 : stack pointer (call saved)
++ *   f4, f6 : call saved
++ *   f0 - f3, f5, f7 - f15 : call clobbered
++ *   v0 - v3, v5, v7 - v15 : bytes 0-7 overlap with fprs: call clobbered
++               bytes 8-15: call clobbered
++ *   v4, v6 : bytes 0-7 overlap with f4, f6: call saved
++              bytes 8-15: call clobbered
++ *   v16 - v31 : call clobbered
++ */
++
++
++	.globl _dl_runtime_resolve
++	.type _dl_runtime_resolve, @function
++	cfi_startproc
++	.align 16
++_dl_runtime_resolve:
++	stm    %r2,%r5,32(%r15)		# save registers
++	cfi_offset (r2, -64)
++	cfi_offset (r3, -60)
++	cfi_offset (r4, -56)
++	cfi_offset (r5, -52)
++	std    %f0,56(%r15)
++	cfi_offset (f0, -40)
++	std    %f2,64(%r15)
++	cfi_offset (f2, -32)
++	st     %r14,8(%r15)
++	cfi_offset (r14, -88)
++	lr     %r0,%r15
++	lm     %r2,%r3,24(%r15)		# load args saved by PLT
++#ifdef RESTORE_VRS
++	ahi    %r15,-224		# create stack frame
++	cfi_adjust_cfa_offset (224)
++	.machine push
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++	vstm   %v24,%v31,96(%r15)	# store call-clobbered vr arguments
++	cfi_offset (v24, -224)
++	cfi_offset (v25, -208)
++	cfi_offset (v26, -192)
++	cfi_offset (v27, -176)
++	cfi_offset (v28, -160)
++	cfi_offset (v29, -144)
++	cfi_offset (v30, -128)
++	cfi_offset (v31, -112)
++	.machine pop
++#else
++	ahi    %r15,-96			# create stack frame
++	cfi_adjust_cfa_offset (96)
++#endif
++	st     %r0,0(%r15)		# write backchain
++	basr   %r1,0
++0:	l      %r14,1f-0b(%r1)
++	bas    %r14,0(%r14,%r1)		# call _dl_fixup
++	lr     %r1,%r2			# function addr returned in r2
++#ifdef RESTORE_VRS
++	.machine push
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++	vlm    %v24,%v31,96(%r15)	# restore vector registers
++	.machine pop
++	aghi   %r15,224			# remove stack frame
++	cfi_adjust_cfa_offset (-224)
++#else
++	ahi    %r15,96			# remove stack frame
++	cfi_adjust_cfa_offset (-96)
++#endif
++	l      %r14,8(15)		# restore registers
++	ld     %f0,56(%r15)
++	ld     %f2,64(%r15)
++	lm     %r2,%r5,32(%r15)
++	br     %r1
++1:	.long  _dl_fixup - 0b
++	cfi_endproc
++	.size _dl_runtime_resolve, .-_dl_runtime_resolve
++
++
++#ifndef PROF
++	.globl _dl_runtime_profile
++	.type _dl_runtime_profile, @function
++	cfi_startproc
++	.align 16
++_dl_runtime_profile:
++	stm    %r2,%r6,32(%r15)		# save registers
++	cfi_offset (r2, -64)		# + r6 needed as arg for
++	cfi_offset (r3, -60)		#  _dl_profile_fixup
++	cfi_offset (r4, -56)
++	cfi_offset (r5, -52)
++	cfi_offset (r6, -48)
++	std    %f0,56(%r15)
++	cfi_offset (f0, -40)
++	std    %f2,64(%r15)
++	cfi_offset (f2, -32)
++	st     %r12,12(%r15)		# r12 is used as backup of r15
++	cfi_offset (r12, -84)
++	st     %r14,16(%r15)
++	cfi_offset (r14, -80)
++	lr     %r12,%r15		# backup stack pointer
++	cfi_def_cfa_register (12)
++#ifdef RESTORE_VRS
++	ahi    %r15,-224		# create stack frame
++	.machine push
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++	vstm   %v24,%v31,96(%r15)	# store call-clobbered vr arguments
++	cfi_offset (v24, -224)
++	cfi_offset (v25, -208)
++	cfi_offset (v26, -192)
++	cfi_offset (v27, -176)
++	cfi_offset (v28, -160)
++	cfi_offset (v29, -144)
++	cfi_offset (v30, -128)
++	cfi_offset (v31, -112)
++	.machine pop
++#else
++	ahi    %r15,-96			# create stack frame
++#endif
++	st     %r12,0(%r15)		# save backchain
++	lm     %r2,%r3,24(%r12)		# load arguments saved by PLT
++	lr     %r4,%r14			# return address as third parameter
++	basr   %r1,0
++0:	l      %r14,6f-0b(%r1)
++	la     %r5,32(%r12)		# pointer to struct La_s390_32_regs
++	la     %r6,20(%r12)		# long int * framesize
++	bas    %r14,0(%r14,%r1)		# call resolver
++	lr     %r1,%r2			# function addr returned in r2
++	ld     %f0,56(%r12)		# restore call-clobbered arg fprs
++	ld     %f2,64(%r12)
++#ifdef RESTORE_VRS
++	.machine push
++	.machine "z13"
++	.machinemode "zarch_nohighgprs"
++	vlm    %v24,%v31,96(%r15)	# restore call-clobbered arg vrs
++	.machine pop
++#endif
++	icm    %r0,15,20(%r12)		# load & test framesize
++	jnm    2f
++
++	lm     %r2,%r6,32(%r12)
++	lr     %r15,%r12		# remove stack frame
++	cfi_def_cfa_register (15)
++	l      %r14,16(%r15)		# restore registers
++	l      %r12,12(%r15)
++	br     %r1			# tail-call to the resolved function
++
++	cfi_def_cfa_register (12)
++2:	jz     4f			# framesize == 0 ?
++	ahi    %r0,7			# align framesize to 8
++	lhi    %r2,-8
++	nr     %r0,%r2
++	slr    %r15,%r0			# make room for framesize bytes
++	st     %r12,0(%r15)		# save backchain
++	la     %r2,96(%r15)
++	la     %r3,96(%r12)
++	srl    %r0,3
++3:	mvc    0(8,%r2),0(%r3)		# copy additional parameters
++	la     %r2,8(%r2)
++	la     %r3,8(%r3)
++	brct   %r0,3b
++4:	lm     %r2,%r6,32(%r12)		# load register parameters
++	basr   %r14,%r1			# call resolved function
++	stm    %r2,%r3,72(%r12)		# store return values r2, r3, f0
++	std    %f0,80(%r12)		# to struct La_s390_32_retval
++	lm     %r2,%r3,24(%r12)		# load arguments saved by PLT
++	basr   %r1,0
++5:	l      %r14,7f-5b(%r1)
++	la     %r4,32(%r12)		# pointer to struct La_s390_32_regs
++	la     %r5,72(%r12)		# pointer to struct La_s390_32_retval
++	bas    %r14,0(%r14,%r1)		# call _dl_call_pltexit
++
++	lr     %r15,%r12		# remove stack frame
++	cfi_def_cfa_register (15)
++	l      %r14,16(%r15)		# restore registers
++	l      %r12,12(%r15)
++	l      %r2,72(%r15)		# restore return values
++	l      %r3,76(%r15)
++	ld     %f0,80(%r15)
++	br     %r14
++
++6:	.long  _dl_profile_fixup - 0b
++7:	.long  _dl_call_pltexit - 5b
++	cfi_endproc
++	.size _dl_runtime_profile, .-_dl_runtime_profile
++#endif
+diff --git a/sysdeps/s390/s390-64/dl-machine.h b/sysdeps/s390/s390-64/dl-machine.h
+index cb81aaf..9ee7c92 100644
+--- a/sysdeps/s390/s390-64/dl-machine.h
++++ b/sysdeps/s390/s390-64/dl-machine.h
+@@ -26,6 +26,7 @@
+ #include <sys/param.h>
+ #include <string.h>
+ #include <link.h>
++#include <sysdeps/s390/dl-procinfo.h>
+ #include <dl-irel.h>
+ 
+ #define ELF_MACHINE_IRELATIVE       R_390_IRELATIVE
+@@ -78,6 +79,10 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
+ {
+   extern void _dl_runtime_resolve (Elf64_Word);
+   extern void _dl_runtime_profile (Elf64_Word);
++#if defined HAVE_S390_VX_ASM_SUPPORT
++  extern void _dl_runtime_resolve_vx (Elf64_Word);
++  extern void _dl_runtime_profile_vx (Elf64_Word);
++#endif
+ 
+   if (l->l_info[DT_JMPREL] && lazy)
+     {
+@@ -105,7 +110,14 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
+ 	 end in this function.	*/
+       if (__builtin_expect (profile, 0))
+ 	{
++#if defined HAVE_S390_VX_ASM_SUPPORT
++	  if (GLRO(dl_hwcap) & HWCAP_S390_VX)
++	    got[2] = (Elf64_Addr) &_dl_runtime_profile_vx;
++	  else
++	    got[2] = (Elf64_Addr) &_dl_runtime_profile;
++#else
+ 	  got[2] = (Elf64_Addr) &_dl_runtime_profile;
++#endif
+ 
+ 	  if (GLRO(dl_profile) != NULL
+ 	      && _dl_name_match_p (GLRO(dl_profile), l))
+@@ -114,9 +126,18 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
+ 	    GL(dl_profile_map) = l;
+ 	}
+       else
+-	/* This function will get called to fix up the GOT entry indicated by
+-	   the offset on the stack, and then jump to the resolved address.  */
+-	got[2] = (Elf64_Addr) &_dl_runtime_resolve;
++	{
++	  /* This function will get called to fix up the GOT entry indicated by
++	     the offset on the stack, and then jump to the resolved address.  */
++#if defined HAVE_S390_VX_ASM_SUPPORT
++	  if (GLRO(dl_hwcap) & HWCAP_S390_VX)
++	    got[2] = (Elf64_Addr) &_dl_runtime_resolve_vx;
++	  else
++	    got[2] = (Elf64_Addr) &_dl_runtime_resolve;
++#else
++	  got[2] = (Elf64_Addr) &_dl_runtime_resolve;
++#endif
++	}
+     }
+ 
+   return lazy;
+diff --git a/sysdeps/s390/s390-64/dl-trampoline.S b/sysdeps/s390/s390-64/dl-trampoline.S
+index 6919ed0..1b0c9e2 100644
+--- a/sysdeps/s390/s390-64/dl-trampoline.S
++++ b/sysdeps/s390/s390-64/dl-trampoline.S
+@@ -16,126 +16,18 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-/* The PLT stubs will call _dl_runtime_resolve/_dl_runtime_profile
+- * with the following linkage:
+- *   r2 - r6 : parameter registers
+- *   f0, f2, f4, f6 : floating point parameter registers
+- *   48(r15), 56(r15) : PLT arguments PLT1, PLT2
+- *   160(r15) : additional stack parameters
+- * The normal clobber rules for function calls apply:
+- *   r0 - r5 : call clobbered
+- *   r6 - r13 :	 call saved
+- *   r14 : return address (call clobbered)
+- *   r15 : stack pointer (call saved)
+- *   f1, f3, f5, f7 : call saved
+- *   f0 - f3, f5, f7 - f15 : call clobbered
+- */
+-
+ #include <sysdep.h>
+ 
+ 	.text
+-	.globl _dl_runtime_resolve
+-	.type _dl_runtime_resolve, @function
+-	cfi_startproc
+-	.align 16
+-_dl_runtime_resolve:
+-	stmg   %r2,%r5,64(15)	# save call-clobbered argument registers
+-	stg    %r14,96(15)
+-	cfi_offset (r14, -64)
+-	lgr    %r0,%r15
+-	aghi   %r15,-160	# create stack frame
+-	cfi_adjust_cfa_offset (160)
+-	stg    %r0,0(%r15)      # write backchain
+-	lmg    %r2,%r3,208(%r15)# load args saved by PLT
+-	brasl  %r14,_dl_fixup	# call fixup
+-	lgr    %r1,%r2		# function addr returned in r2
+-	aghi   %r15,160		# remove stack frame
+-	cfi_adjust_cfa_offset (-160)
+-	lg     %r14,96(15)	# restore registers
+-	lmg    %r2,%r5,64(15)
+-	br     %r1
+-	cfi_endproc
+-	.size _dl_runtime_resolve, .-_dl_runtime_resolve
+-
+-
+-#ifndef PROF
+-	.globl _dl_runtime_profile
+-	.type _dl_runtime_profile, @function
+-	cfi_startproc
+-	.align 16
+-_dl_runtime_profile:
+-	stmg   %r2,%r6,64(%r15)		# save call-clobbered arg regs
+-	std    %f0,104(%r15)		# + r6 needed as arg for
+-	std    %f2,112(%r15)		#  _dl_profile_fixup
+-	std    %f4,120(%r15)
+-	std    %f6,128(%r15)
+-	stg    %r12,24(%r15)		# r12 is used as backup of r15
+-	stg    %r14,32(%r15)
+-	cfi_offset (r6, -96)
+-	cfi_offset (f0, -56)
+-	cfi_offset (f2, -48)
+-	cfi_offset (f4, -40)
+-	cfi_offset (f6, -32)
+-	cfi_offset (r12, -136)
+-	cfi_offset (r14, -128)
+-	lgr    %r12,%r15		# backup stack pointer
+-	cfi_def_cfa_register (12)
+-	aghi   %r15,-160		# create stack frame
+-	stg    %r12,0(%r15)		# save backchain
+-	lmg    %r2,%r3,48(%r12)		# load arguments saved by PLT
+-	lgr    %r4,%r14			# return address as third parameter
+-	la     %r5,64(%r12)		# pointer to struct La_s390_32_regs
+-	la     %r6,40(%r12)		# long int * framesize
+-	brasl  %r14,_dl_profile_fixup	# call resolver
+-	lgr    %r1,%r2			# function addr returned in r2
+-	lg     %r0,40(%r12)		# load framesize
+-	ltgr   %r0,%r0
+-	jnm    1f
+-
+-	lmg    %r2,%r6,64(%r12)		# framesize < 0 means no pltexit call
+-	ld     %f0,104(%r12)		# so we can do a tail call without
+-	ld     %f2,112(%r12)		# copying the arg overflow area
+-	ld     %f4,120(%r12)
+-	ld     %f6,128(%r12)
+-
+-	lgr    %r15,%r12		# remove stack frame
+-	cfi_def_cfa_register (15)
+-	lg     %r14,32(%r15)		# restore registers
+-	lg     %r12,24(%r15)
+-	br     %r1			# tail-call to resolved function
+-
+-	cfi_def_cfa_register (12)
+-1:	jz     4f			# framesize == 0 ?
+-	aghi   %r0,7			# align framesize to 8
+-	nill   %r0,0xfff8
+-	slgr   %r15,%r0			# make room for framesize bytes
+-	stg    %r12,0(%r15)
+-	la     %r2,160(%r15)
+-	la     %r3,160(%r12)
+-	srlg   %r0,%r0,3
+-3:	mvc    0(8,%r2),0(%r3)		# copy additional parameters
+-	la     %r2,8(%r2)
+-	la     %r3,8(%r3)
+-	brctg  %r0,3b
+-4:	lmg    %r2,%r6,64(%r12)		# load register parameters
+-	ld     %f0,104(%r12)            # restore call-clobbered arg regs
+-	ld     %f2,112(%r12)
+-	ld     %f4,120(%r12)
+-	ld     %f6,128(%r12)
+-	basr   %r14,%r1			# call resolved function
+-	stg    %r2,136(%r12)
+-	std    %f0,144(%r12)
+-	lmg    %r2,%r3,48(%r12)		# load arguments saved by PLT
+-	la     %r4,32(%r12)		# pointer to struct La_s390_32_regs
+-	la     %r5,72(%r12)		# pointer to struct La_s390_32_retval
+-	brasl  %r14,_dl_call_pltexit
+-
+-	lgr    %r15,%r12		# remove stack frame
+-	cfi_def_cfa_register (15)
+-	lg     %r14,32(%r15)		# restore registers
+-	lg     %r12,24(%r15)
+-	br     %r14
+-
+-	cfi_endproc
+-	.size _dl_runtime_profile, .-_dl_runtime_profile
++/* Create variant of _dl_runtime_resolve/profile for machines before z13.
++   No vector registers are saved/restored.  */
++#include <dl-trampoline.h>
++
++#if defined HAVE_S390_VX_ASM_SUPPORT
++/* Create variant of _dl_runtime_resolve/profile for z13 and newer.
++   The vector registers are saved/restored, too.*/
++# define _dl_runtime_resolve _dl_runtime_resolve_vx
++# define _dl_runtime_profile _dl_runtime_profile_vx
++# define RESTORE_VRS
++# include <dl-trampoline.h>
+ #endif
+diff --git a/sysdeps/s390/s390-64/dl-trampoline.h b/sysdeps/s390/s390-64/dl-trampoline.h
+new file mode 100644
+index 0000000..658e3a3
+--- /dev/null
++++ b/sysdeps/s390/s390-64/dl-trampoline.h
+@@ -0,0 +1,211 @@
++/* PLT trampolines.  s390x version.
++   Copyright (C) 2016 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* The PLT stubs will call _dl_runtime_resolve/_dl_runtime_profile
++ * with the following linkage:
++ *   r2 - r6 : parameter registers
++ *   f0, f2, f4, f6 : floating point parameter registers
++ *   v24, v26, v28, v30, v25, v27, v29, v31 : vector parameter registers
++ *   48(r15), 56(r15) : PLT arguments PLT1, PLT2
++ *   160(r15) : additional stack parameters
++ * The normal clobber rules for function calls apply:
++ *   r0 - r5 : call clobbered
++ *   r6 - r13 :	 call saved
++ *   r14 : return address (call clobbered)
++ *   r15 : stack pointer (call saved)
++ *   f0 - f7 : call clobbered
++ *   f8 - f15 : call saved
++ *   v0 - v7 : bytes 0-7 overlap with f0-f7: call clobbered
++               bytes 8-15: call clobbered
++ *   v8 - v15 : bytes 0-7 overlap with f8-f15: call saved
++                bytes 8-15: call clobbered
++ *   v16 - v31 : call clobbered
++ */
++
++	.globl _dl_runtime_resolve
++	.type _dl_runtime_resolve, @function
++	cfi_startproc
++	.align 16
++_dl_runtime_resolve:
++	stmg   %r2,%r5,64(%r15)	# save call-clobbered argument registers
++	cfi_offset (r2, -96)
++	cfi_offset (r3, -88)
++	cfi_offset (r4, -80)
++	cfi_offset (r5, -72)
++	std    %f0,104(%r15)
++	cfi_offset (f0, -56)
++	std    %f2,112(%r15)
++	cfi_offset (f2, -48)
++	std    %f4,120(%r15)
++	cfi_offset (f4, -40)
++	std    %f6,128(%r15)
++	cfi_offset (f6, -32)
++	stg    %r14,96(15)
++	cfi_offset (r14, -64)
++	lmg    %r2,%r3,48(%r15) # load args for fixup saved by PLT
++	lgr    %r0,%r15
++#ifdef RESTORE_VRS
++	aghi   %r15,-288        # create stack frame
++	cfi_adjust_cfa_offset (288)
++	.machine push
++	.machine "z13"
++	vstm   %v24,%v31,160(%r15)# store call-clobbered vector argument registers
++	cfi_offset (v24, -288)
++	cfi_offset (v25, -272)
++	cfi_offset (v26, -256)
++	cfi_offset (v27, -240)
++	cfi_offset (v28, -224)
++	cfi_offset (v29, -208)
++	cfi_offset (v30, -192)
++	cfi_offset (v31, -176)
++	.machine pop
++#else
++	aghi   %r15,-160        # create stack frame
++	cfi_adjust_cfa_offset (160)
++#endif
++	stg    %r0,0(%r15)      # write backchain
++	brasl  %r14,_dl_fixup	# call _dl_fixup
++	lgr    %r1,%r2		# function addr returned in r2
++#ifdef RESTORE_VRS
++	.machine push
++	.machine "z13"
++	vlm    %v24,%v31,160(%r15)# restore vector registers
++	.machine pop
++	aghi   %r15,288         # remove stack frame
++	cfi_adjust_cfa_offset (-288)
++#else
++	aghi   %r15,160         # remove stack frame
++	cfi_adjust_cfa_offset (-160)
++#endif
++	lg     %r14,96(%r15)	# restore registers
++	ld     %f0,104(%r15)
++	ld     %f2,112(%r15)
++	ld     %f4,120(%r15)
++	ld     %f6,128(%r15)
++	lmg    %r2,%r5,64(%r15)
++	br     %r1
++	cfi_endproc
++	.size _dl_runtime_resolve, .-_dl_runtime_resolve
++
++
++#ifndef PROF
++	.globl _dl_runtime_profile
++	.type _dl_runtime_profile, @function
++	cfi_startproc
++	.align 16
++_dl_runtime_profile:
++	stmg   %r2,%r6,64(%r15)		# save call-clobbered arg regs
++	cfi_offset (r2, -96)		# + r6 needed as arg for
++	cfi_offset (r3, -88)		#  _dl_profile_fixup
++	cfi_offset (r4, -80)
++	cfi_offset (r5, -72)
++	cfi_offset (r6, -64)
++	std    %f0,104(%r15)
++	cfi_offset (f0, -56)
++	std    %f2,112(%r15)
++	cfi_offset (f2, -48)
++	std    %f4,120(%r15)
++	cfi_offset (f4, -40)
++	std    %f6,128(%r15)
++	cfi_offset (f6, -32)
++	stg    %r12,24(%r15)		# r12 is used as backup of r15
++	cfi_offset (r12, -136)
++	stg    %r14,32(%r15)
++	cfi_offset (r14, -128)
++	lgr    %r12,%r15		# backup stack pointer
++	cfi_def_cfa_register (12)
++#ifdef RESTORE_VRS
++	aghi   %r15,-288		# create stack frame
++	.machine push
++	.machine "z13"
++	vstm   %v24,%v31,160(%r15)# store call-clobbered vector argument registers
++	cfi_offset (v24, -288)
++	cfi_offset (v25, -272)
++	cfi_offset (v26, -256)
++	cfi_offset (v27, -240)
++	cfi_offset (v28, -224)
++	cfi_offset (v29, -208)
++	cfi_offset (v30, -192)
++	cfi_offset (v31, -176)
++	.machine pop
++#else
++	aghi   %r15,-160		# create stack frame
++#endif
++	stg    %r12,0(%r15)		# save backchain
++	lmg    %r2,%r3,48(%r12)		# load arguments saved by PLT
++	lgr    %r4,%r14			# return address as third parameter
++	la     %r5,64(%r12)		# pointer to struct La_s390_64_regs
++	la     %r6,40(%r12)		# long int * framesize
++	brasl  %r14,_dl_profile_fixup	# call resolver
++	lgr    %r1,%r2			# function addr returned in r2
++	ld     %f0,104(%r12)		# restore call-clobbered arg fprs
++	ld     %f2,112(%r12)
++	ld     %f4,120(%r12)
++	ld     %f6,128(%r12)
++#ifdef RESTORE_VRS
++	.machine push
++	.machine "z13"
++	vlm    %v24,%v31,160(%r15)	# restore call-clobbered arg vrs
++	.machine pop
++#endif
++	lg     %r0,40(%r12)		# load framesize
++	ltgr   %r0,%r0
++	jnm    1f
++
++	lmg    %r2,%r6,64(%r12)		# framesize < 0 means no pltexit call
++					# so we can do a tail call without
++					# copying the arg overflow area
++	lgr    %r15,%r12		# remove stack frame
++	cfi_def_cfa_register (15)
++	lg     %r14,32(%r15)		# restore registers
++	lg     %r12,24(%r15)
++	br     %r1			# tail-call to resolved function
++
++	cfi_def_cfa_register (12)
++1:	jz     4f			# framesize == 0 ?
++	aghi   %r0,7			# align framesize to 8
++	nill   %r0,0xfff8
++	slgr   %r15,%r0			# make room for framesize bytes
++	stg    %r12,0(%r15)		# save backchain
++	la     %r2,160(%r15)
++	la     %r3,160(%r12)
++	srlg   %r0,%r0,3
++3:	mvc    0(8,%r2),0(%r3)		# copy additional parameters
++	la     %r2,8(%r2)		# depending on framesize
++	la     %r3,8(%r3)
++	brctg  %r0,3b
++4:	lmg    %r2,%r6,64(%r12)		# restore call-clobbered arg gprs
++	basr   %r14,%r1			# call resolved function
++	stg    %r2,136(%r12)		# store return values r2, f0
++	std    %f0,144(%r12)		# to struct La_s390_64_retval
++	lmg    %r2,%r3,48(%r12)		# load arguments saved by PLT
++	la     %r4,64(%r12)		# pointer to struct La_s390_64_regs
++	la     %r5,136(%r12)		# pointer to struct La_s390_64_retval
++	brasl  %r14,_dl_call_pltexit
++
++	lgr    %r15,%r12		# remove stack frame
++	cfi_def_cfa_register (15)
++	lg     %r14,32(%r15)		# restore registers
++	lg     %r12,24(%r15)
++	lg     %r2,136(%r15)		# restore return values
++	ld     %f0,144(%r15)
++	br     %r14			# Jump back to caller
++
++	cfi_endproc
++	.size _dl_runtime_profile, .-_dl_runtime_profile
++#endif
diff --git a/SOURCES/glibc-rh1324427-2.patch b/SOURCES/glibc-rh1324427-2.patch
new file mode 100644
index 0000000..9d6f9f1
--- /dev/null
+++ b/SOURCES/glibc-rh1324427-2.patch
@@ -0,0 +1,384 @@
+commit 5cdd1989d1d2f135d02e66250f37ba8e767f9772
+Author: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date:   Thu Mar 31 17:37:16 2016 +0200
+
+    S390: Extend structs La_s390_regs / La_s390_retval with vector-registers.
+    
+    Starting with z13, vector registers can also occur as argument registers.
+    Thus the passed input/output register structs for
+    la_s390_[32|64]_gnu_plt[enter|exit] functions should reflect those new
+    registers. This patch extends these structs La_s390_regs and La_s390_retval
+    and adjusts _dl_runtime_profile() to handle those fields in case of
+    running on a z13 machine.
+    
+    ChangeLog:
+    
+    	* sysdeps/s390/bits/link.h: (La_s390_vr) New typedef.
+    	(La_s390_32_regs): Append vector register lr_v24-lr_v31.
+    	(La_s390_64_regs): Likewise.
+    	(La_s390_32_retval): Append vector register lrv_v24.
+    	(La_s390_64_retval): Likeweise.
+    	* sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_profile):
+    	Handle extended structs La_s390_32_regs and La_s390_32_retval.
+    	* sysdeps/s390/s390-64/dl-trampoline.h (_dl_runtime_profile):
+    	Handle extended structs La_s390_64_regs and La_s390_64_retval.
+
+diff --git a/sysdeps/s390/bits/link.h b/sysdeps/s390/bits/link.h
+index 2ef7f44..e27ed67 100644
+--- a/sysdeps/s390/bits/link.h
++++ b/sysdeps/s390/bits/link.h
+@@ -19,6 +19,9 @@
+ # error "Never include <bits/link.h> directly; use <link.h> instead."
+ #endif
+ 
++#if defined HAVE_S390_VX_ASM_SUPPORT
++typedef char La_s390_vr[16];
++#endif
+ 
+ #if __ELF_NATIVE_CLASS == 32
+ 
+@@ -32,6 +35,16 @@ typedef struct La_s390_32_regs
+   uint32_t lr_r6;
+   double lr_fp0;
+   double lr_fp2;
++# if defined HAVE_S390_VX_ASM_SUPPORT
++  La_s390_vr lr_v24;
++  La_s390_vr lr_v25;
++  La_s390_vr lr_v26;
++  La_s390_vr lr_v27;
++  La_s390_vr lr_v28;
++  La_s390_vr lr_v29;
++  La_s390_vr lr_v30;
++  La_s390_vr lr_v31;
++# endif
+ } La_s390_32_regs;
+ 
+ /* Return values for calls from PLT on s390-32.  */
+@@ -40,6 +53,9 @@ typedef struct La_s390_32_retval
+   uint32_t lrv_r2;
+   uint32_t lrv_r3;
+   double lrv_fp0;
++# if defined HAVE_S390_VX_ASM_SUPPORT
++  La_s390_vr lrv_v24;
++# endif
+ } La_s390_32_retval;
+ 
+ 
+@@ -77,6 +93,16 @@ typedef struct La_s390_64_regs
+   double lr_fp2;
+   double lr_fp4;
+   double lr_fp6;
++# if defined HAVE_S390_VX_ASM_SUPPORT
++  La_s390_vr lr_v24;
++  La_s390_vr lr_v25;
++  La_s390_vr lr_v26;
++  La_s390_vr lr_v27;
++  La_s390_vr lr_v28;
++  La_s390_vr lr_v29;
++  La_s390_vr lr_v30;
++  La_s390_vr lr_v31;
++# endif
+ } La_s390_64_regs;
+ 
+ /* Return values for calls from PLT on s390-64.  */
+@@ -84,6 +110,9 @@ typedef struct La_s390_64_retval
+ {
+   uint64_t lrv_r2;
+   double lrv_fp0;
++# if defined HAVE_S390_VX_ASM_SUPPORT
++  La_s390_vr lrv_v24;
++# endif
+ } La_s390_64_retval;
+ 
+ 
+diff --git a/sysdeps/s390/s390-32/dl-trampoline.h b/sysdeps/s390/s390-32/dl-trampoline.h
+index a152a7b..bb74d27 100644
+--- a/sysdeps/s390/s390-32/dl-trampoline.h
++++ b/sysdeps/s390/s390-32/dl-trampoline.h
+@@ -112,28 +112,31 @@ _dl_runtime_resolve:
+ 	cfi_startproc
+ 	.align 16
+ _dl_runtime_profile:
+-	stm    %r2,%r6,32(%r15)		# save registers
+-	cfi_offset (r2, -64)		# + r6 needed as arg for
+-	cfi_offset (r3, -60)		#  _dl_profile_fixup
+-	cfi_offset (r4, -56)
+-	cfi_offset (r5, -52)
+-	cfi_offset (r6, -48)
+-	std    %f0,56(%r15)
+-	cfi_offset (f0, -40)
+-	std    %f2,64(%r15)
+-	cfi_offset (f2, -32)
+ 	st     %r12,12(%r15)		# r12 is used as backup of r15
+ 	cfi_offset (r12, -84)
+ 	st     %r14,16(%r15)
+ 	cfi_offset (r14, -80)
+ 	lr     %r12,%r15		# backup stack pointer
+ 	cfi_def_cfa_register (12)
++	ahi    %r15,-264		# create stack frame:
++					# 96 + sizeof(La_s390_32_regs)
++	st     %r12,0(%r15)		# save backchain
++
++	stm    %r2,%r6,96(%r15)		# save registers
++	cfi_offset (r2, -264)		# + r6 needed as arg for
++	cfi_offset (r3, -260)		#  _dl_profile_fixup
++	cfi_offset (r4, -256)
++	cfi_offset (r5, -252)
++	cfi_offset (r6, -248)
++	std    %f0,120(%r15)
++	cfi_offset (f0, -240)
++	std    %f2,128(%r15)
++	cfi_offset (f2, -232)
+ #ifdef RESTORE_VRS
+-	ahi    %r15,-224		# create stack frame
+ 	.machine push
+ 	.machine "z13"
+ 	.machinemode "zarch_nohighgprs"
+-	vstm   %v24,%v31,96(%r15)	# store call-clobbered vr arguments
++	vstm   %v24,%v31,136(%r15)	# store call-clobbered vr arguments
+ 	cfi_offset (v24, -224)
+ 	cfi_offset (v25, -208)
+ 	cfi_offset (v26, -192)
+@@ -143,31 +146,31 @@ _dl_runtime_profile:
+ 	cfi_offset (v30, -128)
+ 	cfi_offset (v31, -112)
+ 	.machine pop
+-#else
+-	ahi    %r15,-96			# create stack frame
+ #endif
+-	st     %r12,0(%r15)		# save backchain
++
+ 	lm     %r2,%r3,24(%r12)		# load arguments saved by PLT
+ 	lr     %r4,%r14			# return address as third parameter
+ 	basr   %r1,0
+ 0:	l      %r14,6f-0b(%r1)
+-	la     %r5,32(%r12)		# pointer to struct La_s390_32_regs
++	la     %r5,96(%r15)		# pointer to struct La_s390_32_regs
+ 	la     %r6,20(%r12)		# long int * framesize
+ 	bas    %r14,0(%r14,%r1)		# call resolver
+ 	lr     %r1,%r2			# function addr returned in r2
+-	ld     %f0,56(%r12)		# restore call-clobbered arg fprs
+-	ld     %f2,64(%r12)
++	ld     %f0,120(%r15)		# restore call-clobbered arg fprs
++	ld     %f2,128(%r15)
+ #ifdef RESTORE_VRS
+ 	.machine push
+ 	.machine "z13"
+ 	.machinemode "zarch_nohighgprs"
+-	vlm    %v24,%v31,96(%r15)	# restore call-clobbered arg vrs
++	vlm    %v24,%v31,136(%r15)	# restore call-clobbered arg vrs
+ 	.machine pop
+ #endif
+ 	icm    %r0,15,20(%r12)		# load & test framesize
+ 	jnm    2f
+ 
+-	lm     %r2,%r6,32(%r12)
++	lm     %r2,%r6,96(%r15)		# framesize < 0 means no pltexit call
++					# so we can do a tail call without
++					# copying the arg overflow area
+ 	lr     %r15,%r12		# remove stack frame
+ 	cfi_def_cfa_register (15)
+ 	l      %r14,16(%r15)		# restore registers
+@@ -175,7 +178,9 @@ _dl_runtime_profile:
+ 	br     %r1			# tail-call to the resolved function
+ 
+ 	cfi_def_cfa_register (12)
+-2:	jz     4f			# framesize == 0 ?
++2:	la     %r4,96(%r15)		# pointer to struct La_s390_32_regs
++	st     %r4,32(%r12)
++	jz     4f			# framesize == 0 ?
+ 	ahi    %r0,7			# align framesize to 8
+ 	lhi    %r2,-8
+ 	nr     %r0,%r2
+@@ -188,24 +193,35 @@ _dl_runtime_profile:
+ 	la     %r2,8(%r2)
+ 	la     %r3,8(%r3)
+ 	brct   %r0,3b
+-4:	lm     %r2,%r6,32(%r12)		# load register parameters
++4:	lm     %r2,%r6,0(%r4)		# load register parameters
+ 	basr   %r14,%r1			# call resolved function
+-	stm    %r2,%r3,72(%r12)		# store return values r2, r3, f0
+-	std    %f0,80(%r12)		# to struct La_s390_32_retval
+-	lm     %r2,%r3,24(%r12)		# load arguments saved by PLT
++	stm    %r2,%r3,40(%r12)		# store return values r2, r3, f0
++	std    %f0,48(%r12)		# to struct La_s390_32_retval
++#ifdef RESTORE_VRS
++	.machine push
++	.machine "z13"
++	vst    %v24,56(%r12)		# store return value v24
++	.machine pop
++#endif
++	lm     %r2,%r4,24(%r12)		# r2, r3: load arguments saved by PLT
++					# r4: pointer to struct La_s390_32_regs
+ 	basr   %r1,0
+ 5:	l      %r14,7f-5b(%r1)
+-	la     %r4,32(%r12)		# pointer to struct La_s390_32_regs
+-	la     %r5,72(%r12)		# pointer to struct La_s390_32_retval
++	la     %r5,40(%r12)		# pointer to struct La_s390_32_retval
+ 	bas    %r14,0(%r14,%r1)		# call _dl_call_pltexit
+ 
+ 	lr     %r15,%r12		# remove stack frame
+ 	cfi_def_cfa_register (15)
+ 	l      %r14,16(%r15)		# restore registers
+ 	l      %r12,12(%r15)
+-	l      %r2,72(%r15)		# restore return values
+-	l      %r3,76(%r15)
+-	ld     %f0,80(%r15)
++	lm     %r2,%r3,40(%r15)		# restore return values
++	ld     %f0,48(%r15)
++#ifdef RESTORE_VRS
++	.machine push
++	.machine "z13"
++	vl    %v24,56(%r15)		# restore return value v24
++	.machine pop
++#endif
+ 	br     %r14
+ 
+ 6:	.long  _dl_profile_fixup - 0b
+diff --git a/sysdeps/s390/s390-64/dl-trampoline.h b/sysdeps/s390/s390-64/dl-trampoline.h
+index 658e3a3..33ea3de 100644
+--- a/sysdeps/s390/s390-64/dl-trampoline.h
++++ b/sysdeps/s390/s390-64/dl-trampoline.h
+@@ -109,31 +109,34 @@ _dl_runtime_resolve:
+ 	cfi_startproc
+ 	.align 16
+ _dl_runtime_profile:
+-	stmg   %r2,%r6,64(%r15)		# save call-clobbered arg regs
+-	cfi_offset (r2, -96)		# + r6 needed as arg for
+-	cfi_offset (r3, -88)		#  _dl_profile_fixup
+-	cfi_offset (r4, -80)
+-	cfi_offset (r5, -72)
+-	cfi_offset (r6, -64)
+-	std    %f0,104(%r15)
+-	cfi_offset (f0, -56)
+-	std    %f2,112(%r15)
+-	cfi_offset (f2, -48)
+-	std    %f4,120(%r15)
+-	cfi_offset (f4, -40)
+-	std    %f6,128(%r15)
+-	cfi_offset (f6, -32)
+ 	stg    %r12,24(%r15)		# r12 is used as backup of r15
+ 	cfi_offset (r12, -136)
+ 	stg    %r14,32(%r15)
+ 	cfi_offset (r14, -128)
+ 	lgr    %r12,%r15		# backup stack pointer
+ 	cfi_def_cfa_register (12)
++	aghi   %r15,-360		# create stack frame:
++					# 160 + sizeof(La_s390_64_regs)
++	stg    %r12,0(%r15)		# save backchain
++
++	stmg   %r2,%r6,160(%r15)	# save call-clobbered arg regs
++	cfi_offset (r2, -360)		# + r6 needed as arg for
++	cfi_offset (r3, -352)		#  _dl_profile_fixup
++	cfi_offset (r4, -344)
++	cfi_offset (r5, -336)
++	cfi_offset (r6, -328)
++	std    %f0,200(%r15)
++	cfi_offset (f0, -320)
++	std    %f2,208(%r15)
++	cfi_offset (f2, -312)
++	std    %f4,216(%r15)
++	cfi_offset (f4, -304)
++	std    %f6,224(%r15)
++	cfi_offset (f6, -296)
+ #ifdef RESTORE_VRS
+-	aghi   %r15,-288		# create stack frame
+ 	.machine push
+ 	.machine "z13"
+-	vstm   %v24,%v31,160(%r15)# store call-clobbered vector argument registers
++	vstm   %v24,%v31,232(%r15)      # store call-clobbered vector arguments
+ 	cfi_offset (v24, -288)
+ 	cfi_offset (v25, -272)
+ 	cfi_offset (v26, -256)
+@@ -143,31 +146,28 @@ _dl_runtime_profile:
+ 	cfi_offset (v30, -192)
+ 	cfi_offset (v31, -176)
+ 	.machine pop
+-#else
+-	aghi   %r15,-160		# create stack frame
+ #endif
+-	stg    %r12,0(%r15)		# save backchain
+ 	lmg    %r2,%r3,48(%r12)		# load arguments saved by PLT
+ 	lgr    %r4,%r14			# return address as third parameter
+-	la     %r5,64(%r12)		# pointer to struct La_s390_64_regs
++	la     %r5,160(%r15)		# pointer to struct La_s390_64_regs
+ 	la     %r6,40(%r12)		# long int * framesize
+ 	brasl  %r14,_dl_profile_fixup	# call resolver
+ 	lgr    %r1,%r2			# function addr returned in r2
+-	ld     %f0,104(%r12)		# restore call-clobbered arg fprs
+-	ld     %f2,112(%r12)
+-	ld     %f4,120(%r12)
+-	ld     %f6,128(%r12)
++	ld     %f0,200(%r15)		# restore call-clobbered arg fprs
++	ld     %f2,208(%r15)
++	ld     %f4,216(%r15)
++	ld     %f6,224(%r15)
+ #ifdef RESTORE_VRS
+ 	.machine push
+ 	.machine "z13"
+-	vlm    %v24,%v31,160(%r15)	# restore call-clobbered arg vrs
++	vlm    %v24,%v31,232(%r15)	# restore call-clobbered arg vrs
+ 	.machine pop
+ #endif
+ 	lg     %r0,40(%r12)		# load framesize
+ 	ltgr   %r0,%r0
+ 	jnm    1f
+ 
+-	lmg    %r2,%r6,64(%r12)		# framesize < 0 means no pltexit call
++	lmg    %r2,%r6,160(%r15)	# framesize < 0 means no pltexit call
+ 					# so we can do a tail call without
+ 					# copying the arg overflow area
+ 	lgr    %r15,%r12		# remove stack frame
+@@ -177,7 +177,9 @@ _dl_runtime_profile:
+ 	br     %r1			# tail-call to resolved function
+ 
+ 	cfi_def_cfa_register (12)
+-1:	jz     4f			# framesize == 0 ?
++1:	la     %r4,160(%r15)		# pointer to struct La_s390_64_regs
++	stg    %r4,64(%r12)
++	jz     4f			# framesize == 0 ?
+ 	aghi   %r0,7			# align framesize to 8
+ 	nill   %r0,0xfff8
+ 	slgr   %r15,%r0			# make room for framesize bytes
+@@ -189,21 +191,33 @@ _dl_runtime_profile:
+ 	la     %r2,8(%r2)		# depending on framesize
+ 	la     %r3,8(%r3)
+ 	brctg  %r0,3b
+-4:	lmg    %r2,%r6,64(%r12)		# restore call-clobbered arg gprs
++4:	lmg    %r2,%r6,0(%r4)		# restore call-clobbered arg gprs
+ 	basr   %r14,%r1			# call resolved function
+-	stg    %r2,136(%r12)		# store return values r2, f0
+-	std    %f0,144(%r12)		# to struct La_s390_64_retval
+-	lmg    %r2,%r3,48(%r12)		# load arguments saved by PLT
+-	la     %r4,64(%r12)		# pointer to struct La_s390_64_regs
+-	la     %r5,136(%r12)		# pointer to struct La_s390_64_retval
++	stg    %r2,72(%r12)		# store return values r2, f0
++	std    %f0,80(%r12)		# to struct La_s390_64_retval
++#ifdef RESTORE_VRS
++	.machine push
++	.machine "z13"
++	vst    %v24,88(%r12)		# store return value v24
++	.machine pop
++#endif
++	lmg    %r2,%r4,48(%r12)		# r2, r3: load arguments saved by PLT
++					# r4: pointer to struct La_s390_64_regs
++	la     %r5,72(%r12)		# pointer to struct La_s390_64_retval
+ 	brasl  %r14,_dl_call_pltexit
+ 
+ 	lgr    %r15,%r12		# remove stack frame
+ 	cfi_def_cfa_register (15)
+ 	lg     %r14,32(%r15)		# restore registers
+ 	lg     %r12,24(%r15)
+-	lg     %r2,136(%r15)		# restore return values
+-	ld     %f0,144(%r15)
++	lg     %r2,72(%r15)		# restore return values
++	ld     %f0,80(%r15)
++#ifdef RESTORE_VRS
++	.machine push
++	.machine "z13"
++	vl    %v24,88(%r15)		# restore return value v24
++	.machine pop
++#endif
+ 	br     %r14			# Jump back to caller
+ 
+ 	cfi_endproc
diff --git a/SOURCES/glibc-rh1324427-3.patch b/SOURCES/glibc-rh1324427-3.patch
new file mode 100644
index 0000000..1fbe7ae
--- /dev/null
+++ b/SOURCES/glibc-rh1324427-3.patch
@@ -0,0 +1,28 @@
+commit d8a012c5c9e4bfc1b8db2bc6deacb85b44a2e1eb
+Author: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date:   Fri Apr 1 10:42:54 2016 +0200
+
+    S390: Use ahi instead of aghi in 32bit _dl_runtime_resolve.
+    
+    This patch uses ahi instead of aghi in 32bit _dl_runtime_resolve
+    to adjust the stack pointer. This is no functional change,
+    but a cosmetic one.
+    
+    ChangeLog:
+    
+    	* sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_resolve):
+    	Use ahi instead of aghi to adjust stack pointer.
+
+diff --git a/sysdeps/s390/s390-32/dl-trampoline.h b/sysdeps/s390/s390-32/dl-trampoline.h
+index bb74d27..086449f 100644
+--- a/sysdeps/s390/s390-32/dl-trampoline.h
++++ b/sysdeps/s390/s390-32/dl-trampoline.h
+@@ -90,7 +90,7 @@ _dl_runtime_resolve:
+ 	.machinemode "zarch_nohighgprs"
+ 	vlm    %v24,%v31,96(%r15)	# restore vector registers
+ 	.machine pop
+-	aghi   %r15,224			# remove stack frame
++	ahi   %r15,224			# remove stack frame
+ 	cfi_adjust_cfa_offset (-224)
+ #else
+ 	ahi    %r15,96			# remove stack frame
diff --git a/SOURCES/glibc-rh1335286-0.patch b/SOURCES/glibc-rh1335286-0.patch
new file mode 100644
index 0000000..80f64c6
--- /dev/null
+++ b/SOURCES/glibc-rh1335286-0.patch
@@ -0,0 +1,78 @@
+On top of this patch we include a few more redirecting versions of
+the rtld-* routines in multiarch, this is needed because of the
+sysd-rules which try to build from multiarch first and will even
+use memset.S from multiarch to buidl rtld-memset.os, which results
+in SSE register usage in rtld which we can't allow because of
+lazy binding (though in some cases we use RTLD_PREPARE_FOREIGN_CALL
+and others to wrap such calls).
+
+commit 747ef469ffc9c9179ca9d76854167925b4e44346
+Author: Siddhesh Poyarekar <siddhesh@redhat.com>
+Date:   Sat Jun 15 00:09:26 2013 +0530
+
+    Add rtld-memset.S for x86_64
+    
+    Resolves: BZ #15627
+    
+    Add an assembler version of rtld-memset to avoid using SSE registers.
+
+Index: glibc-2.17-c758a686/sysdeps/x86_64/rtld-memset.S
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86_64/rtld-memset.S
+@@ -0,0 +1,37 @@
++/* memset implementation for the dynamic linker.  This is separate from the
++   libc implementation to avoid writing to SSE registers.
++   Copyright (C) 2013 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include "asm-syntax.h"
++
++
++	.text
++/* void *memset (void *dest, char c, size_t count)
++   dest	 => %rdi
++   c	 => %rsi
++   count => %rdx  */
++ENTRY (memset)
++	mov	%rdx, %rcx
++	movzbl	%sil, %eax
++	mov	%rdi, %rdx
++	rep	stosb
++	mov	%rdx, %rax
++	ret
++END (memset)
++libc_hidden_builtin_def (memset)
+Index: glibc-2.17-c758a686/sysdeps/x86_64/rtld-memset.c
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/rtld-memset.c
++++ /dev/null
+@@ -1 +0,0 @@
+-#include <string/memset.c>
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/rtld-memset.S
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/rtld-memset.S
+@@ -0,0 +1 @@
++#include "../rtld-memset.S"
+Index: glibc-2.17-c758a686/sysdeps/x86_64/multiarch/rtld-strchr.S
+===================================================================
+--- /dev/null
++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/rtld-strchr.S
+@@ -0,0 +1 @@
++#include "../rtld-strchr.S"
diff --git a/SOURCES/glibc-rh1335286.patch b/SOURCES/glibc-rh1335286.patch
new file mode 100644
index 0000000..39b0e33
--- /dev/null
+++ b/SOURCES/glibc-rh1335286.patch
@@ -0,0 +1,1449 @@
+From 143ce75a4203a78d79549b00e570a5bb429c44cf Mon Sep 17 00:00:00 2001
+From: Ondrej Bilka <neleai@seznam.cz>
+Date: Mon, 20 May 2013 08:26:00 +0200
+Subject: [PATCH] Faster memset on x64
+
+This implementation speed up memset in several ways. First is
+avoiding expensive computed jump. Second is using fact that arguments
+of memset are most of time aligned to 8 bytes.
+
+Benchmark results on:
+
+kam.mff.cuni.cz/~ondra/benchmark_string/memset_profile_result27_04_13.tar.bz2
+
+(cherry picked from commit b2b671b677d92429a3d41bf451668f476aa267ed)
+---
+ sysdeps/x86_64/memset.S | 1406 +++--------------------------------------------
+ 1 file changed, 91 insertions(+), 1315 deletions(-)
+
+Index: glibc-2.17-c758a686/sysdeps/x86_64/memset.S
+===================================================================
+--- glibc-2.17-c758a686.orig/sysdeps/x86_64/memset.S
++++ glibc-2.17-c758a686/sysdeps/x86_64/memset.S
+@@ -19,17 +19,31 @@
+ 
+ #include <sysdep.h>
+ 
+-#define __STOS_LOWER_BOUNDARY	$8192
+-#define __STOS_UPPER_BOUNDARY	$65536
++#ifndef ALIGN
++# define ALIGN(n) .p2align n
++#endif
+ 
+ 	.text
+ #if IS_IN (libc) && !defined USE_MULTIARCH
+ ENTRY(__bzero)
+-	mov	%rsi,%rdx	/* Adjust parameter.  */
+-	xorl	%esi,%esi	/* Fill with 0s.  */
+-	jmp	L(memset_entry)
++	movq	%rdi, %rax /* Set return value.  */
++	movq	%rsi, %rdx /* Set n.  */
++	pxor	%xmm8, %xmm8
++	jmp	L(entry_from_bzero)
+ END(__bzero)
+ weak_alias (__bzero, bzero)
++
++/* Like memset but takes additional parameter with return value.  */
++ENTRY(__memset_tail)
++	movq	%rcx, %rax /* Set return value.  */
++
++	movd	%esi, %xmm8
++	punpcklbw	%xmm8, %xmm8
++	punpcklwd	%xmm8, %xmm8
++	pshufd	$0, %xmm8, %xmm8
++
++	jmp	L(entry_from_bzero)
++END(__memset_tail)
+ #endif
+ 
+ #if defined PIC && IS_IN (libc)
+@@ -38,1318 +52,80 @@ ENTRY_CHK (__memset_chk)
+ 	jb	HIDDEN_JUMPTARGET (__chk_fail)
+ END_CHK (__memset_chk)
+ #endif
+-ENTRY (memset)
+-L(memset_entry):
+-	cmp    $0x1,%rdx
+-	mov    %rdi,%rax	/* memset returns the dest address.  */
+-	jne    L(ck2)
+-	mov    %sil,(%rdi)
+-	retq
+-L(ck2):
+-	mov    $0x101010101010101,%r9
+-	mov    %rdx,%r8
+-	movzbq %sil,%rdx
+-	imul   %r9,%rdx
+-L(now_dw_aligned):
+-	cmp    $0x90,%r8
+-	ja     L(ck_mem_ops_method)
+-L(now_dw_aligned_small):
+-	add    %r8,%rdi
+-#ifndef PIC
+-	lea    L(setPxQx)(%rip),%r11
+-	jmpq   *(%r11,%r8,8)
+-#else
+-	lea    L(Got0)(%rip),%r11
+-	lea    L(setPxQx)(%rip),%rcx
+-	movswq (%rcx,%r8,2),%rcx
+-	lea    (%rcx,%r11,1),%r11
+-	jmpq   *%r11
+-#endif
+-
+-L(Got0):
+-	retq
+-
+-	.pushsection .rodata
+-	.balign     16
+-#ifndef PIC
+-L(setPxQx):
+-	.quad       L(Got0), L(P1Q0), L(P2Q0), L(P3Q0)
+-	.quad       L(P4Q0), L(P5Q0), L(P6Q0), L(P7Q0)
+-	.quad       L(P0Q1), L(P1Q1), L(P2Q1), L(P3Q1)
+-	.quad       L(P4Q1), L(P5Q1), L(P6Q1), L(P7Q1)
+-	.quad       L(P0Q2), L(P1Q2), L(P2Q2), L(P3Q2)
+-	.quad       L(P4Q2), L(P5Q2), L(P6Q2), L(P7Q2)
+-	.quad       L(P0Q3), L(P1Q3), L(P2Q3), L(P3Q3)
+-	.quad       L(P4Q3), L(P5Q3), L(P6Q3), L(P7Q3)
+-	.quad       L(P0Q4), L(P1Q4), L(P2Q4), L(P3Q4)
+-	.quad       L(P4Q4), L(P5Q4), L(P6Q4), L(P7Q4)
+-	.quad       L(P0Q5), L(P1Q5), L(P2Q5), L(P3Q5)
+-	.quad       L(P4Q5), L(P5Q5), L(P6Q5), L(P7Q5)
+-	.quad       L(P0Q6), L(P1Q6), L(P2Q6), L(P3Q6)
+-	.quad       L(P4Q6), L(P5Q6), L(P6Q6), L(P7Q6)
+-	.quad       L(P0Q7), L(P1Q7), L(P2Q7), L(P3Q7)
+-	.quad       L(P4Q7), L(P5Q7), L(P6Q7), L(P7Q7)
+-	.quad       L(P0Q8), L(P1Q8), L(P2Q8), L(P3Q8)
+-	.quad       L(P4Q8), L(P5Q8), L(P6Q8), L(P7Q8)
+-	.quad       L(P0Q9), L(P1Q9), L(P2Q9), L(P3Q9)
+-	.quad       L(P4Q9), L(P5Q9), L(P6Q9), L(P7Q9)
+-	.quad       L(P0QA), L(P1QA), L(P2QA), L(P3QA)
+-	.quad       L(P4QA), L(P5QA), L(P6QA), L(P7QA)
+-	.quad       L(P0QB), L(P1QB), L(P2QB), L(P3QB)
+-	.quad       L(P4QB), L(P5QB), L(P6QB), L(P7QB)
+-	.quad       L(P0QC), L(P1QC), L(P2QC), L(P3QC)
+-	.quad       L(P4QC), L(P5QC), L(P6QC), L(P7QC)
+-	.quad       L(P0QD), L(P1QD), L(P2QD), L(P3QD)
+-	.quad       L(P4QD), L(P5QD), L(P6QD), L(P7QD)
+-	.quad       L(P0QE), L(P1QE), L(P2QE), L(P3QE)
+-	.quad       L(P4QE), L(P5QE), L(P6QE), L(P7QE)
+-	.quad       L(P0QF), L(P1QF), L(P2QF), L(P3QF)
+-	.quad       L(P4QF), L(P5QF), L(P6QF), L(P7QF)
+-	.quad       L(P0QG), L(P1QG), L(P2QG), L(P3QG)
+-	.quad       L(P4QG), L(P5QG), L(P6QG), L(P7QG)
+-	.quad       L(P0QH), L(P1QH), L(P2QH), L(P3QH)
+-	.quad       L(P4QH), L(P5QH), L(P6QH), L(P7QH)
+-	.quad       L(P0QI)
+-# ifdef USE_EXTRA_TABLE
+-	.quad       L(P1QI), L(P2QI), L(P3QI), L(P4QI)
+-	.quad       L(P5QI), L(P6QI), L(P7QI)
+-# endif
+-#else
+-L(setPxQx):
+-	.short     L(Got0)-L(Got0)
+-	.short     L(P1Q0)-L(Got0)
+-	.short     L(P2Q0)-L(Got0)
+-	.short     L(P3Q0)-L(Got0)
+-	.short     L(P4Q0)-L(Got0)
+-	.short     L(P5Q0)-L(Got0)
+-	.short     L(P6Q0)-L(Got0)
+-	.short     L(P7Q0)-L(Got0)
+-
+-	.short     L(P0Q1)-L(Got0)
+-	.short     L(P1Q1)-L(Got0)
+-	.short     L(P2Q1)-L(Got0)
+-	.short     L(P3Q1)-L(Got0)
+-	.short     L(P4Q1)-L(Got0)
+-	.short     L(P5Q1)-L(Got0)
+-	.short     L(P6Q1)-L(Got0)
+-	.short     L(P7Q1)-L(Got0)
+-
+-	.short     L(P0Q2)-L(Got0)
+-	.short     L(P1Q2)-L(Got0)
+-	.short     L(P2Q2)-L(Got0)
+-	.short     L(P3Q2)-L(Got0)
+-	.short     L(P4Q2)-L(Got0)
+-	.short     L(P5Q2)-L(Got0)
+-	.short     L(P6Q2)-L(Got0)
+-	.short     L(P7Q2)-L(Got0)
+-
+-	.short     L(P0Q3)-L(Got0)
+-	.short     L(P1Q3)-L(Got0)
+-	.short     L(P2Q3)-L(Got0)
+-	.short     L(P3Q3)-L(Got0)
+-	.short     L(P4Q3)-L(Got0)
+-	.short     L(P5Q3)-L(Got0)
+-	.short     L(P6Q3)-L(Got0)
+-	.short     L(P7Q3)-L(Got0)
+-
+-	.short     L(P0Q4)-L(Got0)
+-	.short     L(P1Q4)-L(Got0)
+-	.short     L(P2Q4)-L(Got0)
+-	.short     L(P3Q4)-L(Got0)
+-	.short     L(P4Q4)-L(Got0)
+-	.short     L(P5Q4)-L(Got0)
+-	.short     L(P6Q4)-L(Got0)
+-	.short     L(P7Q4)-L(Got0)
+-
+-	.short     L(P0Q5)-L(Got0)
+-	.short     L(P1Q5)-L(Got0)
+-	.short     L(P2Q5)-L(Got0)
+-	.short     L(P3Q5)-L(Got0)
+-	.short     L(P4Q5)-L(Got0)
+-	.short     L(P5Q5)-L(Got0)
+-	.short     L(P6Q5)-L(Got0)
+-	.short     L(P7Q5)-L(Got0)
+-
+-	.short     L(P0Q6)-L(Got0)
+-	.short     L(P1Q6)-L(Got0)
+-	.short     L(P2Q6)-L(Got0)
+-	.short     L(P3Q6)-L(Got0)
+-	.short     L(P4Q6)-L(Got0)
+-	.short     L(P5Q6)-L(Got0)
+-	.short     L(P6Q6)-L(Got0)
+-	.short     L(P7Q6)-L(Got0)
+-
+-	.short     L(P0Q7)-L(Got0)
+-	.short     L(P1Q7)-L(Got0)
+-	.short     L(P2Q7)-L(Got0)
+-	.short     L(P3Q7)-L(Got0)
+-	.short     L(P4Q7)-L(Got0)
+-	.short     L(P5Q7)-L(Got0)
+-	.short     L(P6Q7)-L(Got0)
+-	.short     L(P7Q7)-L(Got0)
+-
+-	.short     L(P0Q8)-L(Got0)
+-	.short     L(P1Q8)-L(Got0)
+-	.short     L(P2Q8)-L(Got0)
+-	.short     L(P3Q8)-L(Got0)
+-	.short     L(P4Q8)-L(Got0)
+-	.short     L(P5Q8)-L(Got0)
+-	.short     L(P6Q8)-L(Got0)
+-	.short     L(P7Q8)-L(Got0)
+-
+-	.short     L(P0Q9)-L(Got0)
+-	.short     L(P1Q9)-L(Got0)
+-	.short     L(P2Q9)-L(Got0)
+-	.short     L(P3Q9)-L(Got0)
+-	.short     L(P4Q9)-L(Got0)
+-	.short     L(P5Q9)-L(Got0)
+-	.short     L(P6Q9)-L(Got0)
+-	.short     L(P7Q9)-L(Got0)
+-
+-	.short     L(P0QA)-L(Got0)
+-	.short     L(P1QA)-L(Got0)
+-	.short     L(P2QA)-L(Got0)
+-	.short     L(P3QA)-L(Got0)
+-	.short     L(P4QA)-L(Got0)
+-	.short     L(P5QA)-L(Got0)
+-	.short     L(P6QA)-L(Got0)
+-	.short     L(P7QA)-L(Got0)
+-
+-	.short     L(P0QB)-L(Got0)
+-	.short     L(P1QB)-L(Got0)
+-	.short     L(P2QB)-L(Got0)
+-	.short     L(P3QB)-L(Got0)
+-	.short     L(P4QB)-L(Got0)
+-	.short     L(P5QB)-L(Got0)
+-	.short     L(P6QB)-L(Got0)
+-	.short     L(P7QB)-L(Got0)
+-
+-	.short     L(P0QC)-L(Got0)
+-	.short     L(P1QC)-L(Got0)
+-	.short     L(P2QC)-L(Got0)
+-	.short     L(P3QC)-L(Got0)
+-	.short     L(P4QC)-L(Got0)
+-	.short     L(P5QC)-L(Got0)
+-	.short     L(P6QC)-L(Got0)
+-	.short     L(P7QC)-L(Got0)
+-
+-	.short     L(P0QD)-L(Got0)
+-	.short     L(P1QD)-L(Got0)
+-	.short     L(P2QD)-L(Got0)
+-	.short     L(P3QD)-L(Got0)
+-	.short     L(P4QD)-L(Got0)
+-	.short     L(P5QD)-L(Got0)
+-	.short     L(P6QD)-L(Got0)
+-	.short     L(P7QD)-L(Got0)
+-
+-	.short     L(P0QE)-L(Got0)
+-	.short     L(P1QE)-L(Got0)
+-	.short     L(P2QE)-L(Got0)
+-	.short     L(P3QE)-L(Got0)
+-	.short     L(P4QE)-L(Got0)
+-	.short     L(P5QE)-L(Got0)
+-	.short     L(P6QE)-L(Got0)
+-	.short     L(P7QE)-L(Got0)
+-
+-	.short     L(P0QF)-L(Got0)
+-	.short     L(P1QF)-L(Got0)
+-	.short     L(P2QF)-L(Got0)
+-	.short     L(P3QF)-L(Got0)
+-	.short     L(P4QF)-L(Got0)
+-	.short     L(P5QF)-L(Got0)
+-	.short     L(P6QF)-L(Got0)
+-	.short     L(P7QF)-L(Got0)
+-
+-	.short     L(P0QG)-L(Got0)
+-	.short     L(P1QG)-L(Got0)
+-	.short     L(P2QG)-L(Got0)
+-	.short     L(P3QG)-L(Got0)
+-	.short     L(P4QG)-L(Got0)
+-	.short     L(P5QG)-L(Got0)
+-	.short     L(P6QG)-L(Got0)
+-	.short     L(P7QG)-L(Got0)
+-
+-	.short     L(P0QH)-L(Got0)
+-	.short     L(P1QH)-L(Got0)
+-	.short     L(P2QH)-L(Got0)
+-	.short     L(P3QH)-L(Got0)
+-	.short     L(P4QH)-L(Got0)
+-	.short     L(P5QH)-L(Got0)
+-	.short     L(P6QH)-L(Got0)
+-	.short     L(P7QH)-L(Got0)
+-
+-	.short     L(P0QI)-L(Got0)
+-# ifdef USE_EXTRA_TABLE
+-	.short     L(P1QI)-L(Got0)
+-	.short     L(P2QI)-L(Got0)
+-	.short     L(P3QI)-L(Got0)
+-	.short     L(P4QI)-L(Got0)
+-	.short     L(P5QI)-L(Got0)
+-	.short     L(P6QI)-L(Got0)
+-	.short     L(P7QI)-L(Got0)
+-# endif
+-#endif
+-	.popsection
+-
+-	.balign     16
+-#ifdef USE_EXTRA_TABLE
+-L(P1QI): mov    %rdx,-0x91(%rdi)
+-#endif
+-L(P1QH): mov    %rdx,-0x89(%rdi)
+-L(P1QG): mov    %rdx,-0x81(%rdi)
+-#		   .balign     16
+-L(P1QF): mov    %rdx,-0x79(%rdi)
+-L(P1QE): mov    %rdx,-0x71(%rdi)
+-L(P1QD): mov    %rdx,-0x69(%rdi)
+-L(P1QC): mov    %rdx,-0x61(%rdi)
+-L(P1QB): mov    %rdx,-0x59(%rdi)
+-L(P1QA): mov    %rdx,-0x51(%rdi)
+-L(P1Q9): mov    %rdx,-0x49(%rdi)
+-L(P1Q8): mov    %rdx,-0x41(%rdi)
+-L(P1Q7): mov    %rdx,-0x39(%rdi)
+-L(P1Q6): mov    %rdx,-0x31(%rdi)
+-L(P1Q5): mov    %rdx,-0x29(%rdi)
+-L(P1Q4): mov    %rdx,-0x21(%rdi)
+-L(P1Q3): mov    %rdx,-0x19(%rdi)
+-L(P1Q2): mov    %rdx,-0x11(%rdi)
+-L(P1Q1): mov    %rdx,-0x9(%rdi)
+-L(P1Q0): mov    %dl,-0x1(%rdi)
+-		retq
+-
+-	.balign     16
+-L(P0QI): mov    %rdx,-0x90(%rdi)
+-L(P0QH): mov    %rdx,-0x88(%rdi)
+-#		   .balign     16
+-L(P0QG): mov    %rdx,-0x80(%rdi)
+-L(P0QF): mov    %rdx,-0x78(%rdi)
+-L(P0QE): mov    %rdx,-0x70(%rdi)
+-L(P0QD): mov    %rdx,-0x68(%rdi)
+-L(P0QC): mov    %rdx,-0x60(%rdi)
+-L(P0QB): mov    %rdx,-0x58(%rdi)
+-L(P0QA): mov    %rdx,-0x50(%rdi)
+-L(P0Q9): mov    %rdx,-0x48(%rdi)
+-L(P0Q8): mov    %rdx,-0x40(%rdi)
+-L(P0Q7): mov    %rdx,-0x38(%rdi)
+-L(P0Q6): mov    %rdx,-0x30(%rdi)
+-L(P0Q5): mov    %rdx,-0x28(%rdi)
+-L(P0Q4): mov    %rdx,-0x20(%rdi)
+-L(P0Q3): mov    %rdx,-0x18(%rdi)
+-L(P0Q2): mov    %rdx,-0x10(%rdi)
+-L(P0Q1): mov    %rdx,-0x8(%rdi)
+-L(P0Q0): retq
+-
+-
+-	.balign     16
+-#ifdef USE_EXTRA_TABLE
+-L(P2QI): mov    %rdx,-0x92(%rdi)
+-#endif
+-L(P2QH): mov    %rdx,-0x8a(%rdi)
+-L(P2QG): mov    %rdx,-0x82(%rdi)
+-#		   .balign     16
+-L(P2QF): mov    %rdx,-0x7a(%rdi)
+-L(P2QE): mov    %rdx,-0x72(%rdi)
+-L(P2QD): mov    %rdx,-0x6a(%rdi)
+-L(P2QC): mov    %rdx,-0x62(%rdi)
+-L(P2QB): mov    %rdx,-0x5a(%rdi)
+-L(P2QA): mov    %rdx,-0x52(%rdi)
+-L(P2Q9): mov    %rdx,-0x4a(%rdi)
+-L(P2Q8): mov    %rdx,-0x42(%rdi)
+-L(P2Q7): mov    %rdx,-0x3a(%rdi)
+-L(P2Q6): mov    %rdx,-0x32(%rdi)
+-L(P2Q5): mov    %rdx,-0x2a(%rdi)
+-L(P2Q4): mov    %rdx,-0x22(%rdi)
+-L(P2Q3): mov    %rdx,-0x1a(%rdi)
+-L(P2Q2): mov    %rdx,-0x12(%rdi)
+-L(P2Q1): mov    %rdx,-0xa(%rdi)
+-L(P2Q0): mov    %dx,-0x2(%rdi)
+-		retq
+-
+-	.balign     16
+-#ifdef USE_EXTRA_TABLE
+-L(P3QI): mov    %rdx,-0x93(%rdi)
+-#endif
+-L(P3QH): mov    %rdx,-0x8b(%rdi)
+-L(P3QG): mov    %rdx,-0x83(%rdi)
+-#		   .balign     16
+-L(P3QF): mov    %rdx,-0x7b(%rdi)
+-L(P3QE): mov    %rdx,-0x73(%rdi)
+-L(P3QD): mov    %rdx,-0x6b(%rdi)
+-L(P3QC): mov    %rdx,-0x63(%rdi)
+-L(P3QB): mov    %rdx,-0x5b(%rdi)
+-L(P3QA): mov    %rdx,-0x53(%rdi)
+-L(P3Q9): mov    %rdx,-0x4b(%rdi)
+-L(P3Q8): mov    %rdx,-0x43(%rdi)
+-L(P3Q7): mov    %rdx,-0x3b(%rdi)
+-L(P3Q6): mov    %rdx,-0x33(%rdi)
+-L(P3Q5): mov    %rdx,-0x2b(%rdi)
+-L(P3Q4): mov    %rdx,-0x23(%rdi)
+-L(P3Q3): mov    %rdx,-0x1b(%rdi)
+-L(P3Q2): mov    %rdx,-0x13(%rdi)
+-L(P3Q1): mov    %rdx,-0xb(%rdi)
+-L(P3Q0): mov    %dx,-0x3(%rdi)
+-		mov    %dl,-0x1(%rdi)
+-		retq
+-
+-	.balign     16
+-#ifdef USE_EXTRA_TABLE
+-L(P4QI): mov    %rdx,-0x94(%rdi)
+-#endif
+-L(P4QH): mov    %rdx,-0x8c(%rdi)
+-L(P4QG): mov    %rdx,-0x84(%rdi)
+-#		   .balign     16
+-L(P4QF): mov    %rdx,-0x7c(%rdi)
+-L(P4QE): mov    %rdx,-0x74(%rdi)
+-L(P4QD): mov    %rdx,-0x6c(%rdi)
+-L(P4QC): mov    %rdx,-0x64(%rdi)
+-L(P4QB): mov    %rdx,-0x5c(%rdi)
+-L(P4QA): mov    %rdx,-0x54(%rdi)
+-L(P4Q9): mov    %rdx,-0x4c(%rdi)
+-L(P4Q8): mov    %rdx,-0x44(%rdi)
+-L(P4Q7): mov    %rdx,-0x3c(%rdi)
+-L(P4Q6): mov    %rdx,-0x34(%rdi)
+-L(P4Q5): mov    %rdx,-0x2c(%rdi)
+-L(P4Q4): mov    %rdx,-0x24(%rdi)
+-L(P4Q3): mov    %rdx,-0x1c(%rdi)
+-L(P4Q2): mov    %rdx,-0x14(%rdi)
+-L(P4Q1): mov    %rdx,-0xc(%rdi)
+-L(P4Q0): mov    %edx,-0x4(%rdi)
+-		retq
+-
+-	.balign     16
+-#ifdef USE_EXTRA_TABLE
+-L(P5QI): mov    %rdx,-0x95(%rdi)
+-#endif
+-L(P5QH): mov    %rdx,-0x8d(%rdi)
+-L(P5QG): mov    %rdx,-0x85(%rdi)
+-#		   .balign     16
+-L(P5QF): mov    %rdx,-0x7d(%rdi)
+-L(P5QE): mov    %rdx,-0x75(%rdi)
+-L(P5QD): mov    %rdx,-0x6d(%rdi)
+-L(P5QC): mov    %rdx,-0x65(%rdi)
+-L(P5QB): mov    %rdx,-0x5d(%rdi)
+-L(P5QA): mov    %rdx,-0x55(%rdi)
+-L(P5Q9): mov    %rdx,-0x4d(%rdi)
+-L(P5Q8): mov    %rdx,-0x45(%rdi)
+-L(P5Q7): mov    %rdx,-0x3d(%rdi)
+-L(P5Q6): mov    %rdx,-0x35(%rdi)
+-L(P5Q5): mov    %rdx,-0x2d(%rdi)
+-L(P5Q4): mov    %rdx,-0x25(%rdi)
+-L(P5Q3): mov    %rdx,-0x1d(%rdi)
+-L(P5Q2): mov    %rdx,-0x15(%rdi)
+-L(P5Q1): mov    %rdx,-0xd(%rdi)
+-L(P5Q0): mov    %edx,-0x5(%rdi)
+-		mov    %dl,-0x1(%rdi)
+-		retq
+-
+-	.balign     16
+-#ifdef USE_EXTRA_TABLE
+-L(P6QI): mov    %rdx,-0x96(%rdi)
+-#endif
+-L(P6QH): mov    %rdx,-0x8e(%rdi)
+-L(P6QG): mov    %rdx,-0x86(%rdi)
+-#		   .balign     16
+-L(P6QF): mov    %rdx,-0x7e(%rdi)
+-L(P6QE): mov    %rdx,-0x76(%rdi)
+-L(P6QD): mov    %rdx,-0x6e(%rdi)
+-L(P6QC): mov    %rdx,-0x66(%rdi)
+-L(P6QB): mov    %rdx,-0x5e(%rdi)
+-L(P6QA): mov    %rdx,-0x56(%rdi)
+-L(P6Q9): mov    %rdx,-0x4e(%rdi)
+-L(P6Q8): mov    %rdx,-0x46(%rdi)
+-L(P6Q7): mov    %rdx,-0x3e(%rdi)
+-L(P6Q6): mov    %rdx,-0x36(%rdi)
+-L(P6Q5): mov    %rdx,-0x2e(%rdi)
+-L(P6Q4): mov    %rdx,-0x26(%rdi)
+-L(P6Q3): mov    %rdx,-0x1e(%rdi)
+-L(P6Q2): mov    %rdx,-0x16(%rdi)
+-L(P6Q1): mov    %rdx,-0xe(%rdi)
+-L(P6Q0): mov    %edx,-0x6(%rdi)
+-		mov    %dx,-0x2(%rdi)
+-		retq
+-
+-	.balign     16
+-#ifdef USE_EXTRA_TABLE
+-L(P7QI): mov    %rdx,-0x97(%rdi)
+-#endif
+-L(P7QH): mov    %rdx,-0x8f(%rdi)
+-L(P7QG): mov    %rdx,-0x87(%rdi)
+-#		   .balign     16
+-L(P7QF): mov    %rdx,-0x7f(%rdi)
+-L(P7QE): mov    %rdx,-0x77(%rdi)
+-L(P7QD): mov    %rdx,-0x6f(%rdi)
+-L(P7QC): mov    %rdx,-0x67(%rdi)
+-L(P7QB): mov    %rdx,-0x5f(%rdi)
+-L(P7QA): mov    %rdx,-0x57(%rdi)
+-L(P7Q9): mov    %rdx,-0x4f(%rdi)
+-L(P7Q8): mov    %rdx,-0x47(%rdi)
+-L(P7Q7): mov    %rdx,-0x3f(%rdi)
+-L(P7Q6): mov    %rdx,-0x37(%rdi)
+-L(P7Q5): mov    %rdx,-0x2f(%rdi)
+-L(P7Q4): mov    %rdx,-0x27(%rdi)
+-L(P7Q3): mov    %rdx,-0x1f(%rdi)
+-L(P7Q2): mov    %rdx,-0x17(%rdi)
+-L(P7Q1): mov    %rdx,-0xf(%rdi)
+-L(P7Q0): mov    %edx,-0x7(%rdi)
+-		mov    %dx,-0x3(%rdi)
+-		mov    %dl,-0x1(%rdi)
+-		retq
+-
+-	.balign     16
+-L(ck_mem_ops_method):
+-
+-# align to 16 byte boundary first
+-	#test $0xf,%rdi
+-	#jz L(aligned_now)
+-	mov    $0x10,%r10
+-	mov    %rdi,%r9
+-	and    $0xf,%r9
+-	sub    %r9,%r10
+-	and    $0xf,%r10
+-	add    %r10,%rdi
+-	sub    %r10,%r8
+-#ifndef PIC
+-	lea    L(AliPxQx)(%rip),%r11
+-	jmpq   *(%r11,%r10,8)
+-#else
+-	lea    L(aligned_now)(%rip), %r11
+-	lea    L(AliPxQx)(%rip),%rcx
+-	movswq (%rcx,%r10,2),%rcx
+-	lea    (%rcx,%r11,1),%r11
+-	jmpq   *%r11
+-#endif
+-
+-	.pushsection .rodata
+-	.balign     16
+-#ifndef PIC
+-L(AliPxQx):
+-	.quad       L(aligned_now), L(A1Q0), L(A2Q0), L(A3Q0)
+-	.quad	    L(A4Q0), L(A5Q0), L(A6Q0), L(A7Q0)
+-	.quad       L(A0Q1), L(A1Q1), L(A2Q1), L(A3Q1)
+-	.quad       L(A4Q1), L(A5Q1), L(A6Q1), L(A7Q1)
+-#else
+-L(AliPxQx):
+-	.short     L(aligned_now)-L(aligned_now)
+-	.short     L(A1Q0)-L(aligned_now)
+-	.short     L(A2Q0)-L(aligned_now)
+-	.short     L(A3Q0)-L(aligned_now)
+-	.short     L(A4Q0)-L(aligned_now)
+-	.short     L(A5Q0)-L(aligned_now)
+-	.short     L(A6Q0)-L(aligned_now)
+-	.short     L(A7Q0)-L(aligned_now)
+-
+-	.short     L(A0Q1)-L(aligned_now)
+-	.short     L(A1Q1)-L(aligned_now)
+-	.short     L(A2Q1)-L(aligned_now)
+-	.short     L(A3Q1)-L(aligned_now)
+-	.short     L(A4Q1)-L(aligned_now)
+-	.short     L(A5Q1)-L(aligned_now)
+-	.short     L(A6Q1)-L(aligned_now)
+-	.short     L(A7Q1)-L(aligned_now)
+-#endif
+-	.popsection
+-
+-	.balign     16
+-L(A5Q1):    mov    %dl,-0xd(%rdi)
+-L(A4Q1):    mov    %edx,-0xc(%rdi)
+-L(A0Q1):    mov    %rdx,-0x8(%rdi)
+-L(A0Q0):    jmp     L(aligned_now)
+-
+-	.balign     16
+-L(A1Q1):   mov    %dl,-0x9(%rdi)
+-	mov    %rdx,-0x8(%rdi)
+-	jmp    L(aligned_now)
+-
+-	.balign     16
+-L(A1Q0):   mov    %dl,-0x1(%rdi)
+-	jmp    L(aligned_now)
+-
+-	.balign     16
+-L(A3Q1):    mov    %dl,-0xb(%rdi)
+-L(A2Q1):    mov    %dx,-0xa(%rdi)
+-	mov    %rdx,-0x8(%rdi)
+-	jmp    L(aligned_now)
+-
+-	.balign     16
+-L(A3Q0):    mov    %dl,-0x3(%rdi)
+-L(A2Q0):    mov    %dx,-0x2(%rdi)
+-	jmp    L(aligned_now)
+-
+-	.balign     16
+-L(A5Q0):    mov    %dl,-0x5(%rdi)
+-L(A4Q0):    mov    %edx,-0x4(%rdi)
+-	jmp    L(aligned_now)
+-
+-	.balign     16
+-L(A7Q1):    mov    %dl,-0xf(%rdi)
+-L(A6Q1):    mov    %dx,-0xe(%rdi)
+-	mov    %edx,-0xc(%rdi)
+-	mov    %rdx,-0x8(%rdi)
+-	jmp    L(aligned_now)
+-
+-	.balign     16
+-L(A7Q0):    mov    %dl,-0x7(%rdi)
+-L(A6Q0):    mov    %dx,-0x6(%rdi)
+-	mov    %edx,-0x4(%rdi)
+-
+-#ifndef USE_MULTIARCH
+-	jmp    L(aligned_now)
+-
+-L(SSE_pre):
+-#else
+-L(aligned_now):
+-#endif
+-#if !defined USE_MULTIARCH || defined USE_SSE2
+-	 # fill RegXMM0 with the pattern
+-	 movd   %rdx,%xmm0
+-	 punpcklqdq %xmm0,%xmm0
+-
+-	 cmp    $0xb0,%r8 # 176
+-	 jae    L(byte32sse2_pre)
+-
+-	 add    %r8,%rdi
+-# ifndef PIC
+-	 lea    L(SSExDx)(%rip),%r9
+-	 jmpq   *(%r9,%r8,8)
+-# else
+-	 lea    L(SSE0Q0)(%rip),%r9
+-	 lea    L(SSExDx)(%rip),%rcx
+-	 movswq (%rcx,%r8,2),%rcx
+-	 lea    (%rcx,%r9,1),%r9
+-	 jmpq   *%r9
+-# endif
+-
+-L(SSE0QB):  movdqa %xmm0,-0xb0(%rdi)
+-L(SSE0QA):  movdqa %xmm0,-0xa0(%rdi)
+-L(SSE0Q9):  movdqa %xmm0,-0x90(%rdi)
+-L(SSE0Q8):  movdqa %xmm0,-0x80(%rdi)
+-L(SSE0Q7):  movdqa %xmm0,-0x70(%rdi)
+-L(SSE0Q6):  movdqa %xmm0,-0x60(%rdi)
+-L(SSE0Q5):  movdqa %xmm0,-0x50(%rdi)
+-L(SSE0Q4):  movdqa %xmm0,-0x40(%rdi)
+-L(SSE0Q3):  movdqa %xmm0,-0x30(%rdi)
+-L(SSE0Q2):  movdqa %xmm0,-0x20(%rdi)
+-L(SSE0Q1):  movdqa %xmm0,-0x10(%rdi)
+-L(SSE0Q0):  retq
+-
+-L(SSE1QB):  movdqa %xmm0,-0xb1(%rdi)
+-L(SSE1QA):  movdqa %xmm0,-0xa1(%rdi)
+-L(SSE1Q9):  movdqa %xmm0,-0x91(%rdi)
+-L(SSE1Q8):  movdqa %xmm0,-0x81(%rdi)
+-L(SSE1Q7):  movdqa %xmm0,-0x71(%rdi)
+-L(SSE1Q6):  movdqa %xmm0,-0x61(%rdi)
+-L(SSE1Q5):  movdqa %xmm0,-0x51(%rdi)
+-L(SSE1Q4):  movdqa %xmm0,-0x41(%rdi)
+-L(SSE1Q3):  movdqa %xmm0,-0x31(%rdi)
+-L(SSE1Q2):  movdqa %xmm0,-0x21(%rdi)
+-L(SSE1Q1):  movdqa %xmm0,-0x11(%rdi)
+-L(SSE1Q0):  mov    %dl,-0x1(%rdi)
+-	retq
+-
+-L(SSE2QB):  movdqa %xmm0,-0xb2(%rdi)
+-L(SSE2QA):  movdqa %xmm0,-0xa2(%rdi)
+-L(SSE2Q9):  movdqa %xmm0,-0x92(%rdi)
+-L(SSE2Q8):  movdqa %xmm0,-0x82(%rdi)
+-L(SSE2Q7):  movdqa %xmm0,-0x72(%rdi)
+-L(SSE2Q6):  movdqa %xmm0,-0x62(%rdi)
+-L(SSE2Q5):  movdqa %xmm0,-0x52(%rdi)
+-L(SSE2Q4):  movdqa %xmm0,-0x42(%rdi)
+-L(SSE2Q3):  movdqa %xmm0,-0x32(%rdi)
+-L(SSE2Q2):  movdqa %xmm0,-0x22(%rdi)
+-L(SSE2Q1):  movdqa %xmm0,-0x12(%rdi)
+-L(SSE2Q0):  mov    %dx,-0x2(%rdi)
+-	retq
+-
+-L(SSE3QB):  movdqa %xmm0,-0xb3(%rdi)
+-L(SSE3QA):  movdqa %xmm0,-0xa3(%rdi)
+-L(SSE3Q9):  movdqa %xmm0,-0x93(%rdi)
+-L(SSE3Q8):  movdqa %xmm0,-0x83(%rdi)
+-L(SSE3Q7):  movdqa %xmm0,-0x73(%rdi)
+-L(SSE3Q6):  movdqa %xmm0,-0x63(%rdi)
+-L(SSE3Q5):  movdqa %xmm0,-0x53(%rdi)
+-L(SSE3Q4):  movdqa %xmm0,-0x43(%rdi)
+-L(SSE3Q3):  movdqa %xmm0,-0x33(%rdi)
+-L(SSE3Q2):  movdqa %xmm0,-0x23(%rdi)
+-L(SSE3Q1):  movdqa %xmm0,-0x13(%rdi)
+-L(SSE3Q0):  mov    %dx,-0x3(%rdi)
+-	mov    %dl,-0x1(%rdi)
+-	retq
+-
+-L(SSE4QB):  movdqa %xmm0,-0xb4(%rdi)
+-L(SSE4QA):  movdqa %xmm0,-0xa4(%rdi)
+-L(SSE4Q9):  movdqa %xmm0,-0x94(%rdi)
+-L(SSE4Q8):  movdqa %xmm0,-0x84(%rdi)
+-L(SSE4Q7):  movdqa %xmm0,-0x74(%rdi)
+-L(SSE4Q6):  movdqa %xmm0,-0x64(%rdi)
+-L(SSE4Q5):  movdqa %xmm0,-0x54(%rdi)
+-L(SSE4Q4):  movdqa %xmm0,-0x44(%rdi)
+-L(SSE4Q3):  movdqa %xmm0,-0x34(%rdi)
+-L(SSE4Q2):  movdqa %xmm0,-0x24(%rdi)
+-L(SSE4Q1):  movdqa %xmm0,-0x14(%rdi)
+-L(SSE4Q0):  mov    %edx,-0x4(%rdi)
+-	retq
+-
+-L(SSE5QB):  movdqa %xmm0,-0xb5(%rdi)
+-L(SSE5QA):  movdqa %xmm0,-0xa5(%rdi)
+-L(SSE5Q9):  movdqa %xmm0,-0x95(%rdi)
+-L(SSE5Q8):  movdqa %xmm0,-0x85(%rdi)
+-L(SSE5Q7):  movdqa %xmm0,-0x75(%rdi)
+-L(SSE5Q6):  movdqa %xmm0,-0x65(%rdi)
+-L(SSE5Q5):  movdqa %xmm0,-0x55(%rdi)
+-L(SSE5Q4):  movdqa %xmm0,-0x45(%rdi)
+-L(SSE5Q3):  movdqa %xmm0,-0x35(%rdi)
+-L(SSE5Q2):  movdqa %xmm0,-0x25(%rdi)
+-L(SSE5Q1):  movdqa %xmm0,-0x15(%rdi)
+-L(SSE5Q0):  mov    %edx,-0x5(%rdi)
+-	mov    %dl,-0x1(%rdi)
+-	retq
+-
+-
+-L(SSE6QB):  movdqa %xmm0,-0xb6(%rdi)
+-L(SSE6QA):  movdqa %xmm0,-0xa6(%rdi)
+-L(SSE6Q9):  movdqa %xmm0,-0x96(%rdi)
+-L(SSE6Q8):  movdqa %xmm0,-0x86(%rdi)
+-L(SSE6Q7):  movdqa %xmm0,-0x76(%rdi)
+-L(SSE6Q6):  movdqa %xmm0,-0x66(%rdi)
+-L(SSE6Q5):  movdqa %xmm0,-0x56(%rdi)
+-L(SSE6Q4):  movdqa %xmm0,-0x46(%rdi)
+-L(SSE6Q3):  movdqa %xmm0,-0x36(%rdi)
+-L(SSE6Q2):  movdqa %xmm0,-0x26(%rdi)
+-L(SSE6Q1):  movdqa %xmm0,-0x16(%rdi)
+-L(SSE6Q0):  mov    %edx,-0x6(%rdi)
+-	mov    %dx,-0x2(%rdi)
+-	retq
+-
+-L(SSE7QB):  movdqa %xmm0,-0xb7(%rdi)
+-L(SSE7QA):  movdqa %xmm0,-0xa7(%rdi)
+-L(SSE7Q9):  movdqa %xmm0,-0x97(%rdi)
+-L(SSE7Q8):  movdqa %xmm0,-0x87(%rdi)
+-L(SSE7Q7):  movdqa %xmm0,-0x77(%rdi)
+-L(SSE7Q6):  movdqa %xmm0,-0x67(%rdi)
+-L(SSE7Q5):  movdqa %xmm0,-0x57(%rdi)
+-L(SSE7Q4):  movdqa %xmm0,-0x47(%rdi)
+-L(SSE7Q3):  movdqa %xmm0,-0x37(%rdi)
+-L(SSE7Q2):  movdqa %xmm0,-0x27(%rdi)
+-L(SSE7Q1):  movdqa %xmm0,-0x17(%rdi)
+-L(SSE7Q0):  mov    %edx,-0x7(%rdi)
+-	mov    %dx,-0x3(%rdi)
+-	mov    %dl,-0x1(%rdi)
+-	retq
+-
+-L(SSE8QB):  movdqa %xmm0,-0xb8(%rdi)
+-L(SSE8QA):  movdqa %xmm0,-0xa8(%rdi)
+-L(SSE8Q9):  movdqa %xmm0,-0x98(%rdi)
+-L(SSE8Q8):  movdqa %xmm0,-0x88(%rdi)
+-L(SSE8Q7):  movdqa %xmm0,-0x78(%rdi)
+-L(SSE8Q6):  movdqa %xmm0,-0x68(%rdi)
+-L(SSE8Q5):  movdqa %xmm0,-0x58(%rdi)
+-L(SSE8Q4):  movdqa %xmm0,-0x48(%rdi)
+-L(SSE8Q3):  movdqa %xmm0,-0x38(%rdi)
+-L(SSE8Q2):  movdqa %xmm0,-0x28(%rdi)
+-L(SSE8Q1):  movdqa %xmm0,-0x18(%rdi)
+-L(SSE8Q0):  mov    %rdx,-0x8(%rdi)
+-	retq
+-
+-L(SSE9QB):  movdqa %xmm0,-0xb9(%rdi)
+-L(SSE9QA):  movdqa %xmm0,-0xa9(%rdi)
+-L(SSE9Q9):  movdqa %xmm0,-0x99(%rdi)
+-L(SSE9Q8):  movdqa %xmm0,-0x89(%rdi)
+-L(SSE9Q7):  movdqa %xmm0,-0x79(%rdi)
+-L(SSE9Q6):  movdqa %xmm0,-0x69(%rdi)
+-L(SSE9Q5):  movdqa %xmm0,-0x59(%rdi)
+-L(SSE9Q4):  movdqa %xmm0,-0x49(%rdi)
+-L(SSE9Q3):  movdqa %xmm0,-0x39(%rdi)
+-L(SSE9Q2):  movdqa %xmm0,-0x29(%rdi)
+-L(SSE9Q1):  movdqa %xmm0,-0x19(%rdi)
+-L(SSE9Q0):  mov    %rdx,-0x9(%rdi)
+-	mov    %dl,-0x1(%rdi)
+-	retq
+-
+-L(SSE10QB): movdqa %xmm0,-0xba(%rdi)
+-L(SSE10QA): movdqa %xmm0,-0xaa(%rdi)
+-L(SSE10Q9): movdqa %xmm0,-0x9a(%rdi)
+-L(SSE10Q8): movdqa %xmm0,-0x8a(%rdi)
+-L(SSE10Q7): movdqa %xmm0,-0x7a(%rdi)
+-L(SSE10Q6): movdqa %xmm0,-0x6a(%rdi)
+-L(SSE10Q5): movdqa %xmm0,-0x5a(%rdi)
+-L(SSE10Q4): movdqa %xmm0,-0x4a(%rdi)
+-L(SSE10Q3): movdqa %xmm0,-0x3a(%rdi)
+-L(SSE10Q2): movdqa %xmm0,-0x2a(%rdi)
+-L(SSE10Q1): movdqa %xmm0,-0x1a(%rdi)
+-L(SSE10Q0): mov    %rdx,-0xa(%rdi)
+-	mov    %dx,-0x2(%rdi)
+-	retq
+-
+-L(SSE11QB): movdqa %xmm0,-0xbb(%rdi)
+-L(SSE11QA): movdqa %xmm0,-0xab(%rdi)
+-L(SSE11Q9): movdqa %xmm0,-0x9b(%rdi)
+-L(SSE11Q8): movdqa %xmm0,-0x8b(%rdi)
+-L(SSE11Q7): movdqa %xmm0,-0x7b(%rdi)
+-L(SSE11Q6): movdqa %xmm0,-0x6b(%rdi)
+-L(SSE11Q5): movdqa %xmm0,-0x5b(%rdi)
+-L(SSE11Q4): movdqa %xmm0,-0x4b(%rdi)
+-L(SSE11Q3): movdqa %xmm0,-0x3b(%rdi)
+-L(SSE11Q2): movdqa %xmm0,-0x2b(%rdi)
+-L(SSE11Q1): movdqa %xmm0,-0x1b(%rdi)
+-L(SSE11Q0): mov    %rdx,-0xb(%rdi)
+-	mov    %dx,-0x3(%rdi)
+-	mov    %dl,-0x1(%rdi)
+-	retq
+-
+-L(SSE12QB): movdqa %xmm0,-0xbc(%rdi)
+-L(SSE12QA): movdqa %xmm0,-0xac(%rdi)
+-L(SSE12Q9): movdqa %xmm0,-0x9c(%rdi)
+-L(SSE12Q8): movdqa %xmm0,-0x8c(%rdi)
+-L(SSE12Q7): movdqa %xmm0,-0x7c(%rdi)
+-L(SSE12Q6): movdqa %xmm0,-0x6c(%rdi)
+-L(SSE12Q5): movdqa %xmm0,-0x5c(%rdi)
+-L(SSE12Q4): movdqa %xmm0,-0x4c(%rdi)
+-L(SSE12Q3): movdqa %xmm0,-0x3c(%rdi)
+-L(SSE12Q2): movdqa %xmm0,-0x2c(%rdi)
+-L(SSE12Q1): movdqa %xmm0,-0x1c(%rdi)
+-L(SSE12Q0): mov    %rdx,-0xc(%rdi)
+-	mov    %edx,-0x4(%rdi)
+-	retq
+-
+-L(SSE13QB): movdqa %xmm0,-0xbd(%rdi)
+-L(SSE13QA): movdqa %xmm0,-0xad(%rdi)
+-L(SSE13Q9): movdqa %xmm0,-0x9d(%rdi)
+-L(SSE13Q8): movdqa %xmm0,-0x8d(%rdi)
+-L(SSE13Q7): movdqa %xmm0,-0x7d(%rdi)
+-L(SSE13Q6): movdqa %xmm0,-0x6d(%rdi)
+-L(SSE13Q5): movdqa %xmm0,-0x5d(%rdi)
+-L(SSE13Q4): movdqa %xmm0,-0x4d(%rdi)
+-L(SSE13Q3): movdqa %xmm0,-0x3d(%rdi)
+-L(SSE13Q2): movdqa %xmm0,-0x2d(%rdi)
+-L(SSE13Q1): movdqa %xmm0,-0x1d(%rdi)
+-L(SSE13Q0): mov    %rdx,-0xd(%rdi)
+-	mov    %edx,-0x5(%rdi)
+-	mov    %dl,-0x1(%rdi)
+-	retq
+-
+-L(SSE14QB): movdqa %xmm0,-0xbe(%rdi)
+-L(SSE14QA): movdqa %xmm0,-0xae(%rdi)
+-L(SSE14Q9): movdqa %xmm0,-0x9e(%rdi)
+-L(SSE14Q8): movdqa %xmm0,-0x8e(%rdi)
+-L(SSE14Q7): movdqa %xmm0,-0x7e(%rdi)
+-L(SSE14Q6): movdqa %xmm0,-0x6e(%rdi)
+-L(SSE14Q5): movdqa %xmm0,-0x5e(%rdi)
+-L(SSE14Q4): movdqa %xmm0,-0x4e(%rdi)
+-L(SSE14Q3): movdqa %xmm0,-0x3e(%rdi)
+-L(SSE14Q2): movdqa %xmm0,-0x2e(%rdi)
+-L(SSE14Q1): movdqa %xmm0,-0x1e(%rdi)
+-L(SSE14Q0): mov    %rdx,-0xe(%rdi)
+-	mov    %edx,-0x6(%rdi)
+-	mov    %dx,-0x2(%rdi)
+-	retq
+-
+-L(SSE15QB): movdqa %xmm0,-0xbf(%rdi)
+-L(SSE15QA): movdqa %xmm0,-0xaf(%rdi)
+-L(SSE15Q9): movdqa %xmm0,-0x9f(%rdi)
+-L(SSE15Q8): movdqa %xmm0,-0x8f(%rdi)
+-L(SSE15Q7): movdqa %xmm0,-0x7f(%rdi)
+-L(SSE15Q6): movdqa %xmm0,-0x6f(%rdi)
+-L(SSE15Q5): movdqa %xmm0,-0x5f(%rdi)
+-L(SSE15Q4): movdqa %xmm0,-0x4f(%rdi)
+-L(SSE15Q3): movdqa %xmm0,-0x3f(%rdi)
+-L(SSE15Q2): movdqa %xmm0,-0x2f(%rdi)
+-L(SSE15Q1): movdqa %xmm0,-0x1f(%rdi)
+-L(SSE15Q0): mov    %rdx,-0xf(%rdi)
+-	mov    %edx,-0x7(%rdi)
+-	mov    %dx,-0x3(%rdi)
+-	mov    %dl,-0x1(%rdi)
+-	retq
+-
+-	.balign     16
+-L(byte32sse2_pre):
+-
+-	mov    __x86_64_shared_cache_size(%rip),%r9d  # The largest cache size
+-	cmp    %r9,%r8
+-	ja     L(sse2_nt_move_pre)
+-	#jmp    L(byte32sse2)
+-	.balign     16
+-L(byte32sse2):
+-	lea    -0x80(%r8),%r8 # 128
+-	cmp    $0x80,%r8   # 128
+-	movdqa %xmm0,(%rdi)
+-	movdqa %xmm0,0x10(%rdi)
+-	movdqa %xmm0,0x20(%rdi)
+-	movdqa %xmm0,0x30(%rdi)
+-	movdqa %xmm0,0x40(%rdi)
+-	movdqa %xmm0,0x50(%rdi)
+-	movdqa %xmm0,0x60(%rdi)
+-	movdqa %xmm0,0x70(%rdi)
+-
+-	lea    0x80(%rdi),%rdi
+-	jae    L(byte32sse2)
+-	add    %r8,%rdi
+-# ifndef PIC
+-	lea    L(SSExDx)(%rip),%r11
+-	jmpq   *(%r11,%r8,8)
+-# else
+-	lea    L(SSE0Q0)(%rip),%r11
+-	lea    L(SSExDx)(%rip),%rcx
+-	movswq (%rcx,%r8,2),%rcx
+-	lea    (%rcx,%r11,1),%r11
+-	jmpq   *%r11
+-# endif
+-
+-	.balign     16
+-L(sse2_nt_move_pre):
+-	cmp    $0x0,%r9
+-	je     L(byte32sse2)
+-	jmp    L(sse2_nt_move)
+-
+-	.balign     16
+-L(sse2_nt_move):
+-	lea    -0x80(%r8),%r8
+-	cmp    $0x80,%r8
+-
+-	movntdq %xmm0,(%rdi)
+-	movntdq %xmm0,0x10(%rdi)
+-	movntdq %xmm0,0x20(%rdi)
+-	movntdq %xmm0,0x30(%rdi)
+-	movntdq %xmm0,0x40(%rdi)
+-	movntdq %xmm0,0x50(%rdi)
+-	movntdq %xmm0,0x60(%rdi)
+-	movntdq %xmm0,0x70(%rdi)
+-
+-	lea    0x80(%rdi),%rdi
+-	jae    L(sse2_nt_move)
+-	sfence
+-	add    %r8,%rdi
+-# ifndef PIC
+-	lea    L(SSExDx)(%rip),%r11
+-	jmpq   *(%r11,%r8,8)
+-# else
+-	lea    L(SSE0Q0)(%rip),%r11
+-	lea    L(SSExDx)(%rip),%rcx
+-	movswq (%rcx,%r8,2),%rcx
+-	lea   (%rcx,%r11,1),%r11
+-	jmpq   *%r11
+-# endif
+-
+-	.pushsection .rodata
+-	.balign     16
+-# ifndef PIC
+-L(SSExDx):
+-	.quad       L(SSE0Q0), L(SSE1Q0), L(SSE2Q0), L(SSE3Q0)
+-	.quad       L(SSE4Q0), L(SSE5Q0), L(SSE6Q0), L(SSE7Q0)
+-	.quad       L(SSE8Q0), L(SSE9Q0), L(SSE10Q0), L(SSE11Q0)
+-	.quad       L(SSE12Q0), L(SSE13Q0), L(SSE14Q0), L(SSE15Q0)
+-	.quad       L(SSE0Q1), L(SSE1Q1), L(SSE2Q1), L(SSE3Q1)
+-	.quad       L(SSE4Q1), L(SSE5Q1), L(SSE6Q1), L(SSE7Q1)
+-	.quad       L(SSE8Q1), L(SSE9Q1), L(SSE10Q1), L(SSE11Q1)
+-	.quad       L(SSE12Q1), L(SSE13Q1), L(SSE14Q1), L(SSE15Q1)
+-	.quad       L(SSE0Q2), L(SSE1Q2), L(SSE2Q2), L(SSE3Q2)
+-	.quad       L(SSE4Q2), L(SSE5Q2), L(SSE6Q2), L(SSE7Q2)
+-	.quad       L(SSE8Q2), L(SSE9Q2), L(SSE10Q2), L(SSE11Q2)
+-	.quad       L(SSE12Q2), L(SSE13Q2), L(SSE14Q2), L(SSE15Q2)
+-	.quad       L(SSE0Q3), L(SSE1Q3), L(SSE2Q3), L(SSE3Q3)
+-	.quad       L(SSE4Q3), L(SSE5Q3), L(SSE6Q3), L(SSE7Q3)
+-	.quad       L(SSE8Q3), L(SSE9Q3), L(SSE10Q3), L(SSE11Q3)
+-	.quad       L(SSE12Q3), L(SSE13Q3), L(SSE14Q3), L(SSE15Q3)
+-	.quad       L(SSE0Q4), L(SSE1Q4), L(SSE2Q4), L(SSE3Q4)
+-	.quad       L(SSE4Q4), L(SSE5Q4), L(SSE6Q4), L(SSE7Q4)
+-	.quad       L(SSE8Q4), L(SSE9Q4), L(SSE10Q4), L(SSE11Q4)
+-	.quad       L(SSE12Q4), L(SSE13Q4), L(SSE14Q4), L(SSE15Q4)
+-	.quad       L(SSE0Q5), L(SSE1Q5), L(SSE2Q5), L(SSE3Q5)
+-	.quad       L(SSE4Q5), L(SSE5Q5), L(SSE6Q5), L(SSE7Q5)
+-	.quad       L(SSE8Q5), L(SSE9Q5), L(SSE10Q5), L(SSE11Q5)
+-	.quad       L(SSE12Q5), L(SSE13Q5), L(SSE14Q5), L(SSE15Q5)
+-	.quad       L(SSE0Q6), L(SSE1Q6), L(SSE2Q6), L(SSE3Q6)
+-	.quad       L(SSE4Q6), L(SSE5Q6), L(SSE6Q6), L(SSE7Q6)
+-	.quad       L(SSE8Q6), L(SSE9Q6), L(SSE10Q6), L(SSE11Q6)
+-	.quad       L(SSE12Q6), L(SSE13Q6), L(SSE14Q6), L(SSE15Q6)
+-	.quad       L(SSE0Q7), L(SSE1Q7), L(SSE2Q7), L(SSE3Q7)
+-	.quad       L(SSE4Q7), L(SSE5Q7), L(SSE6Q7), L(SSE7Q7)
+-	.quad       L(SSE8Q7), L(SSE9Q7), L(SSE10Q7), L(SSE11Q7)
+-	.quad       L(SSE12Q7), L(SSE13Q7), L(SSE14Q7), L(SSE15Q7)
+-	.quad       L(SSE0Q8), L(SSE1Q8), L(SSE2Q8), L(SSE3Q8)
+-	.quad       L(SSE4Q8), L(SSE5Q8), L(SSE6Q8), L(SSE7Q8)
+-	.quad       L(SSE8Q8), L(SSE9Q8), L(SSE10Q8), L(SSE11Q8)
+-	.quad       L(SSE12Q8), L(SSE13Q8), L(SSE14Q8), L(SSE15Q8)
+-	.quad       L(SSE0Q9), L(SSE1Q9), L(SSE2Q9), L(SSE3Q9)
+-	.quad       L(SSE4Q9), L(SSE5Q9), L(SSE6Q9), L(SSE7Q9)
+-	.quad       L(SSE8Q9), L(SSE9Q9), L(SSE10Q9), L(SSE11Q9)
+-	.quad       L(SSE12Q9), L(SSE13Q9), L(SSE14Q9), L(SSE15Q9)
+-	.quad       L(SSE0QA), L(SSE1QA), L(SSE2QA), L(SSE3QA)
+-	.quad       L(SSE4QA), L(SSE5QA), L(SSE6QA), L(SSE7QA)
+-	.quad       L(SSE8QA), L(SSE9QA), L(SSE10QA), L(SSE11QA)
+-	.quad       L(SSE12QA), L(SSE13QA), L(SSE14QA), L(SSE15QA)
+-	.quad       L(SSE0QB), L(SSE1QB), L(SSE2QB), L(SSE3QB)
+-	.quad       L(SSE4QB), L(SSE5QB), L(SSE6QB), L(SSE7QB)
+-	.quad       L(SSE8QB), L(SSE9QB), L(SSE10QB), L(SSE11QB)
+-	.quad       L(SSE12QB), L(SSE13QB), L(SSE14QB), L(SSE15QB)
+-# else
+-L(SSExDx):
+-	.short     L(SSE0Q0) -L(SSE0Q0)
+-	.short     L(SSE1Q0) -L(SSE0Q0)
+-	.short     L(SSE2Q0) -L(SSE0Q0)
+-	.short     L(SSE3Q0) -L(SSE0Q0)
+-	.short     L(SSE4Q0) -L(SSE0Q0)
+-	.short     L(SSE5Q0) -L(SSE0Q0)
+-	.short     L(SSE6Q0) -L(SSE0Q0)
+-	.short     L(SSE7Q0) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q0) -L(SSE0Q0)
+-	.short     L(SSE9Q0) -L(SSE0Q0)
+-	.short     L(SSE10Q0)-L(SSE0Q0)
+-	.short     L(SSE11Q0)-L(SSE0Q0)
+-	.short     L(SSE12Q0)-L(SSE0Q0)
+-	.short     L(SSE13Q0)-L(SSE0Q0)
+-	.short     L(SSE14Q0)-L(SSE0Q0)
+-	.short     L(SSE15Q0)-L(SSE0Q0)
+-
+-	.short     L(SSE0Q1) -L(SSE0Q0)
+-	.short     L(SSE1Q1) -L(SSE0Q0)
+-	.short     L(SSE2Q1) -L(SSE0Q0)
+-	.short     L(SSE3Q1) -L(SSE0Q0)
+-	.short     L(SSE4Q1) -L(SSE0Q0)
+-	.short     L(SSE5Q1) -L(SSE0Q0)
+-	.short     L(SSE6Q1) -L(SSE0Q0)
+-	.short     L(SSE7Q1) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q1) -L(SSE0Q0)
+-	.short     L(SSE9Q1) -L(SSE0Q0)
+-	.short     L(SSE10Q1)-L(SSE0Q0)
+-	.short     L(SSE11Q1)-L(SSE0Q0)
+-	.short     L(SSE12Q1)-L(SSE0Q0)
+-	.short     L(SSE13Q1)-L(SSE0Q0)
+-	.short     L(SSE14Q1)-L(SSE0Q0)
+-	.short     L(SSE15Q1)-L(SSE0Q0)
+-
+-	.short     L(SSE0Q2) -L(SSE0Q0)
+-	.short     L(SSE1Q2) -L(SSE0Q0)
+-	.short     L(SSE2Q2) -L(SSE0Q0)
+-	.short     L(SSE3Q2) -L(SSE0Q0)
+-	.short     L(SSE4Q2) -L(SSE0Q0)
+-	.short     L(SSE5Q2) -L(SSE0Q0)
+-	.short     L(SSE6Q2) -L(SSE0Q0)
+-	.short     L(SSE7Q2) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q2) -L(SSE0Q0)
+-	.short     L(SSE9Q2) -L(SSE0Q0)
+-	.short     L(SSE10Q2)-L(SSE0Q0)
+-	.short     L(SSE11Q2)-L(SSE0Q0)
+-	.short     L(SSE12Q2)-L(SSE0Q0)
+-	.short     L(SSE13Q2)-L(SSE0Q0)
+-	.short     L(SSE14Q2)-L(SSE0Q0)
+-	.short     L(SSE15Q2)-L(SSE0Q0)
+-
+-	.short     L(SSE0Q3) -L(SSE0Q0)
+-	.short     L(SSE1Q3) -L(SSE0Q0)
+-	.short     L(SSE2Q3) -L(SSE0Q0)
+-	.short     L(SSE3Q3) -L(SSE0Q0)
+-	.short     L(SSE4Q3) -L(SSE0Q0)
+-	.short     L(SSE5Q3) -L(SSE0Q0)
+-	.short     L(SSE6Q3) -L(SSE0Q0)
+-	.short     L(SSE7Q3) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q3) -L(SSE0Q0)
+-	.short     L(SSE9Q3) -L(SSE0Q0)
+-	.short     L(SSE10Q3)-L(SSE0Q0)
+-	.short     L(SSE11Q3)-L(SSE0Q0)
+-	.short     L(SSE12Q3)-L(SSE0Q0)
+-	.short     L(SSE13Q3)-L(SSE0Q0)
+-	.short     L(SSE14Q3)-L(SSE0Q0)
+-	.short     L(SSE15Q3)-L(SSE0Q0)
+-
+-	.short     L(SSE0Q4) -L(SSE0Q0)
+-	.short     L(SSE1Q4) -L(SSE0Q0)
+-	.short     L(SSE2Q4) -L(SSE0Q0)
+-	.short     L(SSE3Q4) -L(SSE0Q0)
+-	.short     L(SSE4Q4) -L(SSE0Q0)
+-	.short     L(SSE5Q4) -L(SSE0Q0)
+-	.short     L(SSE6Q4) -L(SSE0Q0)
+-	.short     L(SSE7Q4) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q4) -L(SSE0Q0)
+-	.short     L(SSE9Q4) -L(SSE0Q0)
+-	.short     L(SSE10Q4)-L(SSE0Q0)
+-	.short     L(SSE11Q4)-L(SSE0Q0)
+-	.short     L(SSE12Q4)-L(SSE0Q0)
+-	.short     L(SSE13Q4)-L(SSE0Q0)
+-	.short     L(SSE14Q4)-L(SSE0Q0)
+-	.short     L(SSE15Q4)-L(SSE0Q0)
+-
+-	.short     L(SSE0Q5) -L(SSE0Q0)
+-	.short     L(SSE1Q5) -L(SSE0Q0)
+-	.short     L(SSE2Q5) -L(SSE0Q0)
+-	.short     L(SSE3Q5) -L(SSE0Q0)
+-	.short     L(SSE4Q5) -L(SSE0Q0)
+-	.short     L(SSE5Q5) -L(SSE0Q0)
+-	.short     L(SSE6Q5) -L(SSE0Q0)
+-	.short     L(SSE7Q5) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q5) -L(SSE0Q0)
+-	.short     L(SSE9Q5) -L(SSE0Q0)
+-	.short     L(SSE10Q5)-L(SSE0Q0)
+-	.short     L(SSE11Q5)-L(SSE0Q0)
+-	.short     L(SSE12Q5)-L(SSE0Q0)
+-	.short     L(SSE13Q5)-L(SSE0Q0)
+-	.short     L(SSE14Q5)-L(SSE0Q0)
+-	.short     L(SSE15Q5)-L(SSE0Q0)
+-
+-	.short     L(SSE0Q6) -L(SSE0Q0)
+-	.short     L(SSE1Q6) -L(SSE0Q0)
+-	.short     L(SSE2Q6) -L(SSE0Q0)
+-	.short     L(SSE3Q6) -L(SSE0Q0)
+-	.short     L(SSE4Q6) -L(SSE0Q0)
+-	.short     L(SSE5Q6) -L(SSE0Q0)
+-	.short     L(SSE6Q6) -L(SSE0Q0)
+-	.short     L(SSE7Q6) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q6) -L(SSE0Q0)
+-	.short     L(SSE9Q6) -L(SSE0Q0)
+-	.short     L(SSE10Q6)-L(SSE0Q0)
+-	.short     L(SSE11Q6)-L(SSE0Q0)
+-	.short     L(SSE12Q6)-L(SSE0Q0)
+-	.short     L(SSE13Q6)-L(SSE0Q0)
+-	.short     L(SSE14Q6)-L(SSE0Q0)
+-	.short     L(SSE15Q6)-L(SSE0Q0)
+-
+-	.short     L(SSE0Q7) -L(SSE0Q0)
+-	.short     L(SSE1Q7) -L(SSE0Q0)
+-	.short     L(SSE2Q7) -L(SSE0Q0)
+-	.short     L(SSE3Q7) -L(SSE0Q0)
+-	.short     L(SSE4Q7) -L(SSE0Q0)
+-	.short     L(SSE5Q7) -L(SSE0Q0)
+-	.short     L(SSE6Q7) -L(SSE0Q0)
+-	.short     L(SSE7Q7) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q7) -L(SSE0Q0)
+-	.short     L(SSE9Q7) -L(SSE0Q0)
+-	.short     L(SSE10Q7)-L(SSE0Q0)
+-	.short     L(SSE11Q7)-L(SSE0Q0)
+-	.short     L(SSE12Q7)-L(SSE0Q0)
+-	.short     L(SSE13Q7)-L(SSE0Q0)
+-	.short     L(SSE14Q7)-L(SSE0Q0)
+-	.short     L(SSE15Q7)-L(SSE0Q0)
+-
+-	.short     L(SSE0Q8) -L(SSE0Q0)
+-	.short     L(SSE1Q8) -L(SSE0Q0)
+-	.short     L(SSE2Q8) -L(SSE0Q0)
+-	.short     L(SSE3Q8) -L(SSE0Q0)
+-	.short     L(SSE4Q8) -L(SSE0Q0)
+-	.short     L(SSE5Q8) -L(SSE0Q0)
+-	.short     L(SSE6Q8) -L(SSE0Q0)
+-	.short     L(SSE7Q8) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q8) -L(SSE0Q0)
+-	.short     L(SSE9Q8) -L(SSE0Q0)
+-	.short     L(SSE10Q8)-L(SSE0Q0)
+-	.short     L(SSE11Q8)-L(SSE0Q0)
+-	.short     L(SSE12Q8)-L(SSE0Q0)
+-	.short     L(SSE13Q8)-L(SSE0Q0)
+-	.short     L(SSE14Q8)-L(SSE0Q0)
+-	.short     L(SSE15Q8)-L(SSE0Q0)
+-
+-	.short     L(SSE0Q9) -L(SSE0Q0)
+-	.short     L(SSE1Q9) -L(SSE0Q0)
+-	.short     L(SSE2Q9) -L(SSE0Q0)
+-	.short     L(SSE3Q9) -L(SSE0Q0)
+-	.short     L(SSE4Q9) -L(SSE0Q0)
+-	.short     L(SSE5Q9) -L(SSE0Q0)
+-	.short     L(SSE6Q9) -L(SSE0Q0)
+-	.short     L(SSE7Q9) -L(SSE0Q0)
+-
+-	.short     L(SSE8Q9) -L(SSE0Q0)
+-	.short     L(SSE9Q9) -L(SSE0Q0)
+-	.short     L(SSE10Q9)-L(SSE0Q0)
+-	.short     L(SSE11Q9)-L(SSE0Q0)
+-	.short     L(SSE12Q9)-L(SSE0Q0)
+-	.short     L(SSE13Q9)-L(SSE0Q0)
+-	.short     L(SSE14Q9)-L(SSE0Q0)
+-	.short     L(SSE15Q9)-L(SSE0Q0)
+-
+-	.short     L(SSE0QA) -L(SSE0Q0)
+-	.short     L(SSE1QA) -L(SSE0Q0)
+-	.short     L(SSE2QA) -L(SSE0Q0)
+-	.short     L(SSE3QA) -L(SSE0Q0)
+-	.short     L(SSE4QA) -L(SSE0Q0)
+-	.short     L(SSE5QA) -L(SSE0Q0)
+-	.short     L(SSE6QA) -L(SSE0Q0)
+-	.short     L(SSE7QA) -L(SSE0Q0)
+-
+-	.short     L(SSE8QA) -L(SSE0Q0)
+-	.short     L(SSE9QA) -L(SSE0Q0)
+-	.short     L(SSE10QA)-L(SSE0Q0)
+-	.short     L(SSE11QA)-L(SSE0Q0)
+-	.short     L(SSE12QA)-L(SSE0Q0)
+-	.short     L(SSE13QA)-L(SSE0Q0)
+-	.short     L(SSE14QA)-L(SSE0Q0)
+-	.short     L(SSE15QA)-L(SSE0Q0)
+-
+-	.short     L(SSE0QB) -L(SSE0Q0)
+-	.short     L(SSE1QB) -L(SSE0Q0)
+-	.short     L(SSE2QB) -L(SSE0Q0)
+-	.short     L(SSE3QB) -L(SSE0Q0)
+-	.short     L(SSE4QB) -L(SSE0Q0)
+-	.short     L(SSE5QB) -L(SSE0Q0)
+-	.short     L(SSE6QB) -L(SSE0Q0)
+-	.short     L(SSE7QB) -L(SSE0Q0)
+-
+-	.short     L(SSE8QB) -L(SSE0Q0)
+-	.short     L(SSE9QB) -L(SSE0Q0)
+-	.short     L(SSE10QB)-L(SSE0Q0)
+-	.short     L(SSE11QB)-L(SSE0Q0)
+-	.short     L(SSE12QB)-L(SSE0Q0)
+-	.short     L(SSE13QB)-L(SSE0Q0)
+-	.short     L(SSE14QB)-L(SSE0Q0)
+-	.short     L(SSE15QB)-L(SSE0Q0)
+-# endif
+-	.popsection
+-#endif /* !defined USE_MULTIARCH || defined USE_SSE2  */
+-
+-	.balign     16
+-#ifndef USE_MULTIARCH
+-L(aligned_now):
+-
+-	 cmpl   $0x1,__x86_64_preferred_memory_instruction(%rip)
+-	 jg     L(SSE_pre)
+-#endif /* USE_MULTIARCH */
+-
+-L(8byte_move_try):
+-	cmpq	__STOS_LOWER_BOUNDARY,%r8
+-	jae	L(8byte_stos_try)
+-
+-	.balign     16
+-L(8byte_move):
+-	movq	%r8,%rcx
+-	shrq	$7,%rcx
+-	jz	L(8byte_move_skip)
+-
+-	.p2align 4
+-
+-L(8byte_move_loop):
+-	decq	%rcx
+-
+-	movq	%rdx,    (%rdi)
+-	movq	%rdx,  8 (%rdi)
+-	movq	%rdx, 16 (%rdi)
+-	movq	%rdx, 24 (%rdi)
+-	movq	%rdx, 32 (%rdi)
+-	movq	%rdx, 40 (%rdi)
+-	movq	%rdx, 48 (%rdi)
+-	movq	%rdx, 56 (%rdi)
+-	movq	%rdx, 64 (%rdi)
+-	movq	%rdx, 72 (%rdi)
+-	movq	%rdx, 80 (%rdi)
+-	movq	%rdx, 88 (%rdi)
+-	movq	%rdx, 96 (%rdi)
+-	movq	%rdx, 104 (%rdi)
+-	movq	%rdx, 112 (%rdi)
+-	movq	%rdx, 120 (%rdi)
+-
+-	leaq	128 (%rdi),%rdi
+-
+-	jnz     L(8byte_move_loop)
+-
+-L(8byte_move_skip):
+-	andl	$127,%r8d
+-	lea	(%rdi,%r8,1),%rdi
+-
+-#ifndef PIC
+-	lea	L(setPxQx)(%rip),%r11
+-	jmpq	*(%r11,%r8,8) # old scheme remained for nonPIC
+-#else
+-	lea	L(Got0)(%rip),%r11
+-	lea	L(setPxQx)(%rip),%rcx
+-	movswq	(%rcx,%r8,2),%rcx
+-	lea	(%rcx,%r11,1),%r11
+-	jmpq	*%r11
+-#endif
+-
+-	.balign     16
+-L(8byte_stos_try):
+-	mov    __x86_64_shared_cache_size(%rip),%r9d // ck largest cache size
+-	cmpq	%r8,%r9		// calculate the lesser of remaining
+-	cmovaq	%r8,%r9		// bytes and largest cache size
+-	jbe	L(8byte_stos)
+-
+-L(8byte_move_reuse_try):
+-	cmp	__STOS_UPPER_BOUNDARY,%r8
+-	jae	L(8byte_move)
+-
+-	.balign     16
+-L(8byte_stos):
+-	movq	%r9,%rcx
+-	andq	$-8,%r9
+-
+-	shrq	$3,%rcx
+-	jz	L(8byte_stos_skip)
+-
+-	xchgq	%rax,%rdx
+ 
++ENTRY (memset)
++	movd	%esi, %xmm8
++	movq	%rdi, %rax
++	punpcklbw	%xmm8, %xmm8
++	punpcklwd	%xmm8, %xmm8
++	pshufd	$0, %xmm8, %xmm8
++L(entry_from_bzero):
++	cmpq	$64, %rdx
++	ja	L(loop_start)
++	cmpq	$16, %rdx
++	jbe	L(less_16_bytes)
++	cmpq	$32, %rdx
++	movdqu	%xmm8, (%rdi)
++	movdqu	%xmm8, -16(%rdi,%rdx)
++	ja	L(between_32_64_bytes)
++L(return):
+ 	rep
+-	stosq
+-
+-	xchgq	%rax,%rdx
+-
+-L(8byte_stos_skip):
+-	subq	%r9,%r8
+-	ja	L(8byte_nt_move)
+-
+-	andl	$7,%r8d
+-	lea	(%rdi,%r8,1),%rdi
+-#ifndef PIC
+-	lea	L(setPxQx)(%rip),%r11
+-	jmpq	*(%r11,%r8,8) # old scheme remained for nonPIC
+-#else
+-	lea	L(Got0)(%rip),%r11
+-	lea     L(setPxQx)(%rip),%rcx
+-	movswq	(%rcx,%r8,2),%rcx
+-	lea	(%rcx,%r11,1),%r11
+-	jmpq	*%r11
+-#endif
+-
+-	.balign     16
+-L(8byte_nt_move):
+-	movq	%r8,%rcx
+-	shrq	$7,%rcx
+-	jz      L(8byte_nt_move_skip)
+-
+-	.balign     16
+-L(8byte_nt_move_loop):
+-	decq	%rcx
++	ret
+ 
+-	movntiq	%rdx,     (%rdi)
+-	movntiq	%rdx,   8 (%rdi)
+-	movntiq	%rdx,  16 (%rdi)
+-	movntiq	%rdx,  24 (%rdi)
+-	movntiq	%rdx,  32 (%rdi)
+-	movntiq	%rdx,  40 (%rdi)
+-	movntiq	%rdx,  48 (%rdi)
+-	movntiq	%rdx,  56 (%rdi)
+-	movntiq	%rdx,  64 (%rdi)
+-	movntiq	%rdx,  72 (%rdi)
+-	movntiq	%rdx,  80 (%rdi)
+-	movntiq	%rdx,  88 (%rdi)
+-	movntiq	%rdx,  96 (%rdi)
+-	movntiq	%rdx, 104 (%rdi)
+-	movntiq	%rdx, 112 (%rdi)
+-	movntiq	%rdx, 120 (%rdi)
+-
+-	leaq	128 (%rdi),%rdi
+-
+-	jnz     L(8byte_nt_move_loop)
+-
+-	sfence
+-
+-L(8byte_nt_move_skip):
+-	andl	$127,%r8d
+-
+-	lea	(%rdi,%r8,1),%rdi
+-#ifndef PIC
+-	lea	L(setPxQx)(%rip),%r11
+-	jmpq	*(%r11,%r8,8) # old scheme remained for nonPIC
+-#else
+-	lea	L(Got0)(%rip),%r11
+-	lea     L(setPxQx)(%rip),%rcx
+-	movswq	(%rcx,%r8,2),%rcx
+-	lea	(%rcx,%r11,1),%r11
+-	jmpq	*%r11
+-#endif
++	ALIGN (4)
++L(between_32_64_bytes):
++	movdqu	%xmm8, 16(%rdi)
++	movdqu	%xmm8, -32(%rdi,%rdx)
++	ret
++	ALIGN (4)
++L(loop_start):
++	leaq	64(%rdi), %rcx
++	movdqu	%xmm8, (%rdi)
++	andq	$-64, %rcx
++	movdqu	%xmm8, -16(%rdi,%rdx)
++	movdqu	%xmm8, 16(%rdi)
++	movdqu	%xmm8, -32(%rdi,%rdx)
++	movdqu	%xmm8, 32(%rdi)
++	movdqu	%xmm8, -48(%rdi,%rdx)
++	movdqu	%xmm8, 48(%rdi)
++	movdqu	%xmm8, -64(%rdi,%rdx)
++	addq	%rdi, %rdx
++	andq	$-64, %rdx
++	cmpq	%rdx, %rcx
++	je	L(return)
++	ALIGN (4)
++L(loop):
++	movdqa	%xmm8, (%rcx)
++	movdqa	%xmm8, 16(%rcx)
++	movdqa	%xmm8, 32(%rcx)
++	movdqa	%xmm8, 48(%rcx)
++	addq	$64, %rcx
++	cmpq	%rcx, %rdx
++	jne	L(loop)
++	rep
++	ret
++L(less_16_bytes):
++	movq %xmm8, %rcx
++	testb	$24, %dl
++	jne	L(between8_16bytes)
++	testb	$4, %dl
++	jne	L(between4_7bytes)
++	testb	$1, %dl
++	je	L(odd_byte)
++	movb	%cl, (%rdi)
++L(odd_byte):
++	testb	$2, %dl
++	je	L(return)
++	movw	%cx, -2(%rax,%rdx)
++	ret
++L(between4_7bytes):
++	movl	%ecx, (%rdi)
++	movl	%ecx, -4(%rdi,%rdx)
++	ret
++L(between8_16bytes):
++	movq	%rcx, (%rdi)
++	movq	%rcx, -8(%rdi,%rdx)
++	ret
+ 
+ END (memset)
+ libc_hidden_builtin_def (memset)
diff --git a/SOURCES/glibc-rh1335629.patch b/SOURCES/glibc-rh1335629.patch
new file mode 100644
index 0000000..908e32d
--- /dev/null
+++ b/SOURCES/glibc-rh1335629.patch
@@ -0,0 +1,66 @@
+commit b763f6ae859ecea70a5dacb8ad45c71d5f667e2e
+Author: Andreas Schwab <schwab@suse.de>
+Date:   Tue Sep 30 12:41:11 2014 +0200
+
+    aarch64: Increase MINSIGSTKSZ and SIGSTKSZ (bug 16850)
+
+diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h b/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h
+new file mode 100644
+index 0000000..8f2fb76
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h
+@@ -0,0 +1,54 @@
++/* sigstack, sigaltstack definitions.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef _SIGNAL_H
++# error "Never include this file directly.  Use <signal.h> instead"
++#endif
++
++
++/* Structure describing a signal stack (obsolete).  */
++struct sigstack
++  {
++    void *ss_sp;		/* Signal stack pointer.  */
++    int ss_onstack;		/* Nonzero if executing on this stack.  */
++  };
++
++
++/* Possible values for `ss_flags.'.  */
++enum
++{
++  SS_ONSTACK = 1,
++#define SS_ONSTACK	SS_ONSTACK
++  SS_DISABLE
++#define SS_DISABLE	SS_DISABLE
++};
++
++/* Minimum stack size for a signal handler.  */
++#define MINSIGSTKSZ	5120
++
++/* System default stack size.  */
++#define SIGSTKSZ	16384
++
++
++/* Alternate, preferred interface.  */
++typedef struct sigaltstack
++  {
++    void *ss_sp;
++    int ss_flags;
++    size_t ss_size;
++  } stack_t;
diff --git a/SOURCES/glibc-rh1335925-1.patch b/SOURCES/glibc-rh1335925-1.patch
new file mode 100644
index 0000000..82f2b21
--- /dev/null
+++ b/SOURCES/glibc-rh1335925-1.patch
@@ -0,0 +1,71 @@
+Backport of this upstream commit, with ports/ readded to the path.
+
+commit 5c40c3bab2fddaca8cfe12d75944d1fef8adf1a4
+Author: Alan Hayward <alan.hayward@arm.com>
+Date:   Tue Nov 11 16:32:34 2014 +0000
+
+    [AArch64] Add ipc.h.
+    
+    Adding ipc.h for AArch64 adjusted to behave correctly on big endian
+    targets.
+
+diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/bits/ipc.h b/ports/sysdeps/unix/sysv/linux/aarch64/bits/ipc.h
+new file mode 100644
+index 0000000..aa50eb0
+--- /dev/null
++++ b/ports/sysdeps/unix/sysv/linux/aarch64/bits/ipc.h
+@@ -0,0 +1,54 @@
++/* Copyright (C) 1995-2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifndef _SYS_IPC_H
++# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
++#endif
++
++#include <bits/types.h>
++
++/* Mode bits for `msgget', `semget', and `shmget'.  */
++#define IPC_CREAT	01000		/* Create key if key does not exist. */
++#define IPC_EXCL	02000		/* Fail if key exists.  */
++#define IPC_NOWAIT	04000		/* Return error on wait.  */
++
++/* Control commands for `msgctl', `semctl', and `shmctl'.  */
++#define IPC_RMID	0		/* Remove identifier.  */
++#define IPC_SET		1		/* Set `ipc_perm' options.  */
++#define IPC_STAT	2		/* Get `ipc_perm' options.  */
++#ifdef __USE_GNU
++# define IPC_INFO	3		/* See ipcs.  */
++#endif
++
++/* Special key values.  */
++#define IPC_PRIVATE	((__key_t) 0)	/* Private key.  */
++
++
++/* Data structure used to pass permission information to IPC operations.  */
++struct ipc_perm
++  {
++    __key_t __key;			/* Key.  */
++    __uid_t uid;			/* Owner's user ID.  */
++    __gid_t gid;			/* Owner's group ID.  */
++    __uid_t cuid;			/* Creator's user ID.  */
++    __gid_t cgid;			/* Creator's group ID.  */
++    unsigned int mode;			/* Read/write permission.  */
++    unsigned short int __seq;		/* Sequence number.  */
++    unsigned short int __pad1;
++    __syscall_ulong_t __glibc_reserved1;
++    __syscall_ulong_t __glibc_reserved2;
++  };
diff --git a/SOURCES/glibc-rh1335925-2.patch b/SOURCES/glibc-rh1335925-2.patch
new file mode 100644
index 0000000..02037be
--- /dev/null
+++ b/SOURCES/glibc-rh1335925-2.patch
@@ -0,0 +1,34 @@
+Backport of this upstream commit, with ports/ readded to the path.
+
+commit 14d623bcd178d336b47fdb4f0c973720d56d907c
+Author: Szabolcs Nagy <nsz@port70.net>
+Date:   Thu Jul 9 09:39:51 2015 +0100
+
+    [AArch64][BZ 18400] fix elf_prpsinfo in procfs.h
+    
+    Kernel uses int pr_uid, pr_gid, but glibc used unsigned short.
+    
+    This is an ABI breaking change, but the size and alignment of
+    the struct and the layout of other members is not changed and
+    there is no known usage of pr_uid and pr_gid so it is expected
+    to be safe.
+    
+    	[BZ #18400]
+    	* sysdeps/unix/sysv/linux/aarch64/sys/procfs.h (struct elf_prpsinfo):
+    	Fix pr_uid and pr_gid members.
+
+diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h b/ports/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h
+index cf5e76c..ecc65ab 100644
+--- a/ports/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h
++++ b/ports/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h
+@@ -91,8 +91,8 @@ struct elf_prpsinfo
+     char pr_zomb;			/* Zombie.  */
+     char pr_nice;			/* Nice val.  */
+     unsigned long int pr_flag;		/* Flags.  */
+-    unsigned short int pr_uid;
+-    unsigned short int pr_gid;
++    unsigned int pr_uid;
++    unsigned int pr_gid;
+     int pr_pid, pr_ppid, pr_pgrp, pr_sid;
+     /* Lots missing */
+     char pr_fname[16];			/* Filename of executable.  */
diff --git a/SOURCES/glibc-rh1335925-3.patch b/SOURCES/glibc-rh1335925-3.patch
new file mode 100644
index 0000000..966f5f5
--- /dev/null
+++ b/SOURCES/glibc-rh1335925-3.patch
@@ -0,0 +1,39 @@
+Backport of this upstream commit, with ports/ readded to the path.
+
+commit b8528e771c0f31ebb8ac2470e2cf7ee9a50693e2
+Author: Szabolcs Nagy <nsz@port70.net>
+Date:   Thu Jul 9 09:53:30 2015 +0100
+
+    [AArch64][BZ 18648] change greg_t definition in ucontext.h
+    
+    This is an ABI breaking change, but
+    
+    	typedef int greg_t;
+    
+    is not a useful definition on aarch64.
+    
+    greg_t is usually used for defining gregset_t which is used
+    in mcontext_t.  The general registers in mcontext_t can only
+    be accessed by target specific code and on aarch64 greg_t
+    is not needed for that so this change is not supposed to break
+    existing code, just fix the definition.
+    
+    	[BZ #18648]
+    	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h (greg_t): Change the
+    	definition to elf_greg_t.
+    
+    (Added another BZ entry that was missed in the previous commit).
+
+diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/ports/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
+index db7a7c1..e7268ce 100644
+--- a/ports/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
++++ b/ports/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
+@@ -29,7 +29,7 @@
+    included in <signal.h>.  */
+ #include <bits/sigcontext.h>
+ 
+-typedef int greg_t;
++typedef elf_greg_t greg_t;
+ 
+ /* Container for all general registers.  */
+ typedef elf_gregset_t gregset_t;
diff --git a/SOURCES/glibc-rh1335925-4.patch b/SOURCES/glibc-rh1335925-4.patch
new file mode 100644
index 0000000..2b0105b
--- /dev/null
+++ b/SOURCES/glibc-rh1335925-4.patch
@@ -0,0 +1,143 @@
+Backport of this upstream commit, with ports/ readded to the path.
+
+commit 2b1d7148e3664eeb177ae2fc91bf282d75da7623
+Author: Szabolcs Nagy <nsz@port70.net>
+Date:   Mon Jul 6 12:46:43 2015 +0100
+
+    [AArch64] make setcontext etc functions consistent with the kernel
+    
+    since
+    https://sourceware.org/ml/libc-alpha/2014-04/msg00006.html
+    setcontext etc is no longer tied to the kernel use of ucontext.
+    
+    in that patch the ucontext reserved space is not used consistently
+    with the kernel abi: the d8,d9 pair is saved in the slot of q8.
+    
+    this is ok (*context functions work together), but probably not
+    desirable (ucontexts created by the kernel and getcontext are
+    subtly different).
+    
+    the fix just replaces dN with qN in the save/restore code, which
+    does a bit more than needed (saves/restores the top half of qN that
+    is not callee saved), but this should not be an issue (and avoids
+    having to deal with endianness).
+    
+    (kernel fpsimd context layout: the first 64bit contains 0x210 the fpsimd
+    context size and 0x46508001 the FPSIMD_MAGIC, the second 64bit is for
+    fpsr and fpcr, and the rest is the 128bit q0..q31 registers).
+    
+    given d8=8.1, d9=9.1,... d15=15.1, the context created by getcontext is
+    
+    current:
+    
+    (gdb) x/40xg ctx.uc_mcontext.__reserved
+    0x410df0 <ctx+464>:     0x0000021046508001      0x0000000000000000
+    0x410e00 <ctx+480>:     0x0000000000000000      0x0000000000000000
+    0x410e10 <ctx+496>:     0x0000000000000000      0x0000000000000000
+    0x410e20 <ctx+512>:     0x0000000000000000      0x0000000000000000
+    0x410e30 <ctx+528>:     0x0000000000000000      0x0000000000000000
+    0x410e40 <ctx+544>:     0x0000000000000000      0x0000000000000000
+    0x410e50 <ctx+560>:     0x0000000000000000      0x0000000000000000
+    0x410e60 <ctx+576>:     0x0000000000000000      0x0000000000000000
+    0x410e70 <ctx+592>:     0x0000000000000000      0x0000000000000000
+    0x410e80 <ctx+608>:     0x4020333333333333      0x4022333333333333
+    0x410e90 <ctx+624>:     0x0000000000000000      0x0000000000000000
+    0x410ea0 <ctx+640>:     0x4024333333333333      0x4026333333333333
+    0x410eb0 <ctx+656>:     0x0000000000000000      0x0000000000000000
+    0x410ec0 <ctx+672>:     0x4028333333333333      0x402a333333333333
+    0x410ed0 <ctx+688>:     0x0000000000000000      0x0000000000000000
+    0x410ee0 <ctx+704>:     0x402c333333333333      0x402e333333333333
+    0x410ef0 <ctx+720>:     0x0000000000000000      0x0000000000000000
+    0x410f00 <ctx+736>:     0x0000000000000000      0x0000000000000000
+    0x410f10 <ctx+752>:     0x0000000000000000      0x0000000000000000
+    0x410f20 <ctx+768>:     0x0000000000000000      0x0000000000000000
+    
+    fixed:
+    
+    (gdb) x/40xg ctx.uc_mcontext.__reserved
+    0x410d70 <ctx+464>:     0x0000021046508001      0x0000000000000000
+    0x410d80 <ctx+480>:     0x0000000000000000      0x0000000000000000
+    0x410d90 <ctx+496>:     0x0000000000000000      0x0000000000000000
+    0x410da0 <ctx+512>:     0x0000000000000000      0x0000000000000000
+    0x410db0 <ctx+528>:     0x0000000000000000      0x0000000000000000
+    0x410dc0 <ctx+544>:     0x0000000000000000      0x0000000000000000
+    0x410dd0 <ctx+560>:     0x0000000000000000      0x0000000000000000
+    0x410de0 <ctx+576>:     0x0000000000000000      0x0000000000000000
+    0x410df0 <ctx+592>:     0x0000000000000000      0x0000000000000000
+    0x410e00 <ctx+608>:     0x4020333333333333      0x0000000000000000
+    0x410e10 <ctx+624>:     0x4022333333333333      0x0000000000000000
+    0x410e20 <ctx+640>:     0x4024333333333333      0x0000000000000000
+    0x410e30 <ctx+656>:     0x4026333333333333      0x0000000000000000
+    0x410e40 <ctx+672>:     0x4028333333333333      0x0000000000000000
+    0x410e50 <ctx+688>:     0x402a333333333333      0x0000000000000000
+    0x410e60 <ctx+704>:     0x402c333333333333      0x0000000000000000
+    0x410e70 <ctx+720>:     0x402e333333333333      0x0000000000000000
+    0x410e80 <ctx+736>:     0x0000000000000000      0x0000000000000000
+    0x410e90 <ctx+752>:     0x0000000000000000      0x0000000000000000
+    0x410ea0 <ctx+768>:     0x0000000000000000      0x0000000000000000
+    
+    2015-07-06  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+    
+    	* sysdeps/unix/sysv/linux/aarch64/getcontext.S (__getcontext): Use q
+    	registers instead of d ones so the layout is kernel abi compatible.
+    	* sysdeps/unix/sysv/linux/aarch64/setcontext.S (__setcontext): Likewise.
+    	* sysdeps/unix/sysv/linux/aarch64/swapcontext.S (__swapcontext):
+    	Likewise.# Please enter the commit message for your changes. Lines starting
+
+diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S b/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S
+index adf8037..b72436f 100644
+--- a/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S
++++ b/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S
+@@ -69,10 +69,10 @@ ENTRY(__getcontext)
+ 
+ 	/* Fill in the FP SIMD context.  */
+ 	add	x3, x2, #oV0 + 8 * SZVREG
+-	stp	 d8,  d9, [x3], # 2 * SZVREG
+-	stp	d10, d11, [x3], # 2 * SZVREG
+-	stp	d12, d13, [x3], # 2 * SZVREG
+-	stp	d14, d15, [x3], # 2 * SZVREG
++	stp	 q8,  q9, [x3], # 2 * SZVREG
++	stp	q10, q11, [x3], # 2 * SZVREG
++	stp	q12, q13, [x3], # 2 * SZVREG
++	stp	q14, q15, [x3], # 2 * SZVREG
+ 
+ 	add	x3, x2, oFPSR
+ 
+diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S b/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S
+index ae67581..8d926f7 100644
+--- a/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S
++++ b/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S
+@@ -97,10 +97,10 @@ ENTRY (__setcontext)
+ 
+ 	/* Restore the FP SIMD context.  */
+ 	add	x3, x2, #oV0 + 8 * SZVREG
+-	ldp	 d8,  d9, [x3], #2 * SZVREG
+-	ldp	d10, d11, [x3], #2 * SZVREG
+-	ldp	d12, d13, [x3], #2 * SZVREG
+-	ldp	d14, d15, [x3], #2 * SZVREG
++	ldp	 q8,  q9, [x3], #2 * SZVREG
++	ldp	q10, q11, [x3], #2 * SZVREG
++	ldp	q12, q13, [x3], #2 * SZVREG
++	ldp	q14, q15, [x3], #2 * SZVREG
+ 
+ 	add	x3, x2, oFPSR
+ 
+diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/swapcontext.S b/ports/sysdeps/unix/sysv/linux/aarch64/swapcontext.S
+index f62fc11..05ad8d3 100644
+--- a/ports/sysdeps/unix/sysv/linux/aarch64/swapcontext.S
++++ b/ports/sysdeps/unix/sysv/linux/aarch64/swapcontext.S
+@@ -54,10 +54,10 @@ ENTRY(__swapcontext)
+ 
+ 	/* Fill in the FP SIMD context.  */
+ 	add	x3, x2, #oV0 + 8 * SZVREG
+-	stp	 d8,  d9, [x3], #2 * SZVREG
+-	stp	d10, d11, [x3], #2 * SZVREG
+-	stp	d12, d13, [x3], #2 * SZVREG
+-	stp	d14, d15, [x3], #2 * SZVREG
++	stp	 q8,  q9, [x3], #2 * SZVREG
++	stp	q10, q11, [x3], #2 * SZVREG
++	stp	q12, q13, [x3], #2 * SZVREG
++	stp	q14, q15, [x3], #2 * SZVREG
+ 
+ 	add	x3, x2, #oFPSR
+ 
diff --git a/SOURCES/glibc-rh1346397.patch b/SOURCES/glibc-rh1346397.patch
new file mode 100644
index 0000000..3300da5
--- /dev/null
+++ b/SOURCES/glibc-rh1346397.patch
@@ -0,0 +1,85 @@
+Based on the following commits:
+
+commit 2c41b52901331f5c761015af786a3976e225d779
+Author: Florian Weimer <fweimer@redhat.com>
+Date:   Mon Jun 13 13:08:39 2016 +0200
+
+    debug/tst-longjmp_chk2: Make signal handler more conservative [BZ #20248]
+    
+    Currently, printf needs more stack space than what is available with
+    SIGSTKSZ.  This commit use the the write system call directly instead.
+    
+    Also use sig_atomic_t for the “pass” variable (for general
+    correctness), and restore signal handlers to their defaults, to avoid
+    masking crashes.
+
+commit 5896c8bdd9f73cdc816a96e107ca1f7a6bc6921e
+Author: Mike Frysinger <vapier@gentoo.org>
+Date:   Sun Dec 29 16:30:35 2013 -0500
+
+    tst-longjmp_chk2: add comments/sanity check
+    
+    If the longjmp checking code is slightly broken, this code can loop
+    forever which isn't too helpful.  Add a sanity check to keep that
+    from happening.
+    
+    Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+
+Index: b/debug/tst-longjmp_chk2.c
+===================================================================
+--- a/debug/tst-longjmp_chk2.c
++++ b/debug/tst-longjmp_chk2.c
+@@ -4,27 +4,36 @@
+ #include <signal.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include <sys/types.h>
+ #include <sys/time.h>
+ #include <sys/resource.h>
++#include <unistd.h>
+ 
+ 
+ static jmp_buf mainloop;
+ static sigset_t mainsigset;
+-static int pass;
++static volatile sig_atomic_t pass;
+ 
++static void
++write_message (const char *message)
++{
++  ssize_t unused __attribute__ ((unused));
++  for (int i = 0; i < pass; ++i)
++    unused = write (STDOUT_FILENO, " ", 1);
++  unused = write (STDOUT_FILENO, message, strlen (message));
++}
+ 
+ static void
+ stackoverflow_handler (int sig)
+ {
+   stack_t altstack;
+   pass++;
++  assert (pass < 5);
+   sigaltstack (NULL, &altstack);
+-  /* Using printf is not really kosher in signal handlers but we know
+-     it will work.  */
+-  printf ("%*sin signal handler\n", pass, "");
++  write_message ("in signal handler\n");
+   if (altstack.ss_flags & SS_ONSTACK)
+-    printf ("%*son alternate stack\n", pass, "");
++    write_message ("on alternate stack\n");
+   siglongjmp (mainloop, pass);
+ }
+ 
+@@ -107,6 +116,11 @@ do_test (void)
+   else
+     printf ("disabling alternate stack succeeded \n");
+ 
++  /* Restore the signal handlers, in case we trigger a crash after the
++     tests above.  */
++  signal (SIGBUS, SIG_DFL);
++  signal (SIGSEGV, SIG_DFL);
++
+   return 0;
+ }
+ 
diff --git a/SOURCES/glibc-rh1350733-1.patch b/SOURCES/glibc-rh1350733-1.patch
new file mode 100644
index 0000000..1da74c6
--- /dev/null
+++ b/SOURCES/glibc-rh1350733-1.patch
@@ -0,0 +1,244 @@
+The functions in locarchive.c cannot create files in non-default
+locations.  Rather than enhancing locarchive.c (and risk regressions
+in localedef), this patch adapts build-locale-archive to use the
+existing output_prefix configuration variable.
+
+Index: glibc-2.17-c758a686/releng/build-locale-archive.c
+===================================================================
+--- glibc-2.17-c758a686.orig/releng/build-locale-archive.c
++++ glibc-2.17-c758a686/releng/build-locale-archive.c
+@@ -92,23 +92,34 @@ xmalloc (size_t size)
+   return p;
+ }
+ 
++static char *
++xasprintf (const char *format, ...)
++{
++  va_list ap;
++  va_start (ap, format);
++  char *result;
++  if (vasprintf (&result, format, ap) < 0)
++    error (EXIT_FAILURE, errno, "could not format string");
++  va_end (ap);
++  return result;
++}
++
+ static void
+ open_tmpl_archive (struct locarhandle *ah)
+ {
+   struct stat64 st;
+   int fd;
+   struct locarhead head;
+-  const char *archivefname = ah->fname == NULL ? tmpl_file : ah->fname;
+ 
+   /* Open the archive.  We must have exclusive write access.  */
+-  fd = open64 (archivefname, O_RDONLY);
++  fd = open64 (tmpl_file, O_RDONLY);
+   if (fd == -1)
+     error (EXIT_FAILURE, errno, "cannot open locale archive template file \"%s\"",
+-	   archivefname);
++	   tmpl_file);
+ 
+   if (fstat64 (fd, &st) < 0)
+     error (EXIT_FAILURE, errno, "cannot stat locale archive template file \"%s\"",
+-	   archivefname);
++	   tmpl_file);
+ 
+   /* Read the header.  */
+   if (TEMP_FAILURE_RETRY (read (fd, &head, sizeof (head))) != sizeof (head))
+@@ -253,12 +264,11 @@ compute_data (struct locarhandle *ah, st
+ 
+ static int
+ fill_archive (struct locarhandle *tmpl_ah,
+-	      const char *fname,
+ 	      size_t install_langs_count, char *install_langs_list[],
+ 	      size_t nlist, char *list[],
+ 	      const char *primary)
+ {
+-  struct locarhandle ah;
++  struct locarhandle ah = {};
+   struct locarhead *head;
+   int result = 0;
+   struct nameent *names;
+@@ -338,9 +348,6 @@ fill_archive (struct locarhandle *tmpl_a
+ 
+   /* Open the archive.  This call never returns if we cannot
+      successfully open the archive.  */
+-  ah.fname = NULL;
+-  if (fname != NULL)
+-    ah.fname = fname;
+   open_archive (&ah, false);
+ 
+   if (primary != NULL)
+@@ -619,38 +626,39 @@ Usage: build-locale-archive [OPTION]...
+                              \"de\" but also the aliases \"deutsch\"\n\
+                              and and \"german\" although the latter does not\n\
+                              start with \"de\".\n\
++  --prefix=DIR               Operate under the file system root DIR\n\
+ \n\
+-  If the arguments TEMPLATE-FILE and ARCHIVE-FILE are not given the locations\n\
+-  where the glibc used expects these files are used by default.\n\
+ ");
+ }
+ 
+ int main (int argc, char *argv[])
+ {
+-  char path[4096];
+   DIR *dirp;
+   struct dirent64 *d;
+   struct stat64 st;
+   char *list[16384], *primary;
+   char *lang;
+   int install_langs_count = 0;
+-  int i;
+   char *install_langs_arg, *ila_start;
+   char **install_langs_list;
+   unsigned int cnt = 0;
+-  struct locarhandle tmpl_ah;
+-  char *new_locar_fname = NULL;
+-  size_t loc_path_len = strlen (loc_path);
++  struct locarhandle tmpl_ah = {};
+ 
+   while (1)
+     {
+       int c;
+ 
++      enum
++      {
++	opt_prefix = 1000,
++      };
++
+       static struct option long_options[] =
+         {
+             {"help",            no_argument,       0, 'h'},
+             {"verbose",         no_argument,       0, 'v'},
+             {"install-langs",   required_argument, 0, 'l'},
++	    {"prefix",          required_argument, 0, opt_prefix},
+             {0, 0, 0, 0}
+         };
+       /* getopt_long stores the option index here. */
+@@ -721,6 +729,10 @@ int main (int argc, char *argv[])
+             }
+           break;
+ 
++	case opt_prefix:
++	  output_prefix = optarg;
++	  break;
++
+         case '?':
+           /* getopt_long already printed an error message. */
+           usage ();
+@@ -730,23 +742,26 @@ int main (int argc, char *argv[])
+           abort ();
+         }
+     }
+-  tmpl_ah.fname = NULL;
+-  if (optind < argc)
+-    tmpl_ah.fname = argv[optind];
+-  if (optind + 1 < argc)
+-    new_locar_fname = argv[optind + 1];
++  if (optind != argc)
++    {
++      usage ();
++      exit (1);
++    }
++  if (output_prefix)
++    {
++      tmpl_file = xasprintf ("%s%s", output_prefix, tmpl_file);
++      alias_file = xasprintf ("%s%s", output_prefix, alias_file);
++      locar_file = xasprintf ("%s%s", output_prefix, locar_file);
++      loc_path = xasprintf ("%s%s", output_prefix, loc_path);
++    }
+   if (verbose)
+     {
+-      if (tmpl_ah.fname)
+-        printf("input archive file specified on command line: %s\n",
+-               tmpl_ah.fname);
+-      else
+-        printf("using default input archive file.\n");
+-      if (new_locar_fname)
+-        printf("output archive file specified on command line: %s\n",
+-               new_locar_fname);
+-      else
+-        printf("using default output archive file.\n");
++      if (output_prefix != NULL)
++	printf ("output prefix: %s\n", output_prefix);
++      printf ("input archive file: %s\n", tmpl_file);
++      printf ("input alias file: %s\n", alias_file);
++      printf ("input locale directory prefix: %s\n", loc_path);
++      printf ("output archive file: %s\n", locar_file);
+     }
+ 
+   dirp = opendir (loc_path);
+@@ -754,11 +769,7 @@ int main (int argc, char *argv[])
+     error (EXIT_FAILURE, errno, "cannot open directory \"%s\"", loc_path);
+ 
+   open_tmpl_archive (&tmpl_ah);
+-
+-  if (new_locar_fname)
+-    unlink (new_locar_fname);
+-  else
+-    unlink (locar_file);
++  unlink (locar_file);
+ 
+   primary = getenv ("LC_ALL");
+   if (primary == NULL)
+@@ -790,8 +801,6 @@ int main (int argc, char *argv[])
+ 	}
+     }
+ 
+-  memcpy (path, loc_path, loc_path_len);
+-
+   while ((d = readdir64 (dirp)) != NULL)
+     {
+       if (strcmp (d->d_name, ".") == 0 || strcmp (d->d_name, "..") == 0)
+@@ -799,32 +808,25 @@ int main (int argc, char *argv[])
+       if (strchr (d->d_name, '_') == NULL)
+ 	continue;
+ 
+-      size_t d_name_len = strlen (d->d_name);
+-      if (loc_path_len + d_name_len + 1 > sizeof (path))
+-	{
+-	  error (0, 0, "too long filename \"%s\"", d->d_name);
+-	  continue;
+-	}
+-
+-      memcpy (path + loc_path_len, d->d_name, d_name_len + 1);
++      char *path = xasprintf ("%s%s", loc_path, d->d_name);
+       if (stat64 (path, &st) < 0)
+ 	{
+ 	  error (0, errno, "cannot stat \"%s\"", path);
++	  free (path);
+ 	  continue;
+ 	}
+       if (! S_ISDIR (st.st_mode))
+-	continue;
++	{
++	  free (path);
++	  continue;
++	}
+       if (cnt == 16384)
+ 	{
+ 	  error (0, 0, "too many directories in \"%s\"", loc_path);
++	  free (path);
+ 	  break;
+ 	}
+-      list[cnt] = strdup (path);
+-      if (list[cnt] == NULL)
+-	{
+-	  error (0, errno, "cannot add file to list \"%s\"", path);
+-	  continue;
+-	}
++      list[cnt] = path;
+       if (primary != NULL && cnt > 0 && strcmp (primary, d->d_name) == 0)
+ 	{
+ 	  char *p = list[0];
+@@ -836,7 +838,7 @@ int main (int argc, char *argv[])
+   closedir (dirp);
+   /* Store the archive to the file specified as the second argument on the
+      command line or the default locale archive.  */
+-  fill_archive (&tmpl_ah, new_locar_fname,
++  fill_archive (&tmpl_ah,
+                 install_langs_count, install_langs_list,
+                 cnt, list, primary);
+   close_archive (&tmpl_ah);
diff --git a/SOURCES/glibc-rh971416-1.patch b/SOURCES/glibc-rh971416-1.patch
new file mode 100644
index 0000000..cfcf897
--- /dev/null
+++ b/SOURCES/glibc-rh971416-1.patch
@@ -0,0 +1,53 @@
+commit 0d822a016b631aef409df5805f58962fe5bbcdc5
+Author: Alexandre Oliva <aoliva@redhat.com>
+Date:   Mon Nov 17 22:00:58 2014 -0200
+
+    BZ #15969: search locale archive again after alias expansion
+    
+    If a locale alias is defined in locale.alias but not in an archive,
+    and the referenced locale is only present in the archive, setlocale
+    will fail if given the alias name.  This is unintuitive.  This patch
+    fixes it, arranging for the locale archive to be searched again after
+    alias expansion.
+    
+    for  ChangeLog
+    
+    	[BZ #15969]
+    	* locale/findlocale.c (_nl_find_locale): Retry archive search
+    	after alias expansion.
+
+Index: b/locale/findlocale.c
+===================================================================
+--- a/locale/findlocale.c
++++ b/locale/findlocale.c
+@@ -156,15 +156,26 @@ _nl_find_locale (const char *locale_path
+       if (__builtin_expect (data != NULL, 1))
+ 	return data;
+ 
++      /* Nothing in the archive with the given name.  Expanding it as
++	 an alias and retry.  */
++      loc_name = (char *) _nl_expand_alias (*name);
++      if (loc_name != NULL)
++	{
++	  data = _nl_load_locale_from_archive (category, &loc_name);
++	  if (__builtin_expect (data != NULL, 1))
++	    return data;
++	}
++
+       /* Nothing in the archive.  Set the default path to search below.  */
+       locale_path = _nl_default_locale_path;
+       locale_path_len = sizeof _nl_default_locale_path;
+     }
++  else
++    /* We really have to load some data.  First see whether the name is
++       an alias.  Please note that this makes it impossible to have "C"
++       or "POSIX" as aliases.  */
++    loc_name = (char *) _nl_expand_alias (*name);
+ 
+-  /* We really have to load some data.  First see whether the name is
+-     an alias.  Please note that this makes it impossible to have "C"
+-     or "POSIX" as aliases.  */
+-  loc_name = (char *) _nl_expand_alias (*name);
+   if (loc_name == NULL)
+     /* It is no alias.  */
+     loc_name = (char *) *name;
diff --git a/SOURCES/glibc-rh971416-2.patch b/SOURCES/glibc-rh971416-2.patch
new file mode 100644
index 0000000..39368cc
--- /dev/null
+++ b/SOURCES/glibc-rh971416-2.patch
@@ -0,0 +1,26 @@
+commit 23d43090e0b275e47e09e859823e965a1eb323dc
+Author: Alexandre Oliva <aoliva@redhat.com>
+Date:   Thu Feb 26 02:46:02 2015 -0300
+
+    Fix constness error just introduced in findlocale.
+    
+    for  ChangeLog
+    
+    	[BZ #15969]
+    	* locale/findlocale.c (_nl_find_locale): Fix constness error in
+    	the previous change.
+
+diff --git a/locale/findlocale.c b/locale/findlocale.c
+index 360f58b..5e2639b 100644
+--- a/locale/findlocale.c
++++ b/locale/findlocale.c
+@@ -161,7 +161,8 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
+       loc_name = (char *) _nl_expand_alias (*name);
+       if (loc_name != NULL)
+ 	{
+-	  data = _nl_load_locale_from_archive (category, &loc_name);
++	  data = _nl_load_locale_from_archive (category,
++					       (const char **) &loc_name);
+ 	  if (__builtin_expect (data != NULL, 1))
+ 	    return data;
+ 	}
diff --git a/SOURCES/glibc-rh971416-3.patch b/SOURCES/glibc-rh971416-3.patch
new file mode 100644
index 0000000..958d68d
--- /dev/null
+++ b/SOURCES/glibc-rh971416-3.patch
@@ -0,0 +1,113 @@
+commit e7f07af50b231d3ade6b4d338a65d6b571f96116
+Author: Alexandre Oliva <aoliva@redhat.com>
+Date:   Fri Feb 27 22:18:56 2015 -0300
+
+    Avoid unsafe loc_name type casts with additional variable
+    
+    for  ChangeLog
+    
+    	[BZ #15969]
+    	* locale/findlocale.c (_nl_find_locale): Introduce const
+    	version of loc_name and drop unsafe type casts.
+
+diff --git a/locale/findlocale.c b/locale/findlocale.c
+index 5e2639b..9e7df12 100644
+--- a/locale/findlocale.c
++++ b/locale/findlocale.c
+@@ -105,7 +105,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
+ {
+   int mask;
+   /* Name of the locale for this category.  */
+-  char *loc_name = (char *) *name;
++  const char *cloc_name = *name;
+   const char *language;
+   const char *modifier;
+   const char *territory;
+@@ -113,39 +113,39 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
+   const char *normalized_codeset;
+   struct loaded_l10nfile *locale_file;
+ 
+-  if (loc_name[0] == '\0')
++  if (cloc_name[0] == '\0')
+     {
+       /* The user decides which locale to use by setting environment
+ 	 variables.  */
+-      loc_name = getenv ("LC_ALL");
+-      if (!name_present (loc_name))
+-	loc_name = getenv (_nl_category_names.str
+-			+ _nl_category_name_idxs[category]);
+-      if (!name_present (loc_name))
+-	loc_name = getenv ("LANG");
+-      if (!name_present (loc_name))
+-	loc_name = (char *) _nl_C_name;
++      cloc_name = getenv ("LC_ALL");
++      if (!name_present (cloc_name))
++	cloc_name = getenv (_nl_category_names.str
++			    + _nl_category_name_idxs[category]);
++      if (!name_present (cloc_name))
++	cloc_name = getenv ("LANG");
++      if (!name_present (cloc_name))
++	cloc_name = _nl_C_name;
+     }
+ 
+   /* We used to fall back to the C locale if the name contains a slash
+      character '/', but we now check for directory traversal in
+      valid_locale_name, so this is no longer necessary.  */
+ 
+-  if (__builtin_expect (strcmp (loc_name, _nl_C_name), 1) == 0
+-      || __builtin_expect (strcmp (loc_name, _nl_POSIX_name), 1) == 0)
++  if (__builtin_expect (strcmp (cloc_name, _nl_C_name), 1) == 0
++      || __builtin_expect (strcmp (cloc_name, _nl_POSIX_name), 1) == 0)
+     {
+       /* We need not load anything.  The needed data is contained in
+ 	 the library itself.  */
+-      *name = (char *) _nl_C_name;
++      *name = _nl_C_name;
+       return _nl_C[category];
+     }
+-  else if (!valid_locale_name (loc_name))
++  else if (!valid_locale_name (cloc_name))
+     {
+       __set_errno (EINVAL);
+       return NULL;
+     }
+ 
+-  *name = loc_name;
++  *name = cloc_name;
+ 
+   /* We really have to load some data.  First we try the archive,
+      but only if there was no LOCPATH environment variable specified.  */
+@@ -158,11 +158,10 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
+ 
+       /* Nothing in the archive with the given name.  Expanding it as
+ 	 an alias and retry.  */
+-      loc_name = (char *) _nl_expand_alias (*name);
+-      if (loc_name != NULL)
++      cloc_name = _nl_expand_alias (*name);
++      if (cloc_name != NULL)
+ 	{
+-	  data = _nl_load_locale_from_archive (category,
+-					       (const char **) &loc_name);
++	  data = _nl_load_locale_from_archive (category, &cloc_name);
+ 	  if (__builtin_expect (data != NULL, 1))
+ 	    return data;
+ 	}
+@@ -175,14 +174,14 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
+     /* We really have to load some data.  First see whether the name is
+        an alias.  Please note that this makes it impossible to have "C"
+        or "POSIX" as aliases.  */
+-    loc_name = (char *) _nl_expand_alias (*name);
++    cloc_name = _nl_expand_alias (*name);
+ 
+-  if (loc_name == NULL)
++  if (cloc_name == NULL)
+     /* It is no alias.  */
+-    loc_name = (char *) *name;
++    cloc_name = *name;
+ 
+   /* Make a writable copy of the locale name.  */
+-  loc_name = strdupa (loc_name);
++  char *loc_name = strdupa (cloc_name);
+ 
+   /* LOCALE can consist of up to four recognized parts for the XPG syntax:
+ 
diff --git a/SPECS/glibc.spec b/SPECS/glibc.spec
index 86a33fc..c7c7c57 100644
--- a/SPECS/glibc.spec
+++ b/SPECS/glibc.spec
@@ -1,10 +1,51 @@
 %define glibcsrcdir glibc-2.17-c758a686
 %define glibcversion 2.17
-%define glibcrelease 106%{?dist}.8
+%define glibcrelease 157%{?dist}
 ##############################################################################
-# If run_glibc_tests is zero then tests are not run for the build.
-# You must always set run_glibc_tests to one for production builds.
-%define run_glibc_tests 1
+# We support the following options:
+# --with/--without,
+# * testsuite - Running the testsuite.
+# * benchtests - Running and building benchmark subpackage.
+# * bootstrap - Bootstrapping the package.
+# * werror - Build with -Werror
+# * docs - Build with documentation and the required dependencies.
+# * valgrind - Run smoke tests with valgrind to verify dynamic loader.
+#
+# You must always run the testsuite for production builds.
+# Default: Always run the testsuite.
+%bcond_without testsuite
+# Default: Always build the benchtests.
+%bcond_without benchtests
+# Default: Not bootstrapping.
+%bcond_with bootstrap
+# Default: Enable using -Werror
+%bcond_without werror
+# Default: Always build documentation.
+%bcond_without docs
+# Default: Don't run valgrind tests
+%bcond_with valgrind
+
+# Run a valgrind smoke test to ensure that the release is compatible and
+# doesn't any new feature that might cause valgrind to abort.
+%if %{with valgrind}
+%ifarch s390
+# There is no valgrind support for 31-bit s390.
+%undefine with_valgrind
+%endif
+%endif
+%if %{with werror}
+%ifarch s390x
+# The 64-bit s390x builds are not -Werror clean yet.
+%undefine with_werror
+%endif
+%endif
+%if %{with bootstrap}
+# Disable benchtests, -Werror, docs, and valgrind if we're bootstrapping
+%undefine with_benchtests
+%undefine with_werror
+%undefine with_docs
+%undefine with_valgrind
+%endif
 ##############################################################################
 # Auxiliary arches are those arches that can be built in addition
 # to the core supported arches. You either install an auxarch or
@@ -24,25 +65,33 @@
 %define xenpackage 0
 %endif
 ##############################################################################
-# In RHEL7 for 32-bit and 64-bit POWER the following runtimes are provided:
-# - POWER7 (-mcpu=power7 -mtune=power7)
-# - POWER8 (-mcpu=power7 -mtune=power8)
-#
-# We will eventually make the POWER8-tuned runtime into a POWER8 runtime when
-# there is enough POWER8 hardware in the build farm to ensure that all
-# builds are done on POWER8.
+# We support 32-bit and 64-bit POWER with the following runtimes:
+# 64-bit BE:
+# - POWER7 (default)
+# DISABLED - POWER8 (enabled via AT_PLATFORM)
+#            See: https://projects.engineering.redhat.com/browse/RCMPROJ-5774
+#	     The ppc64 builders still have POWER7 hardware.
+# 64-bit LE:
+# - POWER8 LE (default)
+# 32-bit BE:
+# - POWER7 (default)
+# - POWER8 (enabled via AT_PLATFORM)
 #
 # The POWER5 and POWER6 runtimes are now deprecated and no longer provided
-# or supported. This means that RHEL7 will only run on POWER7 or newer
-# hardware.
+# or supported. This means that RHEL7 BE will only run on POWER7 or newer
+# hardware, and LE will only run on POWER8 or newer hardware.
 #
-%ifarch ppc %{power64}
+%ifarch ppc ppc64
+# Build the additional runtimes for 32-bit and 64-bit BE POWER.
 %define buildpower6 0
-%define buildpower8 1
+# Disabled - %%define buildpower8 1 - See note above.
+%define buildpower8 0
 %else
+# No additional runtimes for ppc64le or ppc64p7, just the default.
 %define buildpower6 0
 %define buildpower8 0
 %endif
+
 ##############################################################################
 # We build librtkaio for all rtkaioarches. The library is installed into
 # a distinct subdirectory in the lib dir. This define enables the rtkaio
@@ -656,39 +705,225 @@ Patch1610: glibc-rh1234622.patch
 # Fix 32-bit POWER assembly to use only 32-bit instructions.
 Patch1611: glibc-rh1240796.patch
 
+# Fix for RHBZ #1213267 as a prerequisite for the patches below.
+Patch1612: glibc-rh1240351-1.patch
+
+# Backport of POWER8 glibc optimizations for RHEL7.3: math functions
+Patch1613: glibc-rh1240351-2.patch
+Patch1614: glibc-rh1240351-3.patch
+
+# Backport of POWER8 glibc optimizations for RHEL7.3: string functions
+Patch1615: glibc-rh1240351-4.patch
+Patch1616: glibc-rh1240351-5.patch
+Patch1617: glibc-rh1240351-6.patch
+Patch1618: glibc-rh1240351-7.patch
+Patch1619: glibc-rh1240351-8.patch
+Patch1620: glibc-rh1240351-9.patch
+Patch1621: glibc-rh1240351-10.patch
+Patch1622: glibc-rh1240351-11.patch
+Patch1623: glibc-rh1240351-12.patch
+
+# Backport of upstream IBM z13 patches for RHEL 7.3
+Patch1624: glibc-rh1268008-1.patch
+Patch1625: glibc-rh1268008-2.patch
+Patch1626: glibc-rh1268008-3.patch
+Patch1627: glibc-rh1268008-4.patch
+Patch1628: glibc-rh1268008-5.patch
+Patch1629: glibc-rh1268008-6.patch
+Patch1630: glibc-rh1268008-7.patch
+Patch1631: glibc-rh1268008-8.patch
+Patch1632: glibc-rh1268008-9.patch
+Patch1633: glibc-rh1268008-10.patch
+Patch1634: glibc-rh1268008-11.patch
+Patch1635: glibc-rh1268008-12.patch
+Patch1636: glibc-rh1268008-13.patch
+Patch1637: glibc-rh1268008-14.patch
+Patch1638: glibc-rh1268008-15.patch
+Patch1639: glibc-rh1268008-16.patch
+Patch1640: glibc-rh1268008-17.patch
+Patch1641: glibc-rh1268008-18.patch
+Patch1642: glibc-rh1268008-19.patch
+Patch1643: glibc-rh1268008-20.patch
+Patch1644: glibc-rh1268008-21.patch
+Patch1645: glibc-rh1268008-22.patch
+Patch1646: glibc-rh1268008-23.patch
+Patch1647: glibc-rh1268008-24.patch
+Patch1648: glibc-rh1268008-25.patch
+Patch1649: glibc-rh1268008-26.patch
+Patch1650: glibc-rh1268008-27.patch
+Patch1651: glibc-rh1268008-28.patch
+Patch1652: glibc-rh1268008-29.patch
+Patch1653: glibc-rh1268008-30.patch
+
+Patch1654: glibc-rh1249102.patch
+
 # CVE-2015-5229 and regression test.
-Patch1612: glibc-rh1293976.patch
-Patch1613: glibc-rh1293976-2.patch
+Patch1656: glibc-rh1293976.patch
+Patch1657: glibc-rh1293976-2.patch
 
 # BZ #16574
-Patch1614: glibc-rh1296031-0.patch
+Patch1658: glibc-rh1296031-0.patch
 # BZ #13928
-Patch1616: glibc-rh1296031-2.patch
+Patch1660: glibc-rh1296031-2.patch
 
 # Malloc trim fixes: #17195, #18502.
-Patch1617: glibc-rh1284959-1.patch
-Patch1618: glibc-rh1284959-2.patch
-Patch1619: glibc-rh1284959-3.patch
+Patch1661: glibc-rh1284959-1.patch
+Patch1662: glibc-rh1284959-2.patch
+Patch1663: glibc-rh1284959-3.patch
 
-# ppc64le monstartup fix:
-Patch1620: glibc-rh1249102.patch
+# RHBZ #1293916 - iconv appears to be adding a duplicate "SI"
+#                 to the output for certain inputs 
+Patch1664: glibc-rh1293916.patch
 
-# Fix race in free() of fastbin chunk: BZ #15073.
-Patch1621: glibc-rh1027101.patch
+# Race condition in _int_free involving fastbins: #15073
+Patch1665: glibc-rh1027101.patch
 
 # BZ #17370: Memory leak in wide-oriented ftell.
-Patch1622: glibc-rh1310530.patch 
+Patch1666: glibc-rh1310530.patch
 
 # BZ #19791: NULL pointer dereference in stub resolver with unconnectable
 # name server addresses
-Patch1623: glibc-rh1320596.patch
-
-# RHBZ #1331283 - Backport "Coordinate IPv6 definitions for Linux and glibc"
-Patch1624: glibc-rh1331283.patch
-Patch1625: glibc-rh1331283-1.patch
-Patch1626: glibc-rh1331283-2.patch
-Patch1627: glibc-rh1331283-3.patch
-Patch1628: glibc-rh1331283-4.patch
+Patch1667: glibc-rh1320596.patch
+
+# RHBZ #1298349 - Backport tst-getpw enhancements
+Patch1668: glibc-rh1298349.patch
+
+# RHBZ #1293433 - Test suite failure: Fix bug17079
+Patch1669: glibc-rh1293433.patch
+
+# RHBZ #1298354 - Backport test-skeleton.c conversions
+Patch1670: glibc-rh1298354.patch
+
+# RHBZ #1288613 - gethostbyname_r hangs forever
+Patch1671: glibc-rh1288613.patch
+
+# RHBZ #1064063 - Test suite failure: tst-mqueue5
+Patch1672: glibc-rh1064063.patch
+
+# RHBZ #140250 - Unexpected results from using posix_fallocate
+#                with nfs target 
+Patch1675: glibc-rh1140250.patch
+
+# RHBZ #1324427 - RHEL7.3 - S390: fprs/vrs are not saved/restored while
+#                 resolving symbols
+Patch1676: glibc-rh1324427-1.patch
+Patch1677: glibc-rh1324427-2.patch
+Patch1678: glibc-rh1324427-3.patch
+
+# RHBZ #1234449 - glibc: backport upstream hardening patches
+Patch1679: glibc-rh1234449-1.patch
+Patch1680: glibc-rh1234449-2.patch
+Patch1681: glibc-rh1234449-3.patch
+Patch1682: glibc-rh1234449-4.patch
+
+# RHBZ #1221046 - make bits/stat.h FTM guards consistent on all arches
+Patch1683: glibc-rh1221046.patch
+
+# RHBZ #971416 - Locale alias no_NO.ISO-8859-1 not working
+Patch1684: glibc-rh971416-1.patch
+Patch1685: glibc-rh971416-2.patch
+Patch1686: glibc-rh971416-3.patch
+
+# RHBZ 1302086 -  Improve libm performance AArch64
+Patch1687: glibc-rh1302086-1.patch
+Patch1688: glibc-rh1302086-2.patch
+Patch1689: glibc-rh1302086-3.patch
+Patch1690: glibc-rh1302086-4.patch
+Patch1691: glibc-rh1302086-5.patch
+Patch1692: glibc-rh1302086-6.patch
+Patch1693: glibc-rh1302086-7.patch
+Patch1694: glibc-rh1302086-8.patch
+Patch1695: glibc-rh1302086-9.patch
+Patch1696: glibc-rh1302086-10.patch
+Patch1697: glibc-rh1302086-11.patch
+
+# RHBZ 1346397 debug/tst-longjump_chk2 calls printf from a signal handler
+Patch1698: glibc-rh1346397.patch
+
+# RHBZ #1211823 Update BIG5-HKSCS charmap to HKSCS-2008
+Patch1699: glibc-rh1211823.patch
+
+# RHBZ #1268050 Backport "Coordinate IPv6 definitions for Linux and glibc"
+Patch1700: glibc-rh1331283.patch
+Patch1701: glibc-rh1331283-1.patch
+Patch1702: glibc-rh1331283-2.patch
+Patch1703: glibc-rh1331283-3.patch
+Patch1704: glibc-rh1331283-4.patch
+
+# RHBZ #1296297 enable (backport) instLangs in RHEL glibc
+Patch1705: glibc-rh1296297.patch
+Patch1706: glibc-rh1296297-1.patch
+
+# RHBZ #1027348 sem_post/sem_wait race causing sem_post to return EINVAL
+Patch1707: glibc-rh1027348.patch
+Patch1708: glibc-rh1027348-1.patch
+Patch1709: glibc-rh1027348-2.patch
+Patch1710: glibc-rh1027348-3.patch
+Patch1711: glibc-rh1027348-4.patch
+
+# RHBZ #1308728 Fix __times() handling of EFAULT when buf is NULL
+Patch1712: glibc-rh1308728.patch
+
+# RHBZ #1249114 [s390] setcontext/swapcontext does not restore signal mask
+Patch1713: glibc-rh1249114.patch
+# RHBZ #1249115 S390: backtrace() returns infinitely deep stack ...
+Patch1714: glibc-rh1249115.patch
+
+# RHBZ #1321993: CVE-2016-3075: Stack overflow in nss_dns_getnetbyname_r
+Patch1715: glibc-rh1321993.patch
+
+# RHBZ #1256317 - IS_IN backports.
+Patch1716: glibc-rh1256317-21.patch
+Patch1717: glibc-rh1256317-20.patch
+Patch1718: glibc-rh1256317-19.patch
+Patch1719: glibc-rh1256317-18.patch
+Patch1720: glibc-rh1256317-17.patch
+Patch1721: glibc-rh1256317-16.patch
+Patch1722: glibc-rh1256317-15.patch
+Patch1723: glibc-rh1256317-14.patch
+Patch1724: glibc-rh1256317-13.patch
+Patch1725: glibc-rh1256317-12.patch
+Patch1726: glibc-rh1256317-11.patch
+Patch1727: glibc-rh1256317-10.patch
+Patch1728: glibc-rh1256317-9.patch
+Patch1729: glibc-rh1256317-8.patch
+Patch1730: glibc-rh1256317-7.patch
+Patch1731: glibc-rh1256317-6.patch
+Patch1732: glibc-rh1256317-5.patch
+Patch1733: glibc-rh1256317-4.patch
+Patch1734: glibc-rh1256317-3.patch
+Patch1735: glibc-rh1256317-2.patch
+Patch1736: glibc-rh1256317-1.patch
+Patch1737: glibc-rh1256317-0.patch
+
+# RHBZ #1335286 [Intel 7.3 Bug] (Purley) Backport 64-bit memset from glibc 2.18
+Patch1738: glibc-rh1335286-0.patch
+Patch1739: glibc-rh1335286.patch
+
+# RHBZ #1292018 [Intel 7.3 Bug] Improve branch prediction on Knights Landing/Silvermont
+Patch1740: glibc-rh1292018-0.patch
+Patch1741: glibc-rh1292018-0a.patch
+Patch1742: glibc-rh1292018-0b.patch
+Patch1743: glibc-rh1292018-1.patch
+Patch1744: glibc-rh1292018-2.patch
+Patch1745: glibc-rh1292018-3.patch
+Patch1746: glibc-rh1292018-4.patch
+Patch1747: glibc-rh1292018-5.patch
+Patch1748: glibc-rh1292018-6.patch
+Patch1749: glibc-rh1292018-7.patch
+
+# RHBZ #1255822 glibc: malloc may fall back to calling mmap prematurely if arenas are contended
+Patch1750: glibc-rh1255822.patch
+
+# RHBZ #1298526 [Intel 7.3 FEAT] glibc: AVX-512 optimized memcpy
+Patch1751: glibc-rh1298526-0.patch
+Patch1752: glibc-rh1298526-1.patch
+Patch1753: glibc-rh1298526-2.patch
+Patch1754: glibc-rh1298526-3.patch
+Patch1755: glibc-rh1298526-4.patch
+
+# RHBZ #1350733 locale-archive.tmpl cannot be processed by build-locale-archive
+Patch1756: glibc-rh1350733-1.patch
 
 ##############################################################################
 #
@@ -747,6 +982,21 @@ Patch2065: glibc-rh1156331.patch
 # Upstream BZ 18557: Fix ruserok scalability issues.
 Patch2066: glibc-rh1216246.patch
 
+# Backport of fix for malloc arena free list management (upstream bug 19048)
+# The preparatory patch removes !PER_THREAD conditional code.
+Patch20670: glibc-rh1276753-0.patch
+Patch2067: glibc-rh1276753.patch
+
+# Backport to fix ld.so crash when audit modules provide path (upstream bug 18251)
+Patch2068: glibc-rh1211100.patch
+
+# aarch64 MINSIGSTKSZ/SIGSTKSZ fix
+Patch2069: glibc-rh1335629.patch
+Patch2070: glibc-rh1335925-1.patch
+Patch2071: glibc-rh1335925-2.patch
+Patch2072: glibc-rh1335925-3.patch
+Patch2073: glibc-rh1335925-4.patch
+
 ##############################################################################
 # End of glibc patches.
 ##############################################################################
@@ -776,11 +1026,26 @@ Requires(pre): basesystem, libgcc
 
 # This is for building auxiliary programs like memusage, nscd
 # For initial glibc bootstraps it can be commented out
-BuildRequires: gd-devel libpng-devel zlib-devel texinfo, libselinux-devel >= 1.33.4-3
-BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext, nss-devel
+BuildRequires: gd-devel libpng-devel zlib-devel
+%if %{with docs}
+# Removing texinfo will cause check-safety.sh test to fail because it seems to
+# trigger documentation generation based on dependencies.  We need to fix this
+# upstream in some way that doesn't depend on generating docs to validate the
+# texinfo.  I expect it's simply the wrong dependency for that target.
+BuildRequires: texinfo
+%endif
+%if %{without bootstrap}
+BuildRequires: libselinux-devel >= 1.33.4-3
+BuildRequires: nss-devel
+%endif
+BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext
 BuildRequires: /bin/ps, /bin/kill, /bin/awk
 BuildRequires: systemtap-sdt-devel
 
+%if %{with valgrind}
+BuildRequires: /usr/bin/valgrind
+%endif
+
 # This is needed to get the _tmpfilesdir macro we use for nscd.
 BuildRequires: systemd
 
@@ -834,9 +1099,16 @@ BuildRequires: elfutils >= 0.72
 BuildRequires: rpm >= 4.2-0.56
 %endif
 
-# The testsuite builds static C++ binaries that require a static
-# C++ runtime from libstdc++-static.
+%if %{without boostrap}
+%if %{with testsuite}
+# The testsuite builds static C++ binaries that require a C++ compiler
+# and static C++ runtime from libstdc++-static.
+BuildRequires: gcc-c++
 BuildRequires: libstdc++-static
+BuildRequires: glibc-static
+%endif
+%endif
+
 
 # Filter out all GLIBC_PRIVATE symbols since they are internal to
 # the package and should be examined by any other tool.
@@ -958,7 +1230,10 @@ libraries, as well as national language (locale) support.
 Summary: A Name Service Caching Daemon (nscd).
 Group: System Environment/Daemons
 Requires: %{name} = %{version}-%{release}
-Requires: libselinux >= 1.17.10-1, audit-libs >= 1.1.3
+%if %{without bootstrap}
+Requires: libselinux >= 1.17.10-1
+%endif
+Requires: audit-libs >= 1.1.3
 Requires(pre): /usr/sbin/useradd, coreutils
 Requires(post): systemd-units
 Requires(preun): systemd-units
@@ -1037,6 +1312,7 @@ package or when debugging this package.
 # Prepare for the build.
 ##############################################################################
 %prep
+
 %setup -q -n %{glibcsrcdir} -b1
 
 # Patch order is important as some patches depend on other patches and
@@ -1321,18 +1597,26 @@ package or when debugging this package.
 %patch1605 -p1
 %patch1606 -p1
 %patch2066 -p1
+%patch20670 -p1
+%patch2067 -p1
+%patch2068 -p1
+%patch2069 -p1
+%patch2070 -p1
+%patch2071 -p1
+%patch2072 -p1
+%patch2073 -p1
 # Rebase of microbenchmarks.
 %patch1607 -p1
 %patch1609 -p1
 %patch1610 -p1
 %patch1611 -p1
-%patch1123 -p1
-%patch1124 -p1
+
+# Backport of POWER8 glibc optimizations for RHEL7.3
 %patch1612 -p1
 %patch1613 -p1
 %patch1614 -p1
+%patch1615 -p1
 %patch1616 -p1
-%patch0067 -p1
 %patch1617 -p1
 %patch1618 -p1
 %patch1619 -p1
@@ -1341,12 +1625,173 @@ package or when debugging this package.
 %patch1622 -p1
 %patch1623 -p1
 
-# RHBZ #1331283 - Backport "Coordinate IPv6 definitions for Linux and glibc"
+# Backport of upstream IBM z13 patches for RHEL 7.3
 %patch1624 -p1
 %patch1625 -p1
 %patch1626 -p1
 %patch1627 -p1
 %patch1628 -p1
+%patch1629 -p1
+%patch1630 -p1
+%patch1631 -p1
+%patch1632 -p1
+%patch1633 -p1
+%patch1634 -p1
+%patch1635 -p1
+%patch1636 -p1
+%patch1637 -p1
+%patch1638 -p1
+%patch1639 -p1
+%patch1640 -p1
+%patch1641 -p1
+%patch1642 -p1
+%patch1643 -p1
+%patch1644 -p1
+%patch1645 -p1
+%patch1646 -p1
+%patch1647 -p1
+%patch1648 -p1
+%patch1649 -p1
+%patch1650 -p1
+%patch1651 -p1
+%patch1652 -p1
+%patch1653 -p1
+%patch1654 -p1
+
+%patch1123 -p1
+%patch1124 -p1
+
+%patch1656 -p1
+%patch1657 -p1
+%patch1658 -p1
+%patch1660 -p1
+%patch0067 -p1
+%patch1661 -p1
+%patch1662 -p1
+%patch1663 -p1
+
+%patch1664 -p1
+%patch1665 -p1
+%patch1666 -p1
+%patch1667 -p1
+%patch1668 -p1
+%patch1669 -p1
+%patch1670 -p1
+%patch1671 -p1
+%patch1672 -p1
+
+%patch1675 -p1
+
+# RHBZ #1324427, parts 1 through 3
+%patch1676 -p1
+%patch1677 -p1
+%patch1678 -p1
+
+# RHBZ #1234449, parts 1 through 4
+%patch1679 -p1
+%patch1680 -p1
+%patch1681 -p1
+%patch1682 -p1
+
+# RHBZ #1221046
+%patch1683 -p1
+
+# RHBZ #971416
+%patch1684 -p1
+%patch1685 -p1
+%patch1686 -p1
+
+# RHBZ #1302086
+%patch1687 -p1
+%patch1688 -p1
+%patch1689 -p1
+%patch1690 -p1
+%patch1691 -p1
+%patch1692 -p1
+%patch1693 -p1
+%patch1694 -p1
+%patch1695 -p1
+%patch1696 -p1
+%patch1697 -p1
+
+# RHBZ #1346397
+%patch1698 -p1
+
+# RHBZ #1211823
+%patch1699 -p1
+
+# RHBZ #1268050, parts 1 through 5
+%patch1700 -p1
+%patch1701 -p1
+%patch1702 -p1
+%patch1703 -p1
+%patch1704 -p1
+
+# RHBz #1296297, part 1 and 2.
+%patch1705 -p1
+%patch1706 -p1
+
+# RHBZ #1027348, part 1 through 5.
+%patch1707 -p1
+%patch1708 -p1
+%patch1709 -p1
+%patch1710 -p1
+%patch1711 -p1
+
+%patch1712 -p1
+%patch1713 -p1
+%patch1714 -p1
+
+%patch1715 -p1
+
+# RHBZ #1256317, IS_IN backports, parts 1 through 22.
+%patch1716 -p1
+%patch1717 -p1
+%patch1718 -p1
+%patch1719 -p1
+%patch1720 -p1
+%patch1721 -p1
+%patch1722 -p1
+%patch1723 -p1
+%patch1724 -p1
+%patch1725 -p1
+%patch1726 -p1
+%patch1727 -p1
+%patch1728 -p1
+%patch1729 -p1
+%patch1730 -p1
+%patch1731 -p1
+%patch1732 -p1
+%patch1733 -p1
+%patch1734 -p1
+%patch1735 -p1
+%patch1736 -p1
+%patch1737 -p1
+
+%patch1738 -p1
+%patch1739 -p1
+
+# RHBZ #1292018, patches 1 through 10.
+%patch1740 -p1
+%patch1741 -p1
+%patch1742 -p1
+%patch1743 -p1
+%patch1744 -p1
+%patch1745 -p1
+%patch1746 -p1
+%patch1747 -p1
+%patch1748 -p1
+%patch1749 -p1
+
+%patch1750 -p1
+
+# RHBZ #1298526, patch 1 of 5.
+%patch1751 -p1
+%patch1752 -p1
+%patch1753 -p1
+%patch1754 -p1
+%patch1755 -p1
+%patch1756 -p1
 
 ##############################################################################
 # %%prep - Additional prep required...
@@ -1380,10 +1825,16 @@ touch locale/programs/*-kw.h
 ##############################################################################
 %build
 
-# We built using the native system compilers.
+# We build using the native system compilers.
 GCC=gcc
 GXX=g++
 
+# Log system information.
+uname -a
+cat /proc/cpuinfo
+cat /proc/meminfo
+df
+
 ##############################################################################
 # %%build - x86 options.
 ##############################################################################
@@ -1406,38 +1857,50 @@ BuildFlags="-mtune=generic"
 ##############################################################################
 %ifarch sparc
 BuildFlags="-fcall-used-g6"
-GCC="gcc -m32"
-GXX="g++ -m32"
+GCC="$GCC -m32"
+GXX="$GXX -m32"
 %endif
 %ifarch sparcv9
 BuildFlags="-mcpu=ultrasparc -fcall-used-g6"
-GCC="gcc -m32"
-GXX="g++ -m32"
+GCC="$GCC -m32"
+GXX="$GXX -m32"
 %endif
 %ifarch sparcv9v
 BuildFlags="-mcpu=niagara -fcall-used-g6"
-GCC="gcc -m32"
-GXX="g++ -m32"
+GCC="$GCC -m32"
+GXX="$GXX -m32"
 %endif
 %ifarch sparc64
 BuildFlags="-mcpu=ultrasparc -mvis -fcall-used-g6"
-GCC="gcc -m64"
-GXX="g++ -m64"
+GCC="$GCC -m64"
+GXX="$GXX -m64"
 %endif
 %ifarch sparc64v
 BuildFlags="-mcpu=niagara -mvis -fcall-used-g6"
-GCC="gcc -m64"
-GXX="g++ -m64"
+GCC="$GCC -m64"
+GXX="$GXX -m64"
 %endif
+
+##############################################################################
+# %%build - POWER options.
+##############################################################################
 %ifarch ppc
 BuildFlags=""
-GCC="gcc -mcpu=power7 -mtune=power7"
-GXX="g++ -mcpu=power7 -mtune=power7"
+GCC="$GCC -mcpu=power7 -mtune=power7"
+GXX="$GXX -mcpu=power7 -mtune=power7"
+core_with_options="--with-cpu=power7"
 %endif
 %ifarch %{power64}
 BuildFlags=""
-GCC="gcc -m64 -mcpu=power7 -mtune=power7"
-GXX="g++ -m64 -mcpu=power7 -mtune=power7"
+%ifarch ppc64le
+GCC="$GCC -mcpu=power8 -mtune=power8"
+GXX="$GXX -mcpu=power8 -mtune=power8"
+core_with_options="--with-cpu=power8"
+%else
+GCC="$GCC -m64 -mcpu=power7 -mtune=power7"
+GXX="$GXX -m64 -mcpu=power7 -mtune=power7"
+core_with_options="--with-cpu=power7"
+%endif
 %endif
 
 ##############################################################################
@@ -1488,12 +1951,17 @@ configure_CFLAGS="$build_CFLAGS -fno-asynchronous-unwind-tables"
 %endif
 	--enable-obsolete-rpc \
 	--enable-systemtap \
-%ifarch ppc %{power64}
-%ifnarch ppc64le
-	--with-cpu=power7 \
+	${core_with_options} \
+%if %{without werror}
+	--disable-werror \
 %endif
+	--disable-profile \
+%if %{with bootstrap}
+	--without-selinux \
+	--disable-nss-crypt ||
+%else
+	--enable-nss-crypt ||
 %endif
-	--disable-profile --enable-nss-crypt ||
 { cat config.log; false; }
 
 make %{?_smp_mflags} -r CFLAGS="$build_CFLAGS" %{silentrules}
@@ -1533,18 +2001,18 @@ if [ "$platform" != power6 ]; then
 %endif
   export LD_PRELOAD=`pwd`/power6emul/\$LIB/power6emul.so
 fi
-AddOns="$AddOns --with-cpu=power6"
 GCC="$GCC -mcpu=power6"
 GXX="$GXX -mcpu=power6"
+core_with_options="--with-cpu=power6"
 build power6
 )
 %endif
 
 %if %{buildpower8}
 (
-  AddOns="$AddOns --with-cpu=power7"
-  GCC="$GCC -mcpu=power7 -mtune=power8"
-  GXX="$GXX -mcpu=power7 -mtune=power8"
+  GCC="$GCC -mcpu=power8 -mtune=power8"
+  GXX="$GXX -mcpu=power8 -mtune=power8"
+  core_with_options="--with-cpu=power8"
   build power8
 )
 %endif
@@ -1714,6 +2182,7 @@ cp -a bits/stdio-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/stdio-lock.h
 # And <bits/libc-lock.h> needs sanitizing as well.
 cp -a releng/libc-lock.h $RPM_BUILD_ROOT%{_prefix}/include/bits/libc-lock.h
 
+%if %{with docs}
 # Move the info files if glibc installed them into the wrong location.
 if [ -d $RPM_BUILD_ROOT%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then
   mkdir -p $RPM_BUILD_ROOT%{_infodir}
@@ -1724,6 +2193,11 @@ fi
 # Compress all of the info files.
 gzip -9nvf $RPM_BUILD_ROOT%{_infodir}/libc*
 
+%else
+rm -f $RPM_BUILD_ROOT%{_infodir}/dir
+rm -f $RPM_BUILD_ROOT%{_infodir}/libc.info*
+%endif
+
 # XXX: What is this for?
 ln -sf libbsd-compat.a $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libbsd.a
 
@@ -1852,7 +2326,10 @@ rm -f $RPM_BUILD_ROOT%{_sbindir}/rpcinfo
 	 , \
 	 ! -path "*/lib/debug/*" -printf "/%%P\n" \)
   find $RPM_BUILD_ROOT -type d \
-       \( -path '*%{_prefix}/share/*' ! -path '*%{_infodir}' -o \
+       \( -path '*%{_prefix}/share/*' \
+%if %{with docs}
+	! -path '*%{_infodir}' -o \
+%endif
 	  -path "*%{_prefix}/include/*" \
        \) -printf "%%%%dir /%%P\n"
 } | {
@@ -1883,8 +2360,10 @@ for i in $RPM_BUILD_ROOT%{_prefix}/bin/{xtrace,memusage}; do
       -i $i
 done
 
+%if %{with docs}
 # Put the info files into the devel file list.
 grep '%{_infodir}' < rpm.filelist | grep -v '%{_infodir}/dir' > devel.filelist
+%endif
 
 # The glibc-headers package includes only common files which are identical
 # across all multilib packages. We must keep gnu/stubs.h and gnu/lib-names.h
@@ -1903,7 +2382,8 @@ grep '%{_prefix}/include' < rpm.filelist \
 # the core glibc package.
 sed -i -e '\|%{_prefix}/%{_lib}/lib.*_p.a|d' \
        -e '\|%{_prefix}/include|d' \
-       -e '\|%{_infodir}|d' rpm.filelist
+       -e '\|%{_infodir}|d' \
+	rpm.filelist
 
 # Put some static files into the devel package.
 grep '%{_prefix}/%{_lib}/lib.*\.a' < rpm.filelist \
@@ -2005,6 +2485,30 @@ $GCC -Os -g -static -o build-locale-archive build-locale-archive.c \
   -L../build-%{target} \
   -Wl,--allow-shlib-undefined \
   -B../build-%{target}/csu/ -lc -lc_nonshared
+
+%ifnarch %{auxarches}
+# Test run, to make sure the locale archive is not corrupt.  The test
+# runs against a directory tree under tmp-proot, using --prefix option
+# of build-locale-archive.
+mkdir -p tmp-root/usr/{lib,share}/locale
+touch tmp-root/usr/share/locale/locale.alias
+cp ${RPM_BUILD_ROOT}%{_prefix}/lib/locale/locale-archive.tmpl \
+  tmp-root/usr/lib/locale/locale-archive.tmpl
+# Capture locale list, before build-locale-archive destroys the input file.
+../build-%{target}/testrun.sh ../build-%{target}/locale/localedef \
+    --list-archive tmp-root/usr/lib/locale/locale-archive.tmpl \
+  | sort -o tmp-root/tmpl.list
+
+./build-locale-archive --verbose --install-langs all --prefix tmp-root
+
+# Compare the results, to check that no locales were dropped.
+../build-%{target}/testrun.sh ../build-%{target}/locale/localedef \
+    --list-archive tmp-root/usr/lib/locale/locale-archive \
+  | sort -o tmp-root/list
+diff -u tmp-root/tmpl.list tmp-root/list
+rm -rf tmp-root
+%endif
+
 install -m 700 build-locale-archive $RPM_BUILD_ROOT/usr/sbin/build-locale-archive
 popd
 
@@ -2032,7 +2536,7 @@ ln -sf /lib/ld-linux-armhf.so.3 $RPM_BUILD_ROOT/lib/ld-linux.so.3
 ##############################################################################
 # Run the glibc testsuite
 ##############################################################################
-%if %{run_glibc_tests}
+%if %{with testsuite}
 # Increase timeouts
 export TIMEOUTFACTOR=16
 parent=$$
@@ -2104,6 +2608,17 @@ echo ====================PLT RELOCS LIBC.SO==============
 readelf -Wr $RPM_BUILD_ROOT/%{_lib}/libc-*.so | sed -n -e "$PLTCMD"
 echo ====================PLT RELOCS END==================
 
+%if %{with valgrind}
+# Finally, check if valgrind runs with the new glibc.
+# We want to fail building if valgrind is not able to run with this glibc so
+# that we can then coordinate with valgrind to get it fixed before we update
+# glibc.
+pushd build-%{target}
+elf/ld.so --library-path .:elf:nptl:dlfcn /usr/bin/valgrind \
+        elf/ld.so --library-path .:elf:nptl:dlfcn /usr/bin/true
+popd
+%endif
+
 %endif # %{run_glibc_tests}
 
 ###############################################################################
@@ -2200,9 +2715,11 @@ list_debug_archives >> debuginfocommon.filelist
 
 %endif # 0%{?_enable_debug_packages}
 
+%if %{with docs}
 # Remove the `dir' info-heirarchy file which will be maintained
 # by the system as it adds info files to the install.
 rm -f $RPM_BUILD_ROOT%{_infodir}/dir
+%endif
 
 %ifarch %{auxarches}
 
@@ -2244,7 +2761,8 @@ end
 if posix.stat("%{_prefix}/lib/locale/locale-archive.tmpl", "size") > 0 then
   pid = posix.fork()
   if pid == 0 then
-    posix.exec("%{_prefix}/sbin/build-locale-archive")
+    posix.exec("%{_prefix}/sbin/build-locale-archive", "--install-langs",
+               rpm.expand("%%{_install_langs}"))
   elseif pid > 0 then
     posix.wait(pid)
   end
@@ -2255,15 +2773,18 @@ if posix.access("/etc/ld.so.cache") then
   if posix.stat("%{_prefix}/lib/locale/locale-archive.tmpl", "size") > 0 then
     pid = posix.fork()
     if pid == 0 then
-      posix.exec("%{_prefix}/sbin/build-locale-archive")
+      posix.exec("%{_prefix}/sbin/build-locale-archive", "--install-langs",
+                 rpm.expand("%%{_install_langs}"))
     elseif pid > 0 then
       posix.wait(pid)
     end
   end
 end
 
+%if %{with docs}
 %post devel
 /sbin/install-info %{_infodir}/libc.info.gz %{_infodir}/dir > /dev/null 2>&1 || :
+%endif
 
 %pre headers
 # this used to be a link and it is causing nightmares now
@@ -2271,10 +2792,12 @@ if [ -L %{_prefix}/include/scsi ] ; then
   rm -f %{_prefix}/include/scsi
 fi
 
+%if %{with docs}
 %preun devel
 if [ "$1" = 0 ]; then
   /sbin/install-info --delete %{_infodir}/libc.info.gz %{_infodir}/dir > /dev/null 2>&1 || :
 fi
+%endif
 
 %post utils -p /sbin/ldconfig
 
@@ -2416,37 +2939,181 @@ rm -f *.filelist*
 %endif
 
 %changelog
-* Thu Jun 16 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-106.8
-- Fix Linux kernel UAPI header synchronization for IPv6 (#1331283).
+* Thu Aug 11 2016 Florian Weimer <fweimer@redhat.com> - 2.17-157
+- Rebuild with updated binutils (#1268008)
 
-* Fri May 20 2016 Martin Sebor <msebor@redhat.com> - 2.17-106.7
-- Make minor compatibility adjustments in headers (#1331283).
+* Tue Jul 19 2016 Florian Weimer <fweimer@redhat.com> - 2.17-156
+- malloc arena free free list management fix (#1276753)
 
-* Mon Apr  4 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-106.6
-- Fix NULL pointer dereference in stub resolver with unconnectable name
-  server addresses (#1323839).
+* Wed Jun 29 2016 Florian Weimer <fweimer@redhat.com> - 2.17-155
+- Basic validity check for locale-archive.tmpl (#1350733)
+
+* Wed Jun 22 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-153
+- Add Intel AVX-512 optimized routines (#1298526).
+
+* Wed Jun 22 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-151
+- Improve malloc peformance in low-memory situations (#1255822).
+
+* Wed Jun 22 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-150
+- Improve performance on Intel Knights Landing/Silvermont (#1292018).
+
+* Tue Jun 21 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-149
+- Improve performance on Intel Purley (#1335286).
+
+* Mon Jun 20 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-148
+- Support upstream build infrastrucutre changes (#1256317).
+
+* Sun Jun 19 2016 Florian Weimer <fweimer@redhat.com> - 2.17-147
+- CVE-2016-3075: Stack overflow in nss_dns_getnetbyname_r (#1321993)
+
+* Sun Jun 19 2016 Carlos O'Donell <carlso@redhat.com> - 2.17-146
+- s390: Restore signal mask on setcontext/swapcontext (#1249114).
+- s390: Fix backtrace in the presence of makecontext (#1249115).
+
+* Fri Jun 17 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-145
+- Fix times() handling of EFAULT when buf is NULL (#1308728).
+
+* Fri Jun 17 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-144
+- Fix sem_post/sem_wait race causing sem_post to return EINVAL (#1027348).
+
+* Fri Jun 17 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-143
+- Support installing only those locales specified by the RPM macro
+  %%_install_langs (#1296297).
+
+* Fri Jun 17 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-142
+- Fix Linux kernel UAPI header synchronization for IPv6 (#1268050).
+
+* Fri Jun 17 2016 Florian Weimer <fweimer@redhat.com> - 2.17-141
+- Update BIG5-HKSCS charmap to HKSCS-2008 (#1211823)
+
+* Thu Jun 16 2016 Florian Weimer <fweimer@redhat.com> - 2.17-140
+- Remove printf from signal handler in tst-longjump_chk2 (#1346397)
+
+* Thu Jun 16 2016 Florian Weimer <fweimer@redhat.com> - 2.17-139
+- Improve libm performance AArch64 (#1302086)
+
+* Wed Jun 15 2016 Florian Weimer <fweimer@redhat.com> - 2.17-138
+- Search locale archive again after alias expansion (#971416)
+
+* Wed Jun 15 2016 Florian Weimer <fweimer@redhat.com> - 2.17-137
+- Revert IPv6 name server management changes (#1305132)
+
+* Fri Jun 10 2016 Yaakov Selkowitz <yselkowi@redhat.com> - 2.17-136
+- aarch64: Fix bits/stat.h FTM guards (#1221046)
 
-* Mon Apr  4 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-106.5
-- Fix memory leak in ftell for wide-oriented streams (#1323781).
-- Avoid race condition in _int_free involving fastbins (#1313308).
+* Fri May 13 2016 Florian Weimer <fweimer@redhat.com> - 2.17-135
+- aarch64: Fix various minor ABI incompatibilities (#1335925)
+
+* Fri May 13 2016 Florian Weimer <fweimer@redhat.com> - 2.17-134
+- aarch64: Correct definition of MINSIGSTKSZ/SIGSTKSZ (#1335629)
+
+* Tue May 3 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-133
+- Require libselinux for nscd in non-bootstrap configuration (#1255847).
+
+* Thu Apr 28 2016 Martin Sebor <msebor@redhat.com> - 2.17-132
+- Fix a number of long-standing issues in the TZ parser (#1234449).
+
+* Mon Apr 25 2016 Florian Weimer <fweimer@redhat.com> - 2.17-131
+- Remove PER_THREAD preprocessor macro from malloc
+- Use final upstream patch for arena free list fix (#1276753)
+
+* Thu Apr 14 2016 Martin Sebor <msebor@redhat.com> - 2.17-130
+- Prevent the compiler from clobbering floating point and vector
+  registers in S390 symbol resolution functions (#1324427).
+- Improve posix_fallocate behavior with NFS file descriptors (#1140250).
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-129
+- Remove a race condition from tst-mqueue5.c test to prevent spurious
+  failures (#1064063).
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-128
+- Prevent a deadlock in gethostbyname_r (#1288613).
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-127
+- Use test-skeleton.c in tests (#1298354).
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-126
+- Fix inconsistent passwd compensation in nss/bug17079.c (#1293433).
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-125
+- Backport tst-getpw enhancement to limit the time the test takes up
+  (#1298349).
+
+* Mon Apr 04 2016 Florian Weimer <fweimer@redhat.com> - 2.17-124
+- Log system information during build (#1307028).
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-123
+- Avoid appending duplicate shift sequences in iconv (#1293916).
+
+* Mon Apr 04 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-122
+- Reorganize POWER7 and POWER8 support (#1213267).
+  - Only build POWER7 runtime for ppc64p7.
+  - Only build POWER8 runtime for ppc64le.
+  - Configure with --with-cpu=power8 for ppc64le.
+  - Configure with --with-cpu=power8 for ppc.
+  - Configure with --with-cpu=power7 for ppc64 default runtime.
+
+* Mon Apr 04 2016 DJ Delorie <dj@redhat.com> - 2.17-121
+- Build require gcc-c++ for the C++ tests.
+- Add --with/--without controls for building glibc (#1255847)
+  - Support --without testsuite option to disable testing after build.
+  - Support --without benchtests option to disable microbenchmarks
+    (placeholder for upstream compatibility only)
+  - Update --with bootstrap to disable valgrind, documentation,
+    selinux, and nss-crypt during bootstrap.
+  - Support --without werror to disable building with -Werror.
+  - Support --without docs to disable build requirement on texinfo.
+  - Support --with valgrind to enable testing with valgrind.
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-120
+- Make minor compatibility adjustments in headers (#1268050).
+
+* Mon Apr 04 2016 Florian Weimer <fweimer@redhat.com> - 2.17-119
+- Avoid aliasing issue in tst-rec-dlopen (#1292224)
+
+* Mon Apr 04 2016 Florian Weimer <fweimer@redhat.com> - 2.17-118
+- Suppress expected backtrace in tst-malloc-backtrace (#1276631).
+
+* Mon Apr 04 2016 Florian Weimer <fweimer@redhat.com> - 2.17-117
+- Avoid ld.so crash when audit modules provide path (#1211100)
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-116
+- Avoid "monstartup: out of memory" error on powerpc64le (#1249102).
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-115
+- Configure --with-cpu=power8 on powerpc64 to generate POWER8
+  instructions for POWER8 runtime (#1183088, #1213267).
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-114
+- Add enhanced and optimized support for IBM z13 systems (#1268008).
+
+* Mon Apr 04 2016 Florian Weimer <fweimer@redhat.com> - 2.17-113
+- Prevent the malloc arena free list form turning cyclic (#1276753).
+
+* Mon Apr 04 2016 Martin Sebor <msebor@redhat.com> - 2.17-112
+- Backported POWER8 optimizations for math and string functions (#1240351).
+
+* Mon Apr 04 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-111
+- Fix NULL pointer dereference in stub resolver with unconnectable name
+  server addresses (#1320596).
 
-* Fri Feb  5 2016 Florian Weimer <fweimer@redhat.com> - 2.17-106.4
-- Revert problematic libresolv change, not needed for the
-  CVE-2015-7547 fix (#1296030).
+* Thu Mar 31 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-110
+- Fix memory leak in ftell for wide-oriented streams (#1310530).
 
-* Fri Jan 15 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-106.3
-- Fix CVE-2015-7547: getaddrinfo() stack-based buffer overflow (#1296030).
-- Fix madvise performance issues (#1298930).
-- Avoid "monstartup: out of memory" error on powerpc64le (#1298956).
+* Fri Feb 12 2016 Florian Weimer <fweimer@redhat.com> - 2.17-109
+- Avoid race condition in _int_free involving fastbins (#1305406).
 
-* Wed Jan 13 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-106.2
-- Fix CVE-2015-5229: calloc() may return non-zero memory (#1296453).
+* Fri Jan 15 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-108
+- Fix CVE-2015-7547: getaddrinfo() stack-based buffer overflow (#1296031).
+- Fix madvise performance issues (#1284959).
+- Avoid "monstartup: out of memory" error on powerpc64le (#1249102).
+- Update malloc testing for 32-bit POWER (#1293976).
 
-* Wed Oct 28 2015 Florian Weimer <fweimer@redhat.com> - 2.17-106.1
-- Rebuild with corrected release.
+* Wed Jan 13 2016 Carlos O'Donell <carlos@redhat.com> - 2.17-107
+- Fix CVE-2015-5229: calloc() may return non-zero memory (#1293976).
 
-* Wed Oct 28 2015 Florian Weimer <fweimer@redhat.com> - 2.17-106
-- Add fix for CVE-2015-5277 (#1275920).
+* Tue Oct 27 2015 Florian Weimer <fweimer@redhat.com> - 2.17-106
+- Add fix for CVE-2015-5277 (#1263134).
 
 * Fri Aug 14 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.17-105
 - Fix up test case for initial-exec fix (#1248208).