diff --git a/.abf.yml b/.abf.yml index d2faa2b..7ee9851 100644 --- a/.abf.yml +++ b/.abf.yml @@ -1,6 +1,4 @@ sources: - crypt_blowfish-1.3.tar.gz: 461ba876ebacd5f7dc95f1eb3c5286d6e0983ae0 - crypt_blowfish-1.3.tar.gz.sign: 96336a263160d3efdd56d983cd9d5e18145271bf - glibc-2.24.tar.xz: e5d9725d94d59475d9a6869a4447a70c1bf3ef78 - glibc-2.24.tar.xz.sig: 9903f9767edcd089731299a6f4774a2dafd0846b glibc-manpages.tar.bz2: ca54bfb832b703c8e35170fcc1c1f5470b45ff0f + glibc-2.28.tar.xz: ccb5dc9e51a9884df8488f86982439d47b283b2a + glibc-2.28.tar.xz.sig: 07b523938b615bf2a0c85461b4e5bbadd3f590ef diff --git a/alternate_trim.patch b/alternate_trim.patch new file mode 100644 index 0000000..d3bae7a --- /dev/null +++ b/alternate_trim.patch @@ -0,0 +1,29 @@ +diff --git a/malloc/malloc.c b/malloc/malloc.c +index f8e7250..de6d7fa 100644 +--- a/malloc/malloc.c ++++ b/malloc/malloc.c +@@ -4146,6 +4146,7 @@ _int_free (mstate av, mchunkptr p, int have_lock) + mchunkptr bck; /* misc temp for linking */ + mchunkptr fwd; /* misc temp for linking */ + ++ static int alternate; + size = chunksize (p); + + /* Little security check which won't hurt performance: the +@@ -4364,8 +4365,14 @@ _int_free (mstate av, mchunkptr p, int have_lock) + if (av == &main_arena) { + #ifndef MORECORE_CANNOT_TRIM + if ((unsigned long)(chunksize(av->top)) >= +- (unsigned long)(mp_.trim_threshold)) +- systrim(mp_.top_pad, av); ++ (unsigned long)(mp_.trim_threshold)) { ++ if (alternate) { ++ systrim(mp_.top_pad, av); ++ alternate = 0; ++ } else { ++ alternate = 1; ++ } ++ } + #endif + } else { + /* Always try heap_trim(), even if the top chunk is not diff --git a/crypt_blowfish-arm.patch b/crypt_blowfish-arm.patch deleted file mode 100644 index d5e7038..0000000 --- a/crypt_blowfish-arm.patch +++ /dev/null @@ -1,29 +0,0 @@ -Don't use '@progbits' on arm - -Proper declaration should be %progbits as '@' is used for comments. -Most of other arches allow % or @ so use % - -Signed-off-by: Arnaud Patard - -Index: glibc-2.14.1/crypt/x86.S -=================================================================== ---- glibc-2.14.1.orig/crypt/x86.S -+++ glibc-2.14.1/crypt/x86.S -@@ -199,5 +199,5 @@ BF_die: - #endif - - #if defined(__ELF__) && defined(__linux__) --.section .note.GNU-stack,"",@progbits -+.section .note.GNU-stack,"",%progbits - #endif -Index: glibc-2.14.1/crypt_blowfish-1.3/x86.S -=================================================================== ---- glibc-2.14.1.orig/crypt_blowfish-1.3/x86.S -+++ glibc-2.14.1/crypt_blowfish-1.3/x86.S -@@ -199,5 +199,5 @@ BF_die: - #endif - - #if defined(__ELF__) && defined(__linux__) --.section .note.GNU-stack,"",@progbits -+.section .note.GNU-stack,"",%progbits - #endif diff --git a/crypt_freesec.c b/crypt_freesec.c deleted file mode 100644 index 02ab9e0..0000000 --- a/crypt_freesec.c +++ /dev/null @@ -1,811 +0,0 @@ -/* - * This version is derived from the original implementation of FreeSec - * (release 1.1) by David Burren. I've reviewed the changes made in - * OpenBSD (as of 2.7) and modified the original code in a similar way - * where applicable. I've also made it reentrant and made a number of - * other changes. - * - Solar Designer - */ - -/* - * FreeSec: libcrypt for NetBSD - * - * Copyright (c) 1994 David Burren - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the author nor the names of other contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Owl: Owl/packages/glibc/crypt_freesec.c,v 1.8 2014/07/07 15:44:50 solar Exp $ - * $Id: crypt.c,v 1.15 1994/09/13 04:58:49 davidb Exp $ - * - * This is an original implementation of the DES and the crypt(3) interfaces - * by David Burren . - * - * An excellent reference on the underlying algorithm (and related - * algorithms) is: - * - * B. Schneier, Applied Cryptography: protocols, algorithms, - * and source code in C, John Wiley & Sons, 1994. - * - * Note that in that book's description of DES the lookups for the initial, - * pbox, and final permutations are inverted (this has been brought to the - * attention of the author). A list of errata for this book has been - * posted to the sci.crypt newsgroup by the author and is available for FTP. - * - * ARCHITECTURE ASSUMPTIONS: - * This code used to have some nasty ones, but these have been removed - * by now. The code requires a 32-bit integer type, though. - */ - -#include -#include - -#ifdef TEST -#include -#endif - -#include "crypt_freesec.h" - -#define _PASSWORD_EFMT1 '_' - -static u_char IP[64] = { - 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, - 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, - 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, - 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 -}; - -static u_char key_perm[56] = { - 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, - 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, - 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, - 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4 -}; - -static u_char key_shifts[16] = { - 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 -}; - -static u_char comp_perm[48] = { - 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, - 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, - 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, - 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32 -}; - -/* - * No E box is used, as it's replaced by some ANDs, shifts, and ORs. - */ - -static u_char sbox[8][64] = { - { - 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7, - 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, - 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0, - 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13 - }, - { - 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10, - 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5, - 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15, - 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9 - }, - { - 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8, - 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1, - 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7, - 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12 - }, - { - 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15, - 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9, - 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4, - 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14 - }, - { - 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9, - 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6, - 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14, - 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3 - }, - { - 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11, - 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8, - 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6, - 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 - }, - { - 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1, - 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6, - 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2, - 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12 - }, - { - 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7, - 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2, - 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8, - 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 - } -}; - -static u_char pbox[32] = { - 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, - 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25 -}; - -static u_int32_t bits32[32] = -{ - 0x80000000, 0x40000000, 0x20000000, 0x10000000, - 0x08000000, 0x04000000, 0x02000000, 0x01000000, - 0x00800000, 0x00400000, 0x00200000, 0x00100000, - 0x00080000, 0x00040000, 0x00020000, 0x00010000, - 0x00008000, 0x00004000, 0x00002000, 0x00001000, - 0x00000800, 0x00000400, 0x00000200, 0x00000100, - 0x00000080, 0x00000040, 0x00000020, 0x00000010, - 0x00000008, 0x00000004, 0x00000002, 0x00000001 -}; - -static u_char bits8[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }; - -static u_char ascii64[] = - "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; -/* 0000000000111111111122222222223333333333444444444455555555556666 */ -/* 0123456789012345678901234567890123456789012345678901234567890123 */ - -static u_char m_sbox[4][4096]; -static u_int32_t psbox[4][256]; -static u_int32_t ip_maskl[8][256], ip_maskr[8][256]; -static u_int32_t fp_maskl[8][256], fp_maskr[8][256]; -static u_int32_t key_perm_maskl[8][128], key_perm_maskr[8][128]; -static u_int32_t comp_maskl[8][128], comp_maskr[8][128]; - -/* - * We match the behavior of UFC-crypt on systems where "char" is signed by - * default (the majority), regardless of char's signedness on our system. - */ -static inline int -ascii_to_bin(char ch) -{ - signed char sch = ch; - int retval; - - retval = sch - '.'; - if (sch >= 'A') { - retval = sch - ('A' - 12); - if (sch >= 'a') - retval = sch - ('a' - 38); - } - retval &= 0x3f; - - return(retval); -} - -/* - * When we choose to "support" invalid salts, nevertheless disallow those - * containing characters that would violate the passwd file format. - */ -static inline int -ascii_is_unsafe(char ch) -{ - return !ch || ch == '\n' || ch == ':'; -} - -void -_crypt_extended_init(void) -{ - int i, j, b, k, inbit, obit; - u_int32_t *p, *il, *ir, *fl, *fr; - u_int32_t *bits28, *bits24; - u_char inv_key_perm[64]; - u_char inv_comp_perm[56]; - u_char init_perm[64], final_perm[64]; - u_char u_sbox[8][64]; - u_char un_pbox[32]; - - bits24 = (bits28 = bits32 + 4) + 4; - - /* - * Invert the S-boxes, reordering the input bits. - */ - for (i = 0; i < 8; i++) - for (j = 0; j < 64; j++) { - b = (j & 0x20) | ((j & 1) << 4) | ((j >> 1) & 0xf); - u_sbox[i][j] = sbox[i][b]; - } - - /* - * Convert the inverted S-boxes into 4 arrays of 8 bits. - * Each will handle 12 bits of the S-box input. - */ - for (b = 0; b < 4; b++) - for (i = 0; i < 64; i++) - for (j = 0; j < 64; j++) - m_sbox[b][(i << 6) | j] = - (u_sbox[(b << 1)][i] << 4) | - u_sbox[(b << 1) + 1][j]; - - /* - * Set up the initial & final permutations into a useful form, and - * initialise the inverted key permutation. - */ - for (i = 0; i < 64; i++) { - init_perm[final_perm[i] = IP[i] - 1] = i; - inv_key_perm[i] = 255; - } - - /* - * Invert the key permutation and initialise the inverted key - * compression permutation. - */ - for (i = 0; i < 56; i++) { - inv_key_perm[key_perm[i] - 1] = i; - inv_comp_perm[i] = 255; - } - - /* - * Invert the key compression permutation. - */ - for (i = 0; i < 48; i++) { - inv_comp_perm[comp_perm[i] - 1] = i; - } - - /* - * Set up the OR-mask arrays for the initial and final permutations, - * and for the key initial and compression permutations. - */ - for (k = 0; k < 8; k++) { - for (i = 0; i < 256; i++) { - *(il = &ip_maskl[k][i]) = 0; - *(ir = &ip_maskr[k][i]) = 0; - *(fl = &fp_maskl[k][i]) = 0; - *(fr = &fp_maskr[k][i]) = 0; - for (j = 0; j < 8; j++) { - inbit = 8 * k + j; - if (i & bits8[j]) { - if ((obit = init_perm[inbit]) < 32) - *il |= bits32[obit]; - else - *ir |= bits32[obit-32]; - if ((obit = final_perm[inbit]) < 32) - *fl |= bits32[obit]; - else - *fr |= bits32[obit - 32]; - } - } - } - for (i = 0; i < 128; i++) { - *(il = &key_perm_maskl[k][i]) = 0; - *(ir = &key_perm_maskr[k][i]) = 0; - for (j = 0; j < 7; j++) { - inbit = 8 * k + j; - if (i & bits8[j + 1]) { - if ((obit = inv_key_perm[inbit]) == 255) - continue; - if (obit < 28) - *il |= bits28[obit]; - else - *ir |= bits28[obit - 28]; - } - } - *(il = &comp_maskl[k][i]) = 0; - *(ir = &comp_maskr[k][i]) = 0; - for (j = 0; j < 7; j++) { - inbit = 7 * k + j; - if (i & bits8[j + 1]) { - if ((obit=inv_comp_perm[inbit]) == 255) - continue; - if (obit < 24) - *il |= bits24[obit]; - else - *ir |= bits24[obit - 24]; - } - } - } - } - - /* - * Invert the P-box permutation, and convert into OR-masks for - * handling the output of the S-box arrays setup above. - */ - for (i = 0; i < 32; i++) - un_pbox[pbox[i] - 1] = i; - - for (b = 0; b < 4; b++) - for (i = 0; i < 256; i++) { - *(p = &psbox[b][i]) = 0; - for (j = 0; j < 8; j++) { - if (i & bits8[j]) - *p |= bits32[un_pbox[8 * b + j]]; - } - } -} - -static void -des_init_local(struct _crypt_extended_data *data) -{ - data->old_rawkey0 = data->old_rawkey1 = 0; - data->saltbits = 0; - data->old_salt = 0; - - data->initialized = 1; -} - -static void -setup_salt(u_int32_t salt, struct _crypt_extended_data *data) -{ - u_int32_t obit, saltbit, saltbits; - int i; - - if (salt == data->old_salt) - return; - data->old_salt = salt; - - saltbits = 0; - saltbit = 1; - obit = 0x800000; - for (i = 0; i < 24; i++) { - if (salt & saltbit) - saltbits |= obit; - saltbit <<= 1; - obit >>= 1; - } - data->saltbits = saltbits; -} - -static int -des_setkey(const char *key, struct _crypt_extended_data *data) -{ - u_int32_t k0, k1, rawkey0, rawkey1; - int shifts, round; - - rawkey0 = - (u_int32_t)(u_char)key[3] | - ((u_int32_t)(u_char)key[2] << 8) | - ((u_int32_t)(u_char)key[1] << 16) | - ((u_int32_t)(u_char)key[0] << 24); - rawkey1 = - (u_int32_t)(u_char)key[7] | - ((u_int32_t)(u_char)key[6] << 8) | - ((u_int32_t)(u_char)key[5] << 16) | - ((u_int32_t)(u_char)key[4] << 24); - - if ((rawkey0 | rawkey1) - && rawkey0 == data->old_rawkey0 - && rawkey1 == data->old_rawkey1) { - /* - * Already setup for this key. - * This optimisation fails on a zero key (which is weak and - * has bad parity anyway) in order to simplify the starting - * conditions. - */ - return(0); - } - data->old_rawkey0 = rawkey0; - data->old_rawkey1 = rawkey1; - - /* - * Do key permutation and split into two 28-bit subkeys. - */ - k0 = key_perm_maskl[0][rawkey0 >> 25] - | key_perm_maskl[1][(rawkey0 >> 17) & 0x7f] - | key_perm_maskl[2][(rawkey0 >> 9) & 0x7f] - | key_perm_maskl[3][(rawkey0 >> 1) & 0x7f] - | key_perm_maskl[4][rawkey1 >> 25] - | key_perm_maskl[5][(rawkey1 >> 17) & 0x7f] - | key_perm_maskl[6][(rawkey1 >> 9) & 0x7f] - | key_perm_maskl[7][(rawkey1 >> 1) & 0x7f]; - k1 = key_perm_maskr[0][rawkey0 >> 25] - | key_perm_maskr[1][(rawkey0 >> 17) & 0x7f] - | key_perm_maskr[2][(rawkey0 >> 9) & 0x7f] - | key_perm_maskr[3][(rawkey0 >> 1) & 0x7f] - | key_perm_maskr[4][rawkey1 >> 25] - | key_perm_maskr[5][(rawkey1 >> 17) & 0x7f] - | key_perm_maskr[6][(rawkey1 >> 9) & 0x7f] - | key_perm_maskr[7][(rawkey1 >> 1) & 0x7f]; - /* - * Rotate subkeys and do compression permutation. - */ - shifts = 0; - for (round = 0; round < 16; round++) { - u_int32_t t0, t1; - - shifts += key_shifts[round]; - - t0 = (k0 << shifts) | (k0 >> (28 - shifts)); - t1 = (k1 << shifts) | (k1 >> (28 - shifts)); - - data->de_keysl[15 - round] = - data->en_keysl[round] = comp_maskl[0][(t0 >> 21) & 0x7f] - | comp_maskl[1][(t0 >> 14) & 0x7f] - | comp_maskl[2][(t0 >> 7) & 0x7f] - | comp_maskl[3][t0 & 0x7f] - | comp_maskl[4][(t1 >> 21) & 0x7f] - | comp_maskl[5][(t1 >> 14) & 0x7f] - | comp_maskl[6][(t1 >> 7) & 0x7f] - | comp_maskl[7][t1 & 0x7f]; - - data->de_keysr[15 - round] = - data->en_keysr[round] = comp_maskr[0][(t0 >> 21) & 0x7f] - | comp_maskr[1][(t0 >> 14) & 0x7f] - | comp_maskr[2][(t0 >> 7) & 0x7f] - | comp_maskr[3][t0 & 0x7f] - | comp_maskr[4][(t1 >> 21) & 0x7f] - | comp_maskr[5][(t1 >> 14) & 0x7f] - | comp_maskr[6][(t1 >> 7) & 0x7f] - | comp_maskr[7][t1 & 0x7f]; - } - return(0); -} - -static int -do_des(u_int32_t l_in, u_int32_t r_in, u_int32_t *l_out, u_int32_t *r_out, - int count, struct _crypt_extended_data *data) -{ - /* - * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format. - */ - u_int32_t l, r, *kl, *kr, *kl1, *kr1; - u_int32_t f, r48l, r48r, saltbits; - int round; - - if (count == 0) { - return(1); - } else if (count > 0) { - /* - * Encrypting - */ - kl1 = data->en_keysl; - kr1 = data->en_keysr; - } else { - /* - * Decrypting - */ - count = -count; - kl1 = data->de_keysl; - kr1 = data->de_keysr; - } - - /* - * Do initial permutation (IP). - */ - l = ip_maskl[0][l_in >> 24] - | ip_maskl[1][(l_in >> 16) & 0xff] - | ip_maskl[2][(l_in >> 8) & 0xff] - | ip_maskl[3][l_in & 0xff] - | ip_maskl[4][r_in >> 24] - | ip_maskl[5][(r_in >> 16) & 0xff] - | ip_maskl[6][(r_in >> 8) & 0xff] - | ip_maskl[7][r_in & 0xff]; - r = ip_maskr[0][l_in >> 24] - | ip_maskr[1][(l_in >> 16) & 0xff] - | ip_maskr[2][(l_in >> 8) & 0xff] - | ip_maskr[3][l_in & 0xff] - | ip_maskr[4][r_in >> 24] - | ip_maskr[5][(r_in >> 16) & 0xff] - | ip_maskr[6][(r_in >> 8) & 0xff] - | ip_maskr[7][r_in & 0xff]; - - saltbits = data->saltbits; - while (count--) { - /* - * Do each round. - */ - kl = kl1; - kr = kr1; - round = 16; - while (round--) { - /* - * Expand R to 48 bits (simulate the E-box). - */ - r48l = ((r & 0x00000001) << 23) - | ((r & 0xf8000000) >> 9) - | ((r & 0x1f800000) >> 11) - | ((r & 0x01f80000) >> 13) - | ((r & 0x001f8000) >> 15); - - r48r = ((r & 0x0001f800) << 7) - | ((r & 0x00001f80) << 5) - | ((r & 0x000001f8) << 3) - | ((r & 0x0000001f) << 1) - | ((r & 0x80000000) >> 31); - /* - * Do salting for crypt() and friends, and - * XOR with the permuted key. - */ - f = (r48l ^ r48r) & saltbits; - r48l ^= f ^ *kl++; - r48r ^= f ^ *kr++; - /* - * Do sbox lookups (which shrink it back to 32 bits) - * and do the pbox permutation at the same time. - */ - f = psbox[0][m_sbox[0][r48l >> 12]] - | psbox[1][m_sbox[1][r48l & 0xfff]] - | psbox[2][m_sbox[2][r48r >> 12]] - | psbox[3][m_sbox[3][r48r & 0xfff]]; - /* - * Now that we've permuted things, complete f(). - */ - f ^= l; - l = r; - r = f; - } - r = l; - l = f; - } - /* - * Do final permutation (inverse of IP). - */ - *l_out = fp_maskl[0][l >> 24] - | fp_maskl[1][(l >> 16) & 0xff] - | fp_maskl[2][(l >> 8) & 0xff] - | fp_maskl[3][l & 0xff] - | fp_maskl[4][r >> 24] - | fp_maskl[5][(r >> 16) & 0xff] - | fp_maskl[6][(r >> 8) & 0xff] - | fp_maskl[7][r & 0xff]; - *r_out = fp_maskr[0][l >> 24] - | fp_maskr[1][(l >> 16) & 0xff] - | fp_maskr[2][(l >> 8) & 0xff] - | fp_maskr[3][l & 0xff] - | fp_maskr[4][r >> 24] - | fp_maskr[5][(r >> 16) & 0xff] - | fp_maskr[6][(r >> 8) & 0xff] - | fp_maskr[7][r & 0xff]; - return(0); -} - -static int -des_cipher(const char *in, char *out, u_int32_t salt, int count, - struct _crypt_extended_data *data) -{ - u_int32_t l_out, r_out, rawl, rawr; - int retval; - - setup_salt(salt, data); - - rawl = - (u_int32_t)(u_char)in[3] | - ((u_int32_t)(u_char)in[2] << 8) | - ((u_int32_t)(u_char)in[1] << 16) | - ((u_int32_t)(u_char)in[0] << 24); - rawr = - (u_int32_t)(u_char)in[7] | - ((u_int32_t)(u_char)in[6] << 8) | - ((u_int32_t)(u_char)in[5] << 16) | - ((u_int32_t)(u_char)in[4] << 24); - - retval = do_des(rawl, rawr, &l_out, &r_out, count, data); - - out[0] = l_out >> 24; - out[1] = l_out >> 16; - out[2] = l_out >> 8; - out[3] = l_out; - out[4] = r_out >> 24; - out[5] = r_out >> 16; - out[6] = r_out >> 8; - out[7] = r_out; - - return(retval); -} - -char * -_crypt_extended_r(const char *key, const char *setting, - struct _crypt_extended_data *data) -{ - int i; - u_int32_t count, salt, l, r0, r1, keybuf[2]; - u_char *p, *q; - - if (!data->initialized) - des_init_local(data); - - /* - * Copy the key, shifting each character up by one bit - * and padding with zeros. - */ - q = (u_char *) keybuf; - while (q - (u_char *) keybuf < sizeof(keybuf)) { - *q++ = *key << 1; - if (*key) - key++; - } - if (des_setkey((u_char *) keybuf, data)) - return(NULL); - - if (*setting == _PASSWORD_EFMT1) { - /* - * "new"-style: - * setting - underscore, 4 chars of count, 4 chars of salt - * key - unlimited characters - */ - for (i = 1, count = 0; i < 5; i++) { - int value = ascii_to_bin(setting[i]); - if (ascii64[value] != setting[i]) - return(NULL); - count |= value << (i - 1) * 6; - } - if (!count) - return(NULL); - - for (i = 5, salt = 0; i < 9; i++) { - int value = ascii_to_bin(setting[i]); - if (ascii64[value] != setting[i]) - return(NULL); - salt |= value << (i - 5) * 6; - } - - while (*key) { - /* - * Encrypt the key with itself. - */ - if (des_cipher((u_char *) keybuf, (u_char *) keybuf, - 0, 1, data)) - return(NULL); - /* - * And XOR with the next 8 characters of the key. - */ - q = (u_char *) keybuf; - while (q - (u_char *) keybuf < sizeof(keybuf) && *key) - *q++ ^= *key++ << 1; - - if (des_setkey((u_char *) keybuf, data)) - return(NULL); - } - memcpy(data->output, setting, 9); - data->output[9] = '\0'; - p = (u_char *) data->output + 9; - } else { - /* - * "old"-style: - * setting - 2 chars of salt - * key - up to 8 characters - */ - count = 25; - - if (ascii_is_unsafe(setting[0]) || ascii_is_unsafe(setting[1])) - return(NULL); - - salt = (ascii_to_bin(setting[1]) << 6) - | ascii_to_bin(setting[0]); - - data->output[0] = setting[0]; - data->output[1] = setting[1]; - p = (u_char *) data->output + 2; - } - setup_salt(salt, data); - /* - * Do it. - */ - if (do_des(0, 0, &r0, &r1, count, data)) - return(NULL); - /* - * Now encode the result... - */ - l = (r0 >> 8); - *p++ = ascii64[(l >> 18) & 0x3f]; - *p++ = ascii64[(l >> 12) & 0x3f]; - *p++ = ascii64[(l >> 6) & 0x3f]; - *p++ = ascii64[l & 0x3f]; - - l = (r0 << 16) | ((r1 >> 16) & 0xffff); - *p++ = ascii64[(l >> 18) & 0x3f]; - *p++ = ascii64[(l >> 12) & 0x3f]; - *p++ = ascii64[(l >> 6) & 0x3f]; - *p++ = ascii64[l & 0x3f]; - - l = r1 << 2; - *p++ = ascii64[(l >> 12) & 0x3f]; - *p++ = ascii64[(l >> 6) & 0x3f]; - *p++ = ascii64[l & 0x3f]; - *p = 0; - - return(data->output); -} - -#ifdef TEST -static char * -_crypt_extended(const char *key, const char *setting) -{ - static int initialized = 0; - static struct _crypt_extended_data data; - - if (!initialized) { - _crypt_extended_init(); - initialized = 1; - data.initialized = 0; - } - return _crypt_extended_r(key, setting, &data); -} - -#define crypt _crypt_extended - -static struct { - char *hash; - char *pw; -} tests[] = { -/* "new"-style */ - {"_J9..CCCCXBrJUJV154M", "U*U*U*U*"}, - {"_J9..CCCCXUhOBTXzaiE", "U*U***U"}, - {"_J9..CCCC4gQ.mB/PffM", "U*U***U*"}, - {"_J9..XXXXvlzQGqpPPdk", "*U*U*U*U"}, - {"_J9..XXXXsqM/YSSP..Y", "*U*U*U*U*"}, - {"_J9..XXXXVL7qJCnku0I", "*U*U*U*U*U*U*U*U"}, - {"_J9..XXXXAj8cFbP5scI", "*U*U*U*U*U*U*U*U*"}, - {"_J9..SDizh.vll5VED9g", "ab1234567"}, - {"_J9..SDizRjWQ/zePPHc", "cr1234567"}, - {"_J9..SDizxmRI1GjnQuE", "zxyDPWgydbQjgq"}, - {"_K9..SaltNrQgIYUAeoY", "726 even"}, - {"_J9..SDSD5YGyRCr4W4c", ""}, - {"_01234567IBjxKliXXRQ", "\xc3\x80" "1234abcd"}, - {"_012345678OSGpGQRVHA", "\xc3\x80" "9234abcd"}, -/* "old"-style, valid salts */ - {"CCNf8Sbh3HDfQ", "U*U*U*U*"}, - {"CCX.K.MFy4Ois", "U*U***U"}, - {"CC4rMpbg9AMZ.", "U*U***U*"}, - {"XXxzOu6maQKqQ", "*U*U*U*U"}, - {"SDbsugeBiC58A", ""}, - {"./xZjzHv5vzVE", "password"}, - {"0A2hXM1rXbYgo", "password"}, - {"A9RXdR23Y.cY6", "password"}, - {"ZziFATVXHo2.6", "password"}, - {"zZDDIZ0NOlPzw", "password"}, - {"99PxawtsTfX56", "\xc3\x80" "1234abcd"}, - {"99jcVcGxUZOWk", "\xc3\x80" "9234abcd"}, -/* "old"-style, "reasonable" invalid salts, UFC-crypt behavior expected */ - {"\001\002wyd0KZo65Jo", "password"}, - {"a_C10Dk/ExaG.", "password"}, - {"~\377.5OTsRVjwLo", "password"}, -/* The below are erroneous inputs, so NULL return is expected/required */ - {"", ""}, /* no salt */ - {" ", ""}, /* setting string is too short */ - {"a:", ""}, /* unsafe character */ - {"\na", ""}, /* unsafe character */ - {"_/......", ""}, /* setting string is too short for its type */ - {"_........", ""}, /* zero iteration count */ - {"_/!......", ""}, /* invalid character in count */ - {"_/......!", ""}, /* invalid character in salt */ - {NULL} -}; - -int main(void) -{ - int i; - - for (i = 0; tests[i].hash; i++) { - char *hash = crypt(tests[i].pw, tests[i].hash); - if (!hash && strlen(tests[i].hash) < 13) - continue; /* expected failure */ - if (!strcmp(hash, tests[i].hash)) - continue; /* expected success */ - puts("FAILED"); - return 1; - } - - puts("PASSED"); - - return 0; -} -#endif diff --git a/crypt_freesec.h b/crypt_freesec.h deleted file mode 100644 index e1bc446..0000000 --- a/crypt_freesec.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * The following notice applies to this header file (only): - * - * Copyright (c) 2002,2010 Solar Designer - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted. - */ - -#ifndef _CRYPT_FREESEC_H -#define _CRYPT_FREESEC_H - -struct _crypt_extended_data { - int initialized; - u_int32_t saltbits; - u_int32_t old_salt; - u_int32_t en_keysl[16], en_keysr[16]; - u_int32_t de_keysl[16], de_keysr[16]; - u_int32_t old_rawkey0, old_rawkey1; - char output[21]; -}; - -/* - * _crypt_extended_init() must be called explicitly before first use of - * _crypt_extended_r(). Strictly speaking, _crypt_extended_init() is not - * reentrant. All it does is initialize some global variables to constant - * values, so it is unlikely that anything would go wrong if this is done - * multiple times in parallel, but correct behavior in that case is not - * guaranteed (e.g., things may go wrong if a given CPU architecture can't - * operate on 32-bit quantities natively, requiring read-modify-write - * instruction sequences operating on larger quantities and thus affecting - * nearby array elements). - * - * Before first use of the data structure, its "initialized" field must be - * set to 0. This is compatible with the requirement of some other crypt_r() - * implementations requiring the entire data structure to be initialized - * with all zero bytes, so that approach may be applied instead (e.g., this - * may be required from the callers of a wrapper function). - * - * _crypt_extended_r() returns NULL on error. Although modern standards say - * that crypt(3) does in fact return NULL on error, many applications do not - * expect that. Thus, it is recommended that a crypt(3)-like wrapper function - * translate these NULL returns into strings guaranteed to be different from - * the "setting" string, too short for matching a valid password hash, and not - * containing any characters that would be special for the passwd file format. - * Specifically, such a wrapper function may return "*0" on error as long as - * the "setting" string does not start with "*0", or "*1" otherwise. - */ - -void _crypt_extended_init(void); - -char *_crypt_extended_r(const char *key, const char *setting, - struct _crypt_extended_data *data); - -#endif diff --git a/eglibc-fedora-test-debug-gnuc-hack.patch b/eglibc-fedora-test-debug-gnuc-hack.patch deleted file mode 100644 index 977bd76..0000000 --- a/eglibc-fedora-test-debug-gnuc-hack.patch +++ /dev/null @@ -1,22 +0,0 @@ -From e818d7d5034bd33373aebf570402abdb8e434f6e Mon Sep 17 00:00:00 2001 -From: Jakub Jelinek -Date: Sat, 19 Mar 2005 20:18:00 +0000 -Subject: [PATCH] Updated to fedora-glibc-20050319T1907 - ---- - debug/tst-chk1.c | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 229 insertions(+), 5 deletions(-) - -diff --git a/debug/tst-chk1.c b/debug/tst-chk1.c ---- a/debug/tst-chk1.c -+++ b/debug/tst-chk1.c -@@ -16,6 +16,9 @@ - License along with the GNU C Library; if not, see - . */ - -+/* Hack: make sure GCC doesn't know __chk_fail () will not return. */ -+#define __noreturn__ -+ - #include - #include - #include diff --git a/eglibc-mandriva-avx-increase_BF_FRAME.patch b/eglibc-mandriva-avx-increase_BF_FRAME.patch deleted file mode 100644 index ee96eda..0000000 --- a/eglibc-mandriva-avx-increase_BF_FRAME.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- crypt/x86.S 2011-07-16 11:09:42.000000000 -0400 -+++ crypt/x86.S.oden 2011-11-25 04:07:23.574489383 -0500 -@@ -42,7 +42,7 @@ - #define DO_ALIGN(log) .align (1 << (log)) - #endif - --#define BF_FRAME 0x200 -+#define BF_FRAME 0x400 - #define ctx %esp - - #define BF_ptr (ctx) diff --git a/eglibc-mandriva-avx-relocate_fcrypt.patch b/eglibc-mandriva-avx-relocate_fcrypt.patch deleted file mode 100644 index 4d28a7e..0000000 --- a/eglibc-mandriva-avx-relocate_fcrypt.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- glibc-2.23/crypt/crypt-entry.c.relocateFcrypt~ 2016-02-18 21:10:00.072228405 +0100 -+++ glibc-2.23/crypt/crypt-entry.c 2016-02-18 21:10:58.203506144 +0100 -@@ -168,18 +168,3 @@ crypt (const char *key, const char *salt - return __crypt_r (key, salt, &_ufc_foobar); - } - #endif -- -- --/* -- * To make fcrypt users happy. -- * They don't need to call init_des. -- */ --#ifdef _LIBC --weak_alias (crypt, fcrypt) --#else --char * --__fcrypt (const char *key, const char *salt) --{ -- return crypt (key, salt); --} --#endif ---- glibc-2.23/crypt/wrapper.c.relocateFcrypt~ 2016-02-18 21:10:00.071228400 +0100 -+++ glibc-2.23/crypt/wrapper.c 2016-02-18 21:10:00.072228405 +0100 -@@ -325,7 +325,6 @@ weak_alias(__crypt, crypt) - weak_alias(__crypt_gensalt_rn, crypt_gensalt_rn) - weak_alias(__crypt_gensalt_ra, crypt_gensalt_ra) - weak_alias(__crypt_gensalt, crypt_gensalt) --weak_alias(crypt, fcrypt) - #endif - - #ifdef TEST diff --git a/eglibc-mandriva-i386-hwcapinfo.patch b/eglibc-mandriva-i386-hwcapinfo.patch deleted file mode 100644 index 63e2bf4..0000000 --- a/eglibc-mandriva-i386-hwcapinfo.patch +++ /dev/null @@ -1,95 +0,0 @@ ---- glibc-2.18/sysdeps/i386/dl-hwcapinfo.h.hwcap~ 2013-08-17 14:18:10.909311979 +0200 -+++ glibc-2.18/sysdeps/i386/dl-hwcapinfo.h 2013-08-17 14:18:10.909311979 +0200 -@@ -0,0 +1,53 @@ -+/* i386 version of processor capability definitions. -+ Copyright (C) 1998, 2000, 2003, 2004 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper , 1998. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifndef _DL_HWCAPINFO_H -+#define _DL_HWCAPINFO_H 1 -+ -+enum -+{ -+ HWCAP_I386_FPU = 1 << 0, -+ HWCAP_I386_VME = 1 << 1, -+ HWCAP_I386_DE = 1 << 2, -+ HWCAP_I386_PSE = 1 << 3, -+ HWCAP_I386_TSC = 1 << 4, -+ HWCAP_I386_MSR = 1 << 5, -+ HWCAP_I386_PAE = 1 << 6, -+ HWCAP_I386_MCE = 1 << 7, -+ HWCAP_I386_CX8 = 1 << 8, -+ HWCAP_I386_APIC = 1 << 9, -+ HWCAP_I386_SEP = 1 << 11, -+ HWCAP_I386_MTRR = 1 << 12, -+ HWCAP_I386_PGE = 1 << 13, -+ HWCAP_I386_MCA = 1 << 14, -+ HWCAP_I386_CMOV = 1 << 15, -+ HWCAP_I386_FCMOV = 1 << 16, -+ HWCAP_I386_MMX = 1 << 23, -+ HWCAP_I386_OSFXSR = 1 << 24, -+ HWCAP_I386_XMM = 1 << 25, -+ HWCAP_I386_XMM2 = 1 << 26, -+ HWCAP_I386_AMD3D = 1 << 31, -+ -+ /* XXX Which others to add here? */ -+ HWCAP_IMPORTANT = (HWCAP_I386_XMM2) -+ -+}; -+ -+#endif /* dl-hwcapinfo.h */ ---- glibc-2.18/sysdeps/i386/dl-procinfo.h.hwcap~ 2013-08-17 14:18:10.909311979 +0200 -+++ glibc-2.18/sysdeps/i386/dl-procinfo.h 2013-08-17 14:26:50.222819666 +0200 -@@ -31,34 +31,8 @@ - #define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \ - << _DL_FIRST_PLATFORM) - --enum --{ -- HWCAP_I386_FPU = 1 << 0, -- HWCAP_I386_VME = 1 << 1, -- HWCAP_I386_DE = 1 << 2, -- HWCAP_I386_PSE = 1 << 3, -- HWCAP_I386_TSC = 1 << 4, -- HWCAP_I386_MSR = 1 << 5, -- HWCAP_I386_PAE = 1 << 6, -- HWCAP_I386_MCE = 1 << 7, -- HWCAP_I386_CX8 = 1 << 8, -- HWCAP_I386_APIC = 1 << 9, -- HWCAP_I386_SEP = 1 << 11, -- HWCAP_I386_MTRR = 1 << 12, -- HWCAP_I386_PGE = 1 << 13, -- HWCAP_I386_MCA = 1 << 14, -- HWCAP_I386_CMOV = 1 << 15, -- HWCAP_I386_FCMOV = 1 << 16, -- HWCAP_I386_MMX = 1 << 23, -- HWCAP_I386_OSFXSR = 1 << 24, -- HWCAP_I386_XMM = 1 << 25, -- HWCAP_I386_XMM2 = 1 << 26, -- HWCAP_I386_AMD3D = 1 << 31, -- -- /* XXX Which others to add here? */ -- HWCAP_IMPORTANT = (HWCAP_I386_XMM2) -- --}; -+/* Get HWCAP definitions */ -+#include - - /* We cannot provide a general printing function. */ - #define _dl_procinfo(type, word) -1 diff --git a/eglibc-mandriva-i586-if-no-cmov.patch b/eglibc-mandriva-i586-if-no-cmov.patch deleted file mode 100644 index 81de9c9..0000000 --- a/eglibc-mandriva-i586-if-no-cmov.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- glibc-2.24/sysdeps/i386/dl-machine.h.0072~ 2016-08-02 04:01:36.000000000 +0200 -+++ glibc-2.24/sysdeps/i386/dl-machine.h 2016-08-17 16:58:27.711996583 +0200 -@@ -226,6 +226,9 @@ _dl_start_user:\n\ - Prelinked libraries may use Elf32_Rela though. */ - #define ELF_MACHINE_PLT_REL 1 - -+/* We need the definition of HWCAP_I386_CMOV. */ -+#include -+ - /* We define an initialization functions. This is called very early in - _dl_sysdep_start. */ - #define DL_PLATFORM_INIT dl_platform_init () -@@ -241,6 +244,12 @@ dl_platform_init (void) - /* init_cpu_features has been called early from __libc_start_main in - static executable. */ - init_cpu_features (&GLRO(dl_x86_cpu_features)); -+ -+ if (GLRO(dl_platform) != NULL -+ && GLRO(dl_platform)[1] >= '6' && (GLRO(dl_hwcap) & HWCAP_I386_CMOV) == 0) -+ /* Avoid i686 compiled libraries to be loaded if the host doesn't -+ support CMOV instructions. */ -+ GLRO(dl_platform) = "i586"; - #endif - } - diff --git a/eglibc-mandriva-localedef-archive-follow-symlinks.patch b/eglibc-mandriva-localedef-archive-follow-symlinks.patch index 1dc7abb..1185402 100644 --- a/eglibc-mandriva-localedef-archive-follow-symlinks.patch +++ b/eglibc-mandriva-localedef-archive-follow-symlinks.patch @@ -1,18 +1,11 @@ -localedef --add-to-archive doesn't follow symbolic links, thus if you have any -locale with symlinked files to save disk space, for example: -/usr/share/locale/pt_BR/LC_CTYPE -> ../ISO-8859-1/LC_CTYPE -"localedef --add-to-archive /usr/share/locale/pt_BR" will not work, because -current locarchive.c code doesn't consider symlink case. - -diff -p -up glibc-2.11.1/locale/programs/locarchive.c.orig glibc-2.11.1/locale/programs/locarchive.c ---- glibc-2.11.1/locale/programs/locarchive.c.orig 2010-04-08 14:10:46.515770746 -0300 -+++ glibc-2.11.1/locale/programs/locarchive.c 2010-04-08 14:11:55.587520585 -0300 -@@ -1323,7 +1323,7 @@ add_locales_to_archive (nlist, list, rep +--- glibc-2.27/locale/programs/locarchive.c.0100~ 2018-02-02 20:28:32.043266608 +0100 ++++ glibc-2.27/locale/programs/locarchive.c 2018-02-02 20:29:20.894352169 +0100 +@@ -1391,7 +1391,7 @@ add_locales_to_archive (size_t nlist, ch + { char fullname[fnamelen + 2 * strlen (d->d_name) + 7]; - #ifdef _DIRENT_HAVE_D_TYPE - if (d_type == DT_UNKNOWN) + if (d_type == DT_UNKNOWN || d_type == DT_LNK) - #endif { strcpy (stpcpy (stpcpy (fullname, fname), "/"), + d->d_name); diff --git a/eglibc-mandriva-mdv-avx-owl-crypt.patch b/eglibc-mandriva-mdv-avx-owl-crypt.patch deleted file mode 100644 index 1333563..0000000 --- a/eglibc-mandriva-mdv-avx-owl-crypt.patch +++ /dev/null @@ -1,56 +0,0 @@ ---- glibc-2.23/crypt/crypt-entry.c.owlCrypt~ 2016-02-18 18:54:00.000000000 +0100 -+++ glibc-2.23/crypt/crypt-entry.c 2016-02-18 21:09:26.589068442 +0100 -@@ -71,8 +71,8 @@ extern struct crypt_data _ufc_foobar; - */ - - char * --__crypt_r (const char *key, const char *salt, -- struct crypt_data * __restrict data) -+__des_crypt_r (const char *key, const char *salt, -+ struct crypt_data * __restrict data) - { - ufc_long res[4]; - char ktab[9]; -@@ -143,6 +143,7 @@ __crypt_r (const char *key, const char * - _ufc_output_conversion_r (res[0], res[1], salt, data); - return data->crypt_3_buf; - } -+#if 0 - weak_alias (__crypt_r, crypt_r) - - char * -@@ -166,6 +167,7 @@ crypt (const char *key, const char *salt - - return __crypt_r (key, salt, &_ufc_foobar); - } -+#endif - - - /* ---- glibc-2.23/crypt/Makefile.owlCrypt~ 2016-02-18 18:54:00.000000000 +0100 -+++ glibc-2.23/crypt/Makefile 2016-02-18 21:08:03.819673066 +0100 -@@ -22,13 +22,13 @@ subdir := crypt - - include ../Makeconfig - --headers := crypt.h -+headers := crypt.h gnu-crypt.h ow-crypt.h - - extra-libs := libcrypt - extra-libs-others := $(extra-libs) - - libcrypt-routines := crypt-entry md5-crypt sha256-crypt sha512-crypt crypt \ -- crypt_util -+ crypt_util crypt_blowfish x86 crypt_gensalt wrapper - - tests := cert md5c-test sha256c-test sha512c-test badsalttest - ---- glibc-2.23/crypt/Versions.owlCrypt~ 2016-02-18 18:54:00.000000000 +0100 -+++ glibc-2.23/crypt/Versions 2016-02-18 21:08:03.819673066 +0100 -@@ -1,5 +1,6 @@ - libcrypt { - GLIBC_2.0 { - crypt; crypt_r; encrypt; encrypt_r; fcrypt; setkey; setkey_r; -+ crypt_rn; crypt_ra; crypt_gensalt; crypt_gensalt_rn; crypt_gensalt_ra; - } - } diff --git a/eglibc-mandriva-mdv-owl-crypt_freesec.patch b/eglibc-mandriva-mdv-owl-crypt_freesec.patch deleted file mode 100644 index 53b5d21..0000000 --- a/eglibc-mandriva-mdv-owl-crypt_freesec.patch +++ /dev/null @@ -1,125 +0,0 @@ ---- glibc-2.18/crypt/Makefile.freesec~ 2013-08-17 14:40:57.281229979 +0200 -+++ glibc-2.18/crypt/Makefile 2013-08-17 14:41:29.929821815 +0200 -@@ -26,7 +26,7 @@ extra-libs := libcrypt - extra-libs-others := $(extra-libs) - - libcrypt-routines := crypt-entry md5-crypt sha256-crypt sha512-crypt crypt \ -- crypt_util crypt_blowfish x86 crypt_gensalt wrapper -+ crypt_util crypt_blowfish x86 crypt_gensalt crypt_freesec wrapper - - tests := cert md5c-test sha256c-test sha512c-test badsalttest - ---- glibc-2.18/crypt/wrapper.c.freesec~ 2011-07-16 17:07:22.000000000 +0200 -+++ glibc-2.18/crypt/wrapper.c 2013-08-17 14:40:57.282229966 +0200 -@@ -103,32 +103,72 @@ static char *_crypt_retval_magic(char *r - * its initialization code. Thus, it is important that our multiple hashing - * algorithms either don't conflict with each other in their use of the - * data area or reset the initialized field themselves whenever required. -- * Currently, the hashing algorithms simply have no conflicts: the first -- * field of struct crypt_data is the 128-byte large DES key schedule which -- * __des_crypt_r() calculates each time it is called while the two other -- * hashing algorithms use less than 128 bytes of the data area. -+ * Currently, three of the four supported hashing algorithms simply have no -+ * conflicts: the first field of struct crypt_data is the 128-byte large -+ * DES key schedule which __des_crypt_r() calculates each time it is called -+ * while two other hashing algorithms use less than 128 bytes of the data -+ * area. - */ - -+#include "crypt_freesec.h" -+ -+#include -+#include -+ -+__libc_lock_define_initialized (static, _crypt_extended_init_lock) -+ -+static void _crypt_extended_init_r(void) -+{ -+ static volatile sig_atomic_t initialized = 0; -+ -+ if (initialized) return; -+ -+ __libc_lock_lock(_crypt_extended_init_lock); -+ if (!initialized) { -+ _crypt_extended_init(); -+ initialized = 1; -+ } -+ __libc_lock_unlock(_crypt_extended_init_lock); -+} -+ - char *__crypt_rn(__const char *key, __const char *setting, - void *data, int size) - { -+ char *retval; -+ - if (setting[0] == '$' && setting[1] == '2') - return _crypt_blowfish_rn(key, setting, (char *)data, size); - if (setting[0] == '$' && setting[1] == '1') - return __md5_crypt_r(key, setting, (char *)data, size); -- if (setting[0] == '$' || setting[0] == '_') { -- __set_errno(EINVAL); -- return NULL; -- } -+ if (setting[0] == '$') goto out_einval; -+ if (setting[0] == '_') { -+ if (size < sizeof(struct _crypt_extended_data)) goto out_erange; -+ _crypt_extended_init_r(); -+ ((struct _crypt_extended_data *)data)->initialized = 0; -+ if (size >= sizeof(struct crypt_data)) -+ ((struct crypt_data *)data)->initialized = 0; -+ retval = _crypt_extended_r(key, setting, -+ (struct _crypt_extended_data *)data); -+ if (!retval) goto out_einval; -+ return retval; -+ } - if (size >= sizeof(struct crypt_data)) - return __des_crypt_r(key, setting, (struct crypt_data *)data); -+ -+out_erange: - __set_errno(ERANGE); - return NULL; -+ -+out_einval: -+ __set_errno(EINVAL); -+ return NULL; - } - - char *__crypt_ra(__const char *key, __const char *setting, - void **data, int *size) - { -+ char *retval; -+ - if (setting[0] == '$' && setting[1] == '2') { - if (_crypt_data_alloc(data, size, CRYPT_OUTPUT_SIZE)) - return NULL; -@@ -139,13 +179,27 @@ char *__crypt_ra(__const char *key, __co - return NULL; - return __md5_crypt_r(key, setting, (char *)*data, *size); - } -- if (setting[0] == '$' || setting[0] == '_') { -- __set_errno(EINVAL); -- return NULL; -+ if (setting[0] == '$') goto out_einval; -+ if (setting[0] == '_') { -+ if (_crypt_data_alloc(data, size, -+ sizeof(struct _crypt_extended_data))) -+ return NULL; -+ _crypt_extended_init_r(); -+ ((struct _crypt_extended_data *)*data)->initialized = 0; -+ if (*size >= sizeof(struct crypt_data)) -+ ((struct crypt_data *)*data)->initialized = 0; -+ retval = _crypt_extended_r(key, setting, -+ (struct _crypt_extended_data *)*data); -+ if (!retval) goto out_einval; -+ return retval; - } - if (_crypt_data_alloc(data, size, sizeof(struct crypt_data))) - return NULL; - return __des_crypt_r(key, setting, (struct crypt_data *)*data); -+ -+out_einval: -+ __set_errno(EINVAL); -+ return NULL; - } - - char *__crypt_r(__const char *key, __const char *setting, diff --git a/eglibc-mandriva-mdv-wrapper_handle_sha.patch b/eglibc-mandriva-mdv-wrapper_handle_sha.patch deleted file mode 100644 index 662dcc4..0000000 --- a/eglibc-mandriva-mdv-wrapper_handle_sha.patch +++ /dev/null @@ -1,151 +0,0 @@ -diff -Naurp glibc-2.14-121-g5551a7b/crypt/crypt_gensalt.c glibc-2.14-121-g5551a7b.oden/crypt/crypt_gensalt.c ---- glibc-2.14-121-g5551a7b/crypt/crypt_gensalt.c 2011-07-16 11:06:53.000000000 -0400 -+++ glibc-2.14-121-g5551a7b.oden/crypt/crypt_gensalt.c 2011-11-25 04:08:39.264489146 -0500 -@@ -122,3 +122,78 @@ char *_crypt_gensalt_md5_rn(const char * - - return output; - } -+ -+char *_crypt_gensalt_sha256c_rn(unsigned long count, -+ const char *input, int size, char *output, int output_size) -+{ -+ unsigned long value; -+ -+ if (size < 3 || output_size < 3 + 4 + 1 || (count && count != 1000)) { -+ if (output_size > 0) output[0] = '\0'; -+ __set_errno((output_size < 3 + 4 + 1) ? ERANGE : EINVAL); -+ return NULL; -+ } -+ -+ output[0] = '$'; -+ output[1] = '5'; -+ output[2] = '$'; -+ value = (unsigned long)(unsigned char)input[0] | -+ ((unsigned long)(unsigned char)input[1] << 8) | -+ ((unsigned long)(unsigned char)input[2] << 16); -+ output[3] = _crypt_itoa64[value & 0x3f]; -+ output[4] = _crypt_itoa64[(value >> 6) & 0x3f]; -+ output[5] = _crypt_itoa64[(value >> 12) & 0x3f]; -+ output[6] = _crypt_itoa64[(value >> 18) & 0x3f]; -+ output[7] = '\0'; -+ -+ if (size >= 6 && output_size >= 3 + 4 + 4 + 1) { -+ value = (unsigned long)(unsigned char)input[3] | -+ ((unsigned long)(unsigned char)input[4] << 8) | -+ ((unsigned long)(unsigned char)input[5] << 16); -+ output[7] = _crypt_itoa64[value & 0x3f]; -+ output[8] = _crypt_itoa64[(value >> 6) & 0x3f]; -+ output[9] = _crypt_itoa64[(value >> 12) & 0x3f]; -+ output[10] = _crypt_itoa64[(value >> 18) & 0x3f]; -+ output[11] = '\0'; -+ } -+ -+ return output; -+} -+ -+ -+char *_crypt_gensalt_sha512c_rn(unsigned long count, -+ const char *input, int size, char *output, int output_size) -+{ -+ unsigned long value; -+ -+ if (size < 3 || output_size < 3 + 4 + 1 || (count && count != 1000)) { -+ if (output_size > 0) output[0] = '\0'; -+ __set_errno((output_size < 3 + 4 + 1) ? ERANGE : EINVAL); -+ return NULL; -+ } -+ -+ output[0] = '$'; -+ output[1] = '6'; -+ output[2] = '$'; -+ value = (unsigned long)(unsigned char)input[0] | -+ ((unsigned long)(unsigned char)input[1] << 8) | -+ ((unsigned long)(unsigned char)input[2] << 16); -+ output[3] = _crypt_itoa64[value & 0x3f]; -+ output[4] = _crypt_itoa64[(value >> 6) & 0x3f]; -+ output[5] = _crypt_itoa64[(value >> 12) & 0x3f]; -+ output[6] = _crypt_itoa64[(value >> 18) & 0x3f]; -+ output[7] = '\0'; -+ -+ if (size >= 6 && output_size >= 3 + 4 + 4 + 1) { -+ value = (unsigned long)(unsigned char)input[3] | -+ ((unsigned long)(unsigned char)input[4] << 8) | -+ ((unsigned long)(unsigned char)input[5] << 16); -+ output[7] = _crypt_itoa64[value & 0x3f]; -+ output[8] = _crypt_itoa64[(value >> 6) & 0x3f]; -+ output[9] = _crypt_itoa64[(value >> 12) & 0x3f]; -+ output[10] = _crypt_itoa64[(value >> 18) & 0x3f]; -+ output[11] = '\0'; -+ } -+ -+ return output; -+} -diff -Naurp glibc-2.14-121-g5551a7b/crypt/crypt_gensalt.h glibc-2.14-121-g5551a7b.oden/crypt/crypt_gensalt.h ---- glibc-2.14-121-g5551a7b/crypt/crypt_gensalt.h 2011-07-16 10:58:39.000000000 -0400 -+++ glibc-2.14-121-g5551a7b.oden/crypt/crypt_gensalt.h 2011-11-25 04:13:34.984489216 -0500 -@@ -26,5 +26,8 @@ extern char *_crypt_gensalt_extended_rn( - const char *input, int size, char *output, int output_size); - extern char *_crypt_gensalt_md5_rn(const char *prefix, unsigned long count, - const char *input, int size, char *output, int output_size); -- -+extern char *_crypt_gensalt_sha256c_rn(unsigned long count, -+ const char *input, int size, char *output, int output_size); -+extern char *_crypt_gensalt_sha512c_rn(unsigned long count, -+ const char *input, int size, char *output, int output_size); - #endif -diff -Naurp glibc-2.14-121-g5551a7b/crypt/wrapper.c glibc-2.14-121-g5551a7b.oden/crypt/wrapper.c ---- glibc-2.14-121-g5551a7b/crypt/wrapper.c 2011-11-25 04:08:23.654489356 -0500 -+++ glibc-2.14-121-g5551a7b.oden/crypt/wrapper.c 2011-11-25 04:08:39.264489146 -0500 -@@ -55,6 +55,11 @@ extern char *__md5_crypt_r(const char *k - extern char *__des_crypt_r(const char *key, const char *salt, - struct crypt_data *data); - extern struct crypt_data _ufc_foobar; -+/* support for sha256-crypt and sha512-crypt */ -+extern char *__sha256_crypt_r (const char *key, const char *salt, -+ char *buffer, int buflen); -+extern char *__sha512_crypt_r (const char *key, const char *salt, -+ char *buffer, int buflen); - #endif - - static int _crypt_data_alloc(void **data, int *size, int need) -@@ -140,6 +145,10 @@ char *__crypt_rn(__const char *key, __co - return _crypt_blowfish_rn(key, setting, (char *)data, size); - if (setting[0] == '$' && setting[1] == '1') - return __md5_crypt_r(key, setting, (char *)data, size); -+ if (setting[0] == '$' && setting[1] == '5') -+ return __sha256_crypt_r(key, setting, (char *)data, size); -+ if (setting[0] == '$' && setting[1] == '6') -+ return __sha512_crypt_r(key, setting, (char *)data, size); - if (setting[0] == '$') goto out_einval; - if (setting[0] == '_') { - if (size < sizeof(struct _crypt_extended_data)) goto out_erange; -@@ -179,6 +188,16 @@ char *__crypt_ra(__const char *key, __co - return NULL; - return __md5_crypt_r(key, setting, (char *)*data, *size); - } -+ if (setting[0] == '$' && setting[1] == '5') { -+ if (_crypt_data_alloc(data, size, CRYPT_OUTPUT_SIZE)) -+ return NULL; -+ return __sha256_crypt_r(key, setting, (char *)*data, *size); -+ } -+ if (setting[0] == '$' && setting[1] == '6') { -+ if (_crypt_data_alloc(data, size, CRYPT_OUTPUT_SIZE)) -+ return NULL; -+ return __sha512_crypt_r(key, setting, (char *)*data, *size); -+ } - if (setting[0] == '$') goto out_einval; - if (setting[0] == '_') { - if (_crypt_data_alloc(data, size, -@@ -270,6 +289,12 @@ char *__crypt_gensalt_rn(const char *pre - if (!strncmp(prefix, "$1$", 3)) - use = _crypt_gensalt_md5_rn; - else -+ if (!strncmp(prefix, "$5$", 3)) -+ use = _crypt_gensalt_sha256c_rn; -+ else -+ if (!strncmp(prefix, "$6$", 3)) -+ use = _crypt_gensalt_sha512c_rn; -+ else - if (prefix[0] == '_') - use = _crypt_gensalt_extended_rn; - else diff --git a/eglibc-mandriva-multiarch.patch b/eglibc-mandriva-multiarch.patch deleted file mode 100644 index fbab444..0000000 --- a/eglibc-mandriva-multiarch.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- glibc-2.24/scripts/check-local-headers.sh.biarch~ 2016-08-17 16:52:14.092668284 +0200 -+++ glibc-2.24/scripts/check-local-headers.sh 2016-08-17 16:55:02.911984338 +0200 -@@ -33,7 +33,7 @@ exec ${AWK} -v includedir="$includedir" - BEGIN { - status = 0 - exclude = "^" includedir \ -- "/(.*-.*-.*/|.*-.*/|)(asm[-/]|arch|linux/|selinux/|mach/|device/|hurd/(((hurd|ioctl)_types|paths)\\.h|ioctls\\.defs|ihash\\.h)|cthreads\\.h|gd|nss3/|c\\+\\+/|sys/(capability|sdt(|-config))\\.h|libaudit\\.h)" -+ "/(.*-.*-.*/|.*-.*/|)(asm[-/]|arch|linux/|selinux/|mach/|device/|hurd/(((hurd|ioctl)_types|paths)\\.h|ioctls\\.defs|ihash\\.h)|cthreads\\.h|multiarch-|gd|nss3/|c\\+\\+/|sys/(capability|sdt(|-config))\\.h|libaudit\\.h)" - } - /^[^ ]/ && $1 ~ /.*:/ { obj = $1 } - { diff --git a/eglibc-mandriva-no-leaf-attribute.patch b/eglibc-mandriva-no-leaf-attribute.patch deleted file mode 100644 index bc7626a..0000000 --- a/eglibc-mandriva-no-leaf-attribute.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- glibc-2.15-a316c1f/misc/sys/cdefs.h.orig 2012-02-11 15:42:05.510993089 -0200 -+++ glibc-2.15-a316c1f/misc/sys/cdefs.h 2012-02-11 15:42:48.358183501 -0200 -@@ -38,30 +38,20 @@ - - #ifdef __GNUC__ - --/* All functions, except those with callbacks or those that -- synchronize memory, are leaf functions. */ --# if __GNUC_PREREQ (4, 6) && !defined _LIBC --# define __LEAF , __leaf__ --# define __LEAF_ATTR __attribute__ ((__leaf__)) --# else --# define __LEAF --# define __LEAF_ATTR --# endif -- - /* GCC can always grok prototypes. For C++ programs we add throw() - to help it optimize the function calls. But this works only with - gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions - as non-throwing using a function attribute since programs can use - the -fexceptions options for C code as well. */ - # if !defined __cplusplus && __GNUC_PREREQ (3, 3) --# define __THROW __attribute__ ((__nothrow__ __LEAF)) -+# define __THROW __attribute__ ((__nothrow__)) - # define __THROWNL __attribute__ ((__nothrow__)) --# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct -+# define __NTH(fct) __attribute__ ((__nothrow__)) fct - # else - # if defined __cplusplus && __GNUC_PREREQ (2,8) - # define __THROW throw () - # define __THROWNL throw () --# define __NTH(fct) __LEAF_ATTR fct throw () -+# define __NTH(fct) fct throw () - # else - # define __THROW - # define __THROWNL diff --git a/eglibc-mandriva-nsswitch.conf.patch b/eglibc-mandriva-nsswitch.conf.patch index fb62c5a..24489c6 100644 --- a/eglibc-mandriva-nsswitch.conf.patch +++ b/eglibc-mandriva-nsswitch.conf.patch @@ -15,12 +15,27 @@ +# +# Legal entries are: +# -+# compat Use compatibility setup -+# nisplus or nis+ Use NIS+ (NIS version 3) -+# nis or yp Use NIS (NIS version 2), also called YP ++# compat Use compatibility setup for NIS ++# db Use the local database (.db) files +# dns Use DNS (Domain Name Service) +# files Use the local files -+# db Use the local database (.db) files ++# hesiod Use Hesiod for user lookups ++# ldap Use LDAP for user lookups ++# mdns Use Multicast DNS (aka Zeroconf/Rendezvous) for host lookups ++# mdns_minimal Like mdns, but only resolve *.local ++# mdns4 Like mdns, but only for IPv4 ++# mdns6 Like mdns, but only for IPv6 ++# mdns4_minimal Like mdns4, but only resolve *.local ++# mdns6_minimal Like mdns6, but only resolve *.local ++# myhostname Resolves local name ++# nis or yp Use NIS (NIS version 2), also called YP ++# nisplus or nis+ Use NIS+ (NIS version 3) ++# pgsql Use NetBIOS for host lookups ++# sss Use SSSD (System Security Services Daemon) ++# tcb Use TCB for host lookups ++# tinycdb Use a constant database for user lookups ++# wins Use NetBIOS for host lookups ++# winbind Uses a Windows or Samba domain controller for host lookups +# [NOTFOUND=return] Stop searching if not found so far +# +# For more information, please read the nsswitch.conf.5 manual page. @@ -30,11 +45,11 @@ +# shadow: files nis +# group: files nis + -+passwd: compat ++passwd: files compat winbind mymachines systemd +shadow: files nis -+group: compat ++group: files compat winbind mymachines systemd + -+hosts: files nis dns wins myhostname ++hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname nis wins mdns4_minimal +networks: files + +services: files diff --git a/eglibc-mandriva-pt_BR-i18nfixes.patch b/eglibc-mandriva-pt_BR-i18nfixes.patch deleted file mode 100644 index 832aa93..0000000 --- a/eglibc-mandriva-pt_BR-i18nfixes.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- glibc-2.21/po/pt_BR.po.ptBR~ 2015-02-07 14:28:42.147072936 +0100 -+++ glibc-2.21/po/pt_BR.po 2015-02-07 14:29:29.831312393 +0100 -@@ -4693,11 +4693,14 @@ msgstr "" - "cache %s:\n" - "\n" - "%15s cache está habilitado\n" --"%15Zd tamanho sugerido%15ld segundos de vida para entradas positivas\n" -+"%15Zd tamanho sugerido\n" -+"%15ld segundos de vida para entradas positivas\n" - "%15ld segundos de vida para entradas negativas\n" - "%15ld hits do cache para entradas positivas\n" - "%15ld hits do cache para entradas negativas\n" --"%15ld%% quantidade de hits no cache\n" -+"%15ld ausências no cache para entradas positivas\n" -+"%15ld ausências no cache para entradas negativas\n" -+"%15ld%% taxa de hits no cache\n" - "%15s verifique o arquivo /etc/%s para mudanças\n" - - #: nscd/pwdcache.c:428 diff --git a/eglibc-mandriva-share-locale.patch b/eglibc-mandriva-share-locale.patch new file mode 100644 index 0000000..0729715 --- /dev/null +++ b/eglibc-mandriva-share-locale.patch @@ -0,0 +1,66 @@ +--- glibc-2.23/aclocal.m4.shareLocale~ 2016-02-18 20:59:26.420203855 +0100 ++++ glibc-2.23/aclocal.m4 2016-02-18 21:01:00.898654328 +0100 +@@ -296,7 +296,7 @@ case "$prefix" in + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/$1'; + # Locale data can be shared between 32-bit and 64-bit libraries. +- libc_cv_complocaledir='${exec_prefix}/lib/locale' ++ libc_cv_complocaledir='${exec_prefix}/share/locale' + fi + ;; + esac]) +--- glibc-2.23/Makeconfig.shareLocale~ 2016-02-18 20:59:26.421203860 +0100 ++++ glibc-2.23/Makeconfig 2016-02-18 21:01:25.644772357 +0100 +@@ -193,7 +193,7 @@ inst_zonedir = $(install_root)$(zonedir) + # Where to install the compiled binary locale archive and compiled + # binary locale files. + ifndef complocaledir +-complocaledir = $(libdir)/locale ++complocaledir = $(datadir)/locale + endif + inst_complocaledir = $(install_root)$(complocaledir) + +--- glibc-2.23/sysdeps/gnu/configure.shareLocale~ 2016-02-18 20:59:26.421203860 +0100 ++++ glibc-2.23/sysdeps/gnu/configure 2016-02-18 21:01:45.136865335 +0100 +@@ -14,7 +14,7 @@ case "$prefix" in + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/lib'; + # Locale data can be shared between 32-bit and 64-bit libraries. +- libc_cv_complocaledir='${exec_prefix}/lib/locale' ++ libc_cv_complocaledir='${exec_prefix}/share/locale' + fi + ;; + esac +--- glibc-2.23/sysdeps/unix/sysv/linux/aarch64/configure.shareLocale~ 2016-02-18 20:59:26.421203860 +0100 ++++ glibc-2.23/sysdeps/unix/sysv/linux/aarch64/configure 2016-02-18 21:02:09.247980359 +0100 +@@ -11,7 +11,7 @@ case "$prefix" in + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/lib64'; + # Locale data can be shared between 32-bit and 64-bit libraries. +- libc_cv_complocaledir='${exec_prefix}/lib/locale' ++ libc_cv_complocaledir='${exec_prefix}/share/locale' + fi + ;; + esac +--- glibc-2.23/sysdeps/unix/sysv/linux/x86_64/64/configure.shareLocale~ 2016-02-18 20:59:26.421203860 +0100 ++++ glibc-2.23/sysdeps/unix/sysv/linux/x86_64/64/configure 2016-02-18 21:03:10.050270476 +0100 +@@ -9,7 +9,7 @@ case "$prefix" in + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/lib64'; + # Locale data can be shared between 32-bit and 64-bit libraries. +- libc_cv_complocaledir='${exec_prefix}/lib/locale' ++ libc_cv_complocaledir='${exec_prefix}/share/locale' + fi + ;; + esac +--- glibc-2.23/sysdeps/unix/sysv/linux/x86_64/x32/configure.shareLocale~ 2016-02-18 20:59:26.422203865 +0100 ++++ glibc-2.23/sysdeps/unix/sysv/linux/x86_64/x32/configure 2016-02-18 21:03:27.015351438 +0100 +@@ -11,7 +11,7 @@ case "$prefix" in + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/libx32'; + # Locale data can be shared between 32-bit and 64-bit libraries. +- libc_cv_complocaledir='${exec_prefix}/lib/locale' ++ libc_cv_complocaledir='${exec_prefix}/share/locale' + fi + ;; + esac diff --git a/eglibc-mandriva-testsuite-ldbl-bits.patch b/eglibc-mandriva-testsuite-ldbl-bits.patch index 637f6c0..e3bbf02 100644 --- a/eglibc-mandriva-testsuite-ldbl-bits.patch +++ b/eglibc-mandriva-testsuite-ldbl-bits.patch @@ -1,6 +1,6 @@ ---- glibc-2.20/stdlib/Makefile.ldbl~ 2014-09-08 21:30:48.771678525 +0200 -+++ glibc-2.20/stdlib/Makefile 2014-09-08 21:34:51.842639720 +0200 -@@ -125,9 +125,16 @@ test-canon-ARGS = --test-dir=${common-ob +--- glibc-2.27/stdlib/Makefile.0118~ 2018-02-02 20:31:07.402589690 +0100 ++++ glibc-2.27/stdlib/Makefile 2018-02-02 20:31:53.077710331 +0100 +@@ -190,9 +190,16 @@ test-canon-ARGS = --test-dir=${common-ob bug-fmtmsg1-ENV = SEV_LEVEL=foo,11,newsev @@ -12,7 +12,7 @@ + $(objpfx)isomac.out: $(objpfx)isomac $(dir $<)$(notdir $<) '$(CC)' \ - '-I../include $(+sysdep-includes) $(sysincludes) -I..' > $<.out; \ + '-I../include $(+sysdep-includes) $(sysincludes) -I..' > $@; \ + '$(isomac-includes)' > $<.out \ $(evaluate-test) diff --git a/gcc-8-fix.patch b/gcc-8-fix.patch new file mode 100644 index 0000000..d19deca --- /dev/null +++ b/gcc-8-fix.patch @@ -0,0 +1,28 @@ +Subject: [PATCH] Replace strncpy with memccpy to fix -Wstringop-truncation + +From : https://patchwork.sourceware.org/patch/26437/ + +--- +diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c +index 8dc021e73d..b53284f889 100644 +--- a/nis/nss_nisplus/nisplus-parser.c ++++ b/nis/nss_nisplus/nisplus-parser.c +@@ -87,7 +87,7 @@ _nss_nisplus_parse_pwent (nis_result *result, struct passwd *pw, + if (len >= room_left) + goto no_more_room; + +- strncpy (first_unused, numstr, len); ++ memcpy (first_unused, numstr, len); + first_unused[len] = '\0'; + numstr = first_unused; + } +@@ -103,7 +103,7 @@ _nss_nisplus_parse_pwent (nis_result *result, struct passwd *pw, + if (len >= room_left) + goto no_more_room; + +- strncpy (first_unused, numstr, len); ++ memcpy (first_unused, numstr, len); + first_unused[len] = '\0'; + numstr = first_unused; + } + diff --git a/glibc-2.17-gold.patch b/glibc-2.17-gold.patch deleted file mode 100644 index b144a0d..0000000 --- a/glibc-2.17-gold.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- glibc-2.21/configure.ac.gold~ 2015-02-07 14:30:19.652562579 +0100 -+++ glibc-2.21/configure.ac 2015-02-07 14:31:12.232826621 +0100 -@@ -912,6 +912,16 @@ AC_CHECK_PROG_VER(AS, $AS, --version, - [GNU assembler.* \([0-9]*\.[0-9.]*\)], - [2.1[0-9][0-9]*|2.2[2-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*], - AS=: critic_missing="$critic_missing as") -+# If the system defaulted to using gold, and the compiler has suggested -+# we use a linker that is actually gold, then we ignore the suggestion -+# and use ld.bfd instead. This won't fix the implicit uses of gold by -+# the compiler, but it will correctly use the bfd ld for assembling -+# the library. -+gnu_ld_name="`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`" -+if test "$gnu_ld_name" = "gold"; then -+ AC_MSG_NOTICE([$LD is actually gold using ld.bfd instead]) -+ LD=ld.bfd -+fi - AC_CHECK_PROG_VER(LD, $LD, --version, - [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], - [2.1[0-9][0-9]*|2.2[2-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*], diff --git a/glibc-2.19-no-__builtin_va_arg_pack-with-clang.patch b/glibc-2.19-no-__builtin_va_arg_pack-with-clang.patch new file mode 100644 index 0000000..2b3623b --- /dev/null +++ b/glibc-2.19-no-__builtin_va_arg_pack-with-clang.patch @@ -0,0 +1,11 @@ +--- glibc-2.19/misc/sys/cdefs.h.omv~ 2014-06-22 14:53:05.862531155 +0200 ++++ glibc-2.19/misc/sys/cdefs.h 2014-06-22 14:53:21.560531205 +0200 +@@ -328,7 +328,7 @@ + + /* GCC 4.3 and above allow passing all anonymous arguments of an + __extern_always_inline function to some other vararg function. */ +-#if __GNUC_PREREQ (4,3) ++#if __GNUC_PREREQ (4,3) && !defined(__clang__) + # define __va_arg_pack() __builtin_va_arg_pack () + # define __va_arg_pack_len() __builtin_va_arg_pack_len () + #endif diff --git a/glibc-2.19-nscd-socket-and-pid-moved-from-varrun-to-run.patch b/glibc-2.19-nscd-socket-and-pid-moved-from-varrun-to-run.patch new file mode 100644 index 0000000..ec69332 --- /dev/null +++ b/glibc-2.19-nscd-socket-and-pid-moved-from-varrun-to-run.patch @@ -0,0 +1,15 @@ +--- glibc-2.19/nscd/nscd-client.h.runpath~ 2014-06-04 13:30:35.700671072 +0200 ++++ glibc-2.19/nscd/nscd-client.h 2014-06-04 13:30:00.783702730 +0200 +@@ -34,10 +34,10 @@ + #define NSCD_VERSION 2 + + /* Path of the file where the PID of the running system is stored. */ +-#define _PATH_NSCDPID "/var/run/nscd/nscd.pid" ++#define _PATH_NSCDPID "/run/nscd/nscd.pid" + + /* Path for the Unix domain socket. */ +-#define _PATH_NSCDSOCKET "/var/run/nscd/socket" ++#define _PATH_NSCDSOCKET "/run/nscd/socket" + + /* Path for the configuration file. */ + #define _PATH_NSCDCONF "/etc/nscd.conf" diff --git a/glibc-2.20-i586-hptiming.patch b/glibc-2.20-i586-hptiming.patch deleted file mode 100644 index 63d4d5a..0000000 --- a/glibc-2.20-i586-hptiming.patch +++ /dev/null @@ -1,122 +0,0 @@ -2011-2014 Thomas Backlund - - * Rebased / adapted for new glibc - -2006-05-17 Gwenole Beauchesne - - * Update and simplify for glibc 2.4.90. - -2002-12-07 Gwenole Beauchesne - - Let an i586 rtld load i686 libraries (especially libpthread) - - * elf/rtld.c (HP_TIMING_AVAIL): Redefine to HP_TIMING_HWCAP_AVAIL - since early statistics require high-precision timers. - * sysdeps/generic/ldsodefs.h (rtld_global): Declare - _dl_cpuclock_offset if HP_TIMING_HWCAP_AVAIL is defined too. - - * sysdeps/unix/sysv/linux/i386/i586/Makefile: New file. - * sysdeps/unix/sysv/linux/i386/i586/hp-timing.c: New file. - * sysdeps/unix/sysv/linux/i386/i586/hp-timing.h: New file. ---- - elf/rtld.c | 12 ++++++++++- - sysdeps/generic/ldsodefs.h | 2 - - sysdeps/i386/i586/Makefile | 4 +++ - sysdeps/i386/i586/hp-timing.c | 2 + - sysdeps/i386/i586/hp-timing.h | 43 ++++++++++++++++++++++++++++++++++++++++++ - -diff -Nurp glibc-2.20.orig/elf/rtld.c glibc-2.20/elf/rtld.c ---- glibc-2.20.orig/elf/rtld.c 2014-09-07 11:09:09.000000000 +0300 -+++ glibc-2.20/elf/rtld.c 2014-09-08 18:12:17.640928030 +0300 -@@ -16,6 +16,9 @@ - License along with the GNU C Library; if not, see - . */ - -+/* Early statistics require high-precision timing. */ -+#define NEED_HP_TIMING_HWCAP_AVAIL 1 -+ - #include - #include - #include -@@ -195,6 +198,12 @@ static void dl_main (const ElfW(Phdr) *p - static struct libname_list _dl_rtld_libname; - static struct libname_list _dl_rtld_libname2; - -+/* Run-time detect availability of high-precision timer? */ -+#ifdef HP_TIMING_HWCAP_AVAIL -+# undef HP_SMALL_TIMING_AVAIL -+# define HP_SMALL_TIMING_AVAIL HP_TIMING_HWCAP_AVAIL -+#endif -+ - /* Variable for statistics. */ - #ifndef HP_TIMING_NONAVAIL - static hp_timing_t relocate_time; -@@ -296,7 +305,8 @@ _dl_start_final (void *arg, struct dl_st - # endif - #endif - -- HP_TIMING_NOW (GL(dl_cpuclock_offset)); -+ if (HP_SMALL_TIMING_AVAIL) -+ HP_TIMING_NOW (GL(dl_cpuclock_offset)); - - /* Initialize the stack end variable. */ - __libc_stack_end = __builtin_frame_address (0); -diff -Nurp glibc-2.20.orig/sysdeps/generic/ldsodefs.h glibc-2.20/sysdeps/generic/ldsodefs.h ---- glibc-2.20.orig/sysdeps/generic/ldsodefs.h 2014-09-07 11:09:09.000000000 +0300 -+++ glibc-2.20/sysdeps/generic/ldsodefs.h 2014-09-08 18:17:19.655631175 +0300 -@@ -319,7 +319,7 @@ struct rtld_global - /* The object to be initialized first. */ - EXTERN struct link_map *_dl_initfirst; - --#if HP_SMALL_TIMING_AVAIL -+#if HP_SMALL_TIMING_AVAIL || defined HP_TIMING_HWCAP_AVAIL - /* Start time on CPU clock. */ - EXTERN hp_timing_t _dl_cpuclock_offset; - #endif -diff -Nurp glibc-2.20.orig/sysdeps/i386/i586/hp-timing.h glibc-2.20/sysdeps/i386/i586/hp-timing.h ---- glibc-2.20.orig/sysdeps/i386/i586/hp-timing.h 1970-01-01 02:00:00.000000000 +0200 -+++ glibc-2.20/sysdeps/i386/i586/hp-timing.h 2014-09-08 18:07:38.466353624 +0300 -@@ -0,0 +1,43 @@ -+#ifndef _HP_HWCAP_TIMING_H -+#define _HP_HWCAP_TIMING_H 1 -+ -+/* We can use the i686 implementation with slight changes. */ -+#include -+ -+/* We need the definition of HWCAP_I386_TSC. */ -+#include -+ -+/* We need to perform a runtime check for the timestamp register. */ -+#undef HP_SMALL_TIMING_AVAIL -+#define HP_SMALL_TIMING_AVAIL (0) -+ -+/* HP_TIMING_HWCAP_AVAIL: this macro performs a run-time check for the -+ capability. */ -+#define HP_TIMING_HWCAP_AVAIL (_dl_hp_timing_avail()) -+ -+/* Perform the TSC check. */ -+#ifdef NEED_HP_TIMING_HWCAP_AVAIL -+static inline -+unsigned int -+_dl_cpuid_edx (unsigned int op) -+{ -+ unsigned int edx; -+ __asm__ __volatile__("push %%ebx ; cpuid ; pop %%ebx" -+ : "=d" (edx) : "a" (op) : "ecx"); -+ return edx; -+} -+ -+static int -+internal_function -+_dl_hp_timing_avail (void) -+{ -+ static int has_tsc = -1; -+ -+ if (__builtin_expect (has_tsc == -1, 0)) -+ has_tsc = (_dl_cpuid_edx(1) & HWCAP_I386_TSC) == HWCAP_I386_TSC; -+ -+ return has_tsc; -+} -+#endif -+ -+#endif /* hp-timing.h */ diff --git a/glibc-2.22-blacklist-CPUs-from-lock-elision.patch b/glibc-2.22-blacklist-CPUs-from-lock-elision.patch deleted file mode 100644 index cb6a543..0000000 --- a/glibc-2.22-blacklist-CPUs-from-lock-elision.patch +++ /dev/null @@ -1,92 +0,0 @@ ---- glibc-2.24/sysdeps/unix/sysv/linux/x86/elision-conf.c.0091~ 2016-08-02 04:01:36.000000000 +0200 -+++ glibc-2.24/sysdeps/unix/sysv/linux/x86/elision-conf.c 2016-08-17 17:04:53.815350950 +0200 -@@ -66,8 +66,11 @@ elision_init (int argc __attribute__ ((u - #ifdef ENABLE_LOCK_ELISION - __pthread_force_elision = __libc_enable_secure ? 0 : __elision_available; - #endif -- if (!HAS_CPU_FEATURE (RTM)) -+ if (!HAS_CPU_FEATURE (RTM)) { - __elision_aconf.retry_try_xbegin = 0; /* Disable elision on rwlocks */ -+ __elision_available = 0; -+ __pthread_force_elision = 0; -+ } - } - - #ifdef SHARED ---- glibc-2.24/sysdeps/x86/cpu-features.c.0091~ 2016-08-02 04:01:36.000000000 +0200 -+++ glibc-2.24/sysdeps/x86/cpu-features.c 2016-08-17 17:10:06.401454187 +0200 -@@ -22,7 +22,7 @@ - static void - get_common_indeces (struct cpu_features *cpu_features, - unsigned int *family, unsigned int *model, -- unsigned int *extended_model) -+ unsigned int *extended_model, unsigned int *stepping) - { - if (family) - { -@@ -34,6 +34,7 @@ get_common_indeces (struct cpu_features - *family = (eax >> 8) & 0x0f; - *model = (eax >> 4) & 0x0f; - *extended_model = (eax >> 12) & 0xf0; -+ *stepping = eax & 0x0f; - if (*family == 0x0f) - { - *family += (eax >> 20) & 0xff; -@@ -97,6 +98,7 @@ init_cpu_features (struct cpu_features * - unsigned int ebx, ecx, edx; - unsigned int family = 0; - unsigned int model = 0; -+ unsigned int stepping = 0; - enum cpu_features_kind kind; - - #if !HAS_CPUID -@@ -116,7 +118,7 @@ init_cpu_features (struct cpu_features * - - kind = arch_kind_intel; - -- get_common_indeces (cpu_features, &family, &model, &extended_model); -+ get_common_indeces (cpu_features, &family, &model, &extended_model, &stepping); - - if (family == 0x06) - { -@@ -213,7 +215,7 @@ init_cpu_features (struct cpu_features * - - kind = arch_kind_amd; - -- get_common_indeces (cpu_features, &family, &model, &extended_model); -+ get_common_indeces (cpu_features, &family, &model, &extended_model, &stepping); - - ecx = cpu_features->cpuid[COMMON_CPUID_INDEX_1].ecx; - -@@ -250,7 +252,7 @@ init_cpu_features (struct cpu_features * - else - { - kind = arch_kind_other; -- get_common_indeces (cpu_features, NULL, NULL, NULL); -+ get_common_indeces (cpu_features, NULL, NULL, NULL, NULL); - } - - /* Support i586 if CX8 is available. */ -@@ -265,6 +267,12 @@ init_cpu_features (struct cpu_features * - no_cpuid: - #endif - -+ /* Disable Intel TSX (HLE and RTM) due to erratum HSD136/HSW136 -+ on Haswell processors */ -+ if (kind == arch_kind_intel && family == 6 && -+ ((model == 63 && stepping <= 2) || (model == 60 && stepping <= 3) || -+ (model == 69 && stepping <= 1) || (model == 70 && stepping <= 1))) -+ cpu_features->cpuid[COMMON_CPUID_INDEX_7].ebx &= ~(bit_cpu_RTM | bit_cpu_HLE); - cpu_features->family = family; - cpu_features->model = model; - cpu_features->kind = kind; ---- glibc-2.24/sysdeps/x86/cpu-features.h.0091~ 2016-08-02 04:01:36.000000000 +0200 -+++ glibc-2.24/sysdeps/x86/cpu-features.h 2016-08-17 17:04:53.815350950 +0200 -@@ -57,6 +57,7 @@ - /* COMMON_CPUID_INDEX_7. */ - #define bit_cpu_ERMS (1 << 9) - #define bit_cpu_RTM (1 << 11) -+#define bit_cpu_HLE (1 << 4) - #define bit_cpu_AVX2 (1 << 5) - #define bit_cpu_AVX512F (1 << 16) - #define bit_cpu_AVX512DQ (1 << 17) diff --git a/glibc-2.24-CVE-2017-15670.patch b/glibc-2.24-CVE-2017-15670.patch deleted file mode 100644 index 3fdf4ae..0000000 --- a/glibc-2.24-CVE-2017-15670.patch +++ /dev/null @@ -1,31 +0,0 @@ -From a76376df7c07e577a9515c3faa5dbd50bda5da07 Mon Sep 17 00:00:00 2001 -From: Paul Eggert -Date: Fri, 20 Oct 2017 18:41:14 +0200 -Subject: [PATCH] CVE-2017-15670: glob: Fix one-byte overflow [BZ #22320] - -(cherry picked from commit c369d66e5426a30e4725b100d5cd28e372754f90) - -Upstream-Status: Backport -CVE: CVE-2017-15670 -Affects: glibc < 2.27 -signed-off-by: Armin Kuster - ---- - ChangeLog | 6 ++++++ - NEWS | 5 +++++ - posix/glob.c | 2 +- - 3 files changed, 12 insertions(+), 1 deletion(-) - -Index: git/posix/glob.c -=================================================================== ---- git.orig/posix/glob.c -+++ git/posix/glob.c -@@ -843,7 +843,7 @@ glob (const char *pattern, int flags, in - *p = '\0'; - } - else -- *((char *) mempcpy (newp, dirname + 1, end_name - dirname)) -+ *((char *) mempcpy (newp, dirname + 1, end_name - dirname - 1)) - = '\0'; - user_name = newp; - } diff --git a/glibc-2.24-CVE-2017-15804.patch b/glibc-2.24-CVE-2017-15804.patch deleted file mode 100644 index 9637ad4..0000000 --- a/glibc-2.24-CVE-2017-15804.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 94825c8924b80518214ad9e3ca1f6589f209592c Mon Sep 17 00:00:00 2001 -From: Paul Eggert -Date: Sun, 22 Oct 2017 10:00:57 +0200 -Subject: [PATCH] glob: Fix buffer overflow during GLOB_TILDE unescaping [BZ - #22332] - -(cherry picked from commit a159b53fa059947cc2548e3b0d5bdcf7b9630ba8) ---- - ChangeLog | 6 ++++++ - NEWS | 4 ++++ - posix/glob.c | 4 ++-- - 3 files changed, 12 insertions(+), 2 deletions(-) - -diff --git a/posix/glob.c b/posix/glob.c -index 026bc06..f3fa807 100644 ---- a/posix/glob.c -+++ b/posix/glob.c -@@ -863,11 +863,11 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int), - char *p = mempcpy (newp, dirname + 1, - unescape - dirname - 1); - char *q = unescape; -- while (*q != '\0') -+ while (q != end_name) - { - if (*q == '\\') - { -- if (q[1] == '\0') -+ if (q + 1 == end_name) - { - /* "~fo\\o\\" unescape to user_name "foo\\", - but "~fo\\o\\/" unescape to user_name --- -2.9.3 - diff --git a/glibc-2.24-CVE-2017-16997.patch b/glibc-2.24-CVE-2017-16997.patch deleted file mode 100644 index 8b1c843..0000000 --- a/glibc-2.24-CVE-2017-16997.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 1998843fb78d9b3ebc0216757042ce4b00dd08a1 Mon Sep 17 00:00:00 2001 -From: Aurelien Jarno -Date: Sat, 30 Dec 2017 10:54:23 +0100 -Subject: [PATCH] elf: Check for empty tokens before dynamic string token - expansion [BZ #22625] - -The fillin_rpath function in elf/dl-load.c loops over each RPATH or -RUNPATH tokens and interprets empty tokens as the current directory -("./"). In practice the check for empty token is done *after* the -dynamic string token expansion. The expansion process can return an -empty string for the $ORIGIN token if __libc_enable_secure is set -or if the path of the binary can not be determined (/proc not mounted). - -Fix that by moving the check for empty tokens before the dynamic string -token expansion. In addition, check for NULL pointer or empty strings -return by expand_dynamic_string_token. - -The above changes highlighted a bug in decompose_rpath, an empty array -is represented by the first element being NULL at the fillin_rpath -level, but by using a -1 pointer in decompose_rpath and other functions. - -Changelog: - [BZ #22625] - * elf/dl-load.c (fillin_rpath): Check for empty tokens before dynamic - string token expansion. Check for NULL pointer or empty string possibly - returned by expand_dynamic_string_token. - (decompose_rpath): Check for empty path after dynamic string - token expansion. -(cherry picked from commit 3e3c904daef69b8bf7d5cc07f793c9f07c3553ef) ---- - ChangeLog | 10 ++++++++++ - NEWS | 4 ++++ - elf/dl-load.c | 49 +++++++++++++++++++++++++++++++++---------------- - 3 files changed, 47 insertions(+), 16 deletions(-) - -diff --git a/elf/dl-load.c b/elf/dl-load.c -index ec8cefb..58e7220 100644 ---- a/elf/dl-load.c -+++ b/elf/dl-load.c -@@ -434,31 +434,40 @@ fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep, - { - char *cp; - size_t nelems = 0; -- char *to_free; - - while ((cp = __strsep (&rpath, sep)) != NULL) - { - struct r_search_path_elem *dirp; -+ char *to_free = NULL; -+ size_t len = 0; - -- to_free = cp = expand_dynamic_string_token (l, cp, 1); -+ /* `strsep' can pass an empty string. */ -+ if (*cp != '\0') -+ { -+ to_free = cp = expand_dynamic_string_token (l, cp, 1); - -- size_t len = strlen (cp); -+ /* expand_dynamic_string_token can return NULL in case of empty -+ path or memory allocation failure. */ -+ if (cp == NULL) -+ continue; - -- /* `strsep' can pass an empty string. This has to be -- interpreted as `use the current directory'. */ -- if (len == 0) -- { -- static const char curwd[] = "./"; -- cp = (char *) curwd; -- } -+ /* Compute the length after dynamic string token expansion and -+ ignore empty paths. */ -+ len = strlen (cp); -+ if (len == 0) -+ { -+ free (to_free); -+ continue; -+ } - -- /* Remove trailing slashes (except for "/"). */ -- while (len > 1 && cp[len - 1] == '/') -- --len; -+ /* Remove trailing slashes (except for "/"). */ -+ while (len > 1 && cp[len - 1] == '/') -+ --len; - -- /* Now add one if there is none so far. */ -- if (len > 0 && cp[len - 1] != '/') -- cp[len++] = '/'; -+ /* Now add one if there is none so far. */ -+ if (len > 0 && cp[len - 1] != '/') -+ cp[len++] = '/'; -+ } - - /* Make sure we don't use untrusted directories if we run SUID. */ - if (__glibc_unlikely (check_trusted) && !is_trusted_path (cp, len)) -@@ -622,6 +631,14 @@ decompose_rpath (struct r_search_path_struct *sps, - necessary. */ - free (copy); - -+ /* There is no path after expansion. */ -+ if (result[0] == NULL) -+ { -+ free (result); -+ sps->dirs = (struct r_search_path_elem **) -1; -+ return false; -+ } -+ - sps->dirs = result; - /* The caller will change this value if we haven't used a real malloc. */ - sps->malloced = 1; --- -2.9.3 - diff --git a/glibc-2.24-CVE-2017-18269.patch b/glibc-2.24-CVE-2017-18269.patch deleted file mode 100644 index 4b7e9d9..0000000 --- a/glibc-2.24-CVE-2017-18269.patch +++ /dev/null @@ -1,159 +0,0 @@ -From cd66c0e584c6d692bc8347b5e72723d02b8a8ada Mon Sep 17 00:00:00 2001 -From: Andrew Senkevich -Date: Fri, 23 Mar 2018 16:19:45 +0100 -Subject: [PATCH 1/1] Fix i386 memmove issue (bug 22644). - - [BZ #22644] - * sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S: Fixed - branch conditions. - * string/test-memmove.c (do_test2): New testcase. ---- - ChangeLog | 8 +++ - string/test-memmove.c | 58 ++++++++++++++++++++++ - .../i386/i686/multiarch/memcpy-sse2-unaligned.S | 12 ++--- - 3 files changed, 72 insertions(+), 6 deletions(-) - -diff --git a/string/test-memmove.c b/string/test-memmove.c -index edc7a4c..64e3651 100644 ---- a/string/test-memmove.c -+++ b/string/test-memmove.c -@@ -24,6 +24,7 @@ - # define TEST_NAME "memmove" - #endif - #include "test-string.h" -+#include - - char *simple_memmove (char *, const char *, size_t); - -@@ -245,6 +246,60 @@ do_random_tests (void) - } - } - -+static void -+do_test2 (void) -+{ -+ size_t size = 0x20000000; -+ uint32_t * large_buf; -+ -+ large_buf = mmap ((void*) 0x70000000, size, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANON, -1, 0); -+ -+ if (large_buf == MAP_FAILED) -+ error (EXIT_UNSUPPORTED, errno, "Large mmap failed"); -+ -+ if ((uintptr_t) large_buf > 0x80000000 - 128 -+ || 0x80000000 - (uintptr_t) large_buf > 0x20000000) -+ { -+ error (0, 0, "Large mmap allocated improperly"); -+ ret = EXIT_UNSUPPORTED; -+ munmap ((void *) large_buf, size); -+ return; -+ } -+ -+ size_t bytes_move = 0x80000000 - (uintptr_t) large_buf; -+ size_t arr_size = bytes_move / sizeof (uint32_t); -+ size_t i; -+ -+ FOR_EACH_IMPL (impl, 0) -+ { -+ for (i = 0; i < arr_size; i++) -+ large_buf[i] = (uint32_t) i; -+ -+ uint32_t * dst = &large_buf[33]; -+ -+#ifdef TEST_BCOPY -+ CALL (impl, (char *) large_buf, (char *) dst, bytes_move); -+#else -+ CALL (impl, (char *) dst, (char *) large_buf, bytes_move); -+#endif -+ -+ for (i = 0; i < arr_size; i++) -+ { -+ if (dst[i] != (uint32_t) i) -+ { -+ error (0, 0, -+ "Wrong result in function %s dst \"%p\" src \"%p\" offset \"%zd\"", -+ impl->name, dst, large_buf, i); -+ ret = 1; -+ break; -+ } -+ } -+ } -+ -+ munmap ((void *) large_buf, size); -+} -+ - int - test_main (void) - { -@@ -284,6 +339,9 @@ test_main (void) - } - - do_random_tests (); -+ -+ do_test2 (); -+ - return ret; - } - -diff --git a/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S b/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S -index 9c3bbe7..9aa17de 100644 ---- a/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S -+++ b/sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S -@@ -72,7 +72,7 @@ ENTRY (MEMCPY) - cmp %edx, %eax - - # ifdef USE_AS_MEMMOVE -- jg L(check_forward) -+ ja L(check_forward) - - L(mm_len_0_or_more_backward): - /* Now do checks for lengths. We do [0..16], [16..32], [32..64], [64..128] -@@ -81,7 +81,7 @@ L(mm_len_0_or_more_backward): - jbe L(mm_len_0_16_bytes_backward) - - cmpl $32, %ecx -- jg L(mm_len_32_or_more_backward) -+ ja L(mm_len_32_or_more_backward) - - /* Copy [0..32] and return. */ - movdqu (%eax), %xmm0 -@@ -92,7 +92,7 @@ L(mm_len_0_or_more_backward): - - L(mm_len_32_or_more_backward): - cmpl $64, %ecx -- jg L(mm_len_64_or_more_backward) -+ ja L(mm_len_64_or_more_backward) - - /* Copy [0..64] and return. */ - movdqu (%eax), %xmm0 -@@ -107,7 +107,7 @@ L(mm_len_32_or_more_backward): - - L(mm_len_64_or_more_backward): - cmpl $128, %ecx -- jg L(mm_len_128_or_more_backward) -+ ja L(mm_len_128_or_more_backward) - - /* Copy [0..128] and return. */ - movdqu (%eax), %xmm0 -@@ -132,7 +132,7 @@ L(mm_len_128_or_more_backward): - add %ecx, %eax - cmp %edx, %eax - movl SRC(%esp), %eax -- jle L(forward) -+ jbe L(forward) - PUSH (%esi) - PUSH (%edi) - PUSH (%ebx) -@@ -269,7 +269,7 @@ L(check_forward): - add %edx, %ecx - cmp %eax, %ecx - movl LEN(%esp), %ecx -- jle L(forward) -+ jbe L(forward) - - /* Now do checks for lengths. We do [0..16], [0..32], [0..64], [0..128] - separately. */ --- -2.9.3 - diff --git a/glibc-2.24-CVE-2018-1000001.patch b/glibc-2.24-CVE-2018-1000001.patch deleted file mode 100644 index 82353e1..0000000 --- a/glibc-2.24-CVE-2018-1000001.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 52a713fdd0a30e1bd79818e2e3c4ab44ddca1a94 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sun, 7 Jan 2018 02:03:41 +0000 -Subject: [PATCH] linux: make getcwd(3) fail if it cannot obtain an absolute - path [BZ #22679] - -Currently getcwd(3) can succeed without returning an absolute path -because the underlying getcwd syscall, starting with linux commit -v2.6.36-rc1~96^2~2, may succeed without returning an absolute path. - -This is a conformance issue because "The getcwd() function shall -place an absolute pathname of the current working directory -in the array pointed to by buf, and return buf". - -This is also a security issue because a non-absolute path returned -by getcwd(3) causes a buffer underflow in realpath(3). - -Fix this by checking the path returned by getcwd syscall and falling -back to generic_getcwd if the path is not absolute, effectively making -getcwd(3) fail with ENOENT. The error code is chosen for consistency -with the case when the current directory is unlinked. - -[BZ #22679] -CVE-2018-1000001 -* sysdeps/unix/sysv/linux/getcwd.c (__getcwd): Fall back to -generic_getcwd if the path returned by getcwd syscall is not absolute. -* io/tst-getcwd-abspath.c: New test. -* io/Makefile (tests): Add tst-getcwd-abspath. ---- - ChangeLog | 9 ++++++ - NEWS | 4 +++ - io/Makefile | 2 +- - io/tst-getcwd-abspath.c | 66 ++++++++++++++++++++++++++++++++++++++++ - sysdeps/unix/sysv/linux/getcwd.c | 8 ++--- - 5 files changed, 84 insertions(+), 5 deletions(-) - create mode 100644 io/tst-getcwd-abspath.c - -diff --git a/sysdeps/unix/sysv/linux/getcwd.c b/sysdeps/unix/sysv/linux/getcwd.c -index f545106..866b9d2 100644 ---- a/sysdeps/unix/sysv/linux/getcwd.c -+++ b/sysdeps/unix/sysv/linux/getcwd.c -@@ -76,7 +76,7 @@ __getcwd (char *buf, size_t size) - int retval; - - retval = INLINE_SYSCALL (getcwd, 2, path, alloc_size); -- if (retval >= 0) -+ if (retval > 0 && path[0] == '/') - { - #ifndef NO_ALLOCATION - if (buf == NULL && size == 0) -@@ -92,10 +92,10 @@ __getcwd (char *buf, size_t size) - return buf; - } - -- /* The system call cannot handle paths longer than a page. -- Neither can the magic symlink in /proc/self. Just use the -+ /* The system call either cannot handle paths longer than a page -+ or can succeed without returning an absolute path. Just use the - generic implementation right away. */ -- if (errno == ENAMETOOLONG) -+ if (retval >= 0 || errno == ENAMETOOLONG) - { - #ifndef NO_ALLOCATION - if (buf == NULL && size == 0) --- -2.9.3 - diff --git a/glibc-2.24-CVE-2018-11236.patch b/glibc-2.24-CVE-2018-11236.patch deleted file mode 100644 index c78bb97..0000000 --- a/glibc-2.24-CVE-2018-11236.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 5460617d1567657621107d895ee2dd83bc1f88f2 Mon Sep 17 00:00:00 2001 -From: Paul Pluzhnikov -Date: Tue, 8 May 2018 18:12:41 -0700 -Subject: [PATCH] Fix BZ 22786: integer addition overflow may cause stack - buffer overflow when realpath() input length is close to SSIZE_MAX. - -2018-05-09 Paul Pluzhnikov - - [BZ #22786] - * stdlib/canonicalize.c (__realpath): Fix overflow in path length - computation. - * stdlib/Makefile (test-bz22786): New test. - * stdlib/test-bz22786.c: New test. ---- - ChangeLog | 8 +++++ - stdlib/Makefile | 2 +- - stdlib/canonicalize.c | 2 +- - stdlib/test-bz22786.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 100 insertions(+), 2 deletions(-) - create mode 100644 stdlib/test-bz22786.c - -diff --git a/stdlib/canonicalize.c b/stdlib/canonicalize.c -index 4135f3f..390fb43 100644 ---- a/stdlib/canonicalize.c -+++ b/stdlib/canonicalize.c -@@ -181,7 +181,7 @@ __realpath (const char *name, char *resolved) - extra_buf = __alloca (path_max); - - len = strlen (end); -- if ((long int) (n + len) >= path_max) -+ if (path_max - n <= len) - { - __set_errno (ENAMETOOLONG); - goto error; --- -2.9.3 - diff --git a/glibc-2.24-CVE-2018-6485.patch b/glibc-2.24-CVE-2018-6485.patch deleted file mode 100644 index 9cb2fa2..0000000 --- a/glibc-2.24-CVE-2018-6485.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 8e448310d74b283c5cd02b9ed7fb997b47bf9b22 Mon Sep 17 00:00:00 2001 -From: Arjun Shankar -Date: Thu, 18 Jan 2018 16:47:06 +0000 -Subject: [PATCH] Fix integer overflows in internal memalign and malloc - functions [BZ #22343] - -When posix_memalign is called with an alignment less than MALLOC_ALIGNMENT -and a requested size close to SIZE_MAX, it falls back to malloc code -(because the alignment of a block returned by malloc is sufficient to -satisfy the call). In this case, an integer overflow in _int_malloc leads -to posix_memalign incorrectly returning successfully. - -Upon fixing this and writing a somewhat thorough regression test, it was -discovered that when posix_memalign is called with an alignment larger than -MALLOC_ALIGNMENT (so it uses _int_memalign instead) and a requested size -close to SIZE_MAX, a different integer overflow in _int_memalign leads to -posix_memalign incorrectly returning successfully. - -Both integer overflows affect other memory allocation functions that use -_int_malloc (one affected malloc in x86) or _int_memalign as well. - -This commit fixes both integer overflows. In addition to this, it adds a -regression test to guard against false successful allocations by the -following memory allocation functions when called with too-large allocation -sizes and, where relevant, various valid alignments: -malloc, realloc, calloc, reallocarray, memalign, posix_memalign, -aligned_alloc, valloc, and pvalloc. ---- - ChangeLog | 10 ++ - malloc/Makefile | 1 + - malloc/malloc.c | 30 +++-- - malloc/tst-malloc-too-large.c | 253 ++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 286 insertions(+), 8 deletions(-) - create mode 100644 malloc/tst-malloc-too-large.c - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index f5aafd2..7889fb1 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -1224,14 +1224,21 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - MINSIZE : \ - ((req) + SIZE_SZ + MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK) - --/* Same, except also perform argument check */ -- --#define checked_request2size(req, sz) \ -- if (REQUEST_OUT_OF_RANGE (req)) { \ -- __set_errno (ENOMEM); \ -- return 0; \ -- } \ -- (sz) = request2size (req); -+/* Same, except also perform an argument and result check. First, we check -+ that the padding done by request2size didn't result in an integer -+ overflow. Then we check (using REQUEST_OUT_OF_RANGE) that the resulting -+ size isn't so large that a later alignment would lead to another integer -+ overflow. */ -+#define checked_request2size(req, sz) \ -+({ \ -+ (sz) = request2size (req); \ -+ if (((sz) < (req)) \ -+ || REQUEST_OUT_OF_RANGE (sz)) \ -+ { \ -+ __set_errno (ENOMEM); \ -+ return 0; \ -+ } \ -+}) - - /* - --------------- Physical chunk operations --------------- -@@ -4678,6 +4685,13 @@ _int_memalign (mstate av, size_t alignment, size_t bytes) - */ - - -+ /* Check for overflow. */ -+ if (nb > SIZE_MAX - alignment - MINSIZE) -+ { -+ __set_errno (ENOMEM); -+ return 0; -+ } -+ - /* Call malloc with worst case padding to hit alignment. */ - - m = (char *) (_int_malloc (av, nb + alignment + MINSIZE)); --- -2.9.3 - diff --git a/glibc-2.25-force-use-ld-bfd.patch b/glibc-2.25-force-use-ld-bfd.patch new file mode 100644 index 0000000..504b142 --- /dev/null +++ b/glibc-2.25-force-use-ld-bfd.patch @@ -0,0 +1,13 @@ +--- glibc-2.27/Makeconfig.0133~ 2018-02-02 20:36:50.869704855 +0100 ++++ glibc-2.27/Makeconfig 2018-02-02 20:37:32.598866637 +0100 +@@ -360,6 +360,10 @@ else + real-static-start-installed-name = $(static-start-installed-name) + endif + ++# glibc doesn't like gold and lld ++LDFLAGS.so += -fuse-ld=bfd ++LDFLAGS-rtld += -fuse-ld=bfd ++ + ifeq (yesyes,$(build-shared)$(have-z-combreloc)) + combreloc-LDFLAGS = -Wl,-z,combreloc + LDFLAGS.so += $(combreloc-LDFLAGS) diff --git a/glibc-2.26-no-attribute-leaf-for-clang.patch b/glibc-2.26-no-attribute-leaf-for-clang.patch new file mode 100644 index 0000000..6fe8ea6 --- /dev/null +++ b/glibc-2.26-no-attribute-leaf-for-clang.patch @@ -0,0 +1,11 @@ +--- glibc-2.26/misc/sys/cdefs.h.omv~ 2018-01-24 11:32:15.276543892 +0100 ++++ glibc-2.26/misc/sys/cdefs.h 2018-01-24 11:32:47.208618287 +0100 +@@ -38,7 +38,7 @@ + + /* All functions, except those with callbacks or those that + synchronize memory, are leaf functions. */ +-# if __GNUC_PREREQ (4, 6) && !defined _LIBC ++# if __GNUC_PREREQ (4, 6) && !defined _LIBC && (!defined(__clang__) || __has_attribute(leaf)) + # define __LEAF , __leaf__ + # define __LEAF_ATTR __attribute__ ((__leaf__)) + # else diff --git a/glibc-2.27-clang-_Float.patch b/glibc-2.27-clang-_Float.patch new file mode 100644 index 0000000..71c582b --- /dev/null +++ b/glibc-2.27-clang-_Float.patch @@ -0,0 +1,81 @@ +--- glibc-2.27/bits/floatn-common.h.0134~ 2018-02-01 17:17:18.000000000 +0100 ++++ glibc-2.27/bits/floatn-common.h 2018-03-03 02:32:16.924822310 +0100 +@@ -28,6 +28,7 @@ + where the same definitions, or definitions based only on the macros + in bits/floatn.h, are appropriate for all glibc configurations. */ + ++#ifndef __clang__ /* FIXME reinvestigate with clang 7 */ + /* Defined to 1 if the current compiler invocation provides a + floating-point type with the right format for this type, and this + glibc includes corresponding *fN or *fNx interfaces for it. */ +@@ -36,6 +37,7 @@ + #define __HAVE_FLOAT64 1 + #define __HAVE_FLOAT32X 1 + #define __HAVE_FLOAT128X 0 ++#endif + + /* Defined to 1 if the corresponding __HAVE_ macro is 1 and the + type is the first with its format in the sequence of (the default +--- glibc-2.27/sysdeps/ieee754/ldbl-128/bits/floatn.h.0134~ 2018-02-01 17:17:18.000000000 +0100 ++++ glibc-2.27/sysdeps/ieee754/ldbl-128/bits/floatn.h 2018-03-03 02:32:16.924822310 +0100 +@@ -26,7 +26,11 @@ + floating-point type with the IEEE 754 binary128 format, and this + glibc includes corresponding *f128 interfaces for it. */ + #ifndef __NO_LONG_DOUBLE_MATH +-# define __HAVE_FLOAT128 1 ++# if defined(__clang__) ++# define __HAVE_FLOAT128 0 ++# else ++# define __HAVE_FLOAT128 1 ++# endif + #else + /* glibc does not support _Float128 for platforms where long double is + normally binary128 when building with long double as binary64. +--- glibc-2.27/sysdeps/x86/bits/floatn.h.0134~ 2018-02-01 17:17:18.000000000 +0100 ++++ glibc-2.27/sysdeps/x86/bits/floatn.h 2018-03-03 02:34:50.472771373 +0100 +@@ -26,9 +26,9 @@ + glibc includes corresponding *f128 interfaces for it. The required + libgcc support was added some time after the basic compiler + support, for x86_64 and x86. */ +-#if (defined __x86_64__ \ ++#if (!defined(__clang__) && (defined __x86_64__ \ + ? __GNUC_PREREQ (4, 3) \ +- : (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4))) ++ : (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4)))) + # define __HAVE_FLOAT128 1 + #else + # define __HAVE_FLOAT128 0 +@@ -42,6 +42,7 @@ + # define __HAVE_DISTINCT_FLOAT128 0 + #endif + ++#ifndef __clang__ /* FIXME reinvestigate with clang 7 */ + /* Defined to 1 if the current compiler invocation provides a + floating-point type with the right format for _Float64x, and this + glibc includes corresponding *f64x interfaces for it. */ +@@ -52,6 +53,7 @@ + the format of _Float128, which must be different from that of long + double. */ + #define __HAVE_FLOAT64X_LONG_DOUBLE 1 ++#endif + + #ifndef __ASSEMBLER__ + +@@ -68,7 +70,7 @@ + + /* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */ + # if __HAVE_FLOAT128 +-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus ++# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined __clang__ + /* Add a typedef for older GCC compilers which don't natively support + _Complex _Float128. */ + typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__))); +@@ -82,7 +84,7 @@ typedef _Complex float __cfloat128 __att + # if __HAVE_FLOAT128 + + /* The type _Float128 exists only since GCC 7.0. */ +-# if !__GNUC_PREREQ (7, 0) || defined __cplusplus ++# if !__GNUC_PREREQ (7, 0) || defined __cplusplus || defined __clang__ + typedef __float128 _Float128; + # endif + diff --git a/glibc-2.28-riscv-compile.patch b/glibc-2.28-riscv-compile.patch new file mode 100644 index 0000000..a282a92 --- /dev/null +++ b/glibc-2.28-riscv-compile.patch @@ -0,0 +1,11 @@ +diff -up glibc-2.28/sysdeps/unix/sysv/linux/riscv/flush-icache.c.omv~ glibc-2.28/sysdeps/unix/sysv/linux/riscv/flush-icache.c +--- glibc-2.28/sysdeps/unix/sysv/linux/riscv/flush-icache.c.omv~ 2019-01-18 15:18:32.068258780 +0100 ++++ glibc-2.28/sysdeps/unix/sysv/linux/riscv/flush-icache.c 2019-01-18 15:18:35.241304323 +0100 +@@ -21,7 +21,6 @@ + #include + #include + #include +-#include + + typedef int (*func_type) (void *, void *, unsigned long int); + diff --git a/glibc-aarch64-tls-fixes.patch b/glibc-aarch64-tls-fixes.patch new file mode 100644 index 0000000..a05d905 --- /dev/null +++ b/glibc-aarch64-tls-fixes.patch @@ -0,0 +1,13 @@ +diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h +index 997c860..50b37b0 100644 +--- a/sysdeps/aarch64/dl-machine.h ++++ b/sysdeps/aarch64/dl-machine.h +@@ -295,7 +295,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, + # ifndef SHARED + CHECK_STATIC_TLS (map, sym_map); + # else +- if (!TRY_STATIC_TLS (map, sym_map)) ++ if (1) + { + td->arg = _dl_make_tlsdesc_dynamic + (sym_map, sym->st_value + reloc->r_addend); diff --git a/glibc-bug-regex-gcc5.patch b/glibc-bug-regex-gcc5.patch deleted file mode 100644 index c5a704e..0000000 --- a/glibc-bug-regex-gcc5.patch +++ /dev/null @@ -1,140 +0,0 @@ -Index: glibc-2.22-193-g315267a/posix/bug-regex11.c -=================================================================== ---- glibc-2.22-193-g315267a.orig/posix/bug-regex11.c -+++ glibc-2.22-193-g315267a/posix/bug-regex11.c -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - - /* Tests supposed to match. */ - struct -@@ -119,6 +120,14 @@ main (void) - continue; - } - -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not entirely possible since n is limited to -+ static nmatch which is limited to at most 5 (see tests above). -+ This is likely PR/59124 which is still not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - for (n = 0; n < tests[i].nmatch; ++n) - if (rm[n].rm_so != tests[i].rm[n].rm_so - || rm[n].rm_eo != tests[i].rm[n].rm_eo) -@@ -130,6 +139,7 @@ main (void) - ret = 1; - break; - } -+ DIAG_POP_NEEDS_COMMENT - - regfree (&re); - } -Index: glibc-2.22-193-g315267a/posix/bug-regex17.c -=================================================================== ---- glibc-2.22-193-g315267a.orig/posix/bug-regex17.c -+++ glibc-2.22-193-g315267a/posix/bug-regex17.c -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - - /* Tests supposed to match. */ - struct -@@ -87,6 +88,14 @@ do_test (void) - continue; - } - -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not entirely possible since n is limited to -+ static nmatch which is limited to at most 5 (see tests above). -+ This is likely PR/59124 which is still not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - for (n = 0; n < tests[i].nmatch; ++n) - if (rm[n].rm_so != tests[i].rm[n].rm_so - || rm[n].rm_eo != tests[i].rm[n].rm_eo) -@@ -98,6 +107,7 @@ do_test (void) - ret = 1; - break; - } -+ DIAG_POP_NEEDS_COMMENT - - regfree (&re); - } -Index: glibc-2.22-193-g315267a/posix/bug-regex18.c -=================================================================== ---- glibc-2.22-193-g315267a.orig/posix/bug-regex18.c -+++ glibc-2.22-193-g315267a/posix/bug-regex18.c -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - - /* Tests supposed to match. */ - struct -@@ -80,6 +81,14 @@ main (void) - continue; - } - -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not entirely possible since n is limited to -+ static nmatch which is limited to at most 5 (see tests above). -+ This is likely PR/59124 which is still not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - for (n = 0; n < tests[i].nmatch; ++n) - if (rm[n].rm_so != tests[i].rm[n].rm_so - || rm[n].rm_eo != tests[i].rm[n].rm_eo) -@@ -91,6 +100,7 @@ main (void) - ret = 1; - break; - } -+ DIAG_POP_NEEDS_COMMENT - - regfree (&re); - } -Index: glibc-2.22-193-g315267a/posix/bug-regex30.c -=================================================================== ---- glibc-2.22-193-g315267a.orig/posix/bug-regex30.c -+++ glibc-2.22-193-g315267a/posix/bug-regex30.c -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - - /* Tests supposed to match. */ - struct -@@ -80,6 +81,14 @@ do_test (void) - continue; - } - -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not entirely possible since n is limited to -+ static nmatch which is limited to at most 5 (see tests above). -+ This is likely PR/59124 which is still not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - for (n = 0; n < tests[i].nmatch; ++n) - if (rm[n].rm_so != tests[i].rm[n].rm_so - || rm[n].rm_eo != tests[i].rm[n].rm_eo) -@@ -91,6 +100,7 @@ do_test (void) - ret = 1; - break; - } -+ DIAG_POP_NEEDS_COMMENT - - regfree (&re); - } diff --git a/glibc-cs-path.patch b/glibc-cs-path.patch new file mode 100644 index 0000000..982f8ff --- /dev/null +++ b/glibc-cs-path.patch @@ -0,0 +1,6 @@ +diff -pruN a/sysdeps/unix/confstr.h b/sysdeps/unix/confstr.h +--- a/sysdeps/unix/confstr.h 2012-12-25 08:32:13.000000000 +0530 ++++ b/sysdeps/unix/confstr.h 2014-09-05 20:02:55.698275219 +0530 +@@ -1 +1 @@ +-#define CS_PATH "/bin:/usr/bin" ++#define CS_PATH "/usr/bin" diff --git a/glibc-dns-host-gcc5.patch b/glibc-dns-host-gcc5.patch deleted file mode 100644 index 3810a6e..0000000 --- a/glibc-dns-host-gcc5.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: glibc-2.23-276-gb65b205/resolv/nss_dns/dns-host.c -=================================================================== ---- glibc-2.23-276-gb65b205.orig/resolv/nss_dns/dns-host.c -+++ glibc-2.23-276-gb65b205/resolv/nss_dns/dns-host.c -@@ -78,6 +78,7 @@ - #include - #include - #include -+#include - - #include "nsswitch.h" - -@@ -566,10 +567,19 @@ addrsort (char **ap, int num) - num = MAX_NR_ADDRS; - for (i = 0; i < num; i++, p++) - { -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not entirely possible since i is limited to -+ _res.nsort which is limited to MAXRESOLVSORT. This -+ is likely PR/59124 which is still not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - for (j = 0 ; (unsigned)j < _res.nsort; j++) - if (_res.sort_list[j].addr.s_addr == - (((struct in_addr *)(*p))->s_addr & _res.sort_list[j].mask)) - break; -+ DIAG_POP_NEEDS_COMMENT - aval[i] = j; - if (needsort == 0 && i > 0 && j < aval[i-1]) - needsort = i; diff --git a/glibc-dso_deps.patch b/glibc-dso_deps.patch deleted file mode 100644 index bb0bb26..0000000 --- a/glibc-dso_deps.patch +++ /dev/null @@ -1,459 +0,0 @@ -@@ -, +, @@ - 17645) ---- - elf/Makefile | 1 + - elf/dl-deps.c | 143 +++++++++++++++++++++++++++++------------------ - elf/dl-fini.c | 176 +++++++++++++++++++++++++++++++--------------------------- - elf/dl-open.c | 74 ++++++++++++++++++++++++ - 4 files changed, 256 insertions(+), 138 deletions(-) ---- a/elf/Makefile -+++ a/elf/Makefile -@@ -513,6 +513,7 @@ $(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so - $(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so - $(objpfx)unload8mod3.so: $(libdl) - $(objpfx)tst-initordera2.so: $(objpfx)tst-initordera1.so -+$(objpfx)tst-initorderb1.so: $(objpfx)tst-initordera2.so - $(objpfx)tst-initorderb2.so: $(objpfx)tst-initorderb1.so $(objpfx)tst-initordera2.so - $(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb1.so - $(objpfx)tst-initordera4.so: $(objpfx)tst-initordera3.so ---- a/elf/dl-deps.c -+++ a/elf/dl-deps.c -@@ -139,6 +139,93 @@ cannot load auxiliary `%s' because of empty dynamic string token " \ - __result; }) - - static void -+weight (struct link_map **maps, size_t nmaps, char *seen, unsigned int *w) -+{ -+ int i, c; -+ struct link_map *m, **r; -+ -+ /* Start at 1 because the first entry is the binary itself. */ -+ for (i = 1; i < nmaps; ++i) -+ { -+ m = maps[i]; -+ if ((r = m->l_initfini)) -+ { -+ c = 0; -+ while (*r) -+ { -+ -+ /* If not a self reference, not being unloaded, and not -+ already removed from the list, increment the reference -+ counter. */ -+ if (*r != m && (*r)->l_idx >= 0 && !seen[(*r)->l_idx]) -+ ++c; -+ ++r; -+ } -+ -+ /* Update the {w}eight vector with {c}ount map(s) dependency */ -+ w[i] = c; -+ } -+ else -+ w[i] = 0; -+ } -+} -+ -+static void -+sort (struct link_map **maps, size_t nmaps) -+{ -+ int c, i, k; -+ unsigned int w[nmaps]; -+ char seen[nmaps]; -+ struct link_map *t; -+ memset(seen, 0, nmaps); -+ -+ /* Use the l_idx field as an unique identifier. */ -+ for (i = 0; i < nmaps; ++i) -+ { -+ /* Ensure to not touch a link_map with l_idx < 0 as it is -+ used to flag a dso is being unloaded. */ -+ if (maps[i]->l_idx >= 0) -+ maps[i]->l_idx = i; -+ } -+ -+ /* We can skip looking for the binary itself which is at the front -+ of the search list. */ -+ w[0] = 0; -+ seen[0] = 1; -+ -+ /* The list is sorted in place, with entries added from end to start. */ -+ weight(maps, k = nmaps, seen, w); -+ c = 0; -+ while (c < k) -+ { -+ for (i = k - 1; i >= 1; --i) -+ { -+ if (w[i] == c && maps[i]->l_idx >= 0) -+ { -+ seen[maps[i]->l_idx] = 1; -+ -+ /* Reducing the number of entries or swaping entries -+ require remaking the {w}eight map. */ -+ if (--k != i) -+ { -+ t = maps[k]; -+ maps[k] = maps[i]; -+ maps[i] = t; -+ } -+ weight(maps, k, seen, w); -+ c = -1; -+ break; -+ } -+ } -+ -+ /* If c != 0, there are cycles, and the first entry in the map, -+ with the lowest reference {c}ount is removed attempting to -+ to break the cycle. */ -+ ++c; -+ } -+} -+ -+static void - preload (struct list *known, unsigned int *nlist, struct link_map *map) - { - known[*nlist].done = 0; -@@ -611,61 +698,7 @@ Filters not supported with LD_TRACE_PRELINKING")); - memcpy (l_initfini, map->l_searchlist.r_list, - nlist * sizeof (struct link_map *)); - if (__glibc_likely (nlist > 1)) -- { -- /* We can skip looking for the binary itself which is at the front -- of the search list. */ -- i = 1; -- uint16_t seen[nlist]; -- memset (seen, 0, nlist * sizeof (seen[0])); -- while (1) -- { -- /* Keep track of which object we looked at this round. */ -- ++seen[i]; -- struct link_map *thisp = l_initfini[i]; -- -- /* Find the last object in the list for which the current one is -- a dependency and move the current object behind the object -- with the dependency. */ -- unsigned int k = nlist - 1; -- while (k > i) -- { -- struct link_map **runp = l_initfini[k]->l_initfini; -- if (runp != NULL) -- /* Look through the dependencies of the object. */ -- while (*runp != NULL) -- if (__glibc_unlikely (*runp++ == thisp)) -- { -- /* Move the current object to the back past the last -- object with it as the dependency. */ -- memmove (&l_initfini[i], &l_initfini[i + 1], -- (k - i) * sizeof (l_initfini[0])); -- l_initfini[k] = thisp; -- -- if (seen[i + 1] > nlist - i) -- { -- ++i; -- goto next_clear; -- } -- -- uint16_t this_seen = seen[i]; -- memmove (&seen[i], &seen[i + 1], -- (k - i) * sizeof (seen[0])); -- seen[k] = this_seen; -- -- goto next; -- } -- -- --k; -- } -- -- if (++i == nlist) -- break; -- next_clear: -- memset (&seen[i], 0, (nlist - i) * sizeof (seen[0])); -- -- next:; -- } -- } -+ sort (l_initfini, nlist); - - /* Terminate the list of dependencies. */ - l_initfini[nlist] = NULL; ---- a/elf/dl-fini.c -+++ a/elf/dl-fini.c -@@ -26,102 +26,112 @@ - typedef void (*fini_t) (void); - - --void --internal_function --_dl_sort_fini (struct link_map **maps, size_t nmaps, char *used, Lmid_t ns) -+static void -+weight (struct link_map **maps, size_t nmaps, char *seen, unsigned int *w, int from) - { -- /* A list of one element need not be sorted. */ -- if (nmaps == 1) -- return; -+ int i, c; -+ struct link_map *m, **r; -+ for (i = from; i < nmaps; ++i) -+ { -+ m = maps[i]; -+ if ((r = m->l_initfini)) -+ { -+ c = 0; -+ while (*r) -+ { -+ /* If not a self reference, not being unloaded, and not -+ already removed from the list, increment the reference -+ counter. */ -+ if (*r != m && (*r)->l_idx >= 0 && !seen[(*r)->l_idx]) -+ ++c; -+ ++r; -+ } -+ /* Update the {w}eight vector with {c}ount map(s) dependency */ -+ w[i] = c; -+ } -+ else -+ w[i] = 0; -+ } -+} -+ -+ -+static void -+sort (struct link_map **maps, size_t nmaps, char *used, Lmid_t ns) -+{ -+ int from; -+ int c, i, k; -+ unsigned int w[nmaps]; -+ char seen[nmaps]; -+ struct link_map *t; -+ -+ memset(seen, 0, nmaps); -+ -+ /* Use the l_idx field as an unique identifier. */ -+ for (i = 0; i < nmaps; ++i) -+ { -+ /* Ensure to not touch a link_map with l_idx < 0 as it is -+ used to flag a dso is being unloaded. */ -+ if (maps[i]->l_idx >= 0) -+ maps[i]->l_idx = i; -+ } - - /* We can skip looking for the binary itself which is at the front - of the search list for the main namespace. */ -- unsigned int i = ns == LM_ID_BASE; -- uint16_t seen[nmaps]; -- memset (seen, 0, nmaps * sizeof (seen[0])); -- while (1) -+ from = ns == LM_ID_BASE; -+ if (from) - { -- /* Keep track of which object we looked at this round. */ -- ++seen[i]; -- struct link_map *thisp = maps[i]; -- -- /* Do not handle ld.so in secondary namespaces and object which -- are not removed. */ -- if (thisp != thisp->l_real || thisp->l_idx == -1) -- goto skip; -- -- /* Find the last object in the list for which the current one is -- a dependency and move the current object behind the object -- with the dependency. */ -- unsigned int k = nmaps - 1; -- while (k > i) -- { -- struct link_map **runp = maps[k]->l_initfini; -- if (runp != NULL) -- /* Look through the dependencies of the object. */ -- while (*runp != NULL) -- if (__glibc_unlikely (*runp++ == thisp)) -- { -- move: -- /* Move the current object to the back past the last -- object with it as the dependency. */ -- memmove (&maps[i], &maps[i + 1], -- (k - i) * sizeof (maps[0])); -- maps[k] = thisp; -- -- if (used != NULL) -- { -- char here_used = used[i]; -- memmove (&used[i], &used[i + 1], -- (k - i) * sizeof (used[0])); -- used[k] = here_used; -- } -+ w[0] = 0; -+ seen[0] = 1; -+ } - -- if (seen[i + 1] > nmaps - i) -+ /* The list is sorted in place, with entries added from end to start. */ -+ weight(maps, k = nmaps, seen, w, from); -+ c = 0; -+ while (c < k) -+ { -+ for (i = k - 1; i >= from; --i) -+ { -+ t = maps[i]; -+ /* Do not handle ld.so in secondary namespaces and object which -+ are not removed. */ -+ if (w[i] == c && maps[i]->l_idx >= 0 && t->l_real == t) -+ { -+ seen[maps[i]->l_idx] = 1; -+ /* Reducing the number of entries or swaping entries -+ require remaking the {w}eight map. */ -+ if (--k != i) -+ { -+ maps[i] = maps[k]; -+ maps[k] = t; -+ if (used) - { -- ++i; -- goto next_clear; -+ char c = used[i]; -+ used[i] = used[k]; -+ used[k] = c; - } -- -- uint16_t this_seen = seen[i]; -- memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0])); -- seen[k] = this_seen; -- -- goto next; - } -- -- if (__glibc_unlikely (maps[k]->l_reldeps != NULL)) -- { -- unsigned int m = maps[k]->l_reldeps->act; -- struct link_map **relmaps = &maps[k]->l_reldeps->list[0]; -- -- /* Look through the relocation dependencies of the object. */ -- while (m-- > 0) -- if (__glibc_unlikely (relmaps[m] == thisp)) -- { -- /* If a cycle exists with a link time dependency, -- preserve the latter. */ -- struct link_map **runp = thisp->l_initfini; -- if (runp != NULL) -- while (*runp != NULL) -- if (__glibc_unlikely (*runp++ == maps[k])) -- goto ignore; -- goto move; -- } -- ignore:; -+ weight(maps, k, seen, w, from); -+ c = -1; -+ break; - } -- -- --k; - } -+ /* If c != 0, there are cycles, and the first entry in the map, -+ with the lowest reference {c}ount is removed attempting to -+ to break the cycle. */ -+ ++c; -+ } -+} - -- skip: -- if (++i == nmaps) -- break; -- next_clear: -- memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0])); - -- next:; -- } -+void -+internal_function -+_dl_sort_fini (struct link_map **maps, size_t nmaps, char *used, Lmid_t ns) -+{ -+ /* A list of one element need not be sorted. */ -+ if (nmaps == 1) -+ return; -+ -+ sort (maps, nmaps, used, ns); - } - - ---- a/elf/dl-open.c -+++ a/elf/dl-open.c -@@ -182,6 +182,80 @@ _dl_find_dso_for_object (const ElfW(Addr) addr) - rtld_hidden_def (_dl_find_dso_for_object); - - static void -+weight (struct link_map **maps, size_t nmaps, char *seen, unsigned int *w) -+{ -+ int i, c; -+ struct link_map *m, **r; -+ for (i = 0; i < nmaps; ++i) -+ { -+ m = maps[i]; -+ if ((r = m->l_initfini)) -+ { -+ c = 0; -+ while (*r) -+ { -+ /* If not a self reference, not being unloaded, and not -+ already removed from the list, increment the reference -+ counter. */ -+ if (*r != m && (*r)->l_idx >= 0 && !seen[(*r)->l_idx]) -+ ++c; -+ ++r; -+ } -+ /* Update the {w}eight vector with {c}ount map(s) dependency */ -+ w[i] = c; -+ } -+ else -+ w[i] = 0; -+ } -+} -+ -+static void -+sort (struct link_map **maps, size_t nmaps) -+{ -+ int c, i, k; -+ unsigned int w[nmaps]; -+ char seen[nmaps]; -+ struct link_map *t; -+ memset(seen, 0, nmaps); -+ /* Use the l_idx field as an unique identifier. */ -+ for (i = 0; i < nmaps; ++i) -+ { -+ /* Ensure to not touch a link_map with l_idx < 0 as it is -+ used to flag a dso is being unloaded. */ -+ if (maps[i]->l_idx >= 0) -+ maps[i]->l_idx = i; -+ } -+ /* The list is sorted in place, with entries added from end to start. */ -+ weight(maps, k = nmaps, seen, w); -+ c = 0; -+ while (c < k) -+ { -+ for (i = k - 1; i >= 0; --i) -+ { -+ if (w[i] == c && maps[i]->l_idx >= 0) -+ { -+ seen[maps[i]->l_idx] = 1; -+ /* Reducing the number of entries or swaping entries -+ require remaking the {w}eight map. */ -+ if (--k != i) -+ { -+ t = maps[k]; -+ maps[k] = maps[i]; -+ maps[i] = t; -+ } -+ weight(maps, k, seen, w); -+ c = -1; -+ break; -+ } -+ } -+ /* If c != 0, there are cycles, and the first entry in the map, -+ with the lowest reference {c}ount is removed attempting to -+ to break the cycle. */ -+ ++c; -+ } -+} -+ -+static void - dl_open_worker (void *a) - { - struct dl_open_args *args = a; --- diff --git a/glibc-fedora-__libc_multiple_libcs.patch b/glibc-fedora-__libc_multiple_libcs.patch index 945a955..b7ec122 100644 --- a/glibc-fedora-__libc_multiple_libcs.patch +++ b/glibc-fedora-__libc_multiple_libcs.patch @@ -1,30 +1,6 @@ -# -# Upstream discussions: -# https://sourceware.org/ml/libc-alpha/2014-02/msg00580.html -# -# Based on the following commit: -# -# From 16552c01a66633c9e412984d9d92616bd4e5303c Mon Sep 17 00:00:00 2001 -# From: Andreas Schwab -# Date: Fri, 11 Jun 2010 11:04:11 +0200 -# Subject: [PATCH] Properly set __libc_multiple_libcs -# -# * elf/rtld.c (_dl_starting_up): Always define. -# (dl_main): Always set _dl_starting_up. -# * elf/dl-support.c (_dl_starting_up): Always define. -# * elf/dl-init.c (_dl_init): Always clear _dl_starting_up. -# -# --- -# ChangeLog | 7 +++++++ -# elf/dl-init.c | 4 ---- -# elf/dl-support.c | 2 -- -# elf/rtld.c | 4 ---- -# 4 files changed, 7 insertions(+), 10 deletions(-) -# -diff -urN glibc-2.20-205-ga39208b/elf/dl-init.c glibc-2.20-205-ga39208b.mod/elf/dl-init.c ---- glibc-2.20-205-ga39208b/elf/dl-init.c 2014-11-21 16:08:32.744913590 -0500 -+++ glibc-2.20-205-ga39208b.mod/elf/dl-init.c 2014-11-21 16:09:42.485708197 -0500 -@@ -119,8 +119,6 @@ +--- glibc-2.25.51/elf/dl-init.c.0044~ 2017-07-11 16:44:14.000000000 +0200 ++++ glibc-2.25.51/elf/dl-init.c 2017-07-11 18:44:49.173115475 +0200 +@@ -119,8 +119,6 @@ _dl_init (struct link_map *main_map, int while (i-- > 0) call_init (main_map->l_initfini[i], argc, argv, env); @@ -33,10 +9,9 @@ diff -urN glibc-2.20-205-ga39208b/elf/dl-init.c glibc-2.20-205-ga39208b.mod/elf/ _dl_starting_up = 0; -#endif } -diff -urN glibc-2.20-205-ga39208b/elf/dl-support.c glibc-2.20-205-ga39208b.mod/elf/dl-support.c ---- glibc-2.20-205-ga39208b/elf/dl-support.c 2014-11-19 14:35:03.000000000 -0500 -+++ glibc-2.20-205-ga39208b.mod/elf/dl-support.c 2014-11-21 16:09:54.829671843 -0500 -@@ -118,10 +118,8 @@ +--- glibc-2.25.51/elf/dl-support.c.0044~ 2017-07-11 16:44:14.000000000 +0200 ++++ glibc-2.25.51/elf/dl-support.c 2017-07-11 18:44:49.173115475 +0200 +@@ -117,10 +117,8 @@ struct r_scope_elem _dl_initial_searchli .r_nlist = 1, }; @@ -47,18 +22,17 @@ diff -urN glibc-2.20-205-ga39208b/elf/dl-support.c glibc-2.20-205-ga39208b.mod/e /* Random data provided by the kernel. */ void *_dl_random; -diff -urN glibc-2.20-205-ga39208b/elf/rtld.c glibc-2.20-205-ga39208b.mod/elf/rtld.c ---- glibc-2.20-205-ga39208b/elf/rtld.c 2014-11-21 16:08:32.745913587 -0500 -+++ glibc-2.20-205-ga39208b.mod/elf/rtld.c 2014-11-21 16:09:05.614816785 -0500 -@@ -107,7 +107,6 @@ - struct audit_list *next; - } *audit_list; +--- glibc-2.25.51/elf/rtld.c.0044~ 2017-07-11 16:44:14.000000000 +0200 ++++ glibc-2.25.51/elf/rtld.c 2017-07-11 18:45:48.606706875 +0200 +@@ -214,7 +214,6 @@ audit_list_iter_next (struct audit_list_ + return iter->previous->name; + } -#ifndef HAVE_INLINED_SYSCALLS /* Set nonzero during loading and initialization of executable and libraries, cleared before the executable's entry point runs. This must not be initialized to nonzero, because the unused dynamic -@@ -117,7 +116,6 @@ +@@ -224,7 +223,6 @@ audit_list_iter_next (struct audit_list_ never be called. */ int _dl_starting_up = 0; rtld_hidden_def (_dl_starting_up) @@ -66,7 +40,7 @@ diff -urN glibc-2.20-205-ga39208b/elf/rtld.c glibc-2.20-205-ga39208b.mod/elf/rtl /* This is the structure which defines all variables global to ld.so (except those which cannot be added for some reason). */ -@@ -776,10 +774,8 @@ +@@ -898,10 +896,8 @@ dl_main (const ElfW(Phdr) *phdr, /* Process the environment variable which control the behaviour. */ process_envvars (&mode); diff --git a/glibc-fedora-elf-ORIGIN.patch b/glibc-fedora-elf-ORIGIN.patch deleted file mode 100644 index 0f20ca8..0000000 --- a/glibc-fedora-elf-ORIGIN.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 207e77fd3f0a94acdf0557608dd4f10ce0e0f22f Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Mon, 9 May 2011 10:55:58 +0200 -Subject: [PATCH] Never leave $ORIGIN unexpanded - -* elf/dl-load.c (is_dst): Remove parameter secure, all callers -changed. Move check for valid use of $ORIGIN ... -(_dl_dst_substitute): ... here. Reset check_for_trusted when a -path element is skipped. - ---- - ChangeLog | 7 +++++++ - elf/dl-load.c | 34 ++++++++++++++++------------------ - 2 files changed, 23 insertions(+), 18 deletions(-) - -diff --git a/elf/dl-load.c b/elf/dl-load.c -index 18a83d2..6e16a9a 100644 ---- a/elf/dl-load.c -+++ b/elf/dl-load.c -@@ -249,8 +249,7 @@ is_trusted_path_normalize (const char *path, size_t len) - - - static size_t --is_dst (const char *start, const char *name, const char *str, -- int is_path, int secure) -+is_dst (const char *start, const char *name, const char *str, int is_path) - { - size_t len; - bool is_curly = false; -@@ -279,12 +278,6 @@ is_dst (const char *start, const char *name, const char *str, - && (!is_path || name[len] != ':')) - return 0; - -- if (__glibc_unlikely (secure) -- && ((name[len] != '\0' && name[len] != '/' -- && (!is_path || name[len] != ':')) -- || (name != start + 1 && (!is_path || name[-2] != ':')))) -- return 0; -- - return len; - } - -@@ -299,13 +292,10 @@ _dl_dst_count (const char *name, int is_path) - { - size_t len; - -- /* $ORIGIN is not expanded for SUID/GUID programs (except if it -- is $ORIGIN alone) and it must always appear first in path. */ - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- __libc_enable_secure)) != 0 -- || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 -- || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0 -+ || (len = is_dst (start, name, "PLATFORM", is_path)) != 0 -+ || (len = is_dst (start, name, "LIB", is_path)) != 0) - ++cnt; - - name = strchr (name + len, '$'); -@@ -338,10 +328,18 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result, - size_t len; - - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- __libc_enable_secure)) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0) - { -- repl = l->l_origin; -+ /* For SUID/GUID programs $ORIGIN must always appear -+ first in a path element. */ -+ if (__glibc_unlikely (__libc_enable_secure) -+ && ((name[len] != '\0' && name[len] != '/' -+ && (!is_path || name[len] != ':')) -+ || (name != start + 1 && (!is_path || name[-2] != ':')))) -+ repl = (const char *) -1; -+ else -+ repl = l->l_origin; -+ - check_for_trusted = (__libc_enable_secure - && l->l_type == lt_executable); - } -@@ -351,9 +348,9 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result, - check_for_trusted = (__libc_enable_secure - && l->l_type == lt_executable); - } -- else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0) - repl = GLRO(dl_platform); -- else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "LIB", is_path)) != 0) - repl = DL_DST_LIB; - - if (repl != NULL && repl != (const char *) -1) -@@ -373,6 +370,7 @@ _dl_dst_substitute (struct link_map *l, const char *name, char *result, - element, but keep an empty element at the end. */ - if (wp == result && is_path && *name == ':' && name[1] != '\0') - ++name; -+ check_for_trusted = false; - } - else - /* No DST we recognize. */ diff --git a/glibc-fedora-elf-init-hidden_undef.patch b/glibc-fedora-elf-init-hidden_undef.patch deleted file mode 100644 index 36ef59c..0000000 --- a/glibc-fedora-elf-init-hidden_undef.patch +++ /dev/null @@ -1,30 +0,0 @@ -* Fri May 29 2003 Jakub Jelinek 2.3.2-44 -- make __init_array_start etc. symbols in elf-init.oS hidden undefined - -diff -Nrup a/csu/elf-init.c b/csu/elf-init.c ---- a/csu/elf-init.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/csu/elf-init.c 2012-06-07 12:15:21.570319597 -0600 -@@ -62,6 +62,23 @@ extern void _fini (void); - programs, this module will come from libc_nonshared.a and differs from - the libc.a module in that it doesn't call the preinit array. */ - -+#if defined HAVE_VISIBILITY_ATTRIBUTE \ -+ && (defined SHARED || defined LIBC_NONSHARED) -+# define hidden_undef_2(x) #x -+# define hidden_undef_1(x) hidden_undef_2 (x) -+# define hidden_undef(x) \ -+ __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ -+ __asm (".hidden " #x); -+#else -+# define hidden_undef(x) -+#endif -+ -+hidden_undef (__preinit_array_start) -+hidden_undef (__preinit_array_end) -+hidden_undef (__init_array_start) -+hidden_undef (__init_array_end) -+hidden_undef (__fini_array_start) -+hidden_undef (__fini_array_end) - - void - __libc_csu_init (int argc, char **argv, char **envp) diff --git a/glibc-fedora-elf-rh737223.patch b/glibc-fedora-elf-rh737223.patch deleted file mode 100644 index 5ae6e3a..0000000 --- a/glibc-fedora-elf-rh737223.patch +++ /dev/null @@ -1,15 +0,0 @@ -Binary files a/elf/.rtld.c.rej.swp and b/elf/.rtld.c.rej.swp differ -diff -Nrup a/elf/setup-vdso.h b/elf/setup-vdso.h ---- a/elf/setup-vdso.h 2012-10-10 21:34:38.000000000 -0600 -+++ b/elf/setup-vdso.h 2012-10-11 09:43:14.152958832 -0600 -@@ -93,7 +93,9 @@ setup_vdso (struct link_map *main_map __ - char *copy = malloc (len); - if (copy == NULL) - _dl_fatal_printf ("out of memory\n"); -- l->l_libname->name = l->l_name = memcpy (copy, dsoname, len); -+ l->l_libname->name = memcpy (copy, dsoname, len); -+ if (GLRO(dl_debug_mask)) -+ l->l_name = copy; - } - - /* Add the vDSO to the object list. */ diff --git a/glibc-fedora-ldd.patch b/glibc-fedora-ldd.patch deleted file mode 100644 index 51aec73..0000000 --- a/glibc-fedora-ldd.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 83e5edd390eabe8f8e8e0d051f929b77a30c0767 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Fri, 18 Mar 2011 16:22:52 +0100 -Subject: [PATCH] ldd: never run file directly - -* elf/ldd.bash.in: Never run file directly. - ---- - ChangeLog | 4 ++++ - elf/ldd.bash.in | 14 +------------- - 2 files changed, 5 insertions(+), 13 deletions(-) - ---- a/elf/ldd.bash.in -+++ b/elf/ldd.bash.in -@@ -166,18 +166,6 @@ warning: you do not have execution permission for" "\`$file'" >&2 - fi - done - case $ret in -- 0) -- # If the program exits with exit code 5, it means the process has been -- # invoked with __libc_enable_secure. Fall back to running it through -- # the dynamic linker. -- try_trace "$file" -- rc=$? -- if [ $rc = 5 ]; then -- try_trace "$RTLD" "$file" -- rc=$? -- fi -- [ $rc = 0 ] || result=1 -- ;; - 1) - # This can be a non-ELF binary or no binary at all. - nonelf "$file" || { -@@ -185,7 +173,7 @@ warning: you do not have execution permission for" "\`$file'" >&2 - result=1 - } - ;; -- 2) -+ 0|2) - try_trace "$RTLD" "$file" || result=1 - ;; - *) diff --git a/glibc-fedora-linux-tcsetattr.patch b/glibc-fedora-linux-tcsetattr.patch index 066ac48..2390ef9 100644 --- a/glibc-fedora-linux-tcsetattr.patch +++ b/glibc-fedora-linux-tcsetattr.patch @@ -1,7 +1,6 @@ -diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c ---- a/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-07 12:15:21.831318623 -0600 -@@ -48,6 +48,7 @@ tcsetattr (fd, optional_actions, termios +--- glibc-2.25.51/sysdeps/unix/sysv/linux/tcsetattr.c.0025~ 2017-07-11 16:44:14.000000000 +0200 ++++ glibc-2.25.51/sysdeps/unix/sysv/linux/tcsetattr.c 2017-07-11 18:32:38.167537430 +0200 +@@ -45,6 +45,7 @@ __tcsetattr (int fd, int optional_action { struct __kernel_termios k_termios; unsigned long int cmd; @@ -9,7 +8,7 @@ diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcset switch (optional_actions) { -@@ -79,6 +80,35 @@ tcsetattr (fd, optional_actions, termios +@@ -75,7 +76,36 @@ __tcsetattr (int fd, int optional_action memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], __KERNEL_NCCS * sizeof (cc_t)); @@ -45,4 +44,5 @@ diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcset + + return retval; } + weak_alias (__tcsetattr, tcsetattr) libc_hidden_def (tcsetattr) diff --git a/glibc-fedora-localedef.patch b/glibc-fedora-localedef.patch index c4a39f6..4aaec7f 100644 --- a/glibc-fedora-localedef.patch +++ b/glibc-fedora-localedef.patch @@ -1,11 +1,12 @@ -diff -Nrup a/localedata/Makefile b/localedata/Makefile ---- a/localedata/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/Makefile 2012-06-07 12:15:21.776318827 -0600 -@@ -211,6 +211,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo +diff --git a/localedata/Makefile b/localedata/Makefile +index a5f3c92d58954dfc..56719c7c714aa0f1 100644 +--- a/localedata/Makefile ++++ b/localedata/Makefile +@@ -218,6 +218,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-locales-dir echo -n '...'; \ input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ - $(LOCALEDEF) --alias-file=../intl/locale.alias \ + $(LOCALEDEF) $$flags --alias-file=../intl/locale.alias \ + --no-archive \ - -i locales/$$input -c -f charmaps/$$charset \ + -i locales/$$input -f charmaps/$$charset \ $(addprefix --prefix=,$(install_root)) $$locale \ && echo ' done'; \ diff --git a/glibc-fedora-locarchive.patch b/glibc-fedora-locarchive.patch index 9a702af..91ac661 100644 --- a/glibc-fedora-locarchive.patch +++ b/glibc-fedora-locarchive.patch @@ -1,20 +1,10 @@ This is a part of commit glibc-2.3.3-1492-ga891c7b, needed for fedora/build-locale-archive.c only. -diff -Nrup a/ChangeLog.17 b/ChangeLog.17 ---- a/ChangeLog.17 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog.17 2012-06-07 12:15:21.564319619 -0600 -@@ -11818,6 +11829,10 @@ d2009-10-30 Ulrich Drepper + + * locale/programs/locarchive.c (add_alias, insert_name): Remove static. -+2007-04-16 Jakub Jelinek -+ -+ * locale/programs/locarchive.c (add_alias, insert_name): Remove static. -+ - 2007-04-16 Ulrich Drepper - - [BZ #4364] diff -Nrup a/locale/programs/locarchive.c b/locale/programs/locarchive.c --- a/locale/programs/locarchive.c 2012-06-05 07:42:49.000000000 -0600 +++ b/locale/programs/locarchive.c 2012-06-07 12:15:21.585319540 -0600 diff --git a/glibc-fedora-nptl-linklibc.patch b/glibc-fedora-nptl-linklibc.patch index 1a79477..dcfb808 100644 --- a/glibc-fedora-nptl-linklibc.patch +++ b/glibc-fedora-nptl-linklibc.patch @@ -1,18 +1,18 @@ -diff -Nrup a/nptl/Makefile b/nptl/Makefile ---- a/nptl/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/Makefile 2012-06-07 12:15:21.816318678 -0600 -@@ -529,15 +529,19 @@ $(addprefix $(objpfx), \ - $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a +diff -up glibc-2.27.20180720/nptl/Makefile.0034~ glibc-2.27.20180720/nptl/Makefile +--- glibc-2.27.20180720/nptl/Makefile.0034~ 2018-07-20 02:29:28.763982849 +0200 ++++ glibc-2.27.20180720/nptl/Makefile 2018-07-20 02:33:04.128058315 +0200 +@@ -623,14 +623,18 @@ $(addprefix $(objpfx), \ + $(tests) $(tests-internal) $(xtests) $(test-srcs))): \ + $(objpfx)libpthread.so $(objpfx)tst-unload: $(libdl) -# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, +# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, # since otherwise libpthread.so comes before libc.so when linking. $(addprefix $(objpfx), $(tests-reverse)): \ -- $(objpfx)../libc.so $(objpfx)libpthread.so \ -+ $(objpfx)linklibc.so $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a - $(objpfx)../libc.so: $(common-objpfx)libc.so ; +- $(objpfx)../libc.so $(objpfx)libpthread.so +-$(objpfx)../libc.so: $(common-objpfx)libc.so ; ++ $(objpfx)linklibc.so $(objpfx)libpthread.so ++$(objpfx)linklibc.so: $(common-objpfx)libc.so ; $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so diff --git a/glibc-fedora-ppc-unwind.patch b/glibc-fedora-ppc-unwind.patch new file mode 100644 index 0000000..0a808ec --- /dev/null +++ b/glibc-fedora-ppc-unwind.patch @@ -0,0 +1,20 @@ +glibc-2.3.3-1478-g37582bc + +* Thu Nov 30 2006 Jakub Jelinek 2.5.90-9 +- on ppc64 build __libc_start_main without unwind info, + as it breaks MD_FROB_UPDATE_CONTEXT (#217729, #217775; in the + future that could be fixable just by providing .cfi_undefined r2 + in __libc_start_main instead) + +diff -Nrup a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile +--- a/sysdeps/powerpc/powerpc64/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ b/sysdeps/powerpc/powerpc64/Makefile 2012-06-07 12:15:21.828318633 -0600 +@@ -35,6 +35,8 @@ CFLAGS-rtld-memmove.os = $(no-special-re + CFLAGS-rtld-memchr.os = $(no-special-regs) + CFLAGS-rtld-strnlen.os = $(no-special-regs) + ++CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables ++ + ifeq ($(subdir),elf) + # help gcc inline asm code from dl-machine.h + +cflags += -finline-limit=2000 diff --git a/glibc-gethnamaddr-gcc5.patch b/glibc-gethnamaddr-gcc5.patch deleted file mode 100644 index 92fa90f..0000000 --- a/glibc-gethnamaddr-gcc5.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: glibc-2.23-276-gb65b205/resolv/gethnamaddr.c -=================================================================== ---- glibc-2.23-276-gb65b205.orig/resolv/gethnamaddr.c -+++ glibc-2.23-276-gb65b205/resolv/gethnamaddr.c -@@ -68,6 +68,7 @@ - #include - #include - #include -+#include - - #define MAXALIASES 35 - #define MAXADDRS 35 -@@ -864,10 +865,19 @@ addrsort (char **ap, int num) - - p = ap; - for (i = 0; i < num; i++, p++) { -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not entirely possible since i is limited to -+ _res.nsort which is limited to MAXRESOLVSORT. This -+ is likely PR/59124 which is still not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - for (j = 0 ; (unsigned)j < _res.nsort; j++) - if (_res.sort_list[j].addr.s_addr == - (((struct in_addr *)(*p))->s_addr & _res.sort_list[j].mask)) - break; -+ DIAG_POP_NEEDS_COMMENT - aval[i] = j; - if (needsort == 0 && i > 0 && j < aval[i-1]) - needsort = i; diff --git a/glibc-ld-ctype-gcc5.patch b/glibc-ld-ctype-gcc5.patch deleted file mode 100644 index 78e7fd4..0000000 --- a/glibc-ld-ctype-gcc5.patch +++ /dev/null @@ -1,72 +0,0 @@ -Index: glibc-2.22-193-g315267a/locale/programs/ld-ctype.c -=================================================================== ---- glibc-2.22-193-g315267a.orig/locale/programs/ld-ctype.c -+++ glibc-2.22-193-g315267a/locale/programs/ld-ctype.c -@@ -31,6 +31,7 @@ - #include - #include - #include -+#include - - #include "localedef.h" - #include "charmap.h" -@@ -2534,9 +2535,19 @@ with character code range values one mus - { - size_t cnt; - -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not possible since ctype_map_new prevents -+ map_collection_nr from being greater than MAX_NR_CHARMP which -+ is the size of mapnames. This is likely PR/59124 which is still -+ not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - for (cnt = 2; cnt < ctype->map_collection_nr; ++cnt) - if (strcmp (now->val.str.startmb, ctype->mapnames[cnt]) == 0) - break; -+ DIAG_POP_NEEDS_COMMENT - - if (cnt < ctype->map_collection_nr) - free (now->val.str.startmb); -@@ -2807,9 +2818,19 @@ previous definition was here"))); - - /* This could mean one of several things. First test whether - it's a character class name. */ -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not possible since ctype_class_new prevents -+ nr_charclass from being greater than MAX_NR_CHARCLASS which -+ is the size of classnames. This is likely PR/59124 which is still -+ not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - for (cnt = 0; cnt < ctype->nr_charclass; ++cnt) - if (strcmp (now->val.str.startmb, ctype->classnames[cnt]) == 0) - break; -+ DIAG_POP_NEEDS_COMMENT - if (cnt < ctype->nr_charclass) - { - class_bit = _ISwbit (cnt); -@@ -2817,9 +2838,19 @@ previous definition was here"))); - free (now->val.str.startmb); - goto read_charclass; - } -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not possible since ctype_map_new prevents -+ map_collection_nr from being greater than MAX_NR_CHARMP which -+ is the size of mapnames. This is likely PR/59124 which is still -+ not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - for (cnt = 0; cnt < ctype->map_collection_nr; ++cnt) - if (strcmp (now->val.str.startmb, ctype->mapnames[cnt]) == 0) - break; -+ DIAG_POP_NEEDS_COMMENT - if (cnt < ctype->map_collection_nr) - { - mapidx = cnt; diff --git a/glibc-nscd-sysconfig.patch b/glibc-nscd-sysconfig.patch new file mode 100644 index 0000000..a00346b --- /dev/null +++ b/glibc-nscd-sysconfig.patch @@ -0,0 +1,14 @@ +diff --git a/nscd/nscd.service b/nscd/nscd.service +index b7428a3..19ba185 100644 +--- a/nscd/nscd.service ++++ b/nscd/nscd.service +@@ -5,7 +5,8 @@ Description=Name Service Cache Daemon + + [Service] + Type=forking +-ExecStart=/usr/sbin/nscd ++EnvironmentFile=-/etc/sysconfig/nscd ++ExecStart=/usr/sbin/nscd $NSCD_OPTIONS + ExecStop=/usr/sbin/nscd --shutdown + ExecReload=/usr/sbin/nscd -i passwd + ExecReload=/usr/sbin/nscd -i group diff --git a/glibc-res-hconf-gcc5.patch b/glibc-res-hconf-gcc5.patch deleted file mode 100644 index 4f5ae83..0000000 --- a/glibc-res-hconf-gcc5.patch +++ /dev/null @@ -1,29 +0,0 @@ -Index: glibc-2.22-386-g95e8397/resolv/res_hconf.c -=================================================================== ---- glibc-2.22-386-g95e8397.orig/resolv/res_hconf.c -+++ glibc-2.22-386-g95e8397/resolv/res_hconf.c -@@ -46,6 +46,7 @@ - #include "res_hconf.h" - #include - #include -+#include - - #if IS_IN (libc) - # define fgets_unlocked __fgets_unlocked -@@ -577,7 +578,16 @@ _res_hconf_trim_domain (char *hostname) - - for (i = 0; i < _res_hconf.num_trimdomains; ++i) - { -+ DIAG_PUSH_NEEDS_COMMENT -+#if __GNUC_PREREQ (5, 0) -+ /* GCC 5.0 warns about array subscript being above array bounds, -+ but that's not entirely possible since i is limited to -+ num_trimdomains which is limited to <= TRIMDOMAINS_MAX. This -+ is likely PR/59124 which is still not fixed. */ -+ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Warray-bounds") -+#endif - const char *trim = _res_hconf.trimdomain[i]; -+ DIAG_POP_NEEDS_COMMENT - - trim_len = strlen (trim); - if (hostname_len > trim_len diff --git a/glibc-rh1013801.patch b/glibc-rh1013801.patch deleted file mode 100644 index abcb8fa..0000000 --- a/glibc-rh1013801.patch +++ /dev/null @@ -1,90 +0,0 @@ -# -# Posted upstream: -# https://sourceware.org/ml/libc-alpha/2013-10/msg00065.html -# -# This is related to bug 1013801 in that it fixes the problem -# by modifying the runtime. In bug 1013801 we have libselinux -# using pthread_atfork which pulls in libpthread, but we don't -# want that, we want libpthread to be pulled in only when -# actually needed by the application. This patch makes it -# possible to avoid requiring libpthread and still use -# pthread_atfork. -# -# The general idea for the design is in the leading comment -# in the source code. -# -diff --git a/nptl/sysdeps/unix/sysv/linux/Makefile b/nptl/sysdeps/unix/sysv/linux/Makefile -index 6078e2d..36fd50b 100644 ---- a/nptl/Makefile -+++ b/nptl/Makefile -@@ -18,7 +18,9 @@ - - routines = alloca_cutoff forward libc-lowlevellock libc-cancellation \ - libc-cleanup libc_pthread_init libc_multiple_threads \ -- register-atfork unregister-atfork -+ register-atfork unregister-atfork libc_pthread_atfork -+ -+static-only-routines += libc_pthread_atfork - shared-only-routines = forward - - libpthread-routines = nptl-init vars events version pt-interp \ -diff --git a/nptl/libc_pthread_atfork.c b/nptl/libc_pthread_atfork.c -new file mode 100644 -index 0000000..667049a ---- /dev/null -+++ b/nptl/libc_pthread_atfork.c -@@ -0,0 +1,54 @@ -+/* Copyright (C) 2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper , 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 -+ . */ -+ -+/* The standard design pattern for making it optional to link against -+ libpthread is to mark the function weak, test if the function -+ address is non-zero and call the function, otherwise use a fallback. -+ The problem with pthread_atfork is that there is no viable -+ fallback. If you need to do something during fork it has to be done -+ via pthread_atfork. This makes having libpthread optional and using -+ pthread_atfork impossible. We make it possible by providing -+ pthread_atfork in libc_nonshared.a. The real work of pthread_atfork -+ is done by __register_atfork which is already provided in -+ libc_nonshared.a. It's included in libc_nonshared.a because -+ __dso_handle has to be unique to each DSO such that unloading the DSO -+ can unregister the atfork handlers. We build pthread_atfork again -+ under a different file name and include it into libc_nonshared.a and -+ libc.a. We keep pthread_atfork in libpthread_nonshared.a and -+ libpthread.a for compatibility and completeness. -+ -+ Applications that can't rely on a new glibc should use the following -+ code to optionally include libpthread and still register a function -+ via pthread_atfork i.e. use __register_atfork directly: -+ -+ extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden"))); -+ extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *); -+ -+ static int __app_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void)) -+ { -+ return __register_atfork (prepare, parent, child, -+ &__dso_handle == NULL ? NULL : __dso_handle); -+ } -+ -+ This code requires glibc 2.3.2 or newer. Previous to 2.3.2 no such -+ interfaces exist and at that point is is impossible to have an -+ optional libpthread and call pthread_atfork. -+ -+ This code adds no more ABI requirements than already exist since -+ __dso_handle and __register_atfork are already part of the ABI. */ -+#include diff --git a/glibc-rh1315108.patch b/glibc-rh1315108.patch deleted file mode 100644 index 8b4e5fc..0000000 --- a/glibc-rh1315108.patch +++ /dev/null @@ -1,1946 +0,0 @@ -From the upstream branch fw/extend_alloca. - -commit dc79f9aa56933dc8b475209f9a4059965b50ea26 -Author: Florian Weimer -Date: Sun Mar 1 18:29:47 2015 +0100 - - nscd restart: Use malloc instead of extend_alloca - - This introduces a separate function, read_cmdline, which reads the - contents of /proc/self/cmdline into a heap-allocated buffer. - - [BZ #18023] - * nscd/connections.c (read_cmdline): New function. - (restart): Use it. Update comment. - -commit 9bed8b7fca7867d3027b66ce3985a75136aed013 -Author: Florian Weimer -Date: Sun Mar 1 15:14:19 2015 +0100 - - getgrent_next_nss (compat-initgroups): Remove alloca fallback - - If the caller-supplied buffer is not large enough, fall back directly - malloc. - - The previous __libc_use_alloca check was incorrect because it did not - take into account that extend_alloca may fail to merge allocations, so - it would underestimate the stack space being used by roughly a factor - of two. - - [BZ #18023] - * nis/nss_compat/compat-initgroups.c (getgrent_next_nss): Fall - back to malloc directly, without stack allocations. - -commit c95cc759ecb21f812872934ac55518aef28cf46b -Author: Florian Weimer -Date: Sun Mar 1 16:03:01 2015 +0100 - - _dl_map_object_deps: Use struct scratch_buffer instead of extend_alloca - - The function comment suggests that _dl_map_object_deps cannot use - malloc, but it already allocates the l_initfini array on the heap, so - the additional allocation should be acceptable. - - [BZ #18023] - * elf/dl-deps.c (_dl_map_object_deps): Use struct - scratch_buffer instead of extend_alloca. - -commit e38bff4db6f03d1fab732737f43a25160c3e4703 -Author: Florian Weimer -Date: Sun Mar 1 16:18:21 2015 +0100 - - _nss_nis_initgroups_dyn: Use struct scratch_buffer instead of extend_alloca - - Also adjusts the internal function get_uid. - - [BZ #18023] - * nis/nss_nis/nis-initgroups.c (get_uid, _nss_nis_initgroups_dyn): - Use struct scratch_buffer instead of extend_alloca. - -commit 8825d4709a686a870d313cc602d489ddd5354a08 -Author: Florian Weimer -Date: Sun Mar 1 18:55:33 2015 +0100 - - nscd: Use struct scratch_buffer instead of extend_alloca in most caches - - This replaces the ERANGE retry loops with loops which have heap - fallback. Heap allocation might actually be required for extremely - large NSS results. - - [BZ #18023] - * nscd/grpcache.c (addgrbyX): Use struct scratch_buffer instead - of extend_alloca. - * nscd/hstcache.c (addhstbyX): Likewise. - * nscd/pwdcache.c (addpwbyX): Likewise. - * nscd/servicescache.c (addservbyX): Likewise. - -commit 140d8711d446f5193b04b56e714ddf8d0eddbf62 -Author: Florian Weimer -Date: Sun Mar 1 18:59:48 2015 +0100 - - nscd: Switch to struct scratch_buffer in adhstaiX - - The pre-allocation of the three scratch buffers increased the initial - stack size somewhat, but if retries are needed, the previous version - used more stack space if extend_alloca could not merge allocations. - Lack of alloca accounting also means could be problematic with - extremely large NSS responses, too. - - [BZ #18023] - * nscd/aicache.c (addhstaiX): Use struct scratch_buffer instead - of extend_alloca. - -commit 1af14faef808f03276766e5ee6d9ee7dc9053fba -Author: Florian Weimer -Date: Sun Mar 1 19:03:01 2015 +0100 - - getent: Switch to struct scratch_buffer in initgroups_keys - - The retry loop is slightly different here because getgrouplist - provides size information, so scratch_buffer_set_array_size can be - used to grow the buffer in a more precise fashion. - - [BZ #18023] - * nss/getent.c (initgroups_keys): Use struct scratch_buffer - instead of extend_alloca. - -commit 9b71d3b4df6dd4e49f7638d1d936c921c50fa3d9 -Author: Florian Weimer -Date: Sun Mar 1 19:09:00 2015 +0100 - - nss_files: Use struct scratch_buffer instead of extend_alloca - - In both _nss_files_gethostbyname3_r and _nss_files_initgroups_dyn, - __libc_use_alloca was misused because it was not taken into account - that extend_alloca can fail to merge allocations. - - [BZ #18023] - * nss/nss_files/files-hosts.c (_nss_files_gethostbyname3_r): - Use struct scratch_buffer instead of extend_alloca. - * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): - Likewise. - -commit 11c2a8bad9ca5fe510b73c0204b3dcf703f14d5c -Author: Florian Weimer -Date: Sun Mar 1 19:11:55 2015 +0100 - - gethostid (Linux variant): Switch to struct scratch_buffer - - Previously, extend_alloca was used without alloca accounting, - which could have been problematic with large NSS results. - - [BZ #18023] - * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Use struct - scratch_buffer instead of extend_alloca. - -commit 6de00dd8a3a76d0b7586393451e65ad6c2721a71 -Author: Florian Weimer -Date: Sun Mar 1 19:14:29 2015 +0100 - - getlogin_r (Linux variant): Switch to struct scratch_buffer - - This corrects the alloca accounting as a side effect. It was not off - if extend_alloca failed to merge allocations. - - [BZ #18023] - * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): - Use struct scratch_buffer instead of extend_alloca. - -commit 488063238ee5c87b66c6982b1b6d508e30e44386 -Author: Florian Weimer -Date: Sun Mar 1 19:48:31 2015 +0100 - - wordexp: Rewrite parse_tilde to use struct scratch_buffer - - [BZ #18023] - * posix/wordexp.c (parse_tilde): Use struct scratch_buffer - instead of extend_alloca. - -commit 7b4c16db30304b83a5d1e913d1a8f7e90a8c398c -Author: Florian Weimer -Date: Sun Mar 1 19:49:50 2015 +0100 - - glob: Rewrite to use struct scratch_buffer instead of extend_alloca - - [BZ #18023] - * posix/glob.c (glob): Use struct scratch_buffer instead of - extend_alloca. - -commit 683543bbb3e2c1b17554c4096d00c2980f39a802 -Author: Florian Weimer -Date: Sun Mar 1 23:22:45 2015 +0100 - - Remove macros extend_alloca, extend_alloca_account [BZ #18023] - - And also the helper macro stackinfo_alloca_round. - - extend_alloca simply does not work on x86_64 and current i386 because - its peculiar stack alignment rules. - - Here's an analysis of the _dl_fini situation (before the removal of - extend_alloca). - - Dump of assembler code for function _dl_fini: - <+0>: push %rbp - <+1>: mov %rsp,%rbp - <+4>: push %r15 - <+6>: push %r14 - <+8>: push %r13 - <+10>: push %r12 - <+12>: push %rbx - <+13>: sub $0x38,%rsp - - The function pushes 6 registers on the stack and allocates 0x38 bytes, - which means that %rsp is a multiple of 16 after function prologue. - - The initial alloca allocation does not change %rsp alignment: - - <+210>: shr $0x4,%rcx - <+214>: shl $0x4,%rcx - <+218>: sub %rcx,%rsp - - %r15 is the address of the previous stack allocation, it is used below. - - This is the extend_alloca reallocation branch: - - <+734>: add $0xf,%rdx - <+738>: and $0xfffffffffffffff0,%rdx - <+742>: lea 0x1e(%rdx),%rcx - <+746>: shr $0x4,%rcx - <+750>: shl $0x4,%rcx - <+754>: sub %rcx,%rsp - <+757>: lea 0xf(%rsp),%rcx - <+762>: and $0xfffffffffffffff0,%rcx - <+766>: lea (%rcx,%rdx,1),%rsi - <+770>: cmp %rsi,%r15 - <+773>: je 0x7f963940b673 <_dl_fini+787> - <+775>: mov %rdx,-0x58(%rbp) - <+787>: add %rdx,-0x58(%rbp) - - (a) %rdx, the new requested size, is rounded up to a multiple of 16 - (+734, %+738), and the result is stored in %rdx@738. - - (b) %rdx@738 + 31 is rounded down to a multiple of 16, the result is - stored in rcx@750 (+742, +746, +750). So %rcx@750 == %rdx@738 + 16. - - (c) %rcx@750 bytes are allocated on the stack (+754). %rsp is rounded - upwards to a multiple of 16, result is stored in %rcx@762 (+757, +762). - This does not change the value of %rsp because it already was a multiple - of 16. - - (d) %rsi@766 == %rcx@762 + %rdx@738 is compared against %r15. But this - comparison is always false because we allocated 16 extra bytes on the - stack in (b), which were reserved for the alignment in (c), but in fact - unused. We are left with a gap in stack usage, and the comparison is - always false. - - (@XXX refers to register values after executing the instruction at - offset +XXX.) - - If the alignment gap was actually used because of different alignment - for %rsp, then the comparison failure would still occur because the gap - would not have been added after this reallocation, but before the - previous allocation. - - As a result, extend_alloca is never able to merge allocations. It also - turns out that the interface is difficult to use, especially in - cojunction with alloca account (which is rarely optional). - - [BZ #18023] - * include/alloca.h (stackinfo_alloca_round, extend_alloca, - extend_alloca_account): Remove. -Index: b/elf/dl-deps.c -=================================================================== ---- a/elf/dl-deps.c -+++ b/elf/dl-deps.c -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - - #include - -@@ -184,9 +185,8 @@ _dl_map_object_deps (struct link_map *ma - /* Pointer to last unique object. */ - tail = &known[nlist - 1]; - -- /* No alloca'd space yet. */ -- struct link_map **needed_space = NULL; -- size_t needed_space_bytes = 0; -+ struct scratch_buffer needed_space; -+ scratch_buffer_init (&needed_space); - - /* Process each element of the search list, loading each of its - auxiliary objects and immediate dependencies. Auxiliary objects -@@ -217,13 +217,12 @@ _dl_map_object_deps (struct link_map *ma - if (l->l_searchlist.r_list == NULL && l->l_initfini == NULL - && l != map && l->l_ldnum > 0) - { -- size_t new_size = l->l_ldnum * sizeof (struct link_map *); -- -- if (new_size > needed_space_bytes) -- needed_space -- = extend_alloca (needed_space, needed_space_bytes, new_size); -- -- needed = needed_space; -+ /* l->l_ldnum includes space for the terminating NULL. */ -+ if (!scratch_buffer_set_array_size -+ (&needed_space, l->l_ldnum, sizeof (struct link_map *))) -+ _dl_signal_error (ENOMEM, map->l_name, NULL, -+ N_("cannot allocate dependency buffer")); -+ needed = needed_space.data; - } - - if (l->l_info[DT_NEEDED] || l->l_info[AUXTAG] || l->l_info[FILTERTAG]) -@@ -463,8 +462,11 @@ _dl_map_object_deps (struct link_map *ma - struct link_map **l_initfini = (struct link_map **) - malloc ((2 * nneeded + 1) * sizeof needed[0]); - if (l_initfini == NULL) -- _dl_signal_error (ENOMEM, map->l_name, NULL, -- N_("cannot allocate dependency list")); -+ { -+ scratch_buffer_free (&needed_space); -+ _dl_signal_error (ENOMEM, map->l_name, NULL, -+ N_("cannot allocate dependency list")); -+ } - l_initfini[0] = l; - memcpy (&l_initfini[1], needed, nneeded * sizeof needed[0]); - memcpy (&l_initfini[nneeded + 1], l_initfini, -@@ -482,6 +484,8 @@ _dl_map_object_deps (struct link_map *ma - } - - out: -+ scratch_buffer_free (&needed_space); -+ - if (errno == 0 && errno_saved != 0) - __set_errno (errno_saved); - -Index: b/include/alloca.h -=================================================================== ---- a/include/alloca.h -+++ b/include/alloca.h -@@ -20,57 +20,17 @@ libc_hidden_proto (__libc_alloca_cutoff) - - #include - --#ifndef stackinfo_alloca_round --# define stackinfo_alloca_round(l) (((l) + 15) & -16) --#endif -- --#if _STACK_GROWS_DOWN --# define extend_alloca(buf, len, newlen) \ -- (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen); \ -- char *__newbuf = __alloca (__newlen); \ -- if (__newbuf + __newlen == (char *) (buf)) \ -- len += __newlen; \ -- else \ -- len = __newlen; \ -- __newbuf; }) --#elif _STACK_GROWS_UP --# define extend_alloca(buf, len, newlen) \ -- (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen); \ -- char *__newbuf = __alloca (__newlen); \ -- char *__buf = (char *) (buf); \ -- if (__buf + len == __newbuf) \ -- { \ -- len += __newlen; \ -- __newbuf = __buf; \ -- } \ -- else \ -- len = __newlen; \ -- __newbuf; }) --#else --# define extend_alloca(buf, len, newlen) \ -- __alloca (((len) = (newlen))) --#endif -- - #if defined stackinfo_get_sp && defined stackinfo_sub_sp - # define alloca_account(size, avar) \ - ({ void *old__ = stackinfo_get_sp (); \ - void *m__ = __alloca (size); \ - avar += stackinfo_sub_sp (old__); \ - m__; }) --# define extend_alloca_account(buf, len, newlen, avar) \ -- ({ void *old__ = stackinfo_get_sp (); \ -- void *m__ = extend_alloca (buf, len, newlen); \ -- avar += stackinfo_sub_sp (old__); \ -- m__; }) - #else - # define alloca_account(size, avar) \ - ({ size_t s__ = (size); \ - avar += s__; \ - __alloca (s__); }) --# define extend_alloca_account(buf, len, newlen, avar) \ -- ({ size_t s__ = (newlen); \ -- avar += s__; \ -- extend_alloca (buf, len, s__); }) - #endif - - #endif -Index: b/nis/nss_compat/compat-initgroups.c -=================================================================== ---- a/nis/nss_compat/compat-initgroups.c -+++ b/nis/nss_compat/compat-initgroups.c -@@ -310,7 +310,6 @@ getgrent_next_nss (ent_t *ent, char *buf - overwrite the pointer with one to a bigger buffer. */ - char *tmpbuf = buffer; - size_t tmplen = buflen; -- bool use_malloc = false; - - for (int i = 0; i < mystart; i++) - { -@@ -319,29 +318,26 @@ getgrent_next_nss (ent_t *ent, char *buf - == NSS_STATUS_TRYAGAIN - && *errnop == ERANGE) - { -- if (__libc_use_alloca (tmplen * 2)) -- { -- if (tmpbuf == buffer) -- { -- tmplen *= 2; -- tmpbuf = __alloca (tmplen); -- } -- else -- tmpbuf = extend_alloca (tmpbuf, tmplen, tmplen * 2); -- } -- else -- { -- tmplen *= 2; -- char *newbuf = realloc (use_malloc ? tmpbuf : NULL, tmplen); -- -- if (newbuf == NULL) -- { -- status = NSS_STATUS_TRYAGAIN; -- goto done; -- } -- use_malloc = true; -- tmpbuf = newbuf; -- } -+ /* Check for overflow. */ -+ if (__glibc_unlikely (tmplen * 2 < tmplen)) -+ { -+ __set_errno (ENOMEM); -+ status = NSS_STATUS_TRYAGAIN; -+ goto done; -+ } -+ /* Increase the size. Make sure that we retry -+ with a reasonable size. */ -+ tmplen *= 2; -+ if (tmplen < 1024) -+ tmplen = 1024; -+ if (tmpbuf != buffer) -+ free (tmpbuf); -+ tmpbuf = malloc (tmplen); -+ if (__glibc_unlikely (tmpbuf == NULL)) -+ { -+ status = NSS_STATUS_TRYAGAIN; -+ goto done; -+ } - } - - if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1)) -@@ -369,7 +365,7 @@ getgrent_next_nss (ent_t *ent, char *buf - status = NSS_STATUS_NOTFOUND; - - done: -- if (use_malloc) -+ if (tmpbuf != buffer) - free (tmpbuf); - } - -Index: b/nis/nss_nis/nis-initgroups.c -=================================================================== ---- a/nis/nss_nis/nis-initgroups.c -+++ b/nis/nss_nis/nis-initgroups.c -@@ -16,7 +16,6 @@ - License along with the GNU C Library; if not, see - . */ - --#include - #include - #include - #include -@@ -27,6 +26,7 @@ - #include - #include - #include -+#include - - #include "nss-nis.h" - #include -@@ -120,27 +120,30 @@ internal_getgrent_r (struct group *grp, - static int - get_uid (const char *user, uid_t *uidp) - { -- size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); -- char *buf = (char *) alloca (buflen); -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - - while (1) - { - struct passwd result; - struct passwd *resp; - -- int r = getpwnam_r (user, &result, buf, buflen, &resp); -+ int r = getpwnam_r (user, &result, tmpbuf.data, tmpbuf.length, &resp); - if (r == 0 && resp != NULL) - { - *uidp = resp->pw_uid; -+ scratch_buffer_free (&tmpbuf); - return 0; - } - - if (r != ERANGE) - break; - -- buf = extend_alloca (buf, buflen, 2 * buflen); -+ if (!scratch_buffer_grow (&tmpbuf)) -+ return 1; - } - -+ scratch_buffer_free (&tmpbuf); - return 1; - } - -@@ -254,8 +257,6 @@ _nss_nis_initgroups_dyn (const char *use - } - - struct group grpbuf, *g; -- size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); -- char *tmpbuf; - enum nss_status status; - intern_t intern = { NULL, NULL, 0 }; - gid_t *groups = *groupsp; -@@ -264,15 +265,21 @@ _nss_nis_initgroups_dyn (const char *use - if (status != NSS_STATUS_SUCCESS) - return status; - -- tmpbuf = __alloca (buflen); -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - - while (1) - { - while ((status = -- internal_getgrent_r (&grpbuf, tmpbuf, buflen, errnop, -+ internal_getgrent_r (&grpbuf, tmpbuf.data, tmpbuf.length, errnop, - &intern)) == NSS_STATUS_TRYAGAIN - && *errnop == ERANGE) -- tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); -+ if (!scratch_buffer_grow (&tmpbuf)) -+ { -+ status = NSS_STATUS_TRYAGAIN; -+ *errnop = errno; -+ goto done; -+ } - - if (status != NSS_STATUS_SUCCESS) - { -@@ -331,6 +338,7 @@ done: - intern.start = intern.start->next; - free (intern.next); - } -+ scratch_buffer_free (&tmpbuf); - - return status; - } -Index: b/nscd/aicache.c -=================================================================== ---- a/nscd/aicache.c -+++ b/nscd/aicache.c -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - - #include "dbg_log.h" - #include "nscd.h" -@@ -113,10 +114,13 @@ addhstaiX (struct database_dyn *db, int - int old_res_options = _res.options; - _res.options &= ~RES_USE_INET6; - -- size_t tmpbuf6len = 1024; -- char *tmpbuf6 = alloca (tmpbuf6len); -- size_t tmpbuf4len = 0; -- char *tmpbuf4 = NULL; -+ struct scratch_buffer tmpbuf6; -+ scratch_buffer_init (&tmpbuf6); -+ struct scratch_buffer tmpbuf4; -+ scratch_buffer_init (&tmpbuf4); -+ struct scratch_buffer canonbuf; -+ scratch_buffer_init (&canonbuf); -+ - int32_t ttl = INT32_MAX; - ssize_t total = 0; - char *key_copy = NULL; -@@ -129,6 +133,7 @@ addhstaiX (struct database_dyn *db, int - int status[2] = { NSS_STATUS_UNAVAIL, NSS_STATUS_UNAVAIL }; - int naddrs = 0; - size_t addrslen = 0; -+ - char *canon = NULL; - size_t canonlen; - -@@ -143,12 +148,17 @@ addhstaiX (struct database_dyn *db, int - at = &atmem; - rc6 = 0; - herrno = 0; -- status[1] = DL_CALL_FCT (fct4, (key, &at, tmpbuf6, tmpbuf6len, -+ status[1] = DL_CALL_FCT (fct4, (key, &at, -+ tmpbuf6.data, tmpbuf6.length, - &rc6, &herrno, &ttl)); - if (rc6 != ERANGE || (herrno != NETDB_INTERNAL - && herrno != TRY_AGAIN)) - break; -- tmpbuf6 = extend_alloca (tmpbuf6, tmpbuf6len, 2 * tmpbuf6len); -+ if (!scratch_buffer_grow (&tmpbuf6)) -+ { -+ rc6 = ENOMEM; -+ break; -+ } - } - - if (rc6 != 0 && herrno == NETDB_INTERNAL) -@@ -226,41 +236,38 @@ addhstaiX (struct database_dyn *db, int - while (1) - { - rc6 = 0; -- status[0] = DL_CALL_FCT (fct, (key, AF_INET6, &th[0], tmpbuf6, -- tmpbuf6len, &rc6, &herrno, &ttl, -+ status[0] = DL_CALL_FCT (fct, (key, AF_INET6, &th[0], -+ tmpbuf6.data, tmpbuf6.length, -+ &rc6, &herrno, &ttl, - &canon)); - if (rc6 != ERANGE || herrno != NETDB_INTERNAL) - break; -- tmpbuf6 = extend_alloca (tmpbuf6, tmpbuf6len, 2 * tmpbuf6len); -+ if (!scratch_buffer_grow (&tmpbuf6)) -+ { -+ rc6 = ENOMEM; -+ break; -+ } - } - - if (rc6 != 0 && herrno == NETDB_INTERNAL) - goto out; - -- /* If the IPv6 lookup has been successful do not use the -- buffer used in that lookup, use a new one. */ -- if (status[0] == NSS_STATUS_SUCCESS && rc6 == 0) -- { -- tmpbuf4len = 512; -- tmpbuf4 = alloca (tmpbuf4len); -- } -- else -- { -- tmpbuf4len = tmpbuf6len; -- tmpbuf4 = tmpbuf6; -- } -- - /* Next collect IPv4 information. */ - while (1) - { - rc4 = 0; -- status[1] = DL_CALL_FCT (fct, (key, AF_INET, &th[1], tmpbuf4, -- tmpbuf4len, &rc4, &herrno, -+ status[1] = DL_CALL_FCT (fct, (key, AF_INET, &th[1], -+ tmpbuf4.data, tmpbuf4.length, -+ &rc4, &herrno, - ttl == INT32_MAX ? &ttl : NULL, - canon == NULL ? &canon : NULL)); - if (rc4 != ERANGE || herrno != NETDB_INTERNAL) - break; -- tmpbuf4 = extend_alloca (tmpbuf4, tmpbuf4len, 2 * tmpbuf4len); -+ if (!scratch_buffer_grow (&tmpbuf4)) -+ { -+ rc4 = ENOMEM; -+ break; -+ } - } - - if (rc4 != 0 && herrno == NETDB_INTERNAL) -@@ -286,13 +293,11 @@ addhstaiX (struct database_dyn *db, int - cfct = __nss_lookup_function (nip, "getcanonname_r"); - if (cfct != NULL) - { -- const size_t max_fqdn_len = 256; -- char *buf = alloca (max_fqdn_len); - char *s; - int rc; - -- if (DL_CALL_FCT (cfct, (key, buf, max_fqdn_len, &s, -- &rc, &herrno)) -+ if (DL_CALL_FCT (cfct, (key, canonbuf.data, canonbuf.length, -+ &s, &rc, &herrno)) - == NSS_STATUS_SUCCESS) - canon = s; - else -@@ -321,18 +326,20 @@ addhstaiX (struct database_dyn *db, int - addrfamily = AF_INET6; - } - -- size_t tmpbuflen = 512; -- char *tmpbuf = alloca (tmpbuflen); - int rc; - while (1) - { - rc = __gethostbyaddr2_r (addr, addrlen, addrfamily, -- &hstent_mem, tmpbuf, tmpbuflen, -+ &hstent_mem, -+ canonbuf.data, canonbuf.length, - &hstent, &herrno, NULL); - if (rc != ERANGE || herrno != NETDB_INTERNAL) - break; -- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, -- tmpbuflen * 2); -+ if (!scratch_buffer_grow (&canonbuf)) -+ { -+ rc = ENOMEM; -+ break; -+ } - } - - if (rc == 0) -@@ -560,6 +567,10 @@ next_nip: - dh->usable = false; - } - -+ scratch_buffer_free (&tmpbuf6); -+ scratch_buffer_free (&tmpbuf4); -+ scratch_buffer_free (&canonbuf); -+ - return timeout; - } - -Index: b/nscd/connections.c -=================================================================== ---- a/nscd/connections.c -+++ b/nscd/connections.c -@@ -1353,64 +1353,83 @@ request from '%s' [%ld] not handled due - } - } - -- --/* Restart the process. */ --static void --restart (void) -+static char * -+read_cmdline (size_t *size) - { -- /* First determine the parameters. We do not use the parameters -- passed to main() since in case nscd is started by running the -- dynamic linker this will not work. Yes, this is not the usual -- case but nscd is part of glibc and we occasionally do this. */ -- size_t buflen = 1024; -- char *buf = alloca (buflen); -- size_t readlen = 0; - int fd = open ("/proc/self/cmdline", O_RDONLY); -- if (fd == -1) -- { -- dbg_log (_("\ --cannot open /proc/self/cmdline: %s; disabling paranoia mode"), -- strerror (errno)); -- -- paranoia = 0; -- return; -+ if (fd < 0) -+ return NULL; -+ size_t current = 0; -+ size_t limit = 1024; -+ char *buffer = malloc (limit); -+ if (buffer == NULL) -+ { -+ close (fd); -+ errno = ENOMEM; -+ return NULL; - } -- - while (1) - { -- ssize_t n = TEMP_FAILURE_RETRY (read (fd, buf + readlen, -- buflen - readlen)); -- if (n == -1) -+ if (current == limit) - { -- dbg_log (_("\ --cannot read /proc/self/cmdline: %s; disabling paranoia mode"), -- strerror (errno)); -+ char *newptr; -+ if (2 * limit < limit -+ || (newptr = realloc (buffer, 2 * limit)) == NULL) -+ { -+ free (buffer); -+ close (fd); -+ errno = ENOMEM; -+ return NULL; -+ } -+ buffer = newptr; -+ limit *= 2; -+ } - -+ ssize_t n = TEMP_FAILURE_RETRY (read (fd, buffer + current, -+ limit - current)); -+ if (n == -1) -+ { -+ int e = errno; -+ free (buffer); - close (fd); -- paranoia = 0; -- return; -+ errno = e; -+ return NULL; - } -- -- readlen += n; -- -- if (readlen < buflen) -+ if (n == 0) - break; -- -- /* We might have to extend the buffer. */ -- size_t old_buflen = buflen; -- char *newp = extend_alloca (buf, buflen, 2 * buflen); -- buf = memmove (newp, buf, old_buflen); -+ current += n; - } - - close (fd); -+ *size = current; -+ return buffer; -+} -+ -+ -+/* Restart the process. */ -+static void -+restart (void) -+{ -+ /* First determine the parameters. We do not use the parameters -+ passed to main() because then nscd would would use the system -+ libc after restarting even if it was started by a non-system -+ dynamic linker during glibc testing. */ -+ size_t readlen; -+ char *cmdline = read_cmdline (&readlen); -+ if (cmdline == NULL) -+ { -+ dbg_log (_("\ -+cannot open /proc/self/cmdline: %m; disabling paranoia mode")); -+ paranoia = 0; -+ return; -+ } - - /* Parse the command line. Worst case scenario: every two - characters form one parameter (one character plus NUL). */ - char **argv = alloca ((readlen / 2 + 1) * sizeof (argv[0])); - int argc = 0; - -- char *cp = buf; -- while (cp < buf + readlen) -+ for (char *cp = cmdline; cp < cmdline + readlen;) - { - argv[argc++] = cp; - cp = (char *) rawmemchr (cp, '\0') + 1; -@@ -1427,6 +1446,7 @@ cannot change to old UID: %s; disabling - strerror (errno)); - - paranoia = 0; -+ free (cmdline); - return; - } - -@@ -1438,6 +1458,7 @@ cannot change to old GID: %s; disabling - - ignore_value (setuid (server_uid)); - paranoia = 0; -+ free (cmdline); - return; - } - } -@@ -1455,6 +1476,7 @@ cannot change to old working directory: - ignore_value (setgid (server_gid)); - } - paranoia = 0; -+ free (cmdline); - return; - } - -@@ -1503,6 +1525,7 @@ cannot change to old working directory: - dbg_log (_("cannot change current working directory to \"/\": %s"), - strerror (errno)); - paranoia = 0; -+ free (cmdline); - - /* Reenable the databases. */ - time_t now = time (NULL); -Index: b/nscd/grpcache.c -=================================================================== ---- a/nscd/grpcache.c -+++ b/nscd/grpcache.c -@@ -16,7 +16,6 @@ - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - --#include - #include - #include - #include -@@ -32,6 +31,7 @@ - #include - #include - #include -+#include - - #include "nscd.h" - #include "dbg_log.h" -@@ -448,12 +448,12 @@ addgrbyX (struct database_dyn *db, int f - look again in the table whether the dataset is now available. We - simply insert it. It does not matter if it is in there twice. The - pruning function only will look at the timestamp. */ -- size_t buflen = 1024; -- char *buffer = (char *) alloca (buflen); -+ - struct group resultbuf; - struct group *grp; -- bool use_malloc = false; - int errval = 0; -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - - if (__glibc_unlikely (debug_level > 0)) - { -@@ -463,43 +463,24 @@ addgrbyX (struct database_dyn *db, int f - dbg_log (_("Reloading \"%s\" in group cache!"), keystr); - } - -- while (lookup (req->type, key, &resultbuf, buffer, buflen, &grp) != 0 -+ while (lookup (req->type, key, &resultbuf, -+ tmpbuf.data, tmpbuf.length, &grp) != 0 - && (errval = errno) == ERANGE) -- { -- errno = 0; -- -- if (__glibc_unlikely (buflen > 32768)) -- { -- char *old_buffer = buffer; -- buflen *= 2; -- buffer = (char *) realloc (use_malloc ? buffer : NULL, buflen); -- if (buffer == NULL) -- { -- /* We ran out of memory. We cannot do anything but -- sending a negative response. In reality this should -- never happen. */ -- grp = NULL; -- buffer = old_buffer; -- -- /* We set the error to indicate this is (possibly) a -- temporary error and that it does not mean the entry -- is not available at all. */ -- errval = EAGAIN; -- break; -- } -- use_malloc = true; -- } -- else -- /* Allocate a new buffer on the stack. If possible combine it -- with the previously allocated buffer. */ -- buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); -- } -+ if (!scratch_buffer_grow (&tmpbuf)) -+ { -+ /* We ran out of memory. We cannot do anything but sending a -+ negative response. In reality this should never -+ happen. */ -+ grp = NULL; -+ /* We set the error to indicate this is (possibly) a temporary -+ error and that it does not mean the entry is not available -+ at all. */ -+ errval = EAGAIN; -+ break; -+ } - - time_t timeout = cache_addgr (db, fd, req, keystr, grp, uid, he, dh, errval); -- -- if (use_malloc) -- free (buffer); -- -+ scratch_buffer_free (&tmpbuf); - return timeout; - } - -Index: b/nscd/hstcache.c -=================================================================== ---- a/nscd/hstcache.c -+++ b/nscd/hstcache.c -@@ -34,6 +34,7 @@ - #include - #include - #include -+#include - - #include "nscd.h" - #include "dbg_log.h" -@@ -463,11 +464,8 @@ addhstbyX (struct database_dyn *db, int - look again in the table whether the dataset is now available. We - simply insert it. It does not matter if it is in there twice. The - pruning function only will look at the timestamp. */ -- int buflen = 1024; -- char *buffer = (char *) alloca (buflen); - struct hostent resultbuf; - struct hostent *hst; -- bool use_malloc = false; - int errval = 0; - int32_t ttl = INT32_MAX; - -@@ -487,46 +485,30 @@ addhstbyX (struct database_dyn *db, int - dbg_log (_("Reloading \"%s\" in hosts cache!"), (char *) str); - } - -- while (lookup (req->type, key, &resultbuf, buffer, buflen, &hst, &ttl) != 0 -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); -+ -+ while (lookup (req->type, key, &resultbuf, -+ tmpbuf.data, tmpbuf.length, &hst, &ttl) != 0 - && h_errno == NETDB_INTERNAL - && (errval = errno) == ERANGE) -- { -- errno = 0; -- -- if (__glibc_unlikely (buflen > 32768)) -- { -- char *old_buffer = buffer; -- buflen *= 2; -- buffer = (char *) realloc (use_malloc ? buffer : NULL, buflen); -- if (buffer == NULL) -- { -- /* We ran out of memory. We cannot do anything but -- sending a negative response. In reality this should -- never happen. */ -- hst = NULL; -- buffer = old_buffer; -- -- /* We set the error to indicate this is (possibly) a -- temporary error and that it does not mean the entry -- is not available at all. */ -- h_errno = TRY_AGAIN; -- errval = EAGAIN; -- break; -- } -- use_malloc = true; -- } -- else -- /* Allocate a new buffer on the stack. If possible combine it -- with the previously allocated buffer. */ -- buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); -- } -+ if (!scratch_buffer_grow (&tmpbuf)) -+ { -+ /* We ran out of memory. We cannot do anything but sending a -+ negative response. In reality this should never -+ happen. */ -+ hst = NULL; -+ /* We set the error to indicate this is (possibly) a temporary -+ error and that it does not mean the entry is not -+ available at all. */ -+ h_errno = TRY_AGAIN; -+ errval = EAGAIN; -+ break; -+ } - - time_t timeout = cache_addhst (db, fd, req, key, hst, uid, he, dh, - h_errno == TRY_AGAIN ? errval : 0, ttl); -- -- if (use_malloc) -- free (buffer); -- -+ scratch_buffer_free (&tmpbuf); - return timeout; - } - -Index: b/nscd/pwdcache.c -=================================================================== ---- a/nscd/pwdcache.c -+++ b/nscd/pwdcache.c -@@ -16,7 +16,6 @@ - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - --#include - #include - #include - #include -@@ -32,6 +31,7 @@ - #include - #include - #include -+#include - - #include "nscd.h" - #include "dbg_log.h" -@@ -426,12 +426,11 @@ addpwbyX (struct database_dyn *db, int f - look again in the table whether the dataset is now available. We - simply insert it. It does not matter if it is in there twice. The - pruning function only will look at the timestamp. */ -- size_t buflen = 1024; -- char *buffer = (char *) alloca (buflen); - struct passwd resultbuf; - struct passwd *pwd; -- bool use_malloc = false; - int errval = 0; -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - - if (__glibc_unlikely (debug_level > 0)) - { -@@ -441,45 +440,26 @@ addpwbyX (struct database_dyn *db, int f - dbg_log (_("Reloading \"%s\" in password cache!"), keystr); - } - -- while (lookup (req->type, key, &resultbuf, buffer, buflen, &pwd) != 0 -+ while (lookup (req->type, key, &resultbuf, -+ tmpbuf.data, tmpbuf.length, &pwd) != 0 - && (errval = errno) == ERANGE) -- { -- errno = 0; -- -- if (__glibc_unlikely (buflen > 32768)) -- { -- char *old_buffer = buffer; -- buflen *= 2; -- buffer = (char *) realloc (use_malloc ? buffer : NULL, buflen); -- if (buffer == NULL) -- { -- /* We ran out of memory. We cannot do anything but -- sending a negative response. In reality this should -- never happen. */ -- pwd = NULL; -- buffer = old_buffer; -- -- /* We set the error to indicate this is (possibly) a -- temporary error and that it does not mean the entry -- is not available at all. */ -- errval = EAGAIN; -- break; -- } -- use_malloc = true; -- } -- else -- /* Allocate a new buffer on the stack. If possible combine it -- with the previously allocated buffer. */ -- buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); -- } -+ if (!scratch_buffer_grow (&tmpbuf)) -+ { -+ /* We ran out of memory. We cannot do anything but sending a -+ negative response. In reality this should never -+ happen. */ -+ pwd = NULL; -+ /* We set the error to indicate this is (possibly) a temporary -+ error and that it does not mean the entry is not available -+ at all. */ -+ errval = EAGAIN; -+ break; -+ } - - /* Add the entry to the cache. */ - time_t timeout = cache_addpw (db, fd, req, keystr, pwd, c_uid, he, dh, - errval); -- -- if (use_malloc) -- free (buffer); -- -+ scratch_buffer_free (&tmpbuf); - return timeout; - } - -Index: b/nscd/servicescache.c -=================================================================== ---- a/nscd/servicescache.c -+++ b/nscd/servicescache.c -@@ -16,7 +16,6 @@ - You should have received a copy of the GNU General Public License - along with this program; if not, see . */ - --#include - #include - #include - #include -@@ -25,6 +24,7 @@ - #include - #include - #include -+#include - - #include "nscd.h" - #include "dbg_log.h" -@@ -374,12 +374,11 @@ addservbyX (struct database_dyn *db, int - look again in the table whether the dataset is now available. We - simply insert it. It does not matter if it is in there twice. The - pruning function only will look at the timestamp. */ -- size_t buflen = 1024; -- char *buffer = (char *) alloca (buflen); - struct servent resultbuf; - struct servent *serv; -- bool use_malloc = false; - int errval = 0; -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - - if (__glibc_unlikely (debug_level > 0)) - { -@@ -389,43 +388,24 @@ addservbyX (struct database_dyn *db, int - dbg_log (_("Reloading \"%s\" in services cache!"), key); - } - -- while (lookup (req->type, key, &resultbuf, buffer, buflen, &serv) != 0 -+ while (lookup (req->type, key, &resultbuf, -+ tmpbuf.data, tmpbuf.length, &serv) != 0 - && (errval = errno) == ERANGE) -- { -- errno = 0; -- -- if (__glibc_unlikely (buflen > 32768)) -- { -- char *old_buffer = buffer; -- buflen *= 2; -- buffer = (char *) realloc (use_malloc ? buffer : NULL, buflen); -- if (buffer == NULL) -- { -- /* We ran out of memory. We cannot do anything but -- sending a negative response. In reality this should -- never happen. */ -- serv = NULL; -- buffer = old_buffer; -- -- /* We set the error to indicate this is (possibly) a -- temporary error and that it does not mean the entry -- is not available at all. */ -- errval = EAGAIN; -- break; -- } -- use_malloc = true; -- } -- else -- /* Allocate a new buffer on the stack. If possible combine it -- with the previously allocated buffer. */ -- buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); -- } -+ if (!scratch_buffer_grow (&tmpbuf)) -+ { -+ /* We ran out of memory. We cannot do anything but sending a -+ negative response. In reality this should never -+ happen. */ -+ serv = NULL; -+ /* We set the error to indicate this is (possibly) a temporary -+ error and that it does not mean the entry is not available -+ at all. */ -+ errval = EAGAIN; -+ break; -+ } - - time_t timeout = cache_addserv (db, fd, req, key, serv, uid, he, dh, errval); -- -- if (use_malloc) -- free (buffer); -- -+ scratch_buffer_free (&tmpbuf); - return timeout; - } - -Index: b/nss/getent.c -=================================================================== ---- a/nss/getent.c -+++ b/nss/getent.c -@@ -39,6 +39,7 @@ - #include - #include - #include -+#include - - /* Get libc version number. */ - #include -@@ -477,30 +478,34 @@ netgroup_keys (int number, char *key[]) - static int - initgroups_keys (int number, char *key[]) - { -- int ngrps = 100; -- size_t grpslen = ngrps * sizeof (gid_t); -- gid_t *grps = alloca (grpslen); -- - if (number == 0) - { - fprintf (stderr, _("Enumeration not supported on %s\n"), "initgroups"); - return 3; - } - -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); -+ - for (int i = 0; i < number; ++i) - { -+ ssize_t ngrps = tmpbuf.length / sizeof (gid_t); - int no = ngrps; - int n; -- while ((n = getgrouplist (key[i], -1, grps, &no)) == -1 -+ while ((n = getgrouplist (key[i], -1, tmpbuf.data, &no)) == -1 - && no > ngrps) - { -- grps = extend_alloca (grps, grpslen, no * sizeof (gid_t)); -- ngrps = no; -+ if (!scratch_buffer_set_array_size (&tmpbuf, no, sizeof (gid_t))) -+ { -+ fprintf (stderr, _("Could not allocate group list: %m\n")); -+ return 3; -+ } - } - - if (n == -1) - return 1; - -+ const gid_t *grps = tmpbuf.data; - printf ("%-21s", key[i]); - for (int j = 0; j < n; ++j) - if (grps[j] != -1) -@@ -508,6 +513,8 @@ initgroups_keys (int number, char *key[] - putchar_unlocked ('\n'); - } - -+ scratch_buffer_free (&tmpbuf); -+ - return 0; - } - -Index: b/nss/nss_files/files-hosts.c -=================================================================== ---- a/nss/nss_files/files-hosts.c -+++ b/nss/nss_files/files-hosts.c -@@ -22,7 +22,7 @@ - #include - #include - #include -- -+#include - - /* Get implementation for some internal functions. */ - #include "../resolv/mapv4v6addr.h" -@@ -145,15 +145,12 @@ _nss_files_gethostbyname3_r (const char - && _res_hconf.flags & HCONF_FLAG_MULTI) - { - /* We have to get all host entries from the file. */ -- size_t tmp_buflen = MIN (buflen, 4096); -- char tmp_buffer_stack[tmp_buflen] -- __attribute__ ((__aligned__ (__alignof__ (struct hostent_data)))); -- char *tmp_buffer = tmp_buffer_stack; - struct hostent tmp_result_buf; - int naddrs = 1; - int naliases = 0; - char *bufferend; -- bool tmp_buffer_malloced = false; -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - - while (result->h_aliases[naliases] != NULL) - ++naliases; -@@ -161,9 +158,9 @@ _nss_files_gethostbyname3_r (const char - bufferend = (char *) &result->h_aliases[naliases + 1]; - - again: -- while ((status = internal_getent (stream, &tmp_result_buf, tmp_buffer, -- tmp_buflen, errnop, herrnop, af, -- flags)) -+ while ((status = internal_getent (stream, &tmp_result_buf, -+ tmpbuf.data, tmpbuf.length, -+ errnop, herrnop, af, flags)) - == NSS_STATUS_SUCCESS) - { - int matches = 1; -@@ -287,54 +284,13 @@ _nss_files_gethostbyname3_r (const char - } - } - -- if (status == NSS_STATUS_TRYAGAIN) -- { -- size_t newsize = 2 * tmp_buflen; -- if (tmp_buffer_malloced) -- { -- char *newp = realloc (tmp_buffer, newsize); -- if (newp != NULL) -- { -- assert ((((uintptr_t) newp) -- & (__alignof__ (struct hostent_data) - 1)) -- == 0); -- tmp_buffer = newp; -- tmp_buflen = newsize; -- goto again; -- } -- } -- else if (!__libc_use_alloca (buflen + newsize)) -- { -- tmp_buffer = malloc (newsize); -- if (tmp_buffer != NULL) -- { -- assert ((((uintptr_t) tmp_buffer) -- & (__alignof__ (struct hostent_data) - 1)) -- == 0); -- tmp_buffer_malloced = true; -- tmp_buflen = newsize; -- goto again; -- } -- } -- else -- { -- tmp_buffer -- = extend_alloca (tmp_buffer, tmp_buflen, -- newsize -- + __alignof__ (struct hostent_data)); -- tmp_buffer = (char *) (((uintptr_t) tmp_buffer -- + __alignof__ (struct hostent_data) -- - 1) -- & ~(__alignof__ (struct hostent_data) -- - 1)); -- goto again; -- } -- } -+ if (status == NSS_STATUS_TRYAGAIN -+ && scratch_buffer_grow (&tmpbuf)) -+ goto again; - else - status = NSS_STATUS_SUCCESS; - out: -- if (tmp_buffer_malloced) -- free (tmp_buffer); -+ scratch_buffer_free (&tmpbuf); - } - - internal_endent (&stream); -Index: b/nss/nss_files/files-initgroups.c -=================================================================== ---- a/nss/nss_files/files-initgroups.c -+++ b/nss/nss_files/files-initgroups.c -@@ -16,7 +16,6 @@ - License along with the GNU C Library; if not, see - . */ - --#include - #include - #include - #include -@@ -25,6 +24,7 @@ - #include - #include - #include -+#include - - enum nss_status - _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, -@@ -46,9 +46,8 @@ _nss_files_initgroups_dyn (const char *u - enum nss_status status = NSS_STATUS_SUCCESS; - bool any = false; - -- size_t buflen = 1024; -- void *buffer = alloca (buflen); -- bool buffer_use_malloc = false; -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - - gid_t *groups = *groupsp; - -@@ -67,26 +66,16 @@ _nss_files_initgroups_dyn (const char *u - } - - struct group grp; -- int res = _nss_files_parse_grent (line, &grp, buffer, buflen, errnop); -+ int res = _nss_files_parse_grent (line, &grp, -+ tmpbuf.data, tmpbuf.length, errnop); - if (res == -1) - { -- size_t newbuflen = 2 * buflen; -- if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen)) -+ if (!scratch_buffer_grow (&tmpbuf)) - { -- void *newbuf = realloc (buffer_use_malloc ? buffer : NULL, -- newbuflen); -- if (newbuf == NULL) -- { -- *errnop = ENOMEM; -- status = NSS_STATUS_TRYAGAIN; -- goto out; -- } -- buffer = newbuf; -- buflen = newbuflen; -- buffer_use_malloc = true; -+ *errnop = ENOMEM; -+ status = NSS_STATUS_TRYAGAIN; -+ goto out; - } -- else -- buffer = extend_alloca (buffer, buflen, newbuflen); - /* Reread current line, the parser has clobbered it. */ - fsetpos (stream, &pos); - continue; -@@ -132,8 +121,7 @@ _nss_files_initgroups_dyn (const char *u - - out: - /* Free memory. */ -- if (buffer_use_malloc) -- free (buffer); -+ scratch_buffer_free (&tmpbuf); - free (line); - - fclose (stream); -Index: b/posix/glob.c -=================================================================== ---- a/posix/glob.c -+++ b/posix/glob.c -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - - /* Outcomment the following line for production quality code. */ - /* #define NDEBUG 1 */ -@@ -293,7 +294,7 @@ glob (const char *pattern, int flags, in - glob_t dirs; - int retval = 0; - #ifdef _LIBC -- size_t alloca_used = 0; -+ size_t alloca_used = sizeof (struct scratch_buffer); - #endif - - if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0) -@@ -650,33 +651,13 @@ glob (const char *pattern, int flags, in - { - struct passwd *p; - # if defined HAVE_GETPWNAM_R || defined _LIBC -- long int pwbuflen = GETPW_R_SIZE_MAX (); -- char *pwtmpbuf; - struct passwd pwbuf; -- int malloc_pwtmpbuf = 0; - int save = errno; -+ struct scratch_buffer pwtmpbuf; -+ scratch_buffer_init (&pwtmpbuf); - --# ifndef _LIBC -- if (pwbuflen == -1) -- /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX. -- Try a moderate value. */ -- pwbuflen = 1024; --# endif -- if (__libc_use_alloca (alloca_used + pwbuflen)) -- pwtmpbuf = alloca_account (pwbuflen, alloca_used); -- else -- { -- pwtmpbuf = malloc (pwbuflen); -- if (pwtmpbuf == NULL) -- { -- retval = GLOB_NOSPACE; -- goto out; -- } -- malloc_pwtmpbuf = 1; -- } -- -- while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p) -- != 0) -+ while (getpwnam_r (name, &pwbuf, -+ pwtmpbuf.data, pwtmpbuf.length, &p) != 0) - { - if (errno != ERANGE) - { -@@ -684,67 +665,37 @@ glob (const char *pattern, int flags, in - break; - } - -- if (!malloc_pwtmpbuf -- && __libc_use_alloca (alloca_used -- + 2 * pwbuflen)) -- pwtmpbuf = extend_alloca_account (pwtmpbuf, pwbuflen, -- 2 * pwbuflen, -- alloca_used); -- else -+ if (!scratch_buffer_grow (&pwtmpbuf)) - { -- char *newp = realloc (malloc_pwtmpbuf -- ? pwtmpbuf : NULL, -- 2 * pwbuflen); -- if (newp == NULL) -- { -- if (__glibc_unlikely (malloc_pwtmpbuf)) -- free (pwtmpbuf); -- retval = GLOB_NOSPACE; -- goto out; -- } -- pwtmpbuf = newp; -- pwbuflen = 2 * pwbuflen; -- malloc_pwtmpbuf = 1; -+ retval = GLOB_NOSPACE; -+ goto out; - } - __set_errno (save); - } - # else -- p = getpwnam (name); -+ p = getpwnam (namebuf.data); - # endif - if (p != NULL) - { -- if (!malloc_pwtmpbuf) -- home_dir = p->pw_dir; -- else -+ home_dir = strdup (p->pw_dir); -+ malloc_home_dir = 1; -+ if (home_dir == NULL) - { -- size_t home_dir_len = strlen (p->pw_dir) + 1; -- if (__libc_use_alloca (alloca_used + home_dir_len)) -- home_dir = alloca_account (home_dir_len, -- alloca_used); -- else -- { -- home_dir = malloc (home_dir_len); -- if (home_dir == NULL) -- { -- free (pwtmpbuf); -- retval = GLOB_NOSPACE; -- goto out; -- } -- malloc_home_dir = 1; -- } -- memcpy (home_dir, p->pw_dir, home_dir_len); -- -- free (pwtmpbuf); -+ scratch_buffer_free (&pwtmpbuf); -+ retval = GLOB_NOSPACE; -+ goto out; - } - } -+ scratch_buffer_free (&pwtmpbuf); - } - } - if (home_dir == NULL || home_dir[0] == '\0') - { -+ if (malloc_home_dir) -+ free (home_dir); -+ malloc_home_dir = 0; - if (flags & GLOB_TILDE_CHECK) - { -- if (__glibc_unlikely (malloc_home_dir)) -- free (home_dir); - retval = GLOB_NOMATCH; - goto out; - } -@@ -865,57 +816,24 @@ glob (const char *pattern, int flags, in - { - struct passwd *p; - # if defined HAVE_GETPWNAM_R || defined _LIBC -- long int buflen = GETPW_R_SIZE_MAX (); -- char *pwtmpbuf; -- int malloc_pwtmpbuf = 0; - struct passwd pwbuf; - int save = errno; -+ struct scratch_buffer pwtmpbuf; -+ scratch_buffer_init (&pwtmpbuf); - --# ifndef _LIBC -- if (buflen == -1) -- /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX. Try a -- moderate value. */ -- buflen = 1024; --# endif -- if (__libc_use_alloca (alloca_used + buflen)) -- pwtmpbuf = alloca_account (buflen, alloca_used); -- else -- { -- pwtmpbuf = malloc (buflen); -- if (pwtmpbuf == NULL) -- { -- nomem_getpw: -- if (__glibc_unlikely (malloc_user_name)) -- free (user_name); -- retval = GLOB_NOSPACE; -- goto out; -- } -- malloc_pwtmpbuf = 1; -- } -- -- while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0) -+ while (getpwnam_r (user_name, &pwbuf, -+ pwtmpbuf.data, pwtmpbuf.length, &p) != 0) - { - if (errno != ERANGE) - { - p = NULL; - break; - } -- if (!malloc_pwtmpbuf -- && __libc_use_alloca (alloca_used + 2 * buflen)) -- pwtmpbuf = extend_alloca_account (pwtmpbuf, buflen, -- 2 * buflen, alloca_used); -- else -+ -+ if (!scratch_buffer_grow (&pwtmpbuf)) - { -- char *newp = realloc (malloc_pwtmpbuf ? pwtmpbuf : NULL, -- 2 * buflen); -- if (newp == NULL) -- { -- if (__glibc_unlikely (malloc_pwtmpbuf)) -- free (pwtmpbuf); -- goto nomem_getpw; -- } -- pwtmpbuf = newp; -- malloc_pwtmpbuf = 1; -+ retval = GLOB_NOSPACE; -+ goto out; - } - __set_errno (save); - } -@@ -944,8 +862,7 @@ glob (const char *pattern, int flags, in - dirname = malloc (home_len + rest_len + 1); - if (dirname == NULL) - { -- if (__glibc_unlikely (malloc_pwtmpbuf)) -- free (pwtmpbuf); -+ scratch_buffer_free (&pwtmpbuf); - retval = GLOB_NOSPACE; - goto out; - } -@@ -957,13 +874,11 @@ glob (const char *pattern, int flags, in - dirlen = home_len + rest_len; - dirname_modified = 1; - -- if (__glibc_unlikely (malloc_pwtmpbuf)) -- free (pwtmpbuf); -+ scratch_buffer_free (&pwtmpbuf); - } - else - { -- if (__glibc_unlikely (malloc_pwtmpbuf)) -- free (pwtmpbuf); -+ scratch_buffer_free (&pwtmpbuf); - - if (flags & GLOB_TILDE_CHECK) - /* We have to regard it as an error if we cannot find the -Index: b/posix/wordexp.c -=================================================================== ---- a/posix/wordexp.c -+++ b/posix/wordexp.c -@@ -17,7 +17,6 @@ - License along with the GNU C Library; if not, see - . */ - --#include - #include - #include - #include -@@ -41,6 +40,7 @@ - #include - #include - #include -+#include - - #include - #include <_itoa.h> -@@ -308,12 +308,7 @@ parse_tilde (char **word, size_t *word_l - if (i == 1 + *offset) - { - /* Tilde appears on its own */ -- uid_t uid; -- struct passwd pwd, *tpwd; -- int buflen = 1000; - char* home; -- char* buffer; -- int result; - - /* POSIX.2 says ~ expands to $HOME and if HOME is unset the - results are unspecified. We do a lookup on the uid if -@@ -328,25 +323,38 @@ parse_tilde (char **word, size_t *word_l - } - else - { -- uid = __getuid (); -- buffer = __alloca (buflen); -- -- while ((result = __getpwuid_r (uid, &pwd, buffer, buflen, &tpwd)) != 0 -+ struct passwd pwd, *tpwd; -+ uid_t uid = __getuid (); -+ int result; -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); -+ -+ while ((result = __getpwuid_r (uid, &pwd, -+ tmpbuf.data, tmpbuf.length, -+ &tpwd)) != 0 - && errno == ERANGE) -- buffer = extend_alloca (buffer, buflen, buflen + 1000); -+ if (!scratch_buffer_grow (&tmpbuf)) -+ return WRDE_NOSPACE; - - if (result == 0 && tpwd != NULL && pwd.pw_dir != NULL) - { - *word = w_addstr (*word, word_length, max_length, pwd.pw_dir); - if (*word == NULL) -- return WRDE_NOSPACE; -+ { -+ scratch_buffer_free (&tmpbuf); -+ return WRDE_NOSPACE; -+ } - } - else - { - *word = w_addchar (*word, word_length, max_length, '~'); - if (*word == NULL) -- return WRDE_NOSPACE; -+ { -+ scratch_buffer_free (&tmpbuf); -+ return WRDE_NOSPACE; -+ } - } -+ scratch_buffer_free (&tmpbuf); - } - } - else -@@ -354,13 +362,15 @@ parse_tilde (char **word, size_t *word_l - /* Look up user name in database to get home directory */ - char *user = strndupa (&words[1 + *offset], i - (1 + *offset)); - struct passwd pwd, *tpwd; -- int buflen = 1000; -- char* buffer = __alloca (buflen); - int result; -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - -- while ((result = __getpwnam_r (user, &pwd, buffer, buflen, &tpwd)) != 0 -+ while ((result = __getpwnam_r (user, &pwd, tmpbuf.data, tmpbuf.length, -+ &tpwd)) != 0 - && errno == ERANGE) -- buffer = extend_alloca (buffer, buflen, buflen + 1000); -+ if (!scratch_buffer_grow (&tmpbuf)) -+ return WRDE_NOSPACE; - - if (result == 0 && tpwd != NULL && pwd.pw_dir) - *word = w_addstr (*word, word_length, max_length, pwd.pw_dir); -@@ -372,6 +382,8 @@ parse_tilde (char **word, size_t *word_l - *word = w_addstr (*word, word_length, max_length, user); - } - -+ scratch_buffer_free (&tmpbuf); -+ - *offset = i - 1; - } - return *word ? 0 : WRDE_NOSPACE; -Index: b/sysdeps/unix/sysv/linux/gethostid.c -=================================================================== ---- a/sysdeps/unix/sysv/linux/gethostid.c -+++ b/sysdeps/unix/sysv/linux/gethostid.c -@@ -63,13 +63,12 @@ sethostid (long int id) - # include - # include - # include -+# include - - long int - gethostid (void) - { - char hostname[MAXHOSTNAMELEN + 1]; -- size_t buflen; -- char *buffer; - struct hostent hostbuf, *hp; - int32_t id; - struct in_addr in; -@@ -94,23 +93,26 @@ gethostid (void) - /* This also fails. Return and arbitrary value. */ - return 0; - -- buflen = 1024; -- buffer = __alloca (buflen); -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - - /* To get the IP address we need to know the host name. */ -- while (__gethostbyname_r (hostname, &hostbuf, buffer, buflen, &hp, &herr) -- != 0 -+ while (__gethostbyname_r (hostname, &hostbuf, -+ tmpbuf.data, tmpbuf.length, &hp, &herr) != 0 - || hp == NULL) - if (herr != NETDB_INTERNAL || errno != ERANGE) -- return 0; -+ { -+ scratch_buffer_free (&tmpbuf); -+ return 0; -+ } - else -- /* Enlarge buffer. */ -- buffer = extend_alloca (buffer, buflen, 2 * buflen); -+ if (!scratch_buffer_grow (&tmpbuf)) -+ return 0; - - in.s_addr = 0; - memcpy (&in, hp->h_addr, - (int) sizeof (in) < hp->h_length ? (int) sizeof (in) : hp->h_length); -- -+ scratch_buffer_free (&tmpbuf); - /* For the return value to be not exactly the IP address we do some - bit fiddling. */ - return (int32_t) (in.s_addr << 16 | in.s_addr >> 16); -Index: b/sysdeps/unix/sysv/linux/getlogin_r.c -=================================================================== ---- a/sysdeps/unix/sysv/linux/getlogin_r.c -+++ b/sysdeps/unix/sysv/linux/getlogin_r.c -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - - #define STATIC static - static int getlogin_r_fd0 (char *name, size_t namesize); -@@ -54,28 +55,19 @@ __getlogin_r_loginuid (char *name, size_ - endp == uidbuf || *endp != '\0')) - return -1; - -- size_t buflen = 1024; -- char *buf = alloca (buflen); -- bool use_malloc = false; - struct passwd pwd; - struct passwd *tpwd; - int result = 0; - int res; -+ struct scratch_buffer tmpbuf; -+ scratch_buffer_init (&tmpbuf); - -- while ((res = __getpwuid_r (uid, &pwd, buf, buflen, &tpwd)) == ERANGE) -- if (__libc_use_alloca (2 * buflen)) -- buf = extend_alloca (buf, buflen, 2 * buflen); -- else -+ while ((res = __getpwuid_r (uid, &pwd, -+ tmpbuf.data, tmpbuf.length, &tpwd)) == ERANGE) -+ if (!scratch_buffer_grow (&tmpbuf)) - { -- buflen *= 2; -- char *newp = realloc (use_malloc ? buf : NULL, buflen); -- if (newp == NULL) -- { -- result = ENOMEM; -- goto out; -- } -- buf = newp; -- use_malloc = true; -+ result = ENOMEM; -+ goto out; - } - - if (res != 0 || tpwd == NULL) -@@ -95,9 +87,7 @@ __getlogin_r_loginuid (char *name, size_ - memcpy (name, pwd.pw_name, needed); - - out: -- if (use_malloc) -- free (buf); -- -+ scratch_buffer_free (&tmpbuf); - return result; - } - diff --git a/glibc-rh1315476-1.patch b/glibc-rh1315476-1.patch deleted file mode 100644 index a1a6eaf..0000000 --- a/glibc-rh1315476-1.patch +++ /dev/null @@ -1,54 +0,0 @@ -commit a4551b7f6ce08317220a8cd79cd3d02a03648752 -Author: Florian Weimer -Date: Wed Jul 13 11:50:04 2016 +0200 - - sln: Preprocessor cleanups - -diff --git a/elf/sln.c b/elf/sln.c -index f52cb9f..fa4ccec 100644 ---- a/elf/sln.c -+++ b/elf/sln.c -@@ -16,10 +16,6 @@ - License along with the GNU C Library; if not, see - . */ - --#ifdef HAVE_CONFIG_H --# include "config.h" --#endif -- - #include - #include - #include -@@ -37,10 +33,6 @@ - - #define PACKAGE _libc_intl_domainname - --#if !defined S_ISDIR && defined S_IFDIR --#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) --#endif -- - static int makesymlink (const char *src, const char *dest); - static int makesymlinks (const char *file); - static void usage (void); -@@ -89,9 +81,6 @@ usage (void) - static int - makesymlinks (const char *file) - { --#ifndef PATH_MAX --#define PATH_MAX 4095 --#endif - char *buffer = NULL; - size_t bufferlen = 0; - int ret; -@@ -190,11 +179,7 @@ makesymlink (const char *src, const char *dest) - return -1; - } - --#ifdef S_ISLNK - if (symlink (src, dest) == 0) --#else -- if (link (src, dest) == 0) --#endif - { - /* Destination must exist by now. */ - if (access (dest, F_OK)) diff --git a/glibc-rh1315476-2.patch b/glibc-rh1315476-2.patch deleted file mode 100644 index 305f30e..0000000 --- a/glibc-rh1315476-2.patch +++ /dev/null @@ -1,164 +0,0 @@ -commit 9f9503b56a8c7566c91d486a67be5d41792a87ca -Author: Florian Weimer -Date: Wed Jul 13 14:06:00 2016 +0200 - - sln: Install as a hard link to ldconfig - - Implementing and sln and ldconfig with the same binary saves - around 850 KiB from a glibc installation. - - The sln program is implicitly tested during the build, so no test - case is needed. - -diff --git a/elf/Makefile b/elf/Makefile -index 593403c..d90f21a 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -70,12 +70,8 @@ install-others = $(inst_rtlddir)/$(rtld-installed-name) - install-bin-script = ldd - endif - --others = sprof sln -+others = sprof - install-bin = sprof --others-static = sln --install-rootsbin = sln --sln-modules := static-stubs --extra-objs += $(sln-modules:=.o) - - ifeq (yes,$(use-ldconfig)) - ifeq (yes,$(build-shared)) -@@ -83,8 +79,16 @@ others-static += ldconfig - others += ldconfig - install-rootsbin += ldconfig - --ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon static-stubs -+ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon static-stubs sln - extra-objs += $(ldconfig-modules:=.o) -+ -+# Install sln as a hard link to ldconfig. -+install-others-programs += $(inst_rootsbindir)/sln -+others: $(objpfx)sln -+$(objpfx)sln: $(objpfx)ldconfig -+ ln -f $< $@ -+$(inst_rootsbindir)/sln: $(inst_rootsbindir)/ldconfig -+ ln -f $< $@ - endif - endif - -@@ -466,8 +470,6 @@ $(objpfx)ldd: ldd.bash.in $(common-objpfx)soversions.mk \ - - $(objpfx)sprof: $(libdl) - --$(objpfx)sln: $(sln-modules:%=$(objpfx)%.o) -- - $(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o) - - SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"' -diff --git a/elf/ldconfig.c b/elf/ldconfig.c -index 467ca82..972737c 100644 ---- a/elf/ldconfig.c -+++ b/elf/ldconfig.c -@@ -44,6 +44,8 @@ - - #include - -+#include "sln.h" -+ - #ifdef _DL_FIRST_PLATFORM - # define _DL_FIRST_EXTRA (_DL_FIRST_PLATFORM + _DL_PLATFORMS_COUNT) - #else -@@ -1275,6 +1277,9 @@ main (int argc, char **argv) - /* Set the text message domain. */ - textdomain (_libc_intl_domainname); - -+ if (run_sln (argv[0])) -+ return sln_main (argc, argv); -+ - /* Parse and process arguments. */ - int remaining; - argp_parse (&argp, argc, argv, 0, &remaining, NULL); -diff --git a/elf/sln.c b/elf/sln.c -index fa4ccec..c6889d7 100644 ---- a/elf/sln.c -+++ b/elf/sln.c -@@ -1,4 +1,4 @@ --/* `sln' program to create symbolic links between files. -+/* sln helper to create symbolic links between files, invoked from ldconfig. - Copyright (C) 1998-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - -@@ -31,21 +31,29 @@ - - #include "../version.h" - --#define PACKAGE _libc_intl_domainname -+#include "sln.h" - - static int makesymlink (const char *src, const char *dest); - static int makesymlinks (const char *file); - static void usage (void); - --int --main (int argc, char **argv) -+/* Check if we have to run sln. */ -+bool -+run_sln (const char *argv0) - { -- /* Set locale via LC_ALL. */ -- setlocale (LC_ALL, ""); -- -- /* Set the text message domain. */ -- textdomain (PACKAGE); -+ const char *slash = strrchr (argv0, '/'); -+ const char *progname; -+ if (slash == NULL) -+ progname = argv0; -+ else -+ progname = slash + 1; -+ return strcmp (progname, "sln") == 0; -+} - -+/* Invoked from ldconfig. */ -+int -+sln_main (int argc, char **argv) -+{ - switch (argc) - { - case 2: -diff --git a/elf/sln.h b/elf/sln.h -new file mode 100644 -index 0000000..a3a16ab ---- /dev/null -+++ b/elf/sln.h -@@ -0,0 +1,30 @@ -+/* Interface of the sln command-line tool. -+ 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 -+ . */ -+ -+#ifndef SLN_H -+#define SLN_H -+ -+#include -+ -+/* Return true if main should invoke sln_main. */ -+bool run_sln (const char *argv0); -+ -+/* Main routine of the sln command. */ -+int sln_main (int argc, char **argv); -+ -+#endif /* SLN_H */ diff --git a/glibc-rh1335011.patch b/glibc-rh1335011.patch deleted file mode 100644 index 8738f9a..0000000 --- a/glibc-rh1335011.patch +++ /dev/null @@ -1,176 +0,0 @@ -Revert these two upstream commits, to unbreak ASAN: - -commit e91bd7465816f474617dcb4bbfe72f3594c5783c -Author: Adhemerval Zanella -Date: Thu Mar 31 10:51:51 2016 -0300 - - Fix tst-dlsym-error build - - This patch fixes the new test tst-dlsym-error build on aarch64 - (and possible other architectures as well) due missing strchrnul - definition. - - * elf/tst-dlsym-error.c: Include for strchrnul. - -commit 7d45c163d00c88d5875a112343c4ea3e61349e6b -Author: Florian Weimer -Date: Thu Mar 31 11:26:55 2016 +0200 - - Report dlsym, dlvsym lookup errors using dlerror [BZ #19509] - - * elf/dl-lookup.c (_dl_lookup_symbol_x): Report error even if - skip_map != NULL. - * elf/tst-dlsym-error.c: New file. - * elf/Makefile (tests): Add tst-dlsym-error. - (tst-dlsym-error): Link against libdl. - -Index: b/elf/Makefile -=================================================================== ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -149,7 +149,7 @@ tests += loadtest restest1 preloadtest l - tst-nodelete) \ - tst-initorder tst-initorder2 tst-relsort1 tst-null-argv \ - tst-ptrguard1 tst-tlsalign tst-tlsalign-extern tst-nodelete-opened \ -- tst-nodelete2 tst-audit11 tst-audit12 tst-dlsym-error -+ tst-nodelete2 tst-audit11 tst-audit12 - # reldep9 - ifeq ($(build-hardcoded-path-in-tests),yes) - tests += tst-dlopen-aout -@@ -1258,5 +1258,3 @@ $(objpfx)tst-prelink-cmp.out: tst-prelin - $(objpfx)tst-ldconfig-X.out : tst-ldconfig-X.sh $(objpfx)ldconfig - $(SHELL) $< '$(common-objpfx)' '$(test-wrapper)' '$(test-wrapper-env)' > $@; \ - $(evaluate-test) -- --$(objpfx)tst-dlsym-error: $(libdl) -Index: b/elf/dl-lookup.c -=================================================================== ---- a/elf/dl-lookup.c -+++ b/elf/dl-lookup.c -@@ -858,6 +858,7 @@ _dl_lookup_symbol_x (const char *undef_n - if (__glibc_unlikely (current_value.s == NULL)) - { - if ((*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK) -+ && skip_map == NULL - && !(GLRO(dl_debug_mask) & DL_DEBUG_UNUSED)) - { - /* We could find no value for a strong reference. */ -Index: b/elf/tst-dlsym-error.c -=================================================================== ---- a/elf/tst-dlsym-error.c -+++ /dev/null -@@ -1,114 +0,0 @@ --/* Test error reporting for dlsym, dlvsym failures. -- 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 -- . */ -- --#include --#include --#include --#include --#include -- --/* Used to disambiguate symbol names. */ --static int counter; -- --static void --test_one (void *handle, const char *name, void *(func) (void *, const char *), -- const char *suffix) --{ -- ++counter; -- char symbol[32]; -- snprintf (symbol, sizeof (symbol), "no_such_symbol_%d", counter); -- char *expected_message; -- if (asprintf (&expected_message, ": undefined symbol: %s%s", -- symbol, suffix) < 0) -- { -- printf ("error: asprintf: %m\n"); -- abort (); -- } -- -- void *addr = func (handle, symbol); -- if (addr != NULL) -- { -- printf ("error: %s: found symbol \"no_such_symbol\"\n", name); -- abort (); -- } -- const char *message = dlerror (); -- if (message == NULL) -- { -- printf ("error: %s: missing error message\n", name); -- abort (); -- } -- const char *message_without_path = strchrnul (message, ':'); -- if (strcmp (message_without_path, expected_message) != 0) -- { -- printf ("error: %s: unexpected error message: %s\n", name, message); -- abort (); -- } -- free (expected_message); -- -- message = dlerror (); -- if (message != NULL) -- { -- printf ("error: %s: unexpected error message: %s\n", name, message); -- abort (); -- } --} -- --static void --test_handles (const char *name, void *(func) (void *, const char *), -- const char *suffix) --{ -- test_one (RTLD_DEFAULT, name, func, suffix); -- test_one (RTLD_NEXT, name, func, suffix); -- -- void *handle = dlopen (LIBC_SO, RTLD_LAZY); -- if (handle == NULL) -- { -- printf ("error: cannot dlopen %s: %s\n", LIBC_SO, dlerror ()); -- abort (); -- } -- test_one (handle, name, func, suffix); -- dlclose (handle); --} -- --static void * --dlvsym_no_such_version (void *handle, const char *name) --{ -- return dlvsym (handle, name, "NO_SUCH_VERSION"); --} -- --static void * --dlvsym_glibc_private (void *handle, const char *name) --{ -- return dlvsym (handle, name, "GLIBC_PRIVATE"); --} -- --static int --do_test (void) --{ -- test_handles ("dlsym", dlsym, ""); -- test_handles ("dlvsym", dlvsym_no_such_version, -- ", version NO_SUCH_VERSION"); -- test_handles ("dlvsym", dlvsym_glibc_private, -- ", version GLIBC_PRIVATE"); -- -- return 0; --} -- -- --#define TEST_FUNCTION do_test () --#include "../test-skeleton.c" diff --git a/glibc-rh1351108-update-to-unicode-9.0.0.patch b/glibc-rh1351108-update-to-unicode-9.0.0.patch deleted file mode 100644 index 1c74c22..0000000 --- a/glibc-rh1351108-update-to-unicode-9.0.0.patch +++ /dev/null @@ -1,11569 +0,0 @@ -From e94a2464105ed50a3e92553c5fc9fc04d0ba86cb Mon Sep 17 00:00:00 2001 -From: Mike FABIAN -Date: Wed, 29 Jun 2016 08:40:51 +0200 -Subject: [PATCH 1/2] Update to Unicode 9.0.0 - -Update __STDC_ISO_10646__ to 201605L for Unicode 9.0.0. -Update character encoding, ctype, and transliteration tables. ---- - include/stdc-predef.h | 10 +- - localedata/charmaps/UTF-8 | 1670 +++++++++++++- - localedata/locales/i18n | 2616 ++++++++++++---------- - localedata/locales/tr_TR | 2616 ++++++++++++---------- - localedata/locales/translit_circle | 2 +- - localedata/locales/translit_cjk_compat | 4 +- - localedata/locales/translit_combining | 262 ++- - localedata/locales/translit_compat | 2 +- - localedata/locales/translit_font | 2 +- - localedata/locales/translit_fraction | 2 +- - localedata/unicode-gen/DerivedCoreProperties.txt | 412 +++- - localedata/unicode-gen/EastAsianWidth.txt | 288 ++- - localedata/unicode-gen/Makefile | 2 +- - localedata/unicode-gen/UnicodeData.txt | 1383 +++++++++++- - 17 files changed, 6702 insertions(+), 2595 deletions(-) - -diff --git a/include/stdc-predef.h b/include/stdc-predef.h -index f9f7f73..0c756b7 100644 ---- a/include/stdc-predef.h -+++ b/include/stdc-predef.h -@@ -49,10 +49,12 @@ - # define __STDC_IEC_559_COMPLEX__ 1 - #endif - --/* wchar_t uses Unicode 8.0.0. Version 8.0 of the Unicode Standard is -- synchronized with ISO/IEC 10646:2014, plus Amendment 1 (published -- 2015-05-15). */ --#define __STDC_ISO_10646__ 201505L -+/* wchar_t uses Unicode 9.0.0. Version 9.0 of the Unicode Standard is -+ synchronized with ISO/IEC 10646:2014, fourth edition, plus -+ Amd. 1 and Amd. 2 and 273 characters from forthcoming 10646, fifth edition. -+ (Amd. 2 was published 2016-05-01, -+ see https://www.iso.org/obp/ui/#iso:std:iso-iec:10646:ed-4:v1:amd:2:v1:en) */ -+#define __STDC_ISO_10646__ 201605L - - /* We do not support C11 . */ - #define __STDC_NO_THREADS__ 1 -diff --git a/localedata/charmaps/UTF-8 b/localedata/charmaps/UTF-8 -index 40ace9c..8463d58 100644 ---- a/localedata/charmaps/UTF-8 -+++ b/localedata/charmaps/UTF-8 -@@ -2102,6 +2102,29 @@ CHARMAP - /xe0/xa2/xb2 ARABIC LETTER ZAIN WITH INVERTED V ABOVE - /xe0/xa2/xb3 ARABIC LETTER AIN WITH THREE DOTS BELOW - /xe0/xa2/xb4 ARABIC LETTER KAF WITH DOT BELOW -+ /xe0/xa2/xb6 ARABIC LETTER BEH WITH SMALL MEEM ABOVE -+ /xe0/xa2/xb7 ARABIC LETTER PEH WITH SMALL MEEM ABOVE -+ /xe0/xa2/xb8 ARABIC LETTER TEH WITH SMALL TEH ABOVE -+ /xe0/xa2/xb9 ARABIC LETTER REH WITH SMALL NOON ABOVE -+ /xe0/xa2/xba ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE -+ /xe0/xa2/xbb ARABIC LETTER AFRICAN FEH -+ /xe0/xa2/xbc ARABIC LETTER AFRICAN QAF -+ /xe0/xa2/xbd ARABIC LETTER AFRICAN NOON -+ /xe0/xa3/x94 ARABIC SMALL HIGH WORD AR-RUB -+ /xe0/xa3/x95 ARABIC SMALL HIGH SAD -+ /xe0/xa3/x96 ARABIC SMALL HIGH AIN -+ /xe0/xa3/x97 ARABIC SMALL HIGH QAF -+ /xe0/xa3/x98 ARABIC SMALL HIGH NOON WITH KASRA -+ /xe0/xa3/x99 ARABIC SMALL LOW NOON WITH KASRA -+ /xe0/xa3/x9a ARABIC SMALL HIGH WORD ATH-THALATHA -+ /xe0/xa3/x9b ARABIC SMALL HIGH WORD AS-SAJDA -+ /xe0/xa3/x9c ARABIC SMALL HIGH WORD AN-NISF -+ /xe0/xa3/x9d ARABIC SMALL HIGH WORD SAKTA -+ /xe0/xa3/x9e ARABIC SMALL HIGH WORD QIF -+ /xe0/xa3/x9f ARABIC SMALL HIGH WORD WAQFA -+ /xe0/xa3/xa0 ARABIC SMALL HIGH FOOTNOTE MARKER -+ /xe0/xa3/xa1 ARABIC SMALL HIGH SIGN SAFHA -+ /xe0/xa3/xa2 ARABIC DISPUTED END OF AYAH - /xe0/xa3/xa3 ARABIC TURNED DAMMA BELOW - /xe0/xa3/xa4 ARABIC CURLY FATHA - /xe0/xa3/xa5 ARABIC CURLY DAMMA -@@ -2774,6 +2797,7 @@ CHARMAP - /xe0/xb1/xbd TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR - /xe0/xb1/xbe TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR - /xe0/xb1/xbf TELUGU SIGN TUUMU -+ /xe0/xb2/x80 KANNADA SIGN SPACING CANDRABINDU - /xe0/xb2/x81 KANNADA SIGN CANDRABINDU - /xe0/xb2/x82 KANNADA SIGN ANUSVARA - /xe0/xb2/x83 KANNADA SIGN VISARGA -@@ -2932,7 +2956,18 @@ CHARMAP - /xe0/xb5/x8c MALAYALAM VOWEL SIGN AU - /xe0/xb5/x8d MALAYALAM SIGN VIRAMA - /xe0/xb5/x8e MALAYALAM LETTER DOT REPH -+ /xe0/xb5/x8f MALAYALAM SIGN PARA -+ /xe0/xb5/x94 MALAYALAM LETTER CHILLU M -+ /xe0/xb5/x95 MALAYALAM LETTER CHILLU Y -+ /xe0/xb5/x96 MALAYALAM LETTER CHILLU LLL - /xe0/xb5/x97 MALAYALAM AU LENGTH MARK -+ /xe0/xb5/x98 MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH -+ /xe0/xb5/x99 MALAYALAM FRACTION ONE FORTIETH -+ /xe0/xb5/x9a MALAYALAM FRACTION THREE EIGHTIETHS -+ /xe0/xb5/x9b MALAYALAM FRACTION ONE TWENTIETH -+ /xe0/xb5/x9c MALAYALAM FRACTION ONE TENTH -+ /xe0/xb5/x9d MALAYALAM FRACTION THREE TWENTIETHS -+ /xe0/xb5/x9e MALAYALAM FRACTION ONE FIFTH - /xe0/xb5/x9f MALAYALAM LETTER ARCHAIC II - /xe0/xb5/xa0 MALAYALAM LETTER VOCALIC RR - /xe0/xb5/xa1 MALAYALAM LETTER VOCALIC LL -@@ -2954,6 +2989,9 @@ CHARMAP - /xe0/xb5/xb3 MALAYALAM FRACTION ONE QUARTER - /xe0/xb5/xb4 MALAYALAM FRACTION ONE HALF - /xe0/xb5/xb5 MALAYALAM FRACTION THREE QUARTERS -+ /xe0/xb5/xb6 MALAYALAM FRACTION ONE SIXTEENTH -+ /xe0/xb5/xb7 MALAYALAM FRACTION ONE EIGHTH -+ /xe0/xb5/xb8 MALAYALAM FRACTION THREE SIXTEENTHS - /xe0/xb5/xb9 MALAYALAM DATE MARK - /xe0/xb5/xba MALAYALAM LETTER CHILLU NN - /xe0/xb5/xbb MALAYALAM LETTER CHILLU N -@@ -6328,6 +6366,15 @@ CHARMAP - /xe1/xb1/xbd OL CHIKI AHAD - /xe1/xb1/xbe OL CHIKI PUNCTUATION MUCAAD - /xe1/xb1/xbf OL CHIKI PUNCTUATION DOUBLE MUCAAD -+ /xe1/xb2/x80 CYRILLIC SMALL LETTER ROUNDED VE -+ /xe1/xb2/x81 CYRILLIC SMALL LETTER LONG-LEGGED DE -+ /xe1/xb2/x82 CYRILLIC SMALL LETTER NARROW O -+ /xe1/xb2/x83 CYRILLIC SMALL LETTER WIDE ES -+ /xe1/xb2/x84 CYRILLIC SMALL LETTER TALL TE -+ /xe1/xb2/x85 CYRILLIC SMALL LETTER THREE-LEGGED TE -+ /xe1/xb2/x86 CYRILLIC SMALL LETTER TALL HARD SIGN -+ /xe1/xb2/x87 CYRILLIC SMALL LETTER TALL YAT -+ /xe1/xb2/x88 CYRILLIC SMALL LETTER UNBLENDED UK - /xe1/xb3/x80 SUNDANESE PUNCTUATION BINDU SURYA - /xe1/xb3/x81 SUNDANESE PUNCTUATION BINDU PANGLONG - /xe1/xb3/x82 SUNDANESE PUNCTUATION BINDU PURNAMA -@@ -6623,6 +6670,7 @@ CHARMAP - /xe1/xb7/xb3 COMBINING LATIN SMALL LETTER O WITH DIAERESIS - /xe1/xb7/xb4 COMBINING LATIN SMALL LETTER U WITH DIAERESIS - /xe1/xb7/xb5 COMBINING UP TACK ABOVE -+ /xe1/xb7/xbb COMBINING DELETION MARK - /xe1/xb7/xbc COMBINING DOUBLE INVERTED BREVE BELOW - /xe1/xb7/xbd COMBINING ALMOST EQUAL TO BELOW - /xe1/xb7/xbe COMBINING LEFT ARROWHEAD ABOVE -@@ -8092,6 +8140,10 @@ CHARMAP - /xe2/x8f/xb8 DOUBLE VERTICAL BAR - /xe2/x8f/xb9 BLACK SQUARE FOR STOP - /xe2/x8f/xba BLACK CIRCLE FOR RECORD -+ /xe2/x8f/xbb POWER SYMBOL -+ /xe2/x8f/xbc POWER ON-OFF SYMBOL -+ /xe2/x8f/xbd POWER ON SYMBOL -+ /xe2/x8f/xbe POWER SLEEP SYMBOL - /xe2/x90/x80 SYMBOL FOR NULL - /xe2/x90/x81 SYMBOL FOR START OF HEADING - /xe2/x90/x82 SYMBOL FOR START OF TEXT -@@ -10570,6 +10622,8 @@ CHARMAP - /xe2/xb9/x80 DOUBLE HYPHEN - /xe2/xb9/x81 REVERSED COMMA - /xe2/xb9/x82 DOUBLE LOW-REVERSED-9 QUOTATION MARK -+ /xe2/xb9/x83 DASH WITH LEFT UPTURN -+ /xe2/xb9/x84 DOUBLE SUSPENSION MARK - /xe2/xba/x80 CJK RADICAL REPEAT - /xe2/xba/x81 CJK RADICAL CLIFF - /xe2/xba/x82 CJK RADICAL SECOND ONE -@@ -14325,6 +14379,7 @@ CHARMAP - /xea/x9e/xab LATIN CAPITAL LETTER REVERSED OPEN E - /xea/x9e/xac LATIN CAPITAL LETTER SCRIPT G - /xea/x9e/xad LATIN CAPITAL LETTER L WITH BELT -+ /xea/x9e/xae LATIN CAPITAL LETTER SMALL CAPITAL I - /xea/x9e/xb0 LATIN CAPITAL LETTER TURNED K - /xea/x9e/xb1 LATIN CAPITAL LETTER TURNED T - /xea/x9e/xb2 LATIN CAPITAL LETTER J WITH CROSSED-TAIL -@@ -14521,6 +14576,7 @@ CHARMAP - /xea/xa3/x82 SAURASHTRA VOWEL SIGN OO - /xea/xa3/x83 SAURASHTRA VOWEL SIGN AU - /xea/xa3/x84 SAURASHTRA SIGN VIRAMA -+ /xea/xa3/x85 SAURASHTRA SIGN CANDRABINDU - /xea/xa3/x8e SAURASHTRA DANDA - /xea/xa3/x8f SAURASHTRA DOUBLE DANDA - /xea/xa3/x90 SAURASHTRA DIGIT ZERO -@@ -28538,6 +28594,8 @@ CHARMAP - /xf0/x90/x86/x8a GREEK ZERO SIGN - /xf0/x90/x86/x8b GREEK ONE QUARTER SIGN - /xf0/x90/x86/x8c GREEK SINUSOID SIGN -+ /xf0/x90/x86/x8d GREEK INDICTION SIGN -+ /xf0/x90/x86/x8e NOMISMA SIGN - /xf0/x90/x86/x90 ROMAN SEXTANS SIGN - /xf0/x90/x86/x91 ROMAN UNCIA SIGN - /xf0/x90/x86/x92 ROMAN SEMUNCIA SIGN -@@ -29058,6 +29116,78 @@ CHARMAP - /xf0/x90/x92/xa7 OSMANYA DIGIT SEVEN - /xf0/x90/x92/xa8 OSMANYA DIGIT EIGHT - /xf0/x90/x92/xa9 OSMANYA DIGIT NINE -+ /xf0/x90/x92/xb0 OSAGE CAPITAL LETTER A -+ /xf0/x90/x92/xb1 OSAGE CAPITAL LETTER AI -+ /xf0/x90/x92/xb2 OSAGE CAPITAL LETTER AIN -+ /xf0/x90/x92/xb3 OSAGE CAPITAL LETTER AH -+ /xf0/x90/x92/xb4 OSAGE CAPITAL LETTER BRA -+ /xf0/x90/x92/xb5 OSAGE CAPITAL LETTER CHA -+ /xf0/x90/x92/xb6 OSAGE CAPITAL LETTER EHCHA -+ /xf0/x90/x92/xb7 OSAGE CAPITAL LETTER E -+ /xf0/x90/x92/xb8 OSAGE CAPITAL LETTER EIN -+ /xf0/x90/x92/xb9 OSAGE CAPITAL LETTER HA -+ /xf0/x90/x92/xba OSAGE CAPITAL LETTER HYA -+ /xf0/x90/x92/xbb OSAGE CAPITAL LETTER I -+ /xf0/x90/x92/xbc OSAGE CAPITAL LETTER KA -+ /xf0/x90/x92/xbd OSAGE CAPITAL LETTER EHKA -+ /xf0/x90/x92/xbe OSAGE CAPITAL LETTER KYA -+ /xf0/x90/x92/xbf OSAGE CAPITAL LETTER LA -+ /xf0/x90/x93/x80 OSAGE CAPITAL LETTER MA -+ /xf0/x90/x93/x81 OSAGE CAPITAL LETTER NA -+ /xf0/x90/x93/x82 OSAGE CAPITAL LETTER O -+ /xf0/x90/x93/x83 OSAGE CAPITAL LETTER OIN -+ /xf0/x90/x93/x84 OSAGE CAPITAL LETTER PA -+ /xf0/x90/x93/x85 OSAGE CAPITAL LETTER EHPA -+ /xf0/x90/x93/x86 OSAGE CAPITAL LETTER SA -+ /xf0/x90/x93/x87 OSAGE CAPITAL LETTER SHA -+ /xf0/x90/x93/x88 OSAGE CAPITAL LETTER TA -+ /xf0/x90/x93/x89 OSAGE CAPITAL LETTER EHTA -+ /xf0/x90/x93/x8a OSAGE CAPITAL LETTER TSA -+ /xf0/x90/x93/x8b OSAGE CAPITAL LETTER EHTSA -+ /xf0/x90/x93/x8c OSAGE CAPITAL LETTER TSHA -+ /xf0/x90/x93/x8d OSAGE CAPITAL LETTER DHA -+ /xf0/x90/x93/x8e OSAGE CAPITAL LETTER U -+ /xf0/x90/x93/x8f OSAGE CAPITAL LETTER WA -+ /xf0/x90/x93/x90 OSAGE CAPITAL LETTER KHA -+ /xf0/x90/x93/x91 OSAGE CAPITAL LETTER GHA -+ /xf0/x90/x93/x92 OSAGE CAPITAL LETTER ZA -+ /xf0/x90/x93/x93 OSAGE CAPITAL LETTER ZHA -+ /xf0/x90/x93/x98 OSAGE SMALL LETTER A -+ /xf0/x90/x93/x99 OSAGE SMALL LETTER AI -+ /xf0/x90/x93/x9a OSAGE SMALL LETTER AIN -+ /xf0/x90/x93/x9b OSAGE SMALL LETTER AH -+ /xf0/x90/x93/x9c OSAGE SMALL LETTER BRA -+ /xf0/x90/x93/x9d OSAGE SMALL LETTER CHA -+ /xf0/x90/x93/x9e OSAGE SMALL LETTER EHCHA -+ /xf0/x90/x93/x9f OSAGE SMALL LETTER E -+ /xf0/x90/x93/xa0 OSAGE SMALL LETTER EIN -+ /xf0/x90/x93/xa1 OSAGE SMALL LETTER HA -+ /xf0/x90/x93/xa2 OSAGE SMALL LETTER HYA -+ /xf0/x90/x93/xa3 OSAGE SMALL LETTER I -+ /xf0/x90/x93/xa4 OSAGE SMALL LETTER KA -+ /xf0/x90/x93/xa5 OSAGE SMALL LETTER EHKA -+ /xf0/x90/x93/xa6 OSAGE SMALL LETTER KYA -+ /xf0/x90/x93/xa7 OSAGE SMALL LETTER LA -+ /xf0/x90/x93/xa8 OSAGE SMALL LETTER MA -+ /xf0/x90/x93/xa9 OSAGE SMALL LETTER NA -+ /xf0/x90/x93/xaa OSAGE SMALL LETTER O -+ /xf0/x90/x93/xab OSAGE SMALL LETTER OIN -+ /xf0/x90/x93/xac OSAGE SMALL LETTER PA -+ /xf0/x90/x93/xad OSAGE SMALL LETTER EHPA -+ /xf0/x90/x93/xae OSAGE SMALL LETTER SA -+ /xf0/x90/x93/xaf OSAGE SMALL LETTER SHA -+ /xf0/x90/x93/xb0 OSAGE SMALL LETTER TA -+ /xf0/x90/x93/xb1 OSAGE SMALL LETTER EHTA -+ /xf0/x90/x93/xb2 OSAGE SMALL LETTER TSA -+ /xf0/x90/x93/xb3 OSAGE SMALL LETTER EHTSA -+ /xf0/x90/x93/xb4 OSAGE SMALL LETTER TSHA -+ /xf0/x90/x93/xb5 OSAGE SMALL LETTER DHA -+ /xf0/x90/x93/xb6 OSAGE SMALL LETTER U -+ /xf0/x90/x93/xb7 OSAGE SMALL LETTER WA -+ /xf0/x90/x93/xb8 OSAGE SMALL LETTER KHA -+ /xf0/x90/x93/xb9 OSAGE SMALL LETTER GHA -+ /xf0/x90/x93/xba OSAGE SMALL LETTER ZA -+ /xf0/x90/x93/xbb OSAGE SMALL LETTER ZHA - /xf0/x90/x94/x80 ELBASAN LETTER A - /xf0/x90/x94/x81 ELBASAN LETTER BE - /xf0/x90/x94/x82 ELBASAN LETTER CE -@@ -30884,6 +31014,7 @@ CHARMAP - /xf0/x91/x88/xbb KHOJKI SECTION MARK - /xf0/x91/x88/xbc KHOJKI DOUBLE SECTION MARK - /xf0/x91/x88/xbd KHOJKI ABBREVIATION SIGN -+ /xf0/x91/x88/xbe KHOJKI SIGN SUKUN - /xf0/x91/x8a/x80 MULTANI LETTER A - /xf0/x91/x8a/x81 MULTANI LETTER I - /xf0/x91/x8a/x82 MULTANI LETTER U -@@ -31076,6 +31207,98 @@ CHARMAP - /xf0/x91/x8d/xb2 COMBINING GRANTHA LETTER NA - /xf0/x91/x8d/xb3 COMBINING GRANTHA LETTER VI - /xf0/x91/x8d/xb4 COMBINING GRANTHA LETTER PA -+ /xf0/x91/x90/x80 NEWA LETTER A -+ /xf0/x91/x90/x81 NEWA LETTER AA -+ /xf0/x91/x90/x82 NEWA LETTER I -+ /xf0/x91/x90/x83 NEWA LETTER II -+ /xf0/x91/x90/x84 NEWA LETTER U -+ /xf0/x91/x90/x85 NEWA LETTER UU -+ /xf0/x91/x90/x86 NEWA LETTER VOCALIC R -+ /xf0/x91/x90/x87 NEWA LETTER VOCALIC RR -+ /xf0/x91/x90/x88 NEWA LETTER VOCALIC L -+ /xf0/x91/x90/x89 NEWA LETTER VOCALIC LL -+ /xf0/x91/x90/x8a NEWA LETTER E -+ /xf0/x91/x90/x8b NEWA LETTER AI -+ /xf0/x91/x90/x8c NEWA LETTER O -+ /xf0/x91/x90/x8d NEWA LETTER AU -+ /xf0/x91/x90/x8e NEWA LETTER KA -+ /xf0/x91/x90/x8f NEWA LETTER KHA -+ /xf0/x91/x90/x90 NEWA LETTER GA -+ /xf0/x91/x90/x91 NEWA LETTER GHA -+ /xf0/x91/x90/x92 NEWA LETTER NGA -+ /xf0/x91/x90/x93 NEWA LETTER NGHA -+ /xf0/x91/x90/x94 NEWA LETTER CA -+ /xf0/x91/x90/x95 NEWA LETTER CHA -+ /xf0/x91/x90/x96 NEWA LETTER JA -+ /xf0/x91/x90/x97 NEWA LETTER JHA -+ /xf0/x91/x90/x98 NEWA LETTER NYA -+ /xf0/x91/x90/x99 NEWA LETTER NYHA -+ /xf0/x91/x90/x9a NEWA LETTER TTA -+ /xf0/x91/x90/x9b NEWA LETTER TTHA -+ /xf0/x91/x90/x9c NEWA LETTER DDA -+ /xf0/x91/x90/x9d NEWA LETTER DDHA -+ /xf0/x91/x90/x9e NEWA LETTER NNA -+ /xf0/x91/x90/x9f NEWA LETTER TA -+ /xf0/x91/x90/xa0 NEWA LETTER THA -+ /xf0/x91/x90/xa1 NEWA LETTER DA -+ /xf0/x91/x90/xa2 NEWA LETTER DHA -+ /xf0/x91/x90/xa3 NEWA LETTER NA -+ /xf0/x91/x90/xa4 NEWA LETTER NHA -+ /xf0/x91/x90/xa5 NEWA LETTER PA -+ /xf0/x91/x90/xa6 NEWA LETTER PHA -+ /xf0/x91/x90/xa7 NEWA LETTER BA -+ /xf0/x91/x90/xa8 NEWA LETTER BHA -+ /xf0/x91/x90/xa9 NEWA LETTER MA -+ /xf0/x91/x90/xaa NEWA LETTER MHA -+ /xf0/x91/x90/xab NEWA LETTER YA -+ /xf0/x91/x90/xac NEWA LETTER RA -+ /xf0/x91/x90/xad NEWA LETTER RHA -+ /xf0/x91/x90/xae NEWA LETTER LA -+ /xf0/x91/x90/xaf NEWA LETTER LHA -+ /xf0/x91/x90/xb0 NEWA LETTER WA -+ /xf0/x91/x90/xb1 NEWA LETTER SHA -+ /xf0/x91/x90/xb2 NEWA LETTER SSA -+ /xf0/x91/x90/xb3 NEWA LETTER SA -+ /xf0/x91/x90/xb4 NEWA LETTER HA -+ /xf0/x91/x90/xb5 NEWA VOWEL SIGN AA -+ /xf0/x91/x90/xb6 NEWA VOWEL SIGN I -+ /xf0/x91/x90/xb7 NEWA VOWEL SIGN II -+ /xf0/x91/x90/xb8 NEWA VOWEL SIGN U -+ /xf0/x91/x90/xb9 NEWA VOWEL SIGN UU -+ /xf0/x91/x90/xba NEWA VOWEL SIGN VOCALIC R -+ /xf0/x91/x90/xbb NEWA VOWEL SIGN VOCALIC RR -+ /xf0/x91/x90/xbc NEWA VOWEL SIGN VOCALIC L -+ /xf0/x91/x90/xbd NEWA VOWEL SIGN VOCALIC LL -+ /xf0/x91/x90/xbe NEWA VOWEL SIGN E -+ /xf0/x91/x90/xbf NEWA VOWEL SIGN AI -+ /xf0/x91/x91/x80 NEWA VOWEL SIGN O -+ /xf0/x91/x91/x81 NEWA VOWEL SIGN AU -+ /xf0/x91/x91/x82 NEWA SIGN VIRAMA -+ /xf0/x91/x91/x83 NEWA SIGN CANDRABINDU -+ /xf0/x91/x91/x84 NEWA SIGN ANUSVARA -+ /xf0/x91/x91/x85 NEWA SIGN VISARGA -+ /xf0/x91/x91/x86 NEWA SIGN NUKTA -+ /xf0/x91/x91/x87 NEWA SIGN AVAGRAHA -+ /xf0/x91/x91/x88 NEWA SIGN FINAL ANUSVARA -+ /xf0/x91/x91/x89 NEWA OM -+ /xf0/x91/x91/x8a NEWA SIDDHI -+ /xf0/x91/x91/x8b NEWA DANDA -+ /xf0/x91/x91/x8c NEWA DOUBLE DANDA -+ /xf0/x91/x91/x8d NEWA COMMA -+ /xf0/x91/x91/x8e NEWA GAP FILLER -+ /xf0/x91/x91/x8f NEWA ABBREVIATION SIGN -+ /xf0/x91/x91/x90 NEWA DIGIT ZERO -+ /xf0/x91/x91/x91 NEWA DIGIT ONE -+ /xf0/x91/x91/x92 NEWA DIGIT TWO -+ /xf0/x91/x91/x93 NEWA DIGIT THREE -+ /xf0/x91/x91/x94 NEWA DIGIT FOUR -+ /xf0/x91/x91/x95 NEWA DIGIT FIVE -+ /xf0/x91/x91/x96 NEWA DIGIT SIX -+ /xf0/x91/x91/x97 NEWA DIGIT SEVEN -+ /xf0/x91/x91/x98 NEWA DIGIT EIGHT -+ /xf0/x91/x91/x99 NEWA DIGIT NINE -+ /xf0/x91/x91/x9b NEWA PLACEHOLDER MARK -+ /xf0/x91/x91/x9d NEWA INSERTION SIGN - /xf0/x91/x92/x80 TIRHUTA ANJI - /xf0/x91/x92/x81 TIRHUTA LETTER A - /xf0/x91/x92/x82 TIRHUTA LETTER AA -@@ -31329,6 +31552,19 @@ CHARMAP - /xf0/x91/x99/x97 MODI DIGIT SEVEN - /xf0/x91/x99/x98 MODI DIGIT EIGHT - /xf0/x91/x99/x99 MODI DIGIT NINE -+ /xf0/x91/x99/xa0 MONGOLIAN BIRGA WITH ORNAMENT -+ /xf0/x91/x99/xa1 MONGOLIAN ROTATED BIRGA -+ /xf0/x91/x99/xa2 MONGOLIAN DOUBLE BIRGA WITH ORNAMENT -+ /xf0/x91/x99/xa3 MONGOLIAN TRIPLE BIRGA WITH ORNAMENT -+ /xf0/x91/x99/xa4 MONGOLIAN BIRGA WITH DOUBLE ORNAMENT -+ /xf0/x91/x99/xa5 MONGOLIAN ROTATED BIRGA WITH ORNAMENT -+ /xf0/x91/x99/xa6 MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT -+ /xf0/x91/x99/xa7 MONGOLIAN INVERTED BIRGA -+ /xf0/x91/x99/xa8 MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT -+ /xf0/x91/x99/xa9 MONGOLIAN SWIRL BIRGA -+ /xf0/x91/x99/xaa MONGOLIAN SWIRL BIRGA WITH ORNAMENT -+ /xf0/x91/x99/xab MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT -+ /xf0/x91/x99/xac MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT - /xf0/x91/x9a/x80 TAKRI LETTER A - /xf0/x91/x9a/x81 TAKRI LETTER AA - /xf0/x91/x9a/x82 TAKRI LETTER I -@@ -31593,6 +31829,171 @@ CHARMAP - /xf0/x91/xab/xb6 PAU CIN HAU LOW-FALLING TONE LONG FINAL - /xf0/x91/xab/xb7 PAU CIN HAU LOW-FALLING TONE FINAL - /xf0/x91/xab/xb8 PAU CIN HAU GLOTTAL STOP FINAL -+ /xf0/x91/xb0/x80 BHAIKSUKI LETTER A -+ /xf0/x91/xb0/x81 BHAIKSUKI LETTER AA -+ /xf0/x91/xb0/x82 BHAIKSUKI LETTER I -+ /xf0/x91/xb0/x83 BHAIKSUKI LETTER II -+ /xf0/x91/xb0/x84 BHAIKSUKI LETTER U -+ /xf0/x91/xb0/x85 BHAIKSUKI LETTER UU -+ /xf0/x91/xb0/x86 BHAIKSUKI LETTER VOCALIC R -+ /xf0/x91/xb0/x87 BHAIKSUKI LETTER VOCALIC RR -+ /xf0/x91/xb0/x88 BHAIKSUKI LETTER VOCALIC L -+ /xf0/x91/xb0/x8a BHAIKSUKI LETTER E -+ /xf0/x91/xb0/x8b BHAIKSUKI LETTER AI -+ /xf0/x91/xb0/x8c BHAIKSUKI LETTER O -+ /xf0/x91/xb0/x8d BHAIKSUKI LETTER AU -+ /xf0/x91/xb0/x8e BHAIKSUKI LETTER KA -+ /xf0/x91/xb0/x8f BHAIKSUKI LETTER KHA -+ /xf0/x91/xb0/x90 BHAIKSUKI LETTER GA -+ /xf0/x91/xb0/x91 BHAIKSUKI LETTER GHA -+ /xf0/x91/xb0/x92 BHAIKSUKI LETTER NGA -+ /xf0/x91/xb0/x93 BHAIKSUKI LETTER CA -+ /xf0/x91/xb0/x94 BHAIKSUKI LETTER CHA -+ /xf0/x91/xb0/x95 BHAIKSUKI LETTER JA -+ /xf0/x91/xb0/x96 BHAIKSUKI LETTER JHA -+ /xf0/x91/xb0/x97 BHAIKSUKI LETTER NYA -+ /xf0/x91/xb0/x98 BHAIKSUKI LETTER TTA -+ /xf0/x91/xb0/x99 BHAIKSUKI LETTER TTHA -+ /xf0/x91/xb0/x9a BHAIKSUKI LETTER DDA -+ /xf0/x91/xb0/x9b BHAIKSUKI LETTER DDHA -+ /xf0/x91/xb0/x9c BHAIKSUKI LETTER NNA -+ /xf0/x91/xb0/x9d BHAIKSUKI LETTER TA -+ /xf0/x91/xb0/x9e BHAIKSUKI LETTER THA -+ /xf0/x91/xb0/x9f BHAIKSUKI LETTER DA -+ /xf0/x91/xb0/xa0 BHAIKSUKI LETTER DHA -+ /xf0/x91/xb0/xa1 BHAIKSUKI LETTER NA -+ /xf0/x91/xb0/xa2 BHAIKSUKI LETTER PA -+ /xf0/x91/xb0/xa3 BHAIKSUKI LETTER PHA -+ /xf0/x91/xb0/xa4 BHAIKSUKI LETTER BA -+ /xf0/x91/xb0/xa5 BHAIKSUKI LETTER BHA -+ /xf0/x91/xb0/xa6 BHAIKSUKI LETTER MA -+ /xf0/x91/xb0/xa7 BHAIKSUKI LETTER YA -+ /xf0/x91/xb0/xa8 BHAIKSUKI LETTER RA -+ /xf0/x91/xb0/xa9 BHAIKSUKI LETTER LA -+ /xf0/x91/xb0/xaa BHAIKSUKI LETTER VA -+ /xf0/x91/xb0/xab BHAIKSUKI LETTER SHA -+ /xf0/x91/xb0/xac BHAIKSUKI LETTER SSA -+ /xf0/x91/xb0/xad BHAIKSUKI LETTER SA -+ /xf0/x91/xb0/xae BHAIKSUKI LETTER HA -+ /xf0/x91/xb0/xaf BHAIKSUKI VOWEL SIGN AA -+ /xf0/x91/xb0/xb0 BHAIKSUKI VOWEL SIGN I -+ /xf0/x91/xb0/xb1 BHAIKSUKI VOWEL SIGN II -+ /xf0/x91/xb0/xb2 BHAIKSUKI VOWEL SIGN U -+ /xf0/x91/xb0/xb3 BHAIKSUKI VOWEL SIGN UU -+ /xf0/x91/xb0/xb4 BHAIKSUKI VOWEL SIGN VOCALIC R -+ /xf0/x91/xb0/xb5 BHAIKSUKI VOWEL SIGN VOCALIC RR -+ /xf0/x91/xb0/xb6 BHAIKSUKI VOWEL SIGN VOCALIC L -+ /xf0/x91/xb0/xb8 BHAIKSUKI VOWEL SIGN E -+ /xf0/x91/xb0/xb9 BHAIKSUKI VOWEL SIGN AI -+ /xf0/x91/xb0/xba BHAIKSUKI VOWEL SIGN O -+ /xf0/x91/xb0/xbb BHAIKSUKI VOWEL SIGN AU -+ /xf0/x91/xb0/xbc BHAIKSUKI SIGN CANDRABINDU -+ /xf0/x91/xb0/xbd BHAIKSUKI SIGN ANUSVARA -+ /xf0/x91/xb0/xbe BHAIKSUKI SIGN VISARGA -+ /xf0/x91/xb0/xbf BHAIKSUKI SIGN VIRAMA -+ /xf0/x91/xb1/x80 BHAIKSUKI SIGN AVAGRAHA -+ /xf0/x91/xb1/x81 BHAIKSUKI DANDA -+ /xf0/x91/xb1/x82 BHAIKSUKI DOUBLE DANDA -+ /xf0/x91/xb1/x83 BHAIKSUKI WORD SEPARATOR -+ /xf0/x91/xb1/x84 BHAIKSUKI GAP FILLER-1 -+ /xf0/x91/xb1/x85 BHAIKSUKI GAP FILLER-2 -+ /xf0/x91/xb1/x90 BHAIKSUKI DIGIT ZERO -+ /xf0/x91/xb1/x91 BHAIKSUKI DIGIT ONE -+ /xf0/x91/xb1/x92 BHAIKSUKI DIGIT TWO -+ /xf0/x91/xb1/x93 BHAIKSUKI DIGIT THREE -+ /xf0/x91/xb1/x94 BHAIKSUKI DIGIT FOUR -+ /xf0/x91/xb1/x95 BHAIKSUKI DIGIT FIVE -+ /xf0/x91/xb1/x96 BHAIKSUKI DIGIT SIX -+ /xf0/x91/xb1/x97 BHAIKSUKI DIGIT SEVEN -+ /xf0/x91/xb1/x98 BHAIKSUKI DIGIT EIGHT -+ /xf0/x91/xb1/x99 BHAIKSUKI DIGIT NINE -+ /xf0/x91/xb1/x9a BHAIKSUKI NUMBER ONE -+ /xf0/x91/xb1/x9b BHAIKSUKI NUMBER TWO -+ /xf0/x91/xb1/x9c BHAIKSUKI NUMBER THREE -+ /xf0/x91/xb1/x9d BHAIKSUKI NUMBER FOUR -+ /xf0/x91/xb1/x9e BHAIKSUKI NUMBER FIVE -+ /xf0/x91/xb1/x9f BHAIKSUKI NUMBER SIX -+ /xf0/x91/xb1/xa0 BHAIKSUKI NUMBER SEVEN -+ /xf0/x91/xb1/xa1 BHAIKSUKI NUMBER EIGHT -+ /xf0/x91/xb1/xa2 BHAIKSUKI NUMBER NINE -+ /xf0/x91/xb1/xa3 BHAIKSUKI NUMBER TEN -+ /xf0/x91/xb1/xa4 BHAIKSUKI NUMBER TWENTY -+ /xf0/x91/xb1/xa5 BHAIKSUKI NUMBER THIRTY -+ /xf0/x91/xb1/xa6 BHAIKSUKI NUMBER FORTY -+ /xf0/x91/xb1/xa7 BHAIKSUKI NUMBER FIFTY -+ /xf0/x91/xb1/xa8 BHAIKSUKI NUMBER SIXTY -+ /xf0/x91/xb1/xa9 BHAIKSUKI NUMBER SEVENTY -+ /xf0/x91/xb1/xaa BHAIKSUKI NUMBER EIGHTY -+ /xf0/x91/xb1/xab BHAIKSUKI NUMBER NINETY -+ /xf0/x91/xb1/xac BHAIKSUKI HUNDREDS UNIT MARK -+ /xf0/x91/xb1/xb0 MARCHEN HEAD MARK -+ /xf0/x91/xb1/xb1 MARCHEN MARK SHAD -+ /xf0/x91/xb1/xb2 MARCHEN LETTER KA -+ /xf0/x91/xb1/xb3 MARCHEN LETTER KHA -+ /xf0/x91/xb1/xb4 MARCHEN LETTER GA -+ /xf0/x91/xb1/xb5 MARCHEN LETTER NGA -+ /xf0/x91/xb1/xb6 MARCHEN LETTER CA -+ /xf0/x91/xb1/xb7 MARCHEN LETTER CHA -+ /xf0/x91/xb1/xb8 MARCHEN LETTER JA -+ /xf0/x91/xb1/xb9 MARCHEN LETTER NYA -+ /xf0/x91/xb1/xba MARCHEN LETTER TA -+ /xf0/x91/xb1/xbb MARCHEN LETTER THA -+ /xf0/x91/xb1/xbc MARCHEN LETTER DA -+ /xf0/x91/xb1/xbd MARCHEN LETTER NA -+ /xf0/x91/xb1/xbe MARCHEN LETTER PA -+ /xf0/x91/xb1/xbf MARCHEN LETTER PHA -+ /xf0/x91/xb2/x80 MARCHEN LETTER BA -+ /xf0/x91/xb2/x81 MARCHEN LETTER MA -+ /xf0/x91/xb2/x82 MARCHEN LETTER TSA -+ /xf0/x91/xb2/x83 MARCHEN LETTER TSHA -+ /xf0/x91/xb2/x84 MARCHEN LETTER DZA -+ /xf0/x91/xb2/x85 MARCHEN LETTER WA -+ /xf0/x91/xb2/x86 MARCHEN LETTER ZHA -+ /xf0/x91/xb2/x87 MARCHEN LETTER ZA -+ /xf0/x91/xb2/x88 MARCHEN LETTER -A -+ /xf0/x91/xb2/x89 MARCHEN LETTER YA -+ /xf0/x91/xb2/x8a MARCHEN LETTER RA -+ /xf0/x91/xb2/x8b MARCHEN LETTER LA -+ /xf0/x91/xb2/x8c MARCHEN LETTER SHA -+ /xf0/x91/xb2/x8d MARCHEN LETTER SA -+ /xf0/x91/xb2/x8e MARCHEN LETTER HA -+ /xf0/x91/xb2/x8f MARCHEN LETTER A -+ /xf0/x91/xb2/x92 MARCHEN SUBJOINED LETTER KA -+ /xf0/x91/xb2/x93 MARCHEN SUBJOINED LETTER KHA -+ /xf0/x91/xb2/x94 MARCHEN SUBJOINED LETTER GA -+ /xf0/x91/xb2/x95 MARCHEN SUBJOINED LETTER NGA -+ /xf0/x91/xb2/x96 MARCHEN SUBJOINED LETTER CA -+ /xf0/x91/xb2/x97 MARCHEN SUBJOINED LETTER CHA -+ /xf0/x91/xb2/x98 MARCHEN SUBJOINED LETTER JA -+ /xf0/x91/xb2/x99 MARCHEN SUBJOINED LETTER NYA -+ /xf0/x91/xb2/x9a MARCHEN SUBJOINED LETTER TA -+ /xf0/x91/xb2/x9b MARCHEN SUBJOINED LETTER THA -+ /xf0/x91/xb2/x9c MARCHEN SUBJOINED LETTER DA -+ /xf0/x91/xb2/x9d MARCHEN SUBJOINED LETTER NA -+ /xf0/x91/xb2/x9e MARCHEN SUBJOINED LETTER PA -+ /xf0/x91/xb2/x9f MARCHEN SUBJOINED LETTER PHA -+ /xf0/x91/xb2/xa0 MARCHEN SUBJOINED LETTER BA -+ /xf0/x91/xb2/xa1 MARCHEN SUBJOINED LETTER MA -+ /xf0/x91/xb2/xa2 MARCHEN SUBJOINED LETTER TSA -+ /xf0/x91/xb2/xa3 MARCHEN SUBJOINED LETTER TSHA -+ /xf0/x91/xb2/xa4 MARCHEN SUBJOINED LETTER DZA -+ /xf0/x91/xb2/xa5 MARCHEN SUBJOINED LETTER WA -+ /xf0/x91/xb2/xa6 MARCHEN SUBJOINED LETTER ZHA -+ /xf0/x91/xb2/xa7 MARCHEN SUBJOINED LETTER ZA -+ /xf0/x91/xb2/xa9 MARCHEN SUBJOINED LETTER YA -+ /xf0/x91/xb2/xaa MARCHEN SUBJOINED LETTER RA -+ /xf0/x91/xb2/xab MARCHEN SUBJOINED LETTER LA -+ /xf0/x91/xb2/xac MARCHEN SUBJOINED LETTER SHA -+ /xf0/x91/xb2/xad MARCHEN SUBJOINED LETTER SA -+ /xf0/x91/xb2/xae MARCHEN SUBJOINED LETTER HA -+ /xf0/x91/xb2/xaf MARCHEN SUBJOINED LETTER A -+ /xf0/x91/xb2/xb0 MARCHEN VOWEL SIGN AA -+ /xf0/x91/xb2/xb1 MARCHEN VOWEL SIGN I -+ /xf0/x91/xb2/xb2 MARCHEN VOWEL SIGN U -+ /xf0/x91/xb2/xb3 MARCHEN VOWEL SIGN E -+ /xf0/x91/xb2/xb4 MARCHEN VOWEL SIGN O -+ /xf0/x91/xb2/xb5 MARCHEN SIGN ANUSVARA -+ /xf0/x91/xb2/xb6 MARCHEN SIGN CANDRABINDU - /xf0/x92/x80/x80 CUNEIFORM SIGN A - /xf0/x92/x80/x81 CUNEIFORM SIGN A TIMES A - /xf0/x92/x80/x82 CUNEIFORM SIGN A TIMES BAD -@@ -35389,6 +35790,858 @@ CHARMAP - /xf0/x96/xbe/x9d MIAO LETTER REFORMED TONE-5 - /xf0/x96/xbe/x9e MIAO LETTER REFORMED TONE-6 - /xf0/x96/xbe/x9f MIAO LETTER REFORMED TONE-8 -+ /xf0/x96/xbf/xa0 TANGUT ITERATION MARK -+.. /xf0/x97/x80/x80 -+.. /xf0/x97/x81/x80 -+.. /xf0/x97/x82/x80 -+.. /xf0/x97/x83/x80 -+.. /xf0/x97/x84/x80 -+.. /xf0/x97/x85/x80 -+.. /xf0/x97/x86/x80 -+.. /xf0/x97/x87/x80 -+.. /xf0/x97/x88/x80 -+.. /xf0/x97/x89/x80 -+.. /xf0/x97/x8a/x80 -+.. /xf0/x97/x8b/x80 -+.. /xf0/x97/x8c/x80 -+.. /xf0/x97/x8d/x80 -+.. /xf0/x97/x8e/x80 -+.. /xf0/x97/x8f/x80 -+.. /xf0/x97/x90/x80 -+.. /xf0/x97/x91/x80 -+.. /xf0/x97/x92/x80 -+.. /xf0/x97/x93/x80 -+.. /xf0/x97/x94/x80 -+.. /xf0/x97/x95/x80 -+.. /xf0/x97/x96/x80 -+.. /xf0/x97/x97/x80 -+.. /xf0/x97/x98/x80 -+.. /xf0/x97/x99/x80 -+.. /xf0/x97/x9a/x80 -+.. /xf0/x97/x9b/x80 -+.. /xf0/x97/x9c/x80 -+.. /xf0/x97/x9d/x80 -+.. /xf0/x97/x9e/x80 -+.. /xf0/x97/x9f/x80 -+.. /xf0/x97/xa0/x80 -+.. /xf0/x97/xa1/x80 -+.. /xf0/x97/xa2/x80 -+.. /xf0/x97/xa3/x80 -+.. /xf0/x97/xa4/x80 -+.. /xf0/x97/xa5/x80 -+.. /xf0/x97/xa6/x80 -+.. /xf0/x97/xa7/x80 -+.. /xf0/x97/xa8/x80 -+.. /xf0/x97/xa9/x80 -+.. /xf0/x97/xaa/x80 -+.. /xf0/x97/xab/x80 -+.. /xf0/x97/xac/x80 -+.. /xf0/x97/xad/x80 -+.. /xf0/x97/xae/x80 -+.. /xf0/x97/xaf/x80 -+.. /xf0/x97/xb0/x80 -+.. /xf0/x97/xb1/x80 -+.. /xf0/x97/xb2/x80 -+.. /xf0/x97/xb3/x80 -+.. /xf0/x97/xb4/x80 -+.. /xf0/x97/xb5/x80 -+.. /xf0/x97/xb6/x80 -+.. /xf0/x97/xb7/x80 -+.. /xf0/x97/xb8/x80 -+.. /xf0/x97/xb9/x80 -+.. /xf0/x97/xba/x80 -+.. /xf0/x97/xbb/x80 -+.. /xf0/x97/xbc/x80 -+.. /xf0/x97/xbd/x80 -+.. /xf0/x97/xbe/x80 -+.. /xf0/x97/xbf/x80 -+.. /xf0/x98/x80/x80 -+.. /xf0/x98/x81/x80 -+.. /xf0/x98/x82/x80 -+.. /xf0/x98/x83/x80 -+.. /xf0/x98/x84/x80 -+.. /xf0/x98/x85/x80 -+.. /xf0/x98/x86/x80 -+.. /xf0/x98/x87/x80 -+.. /xf0/x98/x88/x80 -+.. /xf0/x98/x89/x80 -+.. /xf0/x98/x8a/x80 -+.. /xf0/x98/x8b/x80 -+.. /xf0/x98/x8c/x80 -+.. /xf0/x98/x8d/x80 -+.. /xf0/x98/x8e/x80 -+.. /xf0/x98/x8f/x80 -+.. /xf0/x98/x90/x80 -+.. /xf0/x98/x91/x80 -+.. /xf0/x98/x92/x80 -+.. /xf0/x98/x93/x80 -+.. /xf0/x98/x94/x80 -+.. /xf0/x98/x95/x80 -+.. /xf0/x98/x96/x80 -+.. /xf0/x98/x97/x80 -+.. /xf0/x98/x98/x80 -+.. /xf0/x98/x99/x80 -+.. /xf0/x98/x9a/x80 -+.. /xf0/x98/x9b/x80 -+.. /xf0/x98/x9c/x80 -+.. /xf0/x98/x9d/x80 -+.. /xf0/x98/x9e/x80 -+.. /xf0/x98/x9f/x80 -+ /xf0/x98/xa0/x80 TANGUT COMPONENT-001 -+ /xf0/x98/xa0/x81 TANGUT COMPONENT-002 -+ /xf0/x98/xa0/x82 TANGUT COMPONENT-003 -+ /xf0/x98/xa0/x83 TANGUT COMPONENT-004 -+ /xf0/x98/xa0/x84 TANGUT COMPONENT-005 -+ /xf0/x98/xa0/x85 TANGUT COMPONENT-006 -+ /xf0/x98/xa0/x86 TANGUT COMPONENT-007 -+ /xf0/x98/xa0/x87 TANGUT COMPONENT-008 -+ /xf0/x98/xa0/x88 TANGUT COMPONENT-009 -+ /xf0/x98/xa0/x89 TANGUT COMPONENT-010 -+ /xf0/x98/xa0/x8a TANGUT COMPONENT-011 -+ /xf0/x98/xa0/x8b TANGUT COMPONENT-012 -+ /xf0/x98/xa0/x8c TANGUT COMPONENT-013 -+ /xf0/x98/xa0/x8d TANGUT COMPONENT-014 -+ /xf0/x98/xa0/x8e TANGUT COMPONENT-015 -+ /xf0/x98/xa0/x8f TANGUT COMPONENT-016 -+ /xf0/x98/xa0/x90 TANGUT COMPONENT-017 -+ /xf0/x98/xa0/x91 TANGUT COMPONENT-018 -+ /xf0/x98/xa0/x92 TANGUT COMPONENT-019 -+ /xf0/x98/xa0/x93 TANGUT COMPONENT-020 -+ /xf0/x98/xa0/x94 TANGUT COMPONENT-021 -+ /xf0/x98/xa0/x95 TANGUT COMPONENT-022 -+ /xf0/x98/xa0/x96 TANGUT COMPONENT-023 -+ /xf0/x98/xa0/x97 TANGUT COMPONENT-024 -+ /xf0/x98/xa0/x98 TANGUT COMPONENT-025 -+ /xf0/x98/xa0/x99 TANGUT COMPONENT-026 -+ /xf0/x98/xa0/x9a TANGUT COMPONENT-027 -+ /xf0/x98/xa0/x9b TANGUT COMPONENT-028 -+ /xf0/x98/xa0/x9c TANGUT COMPONENT-029 -+ /xf0/x98/xa0/x9d TANGUT COMPONENT-030 -+ /xf0/x98/xa0/x9e TANGUT COMPONENT-031 -+ /xf0/x98/xa0/x9f TANGUT COMPONENT-032 -+ /xf0/x98/xa0/xa0 TANGUT COMPONENT-033 -+ /xf0/x98/xa0/xa1 TANGUT COMPONENT-034 -+ /xf0/x98/xa0/xa2 TANGUT COMPONENT-035 -+ /xf0/x98/xa0/xa3 TANGUT COMPONENT-036 -+ /xf0/x98/xa0/xa4 TANGUT COMPONENT-037 -+ /xf0/x98/xa0/xa5 TANGUT COMPONENT-038 -+ /xf0/x98/xa0/xa6 TANGUT COMPONENT-039 -+ /xf0/x98/xa0/xa7 TANGUT COMPONENT-040 -+ /xf0/x98/xa0/xa8 TANGUT COMPONENT-041 -+ /xf0/x98/xa0/xa9 TANGUT COMPONENT-042 -+ /xf0/x98/xa0/xaa TANGUT COMPONENT-043 -+ /xf0/x98/xa0/xab TANGUT COMPONENT-044 -+ /xf0/x98/xa0/xac TANGUT COMPONENT-045 -+ /xf0/x98/xa0/xad TANGUT COMPONENT-046 -+ /xf0/x98/xa0/xae TANGUT COMPONENT-047 -+ /xf0/x98/xa0/xaf TANGUT COMPONENT-048 -+ /xf0/x98/xa0/xb0 TANGUT COMPONENT-049 -+ /xf0/x98/xa0/xb1 TANGUT COMPONENT-050 -+ /xf0/x98/xa0/xb2 TANGUT COMPONENT-051 -+ /xf0/x98/xa0/xb3 TANGUT COMPONENT-052 -+ /xf0/x98/xa0/xb4 TANGUT COMPONENT-053 -+ /xf0/x98/xa0/xb5 TANGUT COMPONENT-054 -+ /xf0/x98/xa0/xb6 TANGUT COMPONENT-055 -+ /xf0/x98/xa0/xb7 TANGUT COMPONENT-056 -+ /xf0/x98/xa0/xb8 TANGUT COMPONENT-057 -+ /xf0/x98/xa0/xb9 TANGUT COMPONENT-058 -+ /xf0/x98/xa0/xba TANGUT COMPONENT-059 -+ /xf0/x98/xa0/xbb TANGUT COMPONENT-060 -+ /xf0/x98/xa0/xbc TANGUT COMPONENT-061 -+ /xf0/x98/xa0/xbd TANGUT COMPONENT-062 -+ /xf0/x98/xa0/xbe TANGUT COMPONENT-063 -+ /xf0/x98/xa0/xbf TANGUT COMPONENT-064 -+ /xf0/x98/xa1/x80 TANGUT COMPONENT-065 -+ /xf0/x98/xa1/x81 TANGUT COMPONENT-066 -+ /xf0/x98/xa1/x82 TANGUT COMPONENT-067 -+ /xf0/x98/xa1/x83 TANGUT COMPONENT-068 -+ /xf0/x98/xa1/x84 TANGUT COMPONENT-069 -+ /xf0/x98/xa1/x85 TANGUT COMPONENT-070 -+ /xf0/x98/xa1/x86 TANGUT COMPONENT-071 -+ /xf0/x98/xa1/x87 TANGUT COMPONENT-072 -+ /xf0/x98/xa1/x88 TANGUT COMPONENT-073 -+ /xf0/x98/xa1/x89 TANGUT COMPONENT-074 -+ /xf0/x98/xa1/x8a TANGUT COMPONENT-075 -+ /xf0/x98/xa1/x8b TANGUT COMPONENT-076 -+ /xf0/x98/xa1/x8c TANGUT COMPONENT-077 -+ /xf0/x98/xa1/x8d TANGUT COMPONENT-078 -+ /xf0/x98/xa1/x8e TANGUT COMPONENT-079 -+ /xf0/x98/xa1/x8f TANGUT COMPONENT-080 -+ /xf0/x98/xa1/x90 TANGUT COMPONENT-081 -+ /xf0/x98/xa1/x91 TANGUT COMPONENT-082 -+ /xf0/x98/xa1/x92 TANGUT COMPONENT-083 -+ /xf0/x98/xa1/x93 TANGUT COMPONENT-084 -+ /xf0/x98/xa1/x94 TANGUT COMPONENT-085 -+ /xf0/x98/xa1/x95 TANGUT COMPONENT-086 -+ /xf0/x98/xa1/x96 TANGUT COMPONENT-087 -+ /xf0/x98/xa1/x97 TANGUT COMPONENT-088 -+ /xf0/x98/xa1/x98 TANGUT COMPONENT-089 -+ /xf0/x98/xa1/x99 TANGUT COMPONENT-090 -+ /xf0/x98/xa1/x9a TANGUT COMPONENT-091 -+ /xf0/x98/xa1/x9b TANGUT COMPONENT-092 -+ /xf0/x98/xa1/x9c TANGUT COMPONENT-093 -+ /xf0/x98/xa1/x9d TANGUT COMPONENT-094 -+ /xf0/x98/xa1/x9e TANGUT COMPONENT-095 -+ /xf0/x98/xa1/x9f TANGUT COMPONENT-096 -+ /xf0/x98/xa1/xa0 TANGUT COMPONENT-097 -+ /xf0/x98/xa1/xa1 TANGUT COMPONENT-098 -+ /xf0/x98/xa1/xa2 TANGUT COMPONENT-099 -+ /xf0/x98/xa1/xa3 TANGUT COMPONENT-100 -+ /xf0/x98/xa1/xa4 TANGUT COMPONENT-101 -+ /xf0/x98/xa1/xa5 TANGUT COMPONENT-102 -+ /xf0/x98/xa1/xa6 TANGUT COMPONENT-103 -+ /xf0/x98/xa1/xa7 TANGUT COMPONENT-104 -+ /xf0/x98/xa1/xa8 TANGUT COMPONENT-105 -+ /xf0/x98/xa1/xa9 TANGUT COMPONENT-106 -+ /xf0/x98/xa1/xaa TANGUT COMPONENT-107 -+ /xf0/x98/xa1/xab TANGUT COMPONENT-108 -+ /xf0/x98/xa1/xac TANGUT COMPONENT-109 -+ /xf0/x98/xa1/xad TANGUT COMPONENT-110 -+ /xf0/x98/xa1/xae TANGUT COMPONENT-111 -+ /xf0/x98/xa1/xaf TANGUT COMPONENT-112 -+ /xf0/x98/xa1/xb0 TANGUT COMPONENT-113 -+ /xf0/x98/xa1/xb1 TANGUT COMPONENT-114 -+ /xf0/x98/xa1/xb2 TANGUT COMPONENT-115 -+ /xf0/x98/xa1/xb3 TANGUT COMPONENT-116 -+ /xf0/x98/xa1/xb4 TANGUT COMPONENT-117 -+ /xf0/x98/xa1/xb5 TANGUT COMPONENT-118 -+ /xf0/x98/xa1/xb6 TANGUT COMPONENT-119 -+ /xf0/x98/xa1/xb7 TANGUT COMPONENT-120 -+ /xf0/x98/xa1/xb8 TANGUT COMPONENT-121 -+ /xf0/x98/xa1/xb9 TANGUT COMPONENT-122 -+ /xf0/x98/xa1/xba TANGUT COMPONENT-123 -+ /xf0/x98/xa1/xbb TANGUT COMPONENT-124 -+ /xf0/x98/xa1/xbc TANGUT COMPONENT-125 -+ /xf0/x98/xa1/xbd TANGUT COMPONENT-126 -+ /xf0/x98/xa1/xbe TANGUT COMPONENT-127 -+ /xf0/x98/xa1/xbf TANGUT COMPONENT-128 -+ /xf0/x98/xa2/x80 TANGUT COMPONENT-129 -+ /xf0/x98/xa2/x81 TANGUT COMPONENT-130 -+ /xf0/x98/xa2/x82 TANGUT COMPONENT-131 -+ /xf0/x98/xa2/x83 TANGUT COMPONENT-132 -+ /xf0/x98/xa2/x84 TANGUT COMPONENT-133 -+ /xf0/x98/xa2/x85 TANGUT COMPONENT-134 -+ /xf0/x98/xa2/x86 TANGUT COMPONENT-135 -+ /xf0/x98/xa2/x87 TANGUT COMPONENT-136 -+ /xf0/x98/xa2/x88 TANGUT COMPONENT-137 -+ /xf0/x98/xa2/x89 TANGUT COMPONENT-138 -+ /xf0/x98/xa2/x8a TANGUT COMPONENT-139 -+ /xf0/x98/xa2/x8b TANGUT COMPONENT-140 -+ /xf0/x98/xa2/x8c TANGUT COMPONENT-141 -+ /xf0/x98/xa2/x8d TANGUT COMPONENT-142 -+ /xf0/x98/xa2/x8e TANGUT COMPONENT-143 -+ /xf0/x98/xa2/x8f TANGUT COMPONENT-144 -+ /xf0/x98/xa2/x90 TANGUT COMPONENT-145 -+ /xf0/x98/xa2/x91 TANGUT COMPONENT-146 -+ /xf0/x98/xa2/x92 TANGUT COMPONENT-147 -+ /xf0/x98/xa2/x93 TANGUT COMPONENT-148 -+ /xf0/x98/xa2/x94 TANGUT COMPONENT-149 -+ /xf0/x98/xa2/x95 TANGUT COMPONENT-150 -+ /xf0/x98/xa2/x96 TANGUT COMPONENT-151 -+ /xf0/x98/xa2/x97 TANGUT COMPONENT-152 -+ /xf0/x98/xa2/x98 TANGUT COMPONENT-153 -+ /xf0/x98/xa2/x99 TANGUT COMPONENT-154 -+ /xf0/x98/xa2/x9a TANGUT COMPONENT-155 -+ /xf0/x98/xa2/x9b TANGUT COMPONENT-156 -+ /xf0/x98/xa2/x9c TANGUT COMPONENT-157 -+ /xf0/x98/xa2/x9d TANGUT COMPONENT-158 -+ /xf0/x98/xa2/x9e TANGUT COMPONENT-159 -+ /xf0/x98/xa2/x9f TANGUT COMPONENT-160 -+ /xf0/x98/xa2/xa0 TANGUT COMPONENT-161 -+ /xf0/x98/xa2/xa1 TANGUT COMPONENT-162 -+ /xf0/x98/xa2/xa2 TANGUT COMPONENT-163 -+ /xf0/x98/xa2/xa3 TANGUT COMPONENT-164 -+ /xf0/x98/xa2/xa4 TANGUT COMPONENT-165 -+ /xf0/x98/xa2/xa5 TANGUT COMPONENT-166 -+ /xf0/x98/xa2/xa6 TANGUT COMPONENT-167 -+ /xf0/x98/xa2/xa7 TANGUT COMPONENT-168 -+ /xf0/x98/xa2/xa8 TANGUT COMPONENT-169 -+ /xf0/x98/xa2/xa9 TANGUT COMPONENT-170 -+ /xf0/x98/xa2/xaa TANGUT COMPONENT-171 -+ /xf0/x98/xa2/xab TANGUT COMPONENT-172 -+ /xf0/x98/xa2/xac TANGUT COMPONENT-173 -+ /xf0/x98/xa2/xad TANGUT COMPONENT-174 -+ /xf0/x98/xa2/xae TANGUT COMPONENT-175 -+ /xf0/x98/xa2/xaf TANGUT COMPONENT-176 -+ /xf0/x98/xa2/xb0 TANGUT COMPONENT-177 -+ /xf0/x98/xa2/xb1 TANGUT COMPONENT-178 -+ /xf0/x98/xa2/xb2 TANGUT COMPONENT-179 -+ /xf0/x98/xa2/xb3 TANGUT COMPONENT-180 -+ /xf0/x98/xa2/xb4 TANGUT COMPONENT-181 -+ /xf0/x98/xa2/xb5 TANGUT COMPONENT-182 -+ /xf0/x98/xa2/xb6 TANGUT COMPONENT-183 -+ /xf0/x98/xa2/xb7 TANGUT COMPONENT-184 -+ /xf0/x98/xa2/xb8 TANGUT COMPONENT-185 -+ /xf0/x98/xa2/xb9 TANGUT COMPONENT-186 -+ /xf0/x98/xa2/xba TANGUT COMPONENT-187 -+ /xf0/x98/xa2/xbb TANGUT COMPONENT-188 -+ /xf0/x98/xa2/xbc TANGUT COMPONENT-189 -+ /xf0/x98/xa2/xbd TANGUT COMPONENT-190 -+ /xf0/x98/xa2/xbe TANGUT COMPONENT-191 -+ /xf0/x98/xa2/xbf TANGUT COMPONENT-192 -+ /xf0/x98/xa3/x80 TANGUT COMPONENT-193 -+ /xf0/x98/xa3/x81 TANGUT COMPONENT-194 -+ /xf0/x98/xa3/x82 TANGUT COMPONENT-195 -+ /xf0/x98/xa3/x83 TANGUT COMPONENT-196 -+ /xf0/x98/xa3/x84 TANGUT COMPONENT-197 -+ /xf0/x98/xa3/x85 TANGUT COMPONENT-198 -+ /xf0/x98/xa3/x86 TANGUT COMPONENT-199 -+ /xf0/x98/xa3/x87 TANGUT COMPONENT-200 -+ /xf0/x98/xa3/x88 TANGUT COMPONENT-201 -+ /xf0/x98/xa3/x89 TANGUT COMPONENT-202 -+ /xf0/x98/xa3/x8a TANGUT COMPONENT-203 -+ /xf0/x98/xa3/x8b TANGUT COMPONENT-204 -+ /xf0/x98/xa3/x8c TANGUT COMPONENT-205 -+ /xf0/x98/xa3/x8d TANGUT COMPONENT-206 -+ /xf0/x98/xa3/x8e TANGUT COMPONENT-207 -+ /xf0/x98/xa3/x8f TANGUT COMPONENT-208 -+ /xf0/x98/xa3/x90 TANGUT COMPONENT-209 -+ /xf0/x98/xa3/x91 TANGUT COMPONENT-210 -+ /xf0/x98/xa3/x92 TANGUT COMPONENT-211 -+ /xf0/x98/xa3/x93 TANGUT COMPONENT-212 -+ /xf0/x98/xa3/x94 TANGUT COMPONENT-213 -+ /xf0/x98/xa3/x95 TANGUT COMPONENT-214 -+ /xf0/x98/xa3/x96 TANGUT COMPONENT-215 -+ /xf0/x98/xa3/x97 TANGUT COMPONENT-216 -+ /xf0/x98/xa3/x98 TANGUT COMPONENT-217 -+ /xf0/x98/xa3/x99 TANGUT COMPONENT-218 -+ /xf0/x98/xa3/x9a TANGUT COMPONENT-219 -+ /xf0/x98/xa3/x9b TANGUT COMPONENT-220 -+ /xf0/x98/xa3/x9c TANGUT COMPONENT-221 -+ /xf0/x98/xa3/x9d TANGUT COMPONENT-222 -+ /xf0/x98/xa3/x9e TANGUT COMPONENT-223 -+ /xf0/x98/xa3/x9f TANGUT COMPONENT-224 -+ /xf0/x98/xa3/xa0 TANGUT COMPONENT-225 -+ /xf0/x98/xa3/xa1 TANGUT COMPONENT-226 -+ /xf0/x98/xa3/xa2 TANGUT COMPONENT-227 -+ /xf0/x98/xa3/xa3 TANGUT COMPONENT-228 -+ /xf0/x98/xa3/xa4 TANGUT COMPONENT-229 -+ /xf0/x98/xa3/xa5 TANGUT COMPONENT-230 -+ /xf0/x98/xa3/xa6 TANGUT COMPONENT-231 -+ /xf0/x98/xa3/xa7 TANGUT COMPONENT-232 -+ /xf0/x98/xa3/xa8 TANGUT COMPONENT-233 -+ /xf0/x98/xa3/xa9 TANGUT COMPONENT-234 -+ /xf0/x98/xa3/xaa TANGUT COMPONENT-235 -+ /xf0/x98/xa3/xab TANGUT COMPONENT-236 -+ /xf0/x98/xa3/xac TANGUT COMPONENT-237 -+ /xf0/x98/xa3/xad TANGUT COMPONENT-238 -+ /xf0/x98/xa3/xae TANGUT COMPONENT-239 -+ /xf0/x98/xa3/xaf TANGUT COMPONENT-240 -+ /xf0/x98/xa3/xb0 TANGUT COMPONENT-241 -+ /xf0/x98/xa3/xb1 TANGUT COMPONENT-242 -+ /xf0/x98/xa3/xb2 TANGUT COMPONENT-243 -+ /xf0/x98/xa3/xb3 TANGUT COMPONENT-244 -+ /xf0/x98/xa3/xb4 TANGUT COMPONENT-245 -+ /xf0/x98/xa3/xb5 TANGUT COMPONENT-246 -+ /xf0/x98/xa3/xb6 TANGUT COMPONENT-247 -+ /xf0/x98/xa3/xb7 TANGUT COMPONENT-248 -+ /xf0/x98/xa3/xb8 TANGUT COMPONENT-249 -+ /xf0/x98/xa3/xb9 TANGUT COMPONENT-250 -+ /xf0/x98/xa3/xba TANGUT COMPONENT-251 -+ /xf0/x98/xa3/xbb TANGUT COMPONENT-252 -+ /xf0/x98/xa3/xbc TANGUT COMPONENT-253 -+ /xf0/x98/xa3/xbd TANGUT COMPONENT-254 -+ /xf0/x98/xa3/xbe TANGUT COMPONENT-255 -+ /xf0/x98/xa3/xbf TANGUT COMPONENT-256 -+ /xf0/x98/xa4/x80 TANGUT COMPONENT-257 -+ /xf0/x98/xa4/x81 TANGUT COMPONENT-258 -+ /xf0/x98/xa4/x82 TANGUT COMPONENT-259 -+ /xf0/x98/xa4/x83 TANGUT COMPONENT-260 -+ /xf0/x98/xa4/x84 TANGUT COMPONENT-261 -+ /xf0/x98/xa4/x85 TANGUT COMPONENT-262 -+ /xf0/x98/xa4/x86 TANGUT COMPONENT-263 -+ /xf0/x98/xa4/x87 TANGUT COMPONENT-264 -+ /xf0/x98/xa4/x88 TANGUT COMPONENT-265 -+ /xf0/x98/xa4/x89 TANGUT COMPONENT-266 -+ /xf0/x98/xa4/x8a TANGUT COMPONENT-267 -+ /xf0/x98/xa4/x8b TANGUT COMPONENT-268 -+ /xf0/x98/xa4/x8c TANGUT COMPONENT-269 -+ /xf0/x98/xa4/x8d TANGUT COMPONENT-270 -+ /xf0/x98/xa4/x8e TANGUT COMPONENT-271 -+ /xf0/x98/xa4/x8f TANGUT COMPONENT-272 -+ /xf0/x98/xa4/x90 TANGUT COMPONENT-273 -+ /xf0/x98/xa4/x91 TANGUT COMPONENT-274 -+ /xf0/x98/xa4/x92 TANGUT COMPONENT-275 -+ /xf0/x98/xa4/x93 TANGUT COMPONENT-276 -+ /xf0/x98/xa4/x94 TANGUT COMPONENT-277 -+ /xf0/x98/xa4/x95 TANGUT COMPONENT-278 -+ /xf0/x98/xa4/x96 TANGUT COMPONENT-279 -+ /xf0/x98/xa4/x97 TANGUT COMPONENT-280 -+ /xf0/x98/xa4/x98 TANGUT COMPONENT-281 -+ /xf0/x98/xa4/x99 TANGUT COMPONENT-282 -+ /xf0/x98/xa4/x9a TANGUT COMPONENT-283 -+ /xf0/x98/xa4/x9b TANGUT COMPONENT-284 -+ /xf0/x98/xa4/x9c TANGUT COMPONENT-285 -+ /xf0/x98/xa4/x9d TANGUT COMPONENT-286 -+ /xf0/x98/xa4/x9e TANGUT COMPONENT-287 -+ /xf0/x98/xa4/x9f TANGUT COMPONENT-288 -+ /xf0/x98/xa4/xa0 TANGUT COMPONENT-289 -+ /xf0/x98/xa4/xa1 TANGUT COMPONENT-290 -+ /xf0/x98/xa4/xa2 TANGUT COMPONENT-291 -+ /xf0/x98/xa4/xa3 TANGUT COMPONENT-292 -+ /xf0/x98/xa4/xa4 TANGUT COMPONENT-293 -+ /xf0/x98/xa4/xa5 TANGUT COMPONENT-294 -+ /xf0/x98/xa4/xa6 TANGUT COMPONENT-295 -+ /xf0/x98/xa4/xa7 TANGUT COMPONENT-296 -+ /xf0/x98/xa4/xa8 TANGUT COMPONENT-297 -+ /xf0/x98/xa4/xa9 TANGUT COMPONENT-298 -+ /xf0/x98/xa4/xaa TANGUT COMPONENT-299 -+ /xf0/x98/xa4/xab TANGUT COMPONENT-300 -+ /xf0/x98/xa4/xac TANGUT COMPONENT-301 -+ /xf0/x98/xa4/xad TANGUT COMPONENT-302 -+ /xf0/x98/xa4/xae TANGUT COMPONENT-303 -+ /xf0/x98/xa4/xaf TANGUT COMPONENT-304 -+ /xf0/x98/xa4/xb0 TANGUT COMPONENT-305 -+ /xf0/x98/xa4/xb1 TANGUT COMPONENT-306 -+ /xf0/x98/xa4/xb2 TANGUT COMPONENT-307 -+ /xf0/x98/xa4/xb3 TANGUT COMPONENT-308 -+ /xf0/x98/xa4/xb4 TANGUT COMPONENT-309 -+ /xf0/x98/xa4/xb5 TANGUT COMPONENT-310 -+ /xf0/x98/xa4/xb6 TANGUT COMPONENT-311 -+ /xf0/x98/xa4/xb7 TANGUT COMPONENT-312 -+ /xf0/x98/xa4/xb8 TANGUT COMPONENT-313 -+ /xf0/x98/xa4/xb9 TANGUT COMPONENT-314 -+ /xf0/x98/xa4/xba TANGUT COMPONENT-315 -+ /xf0/x98/xa4/xbb TANGUT COMPONENT-316 -+ /xf0/x98/xa4/xbc TANGUT COMPONENT-317 -+ /xf0/x98/xa4/xbd TANGUT COMPONENT-318 -+ /xf0/x98/xa4/xbe TANGUT COMPONENT-319 -+ /xf0/x98/xa4/xbf TANGUT COMPONENT-320 -+ /xf0/x98/xa5/x80 TANGUT COMPONENT-321 -+ /xf0/x98/xa5/x81 TANGUT COMPONENT-322 -+ /xf0/x98/xa5/x82 TANGUT COMPONENT-323 -+ /xf0/x98/xa5/x83 TANGUT COMPONENT-324 -+ /xf0/x98/xa5/x84 TANGUT COMPONENT-325 -+ /xf0/x98/xa5/x85 TANGUT COMPONENT-326 -+ /xf0/x98/xa5/x86 TANGUT COMPONENT-327 -+ /xf0/x98/xa5/x87 TANGUT COMPONENT-328 -+ /xf0/x98/xa5/x88 TANGUT COMPONENT-329 -+ /xf0/x98/xa5/x89 TANGUT COMPONENT-330 -+ /xf0/x98/xa5/x8a TANGUT COMPONENT-331 -+ /xf0/x98/xa5/x8b TANGUT COMPONENT-332 -+ /xf0/x98/xa5/x8c TANGUT COMPONENT-333 -+ /xf0/x98/xa5/x8d TANGUT COMPONENT-334 -+ /xf0/x98/xa5/x8e TANGUT COMPONENT-335 -+ /xf0/x98/xa5/x8f TANGUT COMPONENT-336 -+ /xf0/x98/xa5/x90 TANGUT COMPONENT-337 -+ /xf0/x98/xa5/x91 TANGUT COMPONENT-338 -+ /xf0/x98/xa5/x92 TANGUT COMPONENT-339 -+ /xf0/x98/xa5/x93 TANGUT COMPONENT-340 -+ /xf0/x98/xa5/x94 TANGUT COMPONENT-341 -+ /xf0/x98/xa5/x95 TANGUT COMPONENT-342 -+ /xf0/x98/xa5/x96 TANGUT COMPONENT-343 -+ /xf0/x98/xa5/x97 TANGUT COMPONENT-344 -+ /xf0/x98/xa5/x98 TANGUT COMPONENT-345 -+ /xf0/x98/xa5/x99 TANGUT COMPONENT-346 -+ /xf0/x98/xa5/x9a TANGUT COMPONENT-347 -+ /xf0/x98/xa5/x9b TANGUT COMPONENT-348 -+ /xf0/x98/xa5/x9c TANGUT COMPONENT-349 -+ /xf0/x98/xa5/x9d TANGUT COMPONENT-350 -+ /xf0/x98/xa5/x9e TANGUT COMPONENT-351 -+ /xf0/x98/xa5/x9f TANGUT COMPONENT-352 -+ /xf0/x98/xa5/xa0 TANGUT COMPONENT-353 -+ /xf0/x98/xa5/xa1 TANGUT COMPONENT-354 -+ /xf0/x98/xa5/xa2 TANGUT COMPONENT-355 -+ /xf0/x98/xa5/xa3 TANGUT COMPONENT-356 -+ /xf0/x98/xa5/xa4 TANGUT COMPONENT-357 -+ /xf0/x98/xa5/xa5 TANGUT COMPONENT-358 -+ /xf0/x98/xa5/xa6 TANGUT COMPONENT-359 -+ /xf0/x98/xa5/xa7 TANGUT COMPONENT-360 -+ /xf0/x98/xa5/xa8 TANGUT COMPONENT-361 -+ /xf0/x98/xa5/xa9 TANGUT COMPONENT-362 -+ /xf0/x98/xa5/xaa TANGUT COMPONENT-363 -+ /xf0/x98/xa5/xab TANGUT COMPONENT-364 -+ /xf0/x98/xa5/xac TANGUT COMPONENT-365 -+ /xf0/x98/xa5/xad TANGUT COMPONENT-366 -+ /xf0/x98/xa5/xae TANGUT COMPONENT-367 -+ /xf0/x98/xa5/xaf TANGUT COMPONENT-368 -+ /xf0/x98/xa5/xb0 TANGUT COMPONENT-369 -+ /xf0/x98/xa5/xb1 TANGUT COMPONENT-370 -+ /xf0/x98/xa5/xb2 TANGUT COMPONENT-371 -+ /xf0/x98/xa5/xb3 TANGUT COMPONENT-372 -+ /xf0/x98/xa5/xb4 TANGUT COMPONENT-373 -+ /xf0/x98/xa5/xb5 TANGUT COMPONENT-374 -+ /xf0/x98/xa5/xb6 TANGUT COMPONENT-375 -+ /xf0/x98/xa5/xb7 TANGUT COMPONENT-376 -+ /xf0/x98/xa5/xb8 TANGUT COMPONENT-377 -+ /xf0/x98/xa5/xb9 TANGUT COMPONENT-378 -+ /xf0/x98/xa5/xba TANGUT COMPONENT-379 -+ /xf0/x98/xa5/xbb TANGUT COMPONENT-380 -+ /xf0/x98/xa5/xbc TANGUT COMPONENT-381 -+ /xf0/x98/xa5/xbd TANGUT COMPONENT-382 -+ /xf0/x98/xa5/xbe TANGUT COMPONENT-383 -+ /xf0/x98/xa5/xbf TANGUT COMPONENT-384 -+ /xf0/x98/xa6/x80 TANGUT COMPONENT-385 -+ /xf0/x98/xa6/x81 TANGUT COMPONENT-386 -+ /xf0/x98/xa6/x82 TANGUT COMPONENT-387 -+ /xf0/x98/xa6/x83 TANGUT COMPONENT-388 -+ /xf0/x98/xa6/x84 TANGUT COMPONENT-389 -+ /xf0/x98/xa6/x85 TANGUT COMPONENT-390 -+ /xf0/x98/xa6/x86 TANGUT COMPONENT-391 -+ /xf0/x98/xa6/x87 TANGUT COMPONENT-392 -+ /xf0/x98/xa6/x88 TANGUT COMPONENT-393 -+ /xf0/x98/xa6/x89 TANGUT COMPONENT-394 -+ /xf0/x98/xa6/x8a TANGUT COMPONENT-395 -+ /xf0/x98/xa6/x8b TANGUT COMPONENT-396 -+ /xf0/x98/xa6/x8c TANGUT COMPONENT-397 -+ /xf0/x98/xa6/x8d TANGUT COMPONENT-398 -+ /xf0/x98/xa6/x8e TANGUT COMPONENT-399 -+ /xf0/x98/xa6/x8f TANGUT COMPONENT-400 -+ /xf0/x98/xa6/x90 TANGUT COMPONENT-401 -+ /xf0/x98/xa6/x91 TANGUT COMPONENT-402 -+ /xf0/x98/xa6/x92 TANGUT COMPONENT-403 -+ /xf0/x98/xa6/x93 TANGUT COMPONENT-404 -+ /xf0/x98/xa6/x94 TANGUT COMPONENT-405 -+ /xf0/x98/xa6/x95 TANGUT COMPONENT-406 -+ /xf0/x98/xa6/x96 TANGUT COMPONENT-407 -+ /xf0/x98/xa6/x97 TANGUT COMPONENT-408 -+ /xf0/x98/xa6/x98 TANGUT COMPONENT-409 -+ /xf0/x98/xa6/x99 TANGUT COMPONENT-410 -+ /xf0/x98/xa6/x9a TANGUT COMPONENT-411 -+ /xf0/x98/xa6/x9b TANGUT COMPONENT-412 -+ /xf0/x98/xa6/x9c TANGUT COMPONENT-413 -+ /xf0/x98/xa6/x9d TANGUT COMPONENT-414 -+ /xf0/x98/xa6/x9e TANGUT COMPONENT-415 -+ /xf0/x98/xa6/x9f TANGUT COMPONENT-416 -+ /xf0/x98/xa6/xa0 TANGUT COMPONENT-417 -+ /xf0/x98/xa6/xa1 TANGUT COMPONENT-418 -+ /xf0/x98/xa6/xa2 TANGUT COMPONENT-419 -+ /xf0/x98/xa6/xa3 TANGUT COMPONENT-420 -+ /xf0/x98/xa6/xa4 TANGUT COMPONENT-421 -+ /xf0/x98/xa6/xa5 TANGUT COMPONENT-422 -+ /xf0/x98/xa6/xa6 TANGUT COMPONENT-423 -+ /xf0/x98/xa6/xa7 TANGUT COMPONENT-424 -+ /xf0/x98/xa6/xa8 TANGUT COMPONENT-425 -+ /xf0/x98/xa6/xa9 TANGUT COMPONENT-426 -+ /xf0/x98/xa6/xaa TANGUT COMPONENT-427 -+ /xf0/x98/xa6/xab TANGUT COMPONENT-428 -+ /xf0/x98/xa6/xac TANGUT COMPONENT-429 -+ /xf0/x98/xa6/xad TANGUT COMPONENT-430 -+ /xf0/x98/xa6/xae TANGUT COMPONENT-431 -+ /xf0/x98/xa6/xaf TANGUT COMPONENT-432 -+ /xf0/x98/xa6/xb0 TANGUT COMPONENT-433 -+ /xf0/x98/xa6/xb1 TANGUT COMPONENT-434 -+ /xf0/x98/xa6/xb2 TANGUT COMPONENT-435 -+ /xf0/x98/xa6/xb3 TANGUT COMPONENT-436 -+ /xf0/x98/xa6/xb4 TANGUT COMPONENT-437 -+ /xf0/x98/xa6/xb5 TANGUT COMPONENT-438 -+ /xf0/x98/xa6/xb6 TANGUT COMPONENT-439 -+ /xf0/x98/xa6/xb7 TANGUT COMPONENT-440 -+ /xf0/x98/xa6/xb8 TANGUT COMPONENT-441 -+ /xf0/x98/xa6/xb9 TANGUT COMPONENT-442 -+ /xf0/x98/xa6/xba TANGUT COMPONENT-443 -+ /xf0/x98/xa6/xbb TANGUT COMPONENT-444 -+ /xf0/x98/xa6/xbc TANGUT COMPONENT-445 -+ /xf0/x98/xa6/xbd TANGUT COMPONENT-446 -+ /xf0/x98/xa6/xbe TANGUT COMPONENT-447 -+ /xf0/x98/xa6/xbf TANGUT COMPONENT-448 -+ /xf0/x98/xa7/x80 TANGUT COMPONENT-449 -+ /xf0/x98/xa7/x81 TANGUT COMPONENT-450 -+ /xf0/x98/xa7/x82 TANGUT COMPONENT-451 -+ /xf0/x98/xa7/x83 TANGUT COMPONENT-452 -+ /xf0/x98/xa7/x84 TANGUT COMPONENT-453 -+ /xf0/x98/xa7/x85 TANGUT COMPONENT-454 -+ /xf0/x98/xa7/x86 TANGUT COMPONENT-455 -+ /xf0/x98/xa7/x87 TANGUT COMPONENT-456 -+ /xf0/x98/xa7/x88 TANGUT COMPONENT-457 -+ /xf0/x98/xa7/x89 TANGUT COMPONENT-458 -+ /xf0/x98/xa7/x8a TANGUT COMPONENT-459 -+ /xf0/x98/xa7/x8b TANGUT COMPONENT-460 -+ /xf0/x98/xa7/x8c TANGUT COMPONENT-461 -+ /xf0/x98/xa7/x8d TANGUT COMPONENT-462 -+ /xf0/x98/xa7/x8e TANGUT COMPONENT-463 -+ /xf0/x98/xa7/x8f TANGUT COMPONENT-464 -+ /xf0/x98/xa7/x90 TANGUT COMPONENT-465 -+ /xf0/x98/xa7/x91 TANGUT COMPONENT-466 -+ /xf0/x98/xa7/x92 TANGUT COMPONENT-467 -+ /xf0/x98/xa7/x93 TANGUT COMPONENT-468 -+ /xf0/x98/xa7/x94 TANGUT COMPONENT-469 -+ /xf0/x98/xa7/x95 TANGUT COMPONENT-470 -+ /xf0/x98/xa7/x96 TANGUT COMPONENT-471 -+ /xf0/x98/xa7/x97 TANGUT COMPONENT-472 -+ /xf0/x98/xa7/x98 TANGUT COMPONENT-473 -+ /xf0/x98/xa7/x99 TANGUT COMPONENT-474 -+ /xf0/x98/xa7/x9a TANGUT COMPONENT-475 -+ /xf0/x98/xa7/x9b TANGUT COMPONENT-476 -+ /xf0/x98/xa7/x9c TANGUT COMPONENT-477 -+ /xf0/x98/xa7/x9d TANGUT COMPONENT-478 -+ /xf0/x98/xa7/x9e TANGUT COMPONENT-479 -+ /xf0/x98/xa7/x9f TANGUT COMPONENT-480 -+ /xf0/x98/xa7/xa0 TANGUT COMPONENT-481 -+ /xf0/x98/xa7/xa1 TANGUT COMPONENT-482 -+ /xf0/x98/xa7/xa2 TANGUT COMPONENT-483 -+ /xf0/x98/xa7/xa3 TANGUT COMPONENT-484 -+ /xf0/x98/xa7/xa4 TANGUT COMPONENT-485 -+ /xf0/x98/xa7/xa5 TANGUT COMPONENT-486 -+ /xf0/x98/xa7/xa6 TANGUT COMPONENT-487 -+ /xf0/x98/xa7/xa7 TANGUT COMPONENT-488 -+ /xf0/x98/xa7/xa8 TANGUT COMPONENT-489 -+ /xf0/x98/xa7/xa9 TANGUT COMPONENT-490 -+ /xf0/x98/xa7/xaa TANGUT COMPONENT-491 -+ /xf0/x98/xa7/xab TANGUT COMPONENT-492 -+ /xf0/x98/xa7/xac TANGUT COMPONENT-493 -+ /xf0/x98/xa7/xad TANGUT COMPONENT-494 -+ /xf0/x98/xa7/xae TANGUT COMPONENT-495 -+ /xf0/x98/xa7/xaf TANGUT COMPONENT-496 -+ /xf0/x98/xa7/xb0 TANGUT COMPONENT-497 -+ /xf0/x98/xa7/xb1 TANGUT COMPONENT-498 -+ /xf0/x98/xa7/xb2 TANGUT COMPONENT-499 -+ /xf0/x98/xa7/xb3 TANGUT COMPONENT-500 -+ /xf0/x98/xa7/xb4 TANGUT COMPONENT-501 -+ /xf0/x98/xa7/xb5 TANGUT COMPONENT-502 -+ /xf0/x98/xa7/xb6 TANGUT COMPONENT-503 -+ /xf0/x98/xa7/xb7 TANGUT COMPONENT-504 -+ /xf0/x98/xa7/xb8 TANGUT COMPONENT-505 -+ /xf0/x98/xa7/xb9 TANGUT COMPONENT-506 -+ /xf0/x98/xa7/xba TANGUT COMPONENT-507 -+ /xf0/x98/xa7/xbb TANGUT COMPONENT-508 -+ /xf0/x98/xa7/xbc TANGUT COMPONENT-509 -+ /xf0/x98/xa7/xbd TANGUT COMPONENT-510 -+ /xf0/x98/xa7/xbe TANGUT COMPONENT-511 -+ /xf0/x98/xa7/xbf TANGUT COMPONENT-512 -+ /xf0/x98/xa8/x80 TANGUT COMPONENT-513 -+ /xf0/x98/xa8/x81 TANGUT COMPONENT-514 -+ /xf0/x98/xa8/x82 TANGUT COMPONENT-515 -+ /xf0/x98/xa8/x83 TANGUT COMPONENT-516 -+ /xf0/x98/xa8/x84 TANGUT COMPONENT-517 -+ /xf0/x98/xa8/x85 TANGUT COMPONENT-518 -+ /xf0/x98/xa8/x86 TANGUT COMPONENT-519 -+ /xf0/x98/xa8/x87 TANGUT COMPONENT-520 -+ /xf0/x98/xa8/x88 TANGUT COMPONENT-521 -+ /xf0/x98/xa8/x89 TANGUT COMPONENT-522 -+ /xf0/x98/xa8/x8a TANGUT COMPONENT-523 -+ /xf0/x98/xa8/x8b TANGUT COMPONENT-524 -+ /xf0/x98/xa8/x8c TANGUT COMPONENT-525 -+ /xf0/x98/xa8/x8d TANGUT COMPONENT-526 -+ /xf0/x98/xa8/x8e TANGUT COMPONENT-527 -+ /xf0/x98/xa8/x8f TANGUT COMPONENT-528 -+ /xf0/x98/xa8/x90 TANGUT COMPONENT-529 -+ /xf0/x98/xa8/x91 TANGUT COMPONENT-530 -+ /xf0/x98/xa8/x92 TANGUT COMPONENT-531 -+ /xf0/x98/xa8/x93 TANGUT COMPONENT-532 -+ /xf0/x98/xa8/x94 TANGUT COMPONENT-533 -+ /xf0/x98/xa8/x95 TANGUT COMPONENT-534 -+ /xf0/x98/xa8/x96 TANGUT COMPONENT-535 -+ /xf0/x98/xa8/x97 TANGUT COMPONENT-536 -+ /xf0/x98/xa8/x98 TANGUT COMPONENT-537 -+ /xf0/x98/xa8/x99 TANGUT COMPONENT-538 -+ /xf0/x98/xa8/x9a TANGUT COMPONENT-539 -+ /xf0/x98/xa8/x9b TANGUT COMPONENT-540 -+ /xf0/x98/xa8/x9c TANGUT COMPONENT-541 -+ /xf0/x98/xa8/x9d TANGUT COMPONENT-542 -+ /xf0/x98/xa8/x9e TANGUT COMPONENT-543 -+ /xf0/x98/xa8/x9f TANGUT COMPONENT-544 -+ /xf0/x98/xa8/xa0 TANGUT COMPONENT-545 -+ /xf0/x98/xa8/xa1 TANGUT COMPONENT-546 -+ /xf0/x98/xa8/xa2 TANGUT COMPONENT-547 -+ /xf0/x98/xa8/xa3 TANGUT COMPONENT-548 -+ /xf0/x98/xa8/xa4 TANGUT COMPONENT-549 -+ /xf0/x98/xa8/xa5 TANGUT COMPONENT-550 -+ /xf0/x98/xa8/xa6 TANGUT COMPONENT-551 -+ /xf0/x98/xa8/xa7 TANGUT COMPONENT-552 -+ /xf0/x98/xa8/xa8 TANGUT COMPONENT-553 -+ /xf0/x98/xa8/xa9 TANGUT COMPONENT-554 -+ /xf0/x98/xa8/xaa TANGUT COMPONENT-555 -+ /xf0/x98/xa8/xab TANGUT COMPONENT-556 -+ /xf0/x98/xa8/xac TANGUT COMPONENT-557 -+ /xf0/x98/xa8/xad TANGUT COMPONENT-558 -+ /xf0/x98/xa8/xae TANGUT COMPONENT-559 -+ /xf0/x98/xa8/xaf TANGUT COMPONENT-560 -+ /xf0/x98/xa8/xb0 TANGUT COMPONENT-561 -+ /xf0/x98/xa8/xb1 TANGUT COMPONENT-562 -+ /xf0/x98/xa8/xb2 TANGUT COMPONENT-563 -+ /xf0/x98/xa8/xb3 TANGUT COMPONENT-564 -+ /xf0/x98/xa8/xb4 TANGUT COMPONENT-565 -+ /xf0/x98/xa8/xb5 TANGUT COMPONENT-566 -+ /xf0/x98/xa8/xb6 TANGUT COMPONENT-567 -+ /xf0/x98/xa8/xb7 TANGUT COMPONENT-568 -+ /xf0/x98/xa8/xb8 TANGUT COMPONENT-569 -+ /xf0/x98/xa8/xb9 TANGUT COMPONENT-570 -+ /xf0/x98/xa8/xba TANGUT COMPONENT-571 -+ /xf0/x98/xa8/xbb TANGUT COMPONENT-572 -+ /xf0/x98/xa8/xbc TANGUT COMPONENT-573 -+ /xf0/x98/xa8/xbd TANGUT COMPONENT-574 -+ /xf0/x98/xa8/xbe TANGUT COMPONENT-575 -+ /xf0/x98/xa8/xbf TANGUT COMPONENT-576 -+ /xf0/x98/xa9/x80 TANGUT COMPONENT-577 -+ /xf0/x98/xa9/x81 TANGUT COMPONENT-578 -+ /xf0/x98/xa9/x82 TANGUT COMPONENT-579 -+ /xf0/x98/xa9/x83 TANGUT COMPONENT-580 -+ /xf0/x98/xa9/x84 TANGUT COMPONENT-581 -+ /xf0/x98/xa9/x85 TANGUT COMPONENT-582 -+ /xf0/x98/xa9/x86 TANGUT COMPONENT-583 -+ /xf0/x98/xa9/x87 TANGUT COMPONENT-584 -+ /xf0/x98/xa9/x88 TANGUT COMPONENT-585 -+ /xf0/x98/xa9/x89 TANGUT COMPONENT-586 -+ /xf0/x98/xa9/x8a TANGUT COMPONENT-587 -+ /xf0/x98/xa9/x8b TANGUT COMPONENT-588 -+ /xf0/x98/xa9/x8c TANGUT COMPONENT-589 -+ /xf0/x98/xa9/x8d TANGUT COMPONENT-590 -+ /xf0/x98/xa9/x8e TANGUT COMPONENT-591 -+ /xf0/x98/xa9/x8f TANGUT COMPONENT-592 -+ /xf0/x98/xa9/x90 TANGUT COMPONENT-593 -+ /xf0/x98/xa9/x91 TANGUT COMPONENT-594 -+ /xf0/x98/xa9/x92 TANGUT COMPONENT-595 -+ /xf0/x98/xa9/x93 TANGUT COMPONENT-596 -+ /xf0/x98/xa9/x94 TANGUT COMPONENT-597 -+ /xf0/x98/xa9/x95 TANGUT COMPONENT-598 -+ /xf0/x98/xa9/x96 TANGUT COMPONENT-599 -+ /xf0/x98/xa9/x97 TANGUT COMPONENT-600 -+ /xf0/x98/xa9/x98 TANGUT COMPONENT-601 -+ /xf0/x98/xa9/x99 TANGUT COMPONENT-602 -+ /xf0/x98/xa9/x9a TANGUT COMPONENT-603 -+ /xf0/x98/xa9/x9b TANGUT COMPONENT-604 -+ /xf0/x98/xa9/x9c TANGUT COMPONENT-605 -+ /xf0/x98/xa9/x9d TANGUT COMPONENT-606 -+ /xf0/x98/xa9/x9e TANGUT COMPONENT-607 -+ /xf0/x98/xa9/x9f TANGUT COMPONENT-608 -+ /xf0/x98/xa9/xa0 TANGUT COMPONENT-609 -+ /xf0/x98/xa9/xa1 TANGUT COMPONENT-610 -+ /xf0/x98/xa9/xa2 TANGUT COMPONENT-611 -+ /xf0/x98/xa9/xa3 TANGUT COMPONENT-612 -+ /xf0/x98/xa9/xa4 TANGUT COMPONENT-613 -+ /xf0/x98/xa9/xa5 TANGUT COMPONENT-614 -+ /xf0/x98/xa9/xa6 TANGUT COMPONENT-615 -+ /xf0/x98/xa9/xa7 TANGUT COMPONENT-616 -+ /xf0/x98/xa9/xa8 TANGUT COMPONENT-617 -+ /xf0/x98/xa9/xa9 TANGUT COMPONENT-618 -+ /xf0/x98/xa9/xaa TANGUT COMPONENT-619 -+ /xf0/x98/xa9/xab TANGUT COMPONENT-620 -+ /xf0/x98/xa9/xac TANGUT COMPONENT-621 -+ /xf0/x98/xa9/xad TANGUT COMPONENT-622 -+ /xf0/x98/xa9/xae TANGUT COMPONENT-623 -+ /xf0/x98/xa9/xaf TANGUT COMPONENT-624 -+ /xf0/x98/xa9/xb0 TANGUT COMPONENT-625 -+ /xf0/x98/xa9/xb1 TANGUT COMPONENT-626 -+ /xf0/x98/xa9/xb2 TANGUT COMPONENT-627 -+ /xf0/x98/xa9/xb3 TANGUT COMPONENT-628 -+ /xf0/x98/xa9/xb4 TANGUT COMPONENT-629 -+ /xf0/x98/xa9/xb5 TANGUT COMPONENT-630 -+ /xf0/x98/xa9/xb6 TANGUT COMPONENT-631 -+ /xf0/x98/xa9/xb7 TANGUT COMPONENT-632 -+ /xf0/x98/xa9/xb8 TANGUT COMPONENT-633 -+ /xf0/x98/xa9/xb9 TANGUT COMPONENT-634 -+ /xf0/x98/xa9/xba TANGUT COMPONENT-635 -+ /xf0/x98/xa9/xbb TANGUT COMPONENT-636 -+ /xf0/x98/xa9/xbc TANGUT COMPONENT-637 -+ /xf0/x98/xa9/xbd TANGUT COMPONENT-638 -+ /xf0/x98/xa9/xbe TANGUT COMPONENT-639 -+ /xf0/x98/xa9/xbf TANGUT COMPONENT-640 -+ /xf0/x98/xaa/x80 TANGUT COMPONENT-641 -+ /xf0/x98/xaa/x81 TANGUT COMPONENT-642 -+ /xf0/x98/xaa/x82 TANGUT COMPONENT-643 -+ /xf0/x98/xaa/x83 TANGUT COMPONENT-644 -+ /xf0/x98/xaa/x84 TANGUT COMPONENT-645 -+ /xf0/x98/xaa/x85 TANGUT COMPONENT-646 -+ /xf0/x98/xaa/x86 TANGUT COMPONENT-647 -+ /xf0/x98/xaa/x87 TANGUT COMPONENT-648 -+ /xf0/x98/xaa/x88 TANGUT COMPONENT-649 -+ /xf0/x98/xaa/x89 TANGUT COMPONENT-650 -+ /xf0/x98/xaa/x8a TANGUT COMPONENT-651 -+ /xf0/x98/xaa/x8b TANGUT COMPONENT-652 -+ /xf0/x98/xaa/x8c TANGUT COMPONENT-653 -+ /xf0/x98/xaa/x8d TANGUT COMPONENT-654 -+ /xf0/x98/xaa/x8e TANGUT COMPONENT-655 -+ /xf0/x98/xaa/x8f TANGUT COMPONENT-656 -+ /xf0/x98/xaa/x90 TANGUT COMPONENT-657 -+ /xf0/x98/xaa/x91 TANGUT COMPONENT-658 -+ /xf0/x98/xaa/x92 TANGUT COMPONENT-659 -+ /xf0/x98/xaa/x93 TANGUT COMPONENT-660 -+ /xf0/x98/xaa/x94 TANGUT COMPONENT-661 -+ /xf0/x98/xaa/x95 TANGUT COMPONENT-662 -+ /xf0/x98/xaa/x96 TANGUT COMPONENT-663 -+ /xf0/x98/xaa/x97 TANGUT COMPONENT-664 -+ /xf0/x98/xaa/x98 TANGUT COMPONENT-665 -+ /xf0/x98/xaa/x99 TANGUT COMPONENT-666 -+ /xf0/x98/xaa/x9a TANGUT COMPONENT-667 -+ /xf0/x98/xaa/x9b TANGUT COMPONENT-668 -+ /xf0/x98/xaa/x9c TANGUT COMPONENT-669 -+ /xf0/x98/xaa/x9d TANGUT COMPONENT-670 -+ /xf0/x98/xaa/x9e TANGUT COMPONENT-671 -+ /xf0/x98/xaa/x9f TANGUT COMPONENT-672 -+ /xf0/x98/xaa/xa0 TANGUT COMPONENT-673 -+ /xf0/x98/xaa/xa1 TANGUT COMPONENT-674 -+ /xf0/x98/xaa/xa2 TANGUT COMPONENT-675 -+ /xf0/x98/xaa/xa3 TANGUT COMPONENT-676 -+ /xf0/x98/xaa/xa4 TANGUT COMPONENT-677 -+ /xf0/x98/xaa/xa5 TANGUT COMPONENT-678 -+ /xf0/x98/xaa/xa6 TANGUT COMPONENT-679 -+ /xf0/x98/xaa/xa7 TANGUT COMPONENT-680 -+ /xf0/x98/xaa/xa8 TANGUT COMPONENT-681 -+ /xf0/x98/xaa/xa9 TANGUT COMPONENT-682 -+ /xf0/x98/xaa/xaa TANGUT COMPONENT-683 -+ /xf0/x98/xaa/xab TANGUT COMPONENT-684 -+ /xf0/x98/xaa/xac TANGUT COMPONENT-685 -+ /xf0/x98/xaa/xad TANGUT COMPONENT-686 -+ /xf0/x98/xaa/xae TANGUT COMPONENT-687 -+ /xf0/x98/xaa/xaf TANGUT COMPONENT-688 -+ /xf0/x98/xaa/xb0 TANGUT COMPONENT-689 -+ /xf0/x98/xaa/xb1 TANGUT COMPONENT-690 -+ /xf0/x98/xaa/xb2 TANGUT COMPONENT-691 -+ /xf0/x98/xaa/xb3 TANGUT COMPONENT-692 -+ /xf0/x98/xaa/xb4 TANGUT COMPONENT-693 -+ /xf0/x98/xaa/xb5 TANGUT COMPONENT-694 -+ /xf0/x98/xaa/xb6 TANGUT COMPONENT-695 -+ /xf0/x98/xaa/xb7 TANGUT COMPONENT-696 -+ /xf0/x98/xaa/xb8 TANGUT COMPONENT-697 -+ /xf0/x98/xaa/xb9 TANGUT COMPONENT-698 -+ /xf0/x98/xaa/xba TANGUT COMPONENT-699 -+ /xf0/x98/xaa/xbb TANGUT COMPONENT-700 -+ /xf0/x98/xaa/xbc TANGUT COMPONENT-701 -+ /xf0/x98/xaa/xbd TANGUT COMPONENT-702 -+ /xf0/x98/xaa/xbe TANGUT COMPONENT-703 -+ /xf0/x98/xaa/xbf TANGUT COMPONENT-704 -+ /xf0/x98/xab/x80 TANGUT COMPONENT-705 -+ /xf0/x98/xab/x81 TANGUT COMPONENT-706 -+ /xf0/x98/xab/x82 TANGUT COMPONENT-707 -+ /xf0/x98/xab/x83 TANGUT COMPONENT-708 -+ /xf0/x98/xab/x84 TANGUT COMPONENT-709 -+ /xf0/x98/xab/x85 TANGUT COMPONENT-710 -+ /xf0/x98/xab/x86 TANGUT COMPONENT-711 -+ /xf0/x98/xab/x87 TANGUT COMPONENT-712 -+ /xf0/x98/xab/x88 TANGUT COMPONENT-713 -+ /xf0/x98/xab/x89 TANGUT COMPONENT-714 -+ /xf0/x98/xab/x8a TANGUT COMPONENT-715 -+ /xf0/x98/xab/x8b TANGUT COMPONENT-716 -+ /xf0/x98/xab/x8c TANGUT COMPONENT-717 -+ /xf0/x98/xab/x8d TANGUT COMPONENT-718 -+ /xf0/x98/xab/x8e TANGUT COMPONENT-719 -+ /xf0/x98/xab/x8f TANGUT COMPONENT-720 -+ /xf0/x98/xab/x90 TANGUT COMPONENT-721 -+ /xf0/x98/xab/x91 TANGUT COMPONENT-722 -+ /xf0/x98/xab/x92 TANGUT COMPONENT-723 -+ /xf0/x98/xab/x93 TANGUT COMPONENT-724 -+ /xf0/x98/xab/x94 TANGUT COMPONENT-725 -+ /xf0/x98/xab/x95 TANGUT COMPONENT-726 -+ /xf0/x98/xab/x96 TANGUT COMPONENT-727 -+ /xf0/x98/xab/x97 TANGUT COMPONENT-728 -+ /xf0/x98/xab/x98 TANGUT COMPONENT-729 -+ /xf0/x98/xab/x99 TANGUT COMPONENT-730 -+ /xf0/x98/xab/x9a TANGUT COMPONENT-731 -+ /xf0/x98/xab/x9b TANGUT COMPONENT-732 -+ /xf0/x98/xab/x9c TANGUT COMPONENT-733 -+ /xf0/x98/xab/x9d TANGUT COMPONENT-734 -+ /xf0/x98/xab/x9e TANGUT COMPONENT-735 -+ /xf0/x98/xab/x9f TANGUT COMPONENT-736 -+ /xf0/x98/xab/xa0 TANGUT COMPONENT-737 -+ /xf0/x98/xab/xa1 TANGUT COMPONENT-738 -+ /xf0/x98/xab/xa2 TANGUT COMPONENT-739 -+ /xf0/x98/xab/xa3 TANGUT COMPONENT-740 -+ /xf0/x98/xab/xa4 TANGUT COMPONENT-741 -+ /xf0/x98/xab/xa5 TANGUT COMPONENT-742 -+ /xf0/x98/xab/xa6 TANGUT COMPONENT-743 -+ /xf0/x98/xab/xa7 TANGUT COMPONENT-744 -+ /xf0/x98/xab/xa8 TANGUT COMPONENT-745 -+ /xf0/x98/xab/xa9 TANGUT COMPONENT-746 -+ /xf0/x98/xab/xaa TANGUT COMPONENT-747 -+ /xf0/x98/xab/xab TANGUT COMPONENT-748 -+ /xf0/x98/xab/xac TANGUT COMPONENT-749 -+ /xf0/x98/xab/xad TANGUT COMPONENT-750 -+ /xf0/x98/xab/xae TANGUT COMPONENT-751 -+ /xf0/x98/xab/xaf TANGUT COMPONENT-752 -+ /xf0/x98/xab/xb0 TANGUT COMPONENT-753 -+ /xf0/x98/xab/xb1 TANGUT COMPONENT-754 -+ /xf0/x98/xab/xb2 TANGUT COMPONENT-755 - /xf0/x9b/x80/x80 KATAKANA LETTER ARCHAIC E - /xf0/x9b/x80/x81 HIRAGANA LETTER ARCHAIC YE - /xf0/x9b/xb0/x80 DUPLOYAN LETTER H -@@ -37858,6 +39111,44 @@ CHARMAP - /xf0/x9d/xaa/xad SIGNWRITING ROTATION MODIFIER-14 - /xf0/x9d/xaa/xae SIGNWRITING ROTATION MODIFIER-15 - /xf0/x9d/xaa/xaf SIGNWRITING ROTATION MODIFIER-16 -+ /xf0/x9e/x80/x80 COMBINING GLAGOLITIC LETTER AZU -+ /xf0/x9e/x80/x81 COMBINING GLAGOLITIC LETTER BUKY -+ /xf0/x9e/x80/x82 COMBINING GLAGOLITIC LETTER VEDE -+ /xf0/x9e/x80/x83 COMBINING GLAGOLITIC LETTER GLAGOLI -+ /xf0/x9e/x80/x84 COMBINING GLAGOLITIC LETTER DOBRO -+ /xf0/x9e/x80/x85 COMBINING GLAGOLITIC LETTER YESTU -+ /xf0/x9e/x80/x86 COMBINING GLAGOLITIC LETTER ZHIVETE -+ /xf0/x9e/x80/x88 COMBINING GLAGOLITIC LETTER ZEMLJA -+ /xf0/x9e/x80/x89 COMBINING GLAGOLITIC LETTER IZHE -+ /xf0/x9e/x80/x8a COMBINING GLAGOLITIC LETTER INITIAL IZHE -+ /xf0/x9e/x80/x8b COMBINING GLAGOLITIC LETTER I -+ /xf0/x9e/x80/x8c COMBINING GLAGOLITIC LETTER DJERVI -+ /xf0/x9e/x80/x8d COMBINING GLAGOLITIC LETTER KAKO -+ /xf0/x9e/x80/x8e COMBINING GLAGOLITIC LETTER LJUDIJE -+ /xf0/x9e/x80/x8f COMBINING GLAGOLITIC LETTER MYSLITE -+ /xf0/x9e/x80/x90 COMBINING GLAGOLITIC LETTER NASHI -+ /xf0/x9e/x80/x91 COMBINING GLAGOLITIC LETTER ONU -+ /xf0/x9e/x80/x92 COMBINING GLAGOLITIC LETTER POKOJI -+ /xf0/x9e/x80/x93 COMBINING GLAGOLITIC LETTER RITSI -+ /xf0/x9e/x80/x94 COMBINING GLAGOLITIC LETTER SLOVO -+ /xf0/x9e/x80/x95 COMBINING GLAGOLITIC LETTER TVRIDO -+ /xf0/x9e/x80/x96 COMBINING GLAGOLITIC LETTER UKU -+ /xf0/x9e/x80/x97 COMBINING GLAGOLITIC LETTER FRITU -+ /xf0/x9e/x80/x98 COMBINING GLAGOLITIC LETTER HERU -+ /xf0/x9e/x80/x9b COMBINING GLAGOLITIC LETTER SHTA -+ /xf0/x9e/x80/x9c COMBINING GLAGOLITIC LETTER TSI -+ /xf0/x9e/x80/x9d COMBINING GLAGOLITIC LETTER CHRIVI -+ /xf0/x9e/x80/x9e COMBINING GLAGOLITIC LETTER SHA -+ /xf0/x9e/x80/x9f COMBINING GLAGOLITIC LETTER YERU -+ /xf0/x9e/x80/xa0 COMBINING GLAGOLITIC LETTER YERI -+ /xf0/x9e/x80/xa1 COMBINING GLAGOLITIC LETTER YATI -+ /xf0/x9e/x80/xa3 COMBINING GLAGOLITIC LETTER YU -+ /xf0/x9e/x80/xa4 COMBINING GLAGOLITIC LETTER SMALL YUS -+ /xf0/x9e/x80/xa6 COMBINING GLAGOLITIC LETTER YO -+ /xf0/x9e/x80/xa7 COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS -+ /xf0/x9e/x80/xa8 COMBINING GLAGOLITIC LETTER BIG YUS -+ /xf0/x9e/x80/xa9 COMBINING GLAGOLITIC LETTER IOTATED BIG YUS -+ /xf0/x9e/x80/xaa COMBINING GLAGOLITIC LETTER FITA - /xf0/x9e/xa0/x80 MENDE KIKAKUI SYLLABLE M001 KI - /xf0/x9e/xa0/x81 MENDE KIKAKUI SYLLABLE M002 KA - /xf0/x9e/xa0/x82 MENDE KIKAKUI SYLLABLE M003 KU -@@ -38071,6 +39362,93 @@ CHARMAP - /xf0/x9e/xa3/x94 MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS - /xf0/x9e/xa3/x95 MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS - /xf0/x9e/xa3/x96 MENDE KIKAKUI COMBINING NUMBER MILLIONS -+ /xf0/x9e/xa4/x80 ADLAM CAPITAL LETTER ALIF -+ /xf0/x9e/xa4/x81 ADLAM CAPITAL LETTER DAALI -+ /xf0/x9e/xa4/x82 ADLAM CAPITAL LETTER LAAM -+ /xf0/x9e/xa4/x83 ADLAM CAPITAL LETTER MIIM -+ /xf0/x9e/xa4/x84 ADLAM CAPITAL LETTER BA -+ /xf0/x9e/xa4/x85 ADLAM CAPITAL LETTER SINNYIIYHE -+ /xf0/x9e/xa4/x86 ADLAM CAPITAL LETTER PE -+ /xf0/x9e/xa4/x87 ADLAM CAPITAL LETTER BHE -+ /xf0/x9e/xa4/x88 ADLAM CAPITAL LETTER RA -+ /xf0/x9e/xa4/x89 ADLAM CAPITAL LETTER E -+ /xf0/x9e/xa4/x8a ADLAM CAPITAL LETTER FA -+ /xf0/x9e/xa4/x8b ADLAM CAPITAL LETTER I -+ /xf0/x9e/xa4/x8c ADLAM CAPITAL LETTER O -+ /xf0/x9e/xa4/x8d ADLAM CAPITAL LETTER DHA -+ /xf0/x9e/xa4/x8e ADLAM CAPITAL LETTER YHE -+ /xf0/x9e/xa4/x8f ADLAM CAPITAL LETTER WAW -+ /xf0/x9e/xa4/x90 ADLAM CAPITAL LETTER NUN -+ /xf0/x9e/xa4/x91 ADLAM CAPITAL LETTER KAF -+ /xf0/x9e/xa4/x92 ADLAM CAPITAL LETTER YA -+ /xf0/x9e/xa4/x93 ADLAM CAPITAL LETTER U -+ /xf0/x9e/xa4/x94 ADLAM CAPITAL LETTER JIIM -+ /xf0/x9e/xa4/x95 ADLAM CAPITAL LETTER CHI -+ /xf0/x9e/xa4/x96 ADLAM CAPITAL LETTER HA -+ /xf0/x9e/xa4/x97 ADLAM CAPITAL LETTER QAAF -+ /xf0/x9e/xa4/x98 ADLAM CAPITAL LETTER GA -+ /xf0/x9e/xa4/x99 ADLAM CAPITAL LETTER NYA -+ /xf0/x9e/xa4/x9a ADLAM CAPITAL LETTER TU -+ /xf0/x9e/xa4/x9b ADLAM CAPITAL LETTER NHA -+ /xf0/x9e/xa4/x9c ADLAM CAPITAL LETTER VA -+ /xf0/x9e/xa4/x9d ADLAM CAPITAL LETTER KHA -+ /xf0/x9e/xa4/x9e ADLAM CAPITAL LETTER GBE -+ /xf0/x9e/xa4/x9f ADLAM CAPITAL LETTER ZAL -+ /xf0/x9e/xa4/xa0 ADLAM CAPITAL LETTER KPO -+ /xf0/x9e/xa4/xa1 ADLAM CAPITAL LETTER SHA -+ /xf0/x9e/xa4/xa2 ADLAM SMALL LETTER ALIF -+ /xf0/x9e/xa4/xa3 ADLAM SMALL LETTER DAALI -+ /xf0/x9e/xa4/xa4 ADLAM SMALL LETTER LAAM -+ /xf0/x9e/xa4/xa5 ADLAM SMALL LETTER MIIM -+ /xf0/x9e/xa4/xa6 ADLAM SMALL LETTER BA -+ /xf0/x9e/xa4/xa7 ADLAM SMALL LETTER SINNYIIYHE -+ /xf0/x9e/xa4/xa8 ADLAM SMALL LETTER PE -+ /xf0/x9e/xa4/xa9 ADLAM SMALL LETTER BHE -+ /xf0/x9e/xa4/xaa ADLAM SMALL LETTER RA -+ /xf0/x9e/xa4/xab ADLAM SMALL LETTER E -+ /xf0/x9e/xa4/xac ADLAM SMALL LETTER FA -+ /xf0/x9e/xa4/xad ADLAM SMALL LETTER I -+ /xf0/x9e/xa4/xae ADLAM SMALL LETTER O -+ /xf0/x9e/xa4/xaf ADLAM SMALL LETTER DHA -+ /xf0/x9e/xa4/xb0 ADLAM SMALL LETTER YHE -+ /xf0/x9e/xa4/xb1 ADLAM SMALL LETTER WAW -+ /xf0/x9e/xa4/xb2 ADLAM SMALL LETTER NUN -+ /xf0/x9e/xa4/xb3 ADLAM SMALL LETTER KAF -+ /xf0/x9e/xa4/xb4 ADLAM SMALL LETTER YA -+ /xf0/x9e/xa4/xb5 ADLAM SMALL LETTER U -+ /xf0/x9e/xa4/xb6 ADLAM SMALL LETTER JIIM -+ /xf0/x9e/xa4/xb7 ADLAM SMALL LETTER CHI -+ /xf0/x9e/xa4/xb8 ADLAM SMALL LETTER HA -+ /xf0/x9e/xa4/xb9 ADLAM SMALL LETTER QAAF -+ /xf0/x9e/xa4/xba ADLAM SMALL LETTER GA -+ /xf0/x9e/xa4/xbb ADLAM SMALL LETTER NYA -+ /xf0/x9e/xa4/xbc ADLAM SMALL LETTER TU -+ /xf0/x9e/xa4/xbd ADLAM SMALL LETTER NHA -+ /xf0/x9e/xa4/xbe ADLAM SMALL LETTER VA -+ /xf0/x9e/xa4/xbf ADLAM SMALL LETTER KHA -+ /xf0/x9e/xa5/x80 ADLAM SMALL LETTER GBE -+ /xf0/x9e/xa5/x81 ADLAM SMALL LETTER ZAL -+ /xf0/x9e/xa5/x82 ADLAM SMALL LETTER KPO -+ /xf0/x9e/xa5/x83 ADLAM SMALL LETTER SHA -+ /xf0/x9e/xa5/x84 ADLAM ALIF LENGTHENER -+ /xf0/x9e/xa5/x85 ADLAM VOWEL LENGTHENER -+ /xf0/x9e/xa5/x86 ADLAM GEMINATION MARK -+ /xf0/x9e/xa5/x87 ADLAM HAMZA -+ /xf0/x9e/xa5/x88 ADLAM CONSONANT MODIFIER -+ /xf0/x9e/xa5/x89 ADLAM GEMINATE CONSONANT MODIFIER -+ /xf0/x9e/xa5/x8a ADLAM NUKTA -+ /xf0/x9e/xa5/x90 ADLAM DIGIT ZERO -+ /xf0/x9e/xa5/x91 ADLAM DIGIT ONE -+ /xf0/x9e/xa5/x92 ADLAM DIGIT TWO -+ /xf0/x9e/xa5/x93 ADLAM DIGIT THREE -+ /xf0/x9e/xa5/x94 ADLAM DIGIT FOUR -+ /xf0/x9e/xa5/x95 ADLAM DIGIT FIVE -+ /xf0/x9e/xa5/x96 ADLAM DIGIT SIX -+ /xf0/x9e/xa5/x97 ADLAM DIGIT SEVEN -+ /xf0/x9e/xa5/x98 ADLAM DIGIT EIGHT -+ /xf0/x9e/xa5/x99 ADLAM DIGIT NINE -+ /xf0/x9e/xa5/x9e ADLAM INITIAL EXCLAMATION MARK -+ /xf0/x9e/xa5/x9f ADLAM INITIAL QUESTION MARK - /xf0/x9e/xb8/x80 ARABIC MATHEMATICAL ALEF - /xf0/x9e/xb8/x81 ARABIC MATHEMATICAL BEH - /xf0/x9e/xb8/x82 ARABIC MATHEMATICAL JEEM -@@ -38587,6 +39965,24 @@ CHARMAP - /xf0/x9f/x86/x98 SQUARED SOS - /xf0/x9f/x86/x99 SQUARED UP WITH EXCLAMATION MARK - /xf0/x9f/x86/x9a SQUARED VS -+ /xf0/x9f/x86/x9b SQUARED THREE D -+ /xf0/x9f/x86/x9c SQUARED SECOND SCREEN -+ /xf0/x9f/x86/x9d SQUARED TWO K -+ /xf0/x9f/x86/x9e SQUARED FOUR K -+ /xf0/x9f/x86/x9f SQUARED EIGHT K -+ /xf0/x9f/x86/xa0 SQUARED FIVE POINT ONE -+ /xf0/x9f/x86/xa1 SQUARED SEVEN POINT ONE -+ /xf0/x9f/x86/xa2 SQUARED TWENTY-TWO POINT TWO -+ /xf0/x9f/x86/xa3 SQUARED SIXTY P -+ /xf0/x9f/x86/xa4 SQUARED ONE HUNDRED TWENTY P -+ /xf0/x9f/x86/xa5 SQUARED LATIN SMALL LETTER D -+ /xf0/x9f/x86/xa6 SQUARED HC -+ /xf0/x9f/x86/xa7 SQUARED HDR -+ /xf0/x9f/x86/xa8 SQUARED HI-RES -+ /xf0/x9f/x86/xa9 SQUARED LOSSLESS -+ /xf0/x9f/x86/xaa SQUARED SHV -+ /xf0/x9f/x86/xab SQUARED UHD -+ /xf0/x9f/x86/xac SQUARED VOD - /xf0/x9f/x87/xa6 REGIONAL INDICATOR SYMBOL LETTER A - /xf0/x9f/x87/xa7 REGIONAL INDICATOR SYMBOL LETTER B - /xf0/x9f/x87/xa8 REGIONAL INDICATOR SYMBOL LETTER C -@@ -38659,6 +40055,7 @@ CHARMAP - /xf0/x9f/x88/xb8 SQUARED CJK UNIFIED IDEOGRAPH-7533 - /xf0/x9f/x88/xb9 SQUARED CJK UNIFIED IDEOGRAPH-5272 - /xf0/x9f/x88/xba SQUARED CJK UNIFIED IDEOGRAPH-55B6 -+ /xf0/x9f/x88/xbb SQUARED CJK UNIFIED IDEOGRAPH-914D - /xf0/x9f/x89/x80 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C - /xf0/x9f/x89/x81 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 - /xf0/x9f/x89/x82 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C -@@ -39304,6 +40701,7 @@ CHARMAP - /xf0/x9f/x95/xb7 SPIDER - /xf0/x9f/x95/xb8 SPIDER WEB - /xf0/x9f/x95/xb9 JOYSTICK -+ /xf0/x9f/x95/xba MAN DANCING - /xf0/x9f/x95/xbb LEFT HAND TELEPHONE RECEIVER - /xf0/x9f/x95/xbc TELEPHONE RECEIVER WITH PAGE - /xf0/x9f/x95/xbd RIGHT HAND TELEPHONE RECEIVER -@@ -39345,6 +40743,7 @@ CHARMAP - /xf0/x9f/x96/xa1 SIDEWAYS BLACK DOWN POINTING INDEX - /xf0/x9f/x96/xa2 BLACK UP POINTING BACKHAND INDEX - /xf0/x9f/x96/xa3 BLACK DOWN POINTING BACKHAND INDEX -+ /xf0/x9f/x96/xa4 BLACK HEART - /xf0/x9f/x96/xa5 DESKTOP COMPUTER - /xf0/x9f/x96/xa6 KEYBOARD AND MOUSE - /xf0/x9f/x96/xa7 THREE NETWORKED COMPUTERS -@@ -39645,6 +41044,8 @@ CHARMAP - /xf0/x9f/x9b/x8e BELLHOP BELL - /xf0/x9f/x9b/x8f BED - /xf0/x9f/x9b/x90 PLACE OF WORSHIP -+ /xf0/x9f/x9b/x91 OCTAGONAL SIGN -+ /xf0/x9f/x9b/x92 SHOPPING TROLLEY - /xf0/x9f/x9b/xa0 HAMMER AND WRENCH - /xf0/x9f/x9b/xa1 SHIELD - /xf0/x9f/x9b/xa2 OIL DRUM -@@ -39662,6 +41063,9 @@ CHARMAP - /xf0/x9f/x9b/xb1 ONCOMING FIRE ENGINE - /xf0/x9f/x9b/xb2 DIESEL LOCOMOTIVE - /xf0/x9f/x9b/xb3 PASSENGER SHIP -+ /xf0/x9f/x9b/xb4 SCOOTER -+ /xf0/x9f/x9b/xb5 MOTOR SCOOTER -+ /xf0/x9f/x9b/xb6 CANOE - /xf0/x9f/x9c/x80 ALCHEMICAL SYMBOL FOR QUINTESSENCE - /xf0/x9f/x9c/x81 ALCHEMICAL SYMBOL FOR AIR - /xf0/x9f/x9c/x82 ALCHEMICAL SYMBOL FOR FIRE -@@ -40020,11 +41424,78 @@ CHARMAP - /xf0/x9f/xa4/x96 ROBOT FACE - /xf0/x9f/xa4/x97 HUGGING FACE - /xf0/x9f/xa4/x98 SIGN OF THE HORNS -+ /xf0/x9f/xa4/x99 CALL ME HAND -+ /xf0/x9f/xa4/x9a RAISED BACK OF HAND -+ /xf0/x9f/xa4/x9b LEFT-FACING FIST -+ /xf0/x9f/xa4/x9c RIGHT-FACING FIST -+ /xf0/x9f/xa4/x9d HANDSHAKE -+ /xf0/x9f/xa4/x9e HAND WITH INDEX AND MIDDLE FINGERS CROSSED -+ /xf0/x9f/xa4/xa0 FACE WITH COWBOY HAT -+ /xf0/x9f/xa4/xa1 CLOWN FACE -+ /xf0/x9f/xa4/xa2 NAUSEATED FACE -+ /xf0/x9f/xa4/xa3 ROLLING ON THE FLOOR LAUGHING -+ /xf0/x9f/xa4/xa4 DROOLING FACE -+ /xf0/x9f/xa4/xa5 LYING FACE -+ /xf0/x9f/xa4/xa6 FACE PALM -+ /xf0/x9f/xa4/xa7 SNEEZING FACE -+ /xf0/x9f/xa4/xb0 PREGNANT WOMAN -+ /xf0/x9f/xa4/xb3 SELFIE -+ /xf0/x9f/xa4/xb4 PRINCE -+ /xf0/x9f/xa4/xb5 MAN IN TUXEDO -+ /xf0/x9f/xa4/xb6 MOTHER CHRISTMAS -+ /xf0/x9f/xa4/xb7 SHRUG -+ /xf0/x9f/xa4/xb8 PERSON DOING CARTWHEEL -+ /xf0/x9f/xa4/xb9 JUGGLING -+ /xf0/x9f/xa4/xba FENCER -+ /xf0/x9f/xa4/xbb MODERN PENTATHLON -+ /xf0/x9f/xa4/xbc WRESTLERS -+ /xf0/x9f/xa4/xbd WATER POLO -+ /xf0/x9f/xa4/xbe HANDBALL -+ /xf0/x9f/xa5/x80 WILTED FLOWER -+ /xf0/x9f/xa5/x81 DRUM WITH DRUMSTICKS -+ /xf0/x9f/xa5/x82 CLINKING GLASSES -+ /xf0/x9f/xa5/x83 TUMBLER GLASS -+ /xf0/x9f/xa5/x84 SPOON -+ /xf0/x9f/xa5/x85 GOAL NET -+ /xf0/x9f/xa5/x86 RIFLE -+ /xf0/x9f/xa5/x87 FIRST PLACE MEDAL -+ /xf0/x9f/xa5/x88 SECOND PLACE MEDAL -+ /xf0/x9f/xa5/x89 THIRD PLACE MEDAL -+ /xf0/x9f/xa5/x8a BOXING GLOVE -+ /xf0/x9f/xa5/x8b MARTIAL ARTS UNIFORM -+ /xf0/x9f/xa5/x90 CROISSANT -+ /xf0/x9f/xa5/x91 AVOCADO -+ /xf0/x9f/xa5/x92 CUCUMBER -+ /xf0/x9f/xa5/x93 BACON -+ /xf0/x9f/xa5/x94 POTATO -+ /xf0/x9f/xa5/x95 CARROT -+ /xf0/x9f/xa5/x96 BAGUETTE BREAD -+ /xf0/x9f/xa5/x97 GREEN SALAD -+ /xf0/x9f/xa5/x98 SHALLOW PAN OF FOOD -+ /xf0/x9f/xa5/x99 STUFFED FLATBREAD -+ /xf0/x9f/xa5/x9a EGG -+ /xf0/x9f/xa5/x9b GLASS OF MILK -+ /xf0/x9f/xa5/x9c PEANUTS -+ /xf0/x9f/xa5/x9d KIWIFRUIT -+ /xf0/x9f/xa5/x9e PANCAKES - /xf0/x9f/xa6/x80 CRAB - /xf0/x9f/xa6/x81 LION FACE - /xf0/x9f/xa6/x82 SCORPION - /xf0/x9f/xa6/x83 TURKEY - /xf0/x9f/xa6/x84 UNICORN FACE -+ /xf0/x9f/xa6/x85 EAGLE -+ /xf0/x9f/xa6/x86 DUCK -+ /xf0/x9f/xa6/x87 BAT -+ /xf0/x9f/xa6/x88 SHARK -+ /xf0/x9f/xa6/x89 OWL -+ /xf0/x9f/xa6/x8a FOX FACE -+ /xf0/x9f/xa6/x8b BUTTERFLY -+ /xf0/x9f/xa6/x8c DEER -+ /xf0/x9f/xa6/x8d GORILLA -+ /xf0/x9f/xa6/x8e LIZARD -+ /xf0/x9f/xa6/x8f RHINOCEROS -+ /xf0/x9f/xa6/x90 SHRIMP -+ /xf0/x9f/xa6/x91 SQUID - /xf0/x9f/xa7/x80 CHEESE WEDGE - .. /xf0/xa0/x80/x80 - .. /xf0/xa0/x81/x80 -@@ -44096,6 +45567,21 @@ WIDTH - 0 - 0 - 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 - 0 - 0 - 0 -@@ -44405,6 +45891,8 @@ WIDTH - 0 - 0 - 0 -+ 0 -+ 0 - 0 - 0 - 0 -@@ -44592,6 +46080,7 @@ WIDTH - 0 - 0 - 0 -+ 0 - 0 - 0 - 0 -@@ -44654,8 +46143,41 @@ WIDTH - 0 - 0 - 0 -+... 2 - 2 - 2 -+... 2 -+ 2 -+ 2 -+... 2 -+... 2 -+... 2 -+ 2 -+ 2 -+ 2 -+... 2 -+... 2 -+... 2 -+ 2 -+ 2 -+ 2 -+... 2 -+ 2 -+ 2 -+ 2 -+ 2 -+... 2 -+ 2 -+ 2 -+ 2 -+... 2 -+ 2 -+... 2 -+ 2 -+ 2 -+... 2 -+ 2 -+ 2 - 0 - 0 - 0 -@@ -44795,6 +46317,7 @@ WIDTH - 0 - 0 - 0 -+ 0 - 0 - 0 - 0 -@@ -45073,6 +46596,7 @@ WIDTH - 0 - 0 - 0 -+ 0 - 0 - 0 - 0 -@@ -45098,6 +46622,18 @@ WIDTH - 0 - 0 - 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 - 0 - 0 - 0 -@@ -45151,6 +46687,52 @@ WIDTH - 0 - 0 - 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 - 0 - 0 - 0 -@@ -45167,6 +46749,9 @@ WIDTH - 0 - 0 - 0 -+ 2 -+... 2 -+... 2 - ... 2 - 0 - 0 -@@ -45334,6 +46919,44 @@ WIDTH - 0 - 0 - 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 - 0 - 0 - 0 -@@ -45341,10 +46964,55 @@ WIDTH - 0 - 0 - 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 2 -+ 2 -+ 2 -+... 2 - ... 2 --... 2 -+... 2 - ... 2 - ... 2 -+... 2 -+... 2 -+... 2 -+... 2 -+... 2 -+... 2 -+... 2 -+ 2 -+... 2 -+... 2 -+... 2 -+ 2 -+... 2 -+... 2 -+... 2 -+... 2 -+ 2 -+... 2 -+ 2 -+... 2 -+... 2 -+... 2 -+ 2 -+... 2 -+... 2 -+... 2 -+... 2 -+... 2 -+ 2 -+... 2 -+... 2 -+... 2 -+... 2 -+ 2 - ... 2 - ... 2 - ... 2 -diff --git a/localedata/locales/i18n b/localedata/locales/i18n -index 115cb05..c063838 100644 ---- a/localedata/locales/i18n -+++ b/localedata/locales/i18n -@@ -19,7 +19,7 @@ fax "" - language "" - territory "" - revision "" --date "2015-12-09" -+date "2016-06-21" - - category "i18n:2012";LC_IDENTIFICATION - category "i18n:2012";LC_CTYPE -@@ -36,7 +36,7 @@ END LC_IDENTIFICATION - - LC_CTYPE - % The following is the 14652 i18n fdcc-set LC_CTYPE category. --% It covers Unicode version 8.0.0. -+% It covers Unicode version 9.0.0. - % The character classes and mapping tables were automatically - % generated using the gen_unicode_ctype.py program. - -@@ -117,23 +117,24 @@ upper / - ;;;;;;;;;/ - ;;;..;;;;;/ - ;;;;;;;;;/ -- ;;;;;..;/ -+ ;;;;;..;/ - ..;;..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ;..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ - ..;.. - - % The "lower" class reflects the lowercase characters of class "alpha" -@@ -174,50 +175,51 @@ lower / - ;;;;;;;;;/ - ;;;;;;;;;/ - ;;;..;..;/ -- ..;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;..;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;;;..;;/ -- ..;;;;;..;/ -- ..;;..;;..;/ -- ..;;..;;;;/ -- ;..;..;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;..;;;;..;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;..;;;;;;/ -- ;..;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;..;;/ -- ;;;;;;;;;/ -- ..;;;;;;;;/ -- ;;;;;..;/ -- ..;..;..;..;/ -- ..;..;..;/ -+ ..;..;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;..;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ..;;..;;;;/ -+ ;..;..;;..;/ -+ ;..;..;;..;/ -+ ;;;;..;..;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;..;;;;/ -+ ..;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;..;;;;/ -+ ;;;..;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;/ -+ ..;;;;;;;;/ -+ ;;;..;;;;;/ -+ ;;;;;;;;/ -+ ..;..;..;..;/ -+ ..;..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -@@ -231,7 +233,8 @@ lower / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..; -+ ..;..;;/ -+ .. - - % The "alpha" class of the "i18n" FDCC-set is reflecting - % the recommendations in TR 10176 annex A -@@ -247,42 +250,42 @@ alpha / - ..;..;..;..;/ - ..;;..;..;/ - ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;;..;..;/ -- ..;..;..;;/ -- ..;..;;..;;/ -- ;..;..;..;;/ -- ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;;..;/ -+ ..;..;..;..;/ -+ ;..;..;;..;/ -+ ;;..;..;..;/ -+ ;;..;..;..;/ - ..;;;..;..;/ - ;..;..;..;/ - ..;..;..;..;/ -@@ -304,44 +307,45 @@ alpha / - ..;..;..;..;/ - ;..;..;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;;;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ;;..;;..;;/ -- ;;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;;;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ..;;;..;;/ -+ ..;;;;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -@@ -350,7 +354,8 @@ alpha / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;;..;/ -@@ -373,16 +378,18 @@ alpha / - ..;..;;/ - ..;..;/ - ..;;..;/ -- ..;;..;/ -- ;..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;;/ -- ..;..;/ -+ ..;;;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;;..;/ - ..;..;/ - ..;..;;/ -@@ -390,32 +397,40 @@ alpha / - ..;..;/ - ..;..;/ - ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ - ..;..;;/ - ;..;..;/ - ;;;;;;/ -@@ -460,56 +475,57 @@ punct / - ..;;..;;..;/ - ..;..;..;;/ - ..;..;..;..;/ -- ;..;..;;..;/ -- ;;..;..;;;/ -- ;..;;;;;/ -+ ;..;..;;..;/ -+ ..;;;..;..;/ -+ ;;;..;;;;;/ - ..;;;;..;;/ - ..;;..;;;;/ -- ..;;;;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;;..;/ -- ..;;..;..;/ -- ..;;..;..;/ -- ..;;..;..;/ -- ..;..;;..;/ -- ..;..;;..;;/ -- ..;..;;..;;/ -- ..;..;..;;;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;;;;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;;;..;..;/ -- ..;;..;..;/ -- ..;;..;;;;/ -- ..;..;;..;/ -- ..;..;;;..;/ -- ..;;;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -+ ;..;..;;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;;/ -+ ..;..;;..;/ -+ ..;..;;..;/ -+ ..;..;;..;/ -+ ..;..;..;;/ -+ ..;..;..;;/ -+ ..;;..;..;;/ -+ ..;;..;..;/ -+ ..;;;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;;/ -+ ..;;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;;;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ;..;..;..;;/ -+ ..;..;..;;/ -+ ..;;;;..;/ -+ ..;;..;..;/ -+ ..;;;..;..;/ -+ ;;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;/ - ..;..;/ -- ..;..;/ -+ ..;..;/ - ..;;..;/ - ..;..;;/ - ;;..;/ -@@ -531,36 +547,42 @@ punct / - ..;..;/ - ..;;..;/ - ;;..;/ -- ..;..;;/ -- ..;;..;/ -+ ..;;;/ -+ ..;;;/ -+ ..;;..;/ -+ ;..;..;/ - ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ;;;;;;/ -- ;;;..;/ -- ..;..;/ -- ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;;;;/ -+ ;;;;;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;;;/ - ..;..;/ - ..;.. - -@@ -571,13 +593,13 @@ graph / - ..;..;..;..;/ - ..;..;..;..;/ - ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;;/ - ..;;..;..;/ - ..;..;..;..;/ - ..;..;..;..;/ -@@ -592,82 +614,82 @@ graph / - ..;..;..;..;/ - ..;..;..;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ..;;..;;;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;;;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;;..;;/ -+ ..;..;..;..;/ -+ ..;..;;..;;/ -+ ;..;..;..;;/ -+ ;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -+ ..;..;/ - ..;;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;;..;/ - ..;..;/ - ..;;..;/ -@@ -693,7 +715,7 @@ graph / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;;/ -+ ..;..;;/ - ..;..;/ - ..;..;/ - ..;..;/ -@@ -703,44 +725,53 @@ graph / - ..;..;/ - ..;;;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;;/ -- ..;..;;/ -- ;;;;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ;;;;;;/ - ..;..;;/ - ;;;;;/ - ..;;..;/ -@@ -753,16 +784,17 @@ graph / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;;..;/ - ..;..;/ - ..;..;;/ - ..;..;/ -@@ -775,13 +807,13 @@ print / - ..;..;..;..;/ - ..;..;..;..;/ - ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;;/ - ..;;..;..;/ - ..;..;..;..;/ - ..;..;..;..;/ -@@ -796,154 +828,163 @@ print / - ..;..;..;..;/ - ..;..;..;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ..;;..;;;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;;;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;/ -- ..;;..;/ -- ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;;..;;/ -+ ..;..;..;..;/ -+ ..;..;;..;;/ -+ ;..;..;..;;/ -+ ;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;;/ -- ..;..;;/ -- ;;;;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ;;;;;;/ - ..;..;;/ - ;;;;;/ - ..;;..;/ -@@ -956,16 +997,17 @@ print / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;;..;/ - ..;..;/ - ..;..;;/ - ..;..;/ -@@ -1037,291 +1079,329 @@ toupper / - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,) -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,) - - tolower / - (,);(,);(,);(,);/ -@@ -1593,76 +1673,112 @@ tolower / - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,) -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,) - - map "totitle"; / - (,);(,);(,);(,);/ -@@ -1721,291 +1837,329 @@ map "totitle"; / - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,) -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,) - - % The "combining" class reflects ISO/IEC 10646-1 annex B.1 - % That is, all combining characters (level 2+3). -@@ -2015,42 +2169,43 @@ class "combining"; / - ..;;..;..;/ - ..;..;;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;;..;..;;/ -- ..;..;..;;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;;..;/ -- ;..;..;;..;/ -- ..;;..;..;/ -- ..;..;;;;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;;..;..;/ -- ;..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;;..;/ -+ ..;;..;..;/ -+ ..;;..;;..;/ -+ ;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;;/ -+ ..;;..;..;;/ -+ ..;..;;..;/ -+ ..;..;..;;;/ -+ ;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;;;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;;..;..;;/ -+ ..;..;..;;/ - ..;..;..;..;/ - ;..;..;;;/ - ..;..;/ -@@ -2060,23 +2215,29 @@ class "combining"; / - ..;..;/ - ..;..;;/ - ..;..;/ -- ..;..;/ -+ ..;..;;/ - ..;..;;/ - ..;..;/ - ..;;..;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ;..;..;/ -- ..;.. -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;.. - - % The "combining_level3" class reflects ISO/IEC 10646-1 annex B.2 - % That is, combining characters of level 3. -@@ -2105,34 +2266,37 @@ class "combining_level3"; / - ..;..;..;..;/ - ..;;..;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;;/ -- ;;..;..;..;/ -- ..;..;..;..;/ -- ;..;;..;..;/ -- ..;..;..;..;/ -- ;..;..;/ -- ..;;;;;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;;/ -- ..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;;;;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;;/ -+ ;;;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;;;/ -- ..;..;/ -+ ..;..;;/ - .. - - translit_start -diff --git a/localedata/locales/tr_TR b/localedata/locales/tr_TR -index aac470f..153ba47 100644 ---- a/localedata/locales/tr_TR -+++ b/localedata/locales/tr_TR -@@ -44,7 +44,7 @@ fax "" - language "Turkish" - territory "Turkey" - revision "1.0" --date "2015-12-10" -+date "2016-06-21" - - category "i18n:2012";LC_IDENTIFICATION - category "i18n:2012";LC_CTYPE -@@ -2127,7 +2127,7 @@ END LC_COLLATE - - LC_CTYPE - % The following is the 14652 i18n fdcc-set LC_CTYPE category. --% It covers Unicode version 8.0.0. -+% It covers Unicode version 9.0.0. - % The character classes and mapping tables were automatically - % generated using the gen_unicode_ctype.py program. - -@@ -2208,23 +2208,24 @@ upper / - ;;;;;;;;;/ - ;;;..;;;;;/ - ;;;;;;;;;/ -- ;;;;;..;/ -+ ;;;;;..;/ - ..;;..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ;..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ - ..;.. - - % The "lower" class reflects the lowercase characters of class "alpha" -@@ -2265,50 +2266,51 @@ lower / - ;;;;;;;;;/ - ;;;;;;;;;/ - ;;;..;..;/ -- ..;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;..;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;;;..;;/ -- ..;;;;;..;/ -- ..;;..;;..;/ -- ..;;..;;;;/ -- ;..;..;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;..;;;;..;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;..;;;;;;/ -- ;..;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;;;;/ -- ;;;;;;..;;/ -- ;;;;;;;;;/ -- ..;;;;;;;;/ -- ;;;;;..;/ -- ..;..;..;..;/ -- ..;..;..;/ -+ ..;..;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;..;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ..;;..;;;;/ -+ ;..;..;;..;/ -+ ;..;..;;..;/ -+ ;;;;..;..;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;..;;;;/ -+ ..;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;..;;;;/ -+ ;;;..;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;;/ -+ ;;;;;;;;/ -+ ..;;;;;;;;/ -+ ;;;..;;;;;/ -+ ;;;;;;;;/ -+ ..;..;..;..;/ -+ ..;..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -@@ -2322,7 +2324,8 @@ lower / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..; -+ ..;..;;/ -+ .. - - % The "alpha" class of the "i18n" FDCC-set is reflecting - % the recommendations in TR 10176 annex A -@@ -2338,42 +2341,42 @@ alpha / - ..;..;..;..;/ - ..;;..;..;/ - ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;;..;..;/ -- ..;..;..;;/ -- ..;..;;..;;/ -- ;..;..;..;;/ -- ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;;..;/ -+ ..;..;..;..;/ -+ ;..;..;;..;/ -+ ;;..;..;..;/ -+ ;;..;..;..;/ - ..;;;..;..;/ - ;..;..;..;/ - ..;..;..;..;/ -@@ -2395,44 +2398,45 @@ alpha / - ..;..;..;..;/ - ;..;..;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;;;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ;;..;;..;;/ -- ;;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;;;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ..;;;..;;/ -+ ..;;;;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -@@ -2441,7 +2445,8 @@ alpha / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;;..;/ -@@ -2464,16 +2469,18 @@ alpha / - ..;..;;/ - ..;..;/ - ..;;..;/ -- ..;;..;/ -- ;..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;;/ -- ..;..;/ -+ ..;;;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;;..;/ - ..;..;/ - ..;..;;/ -@@ -2481,32 +2488,40 @@ alpha / - ..;..;/ - ..;..;/ - ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ - ..;..;;/ - ;..;..;/ - ;;;;;;/ -@@ -2551,56 +2566,57 @@ punct / - ..;;..;;..;/ - ..;..;..;;/ - ..;..;..;..;/ -- ;..;..;;..;/ -- ;;..;..;;;/ -- ;..;;;;;/ -+ ;..;..;;..;/ -+ ..;;;..;..;/ -+ ;;;..;;;;;/ - ..;;;;..;;/ - ..;;..;;;;/ -- ..;;;;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;;..;/ -- ..;;..;..;/ -- ..;;..;..;/ -- ..;;..;..;/ -- ..;..;;..;/ -- ..;..;;..;;/ -- ..;..;;..;;/ -- ..;..;..;;;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;;;;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;;;..;..;/ -- ..;;..;..;/ -- ..;;..;;;;/ -- ..;..;;..;/ -- ..;..;;;..;/ -- ..;;;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -+ ;..;..;;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;;/ -+ ..;..;;..;/ -+ ..;..;;..;/ -+ ..;..;;..;/ -+ ..;..;..;;/ -+ ..;..;..;;/ -+ ..;;..;..;;/ -+ ..;;..;..;/ -+ ..;;;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;;/ -+ ..;;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;;;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ;..;..;..;;/ -+ ..;..;..;;/ -+ ..;;;;..;/ -+ ..;;..;..;/ -+ ..;;;..;..;/ -+ ;;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;/ - ..;..;/ -- ..;..;/ -+ ..;..;/ - ..;;..;/ - ..;..;;/ - ;;..;/ -@@ -2622,36 +2638,42 @@ punct / - ..;..;/ - ..;;..;/ - ;;..;/ -- ..;..;;/ -- ..;;..;/ -+ ..;;;/ -+ ..;;;/ -+ ..;;..;/ -+ ;..;..;/ - ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ;;;;;;/ -- ;;;..;/ -- ..;..;/ -- ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;;;;/ -+ ;;;;;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;;;/ - ..;..;/ - ..;.. - -@@ -2662,13 +2684,13 @@ graph / - ..;..;..;..;/ - ..;..;..;..;/ - ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;;/ - ..;;..;..;/ - ..;..;..;..;/ - ..;..;..;..;/ -@@ -2683,82 +2705,82 @@ graph / - ..;..;..;..;/ - ..;..;..;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ..;;..;;;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;;;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;;..;;/ -+ ..;..;..;..;/ -+ ..;..;;..;;/ -+ ;..;..;..;;/ -+ ;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -+ ..;..;/ - ..;;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;;..;/ - ..;..;/ - ..;;..;/ -@@ -2784,7 +2806,7 @@ graph / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;;/ -+ ..;..;;/ - ..;..;/ - ..;..;/ - ..;..;/ -@@ -2794,44 +2816,53 @@ graph / - ..;..;/ - ..;;;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;;/ -- ..;..;;/ -- ;;;;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ;;;;;;/ - ..;..;;/ - ;;;;;/ - ..;;..;/ -@@ -2844,16 +2875,17 @@ graph / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;;..;/ - ..;..;/ - ..;..;;/ - ..;..;/ -@@ -2866,13 +2898,13 @@ print / - ..;..;..;..;/ - ..;..;..;..;/ - ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;;/ - ..;;..;..;/ - ..;..;..;..;/ - ..;..;..;..;/ -@@ -2887,154 +2919,163 @@ print / - ..;..;..;..;/ - ..;..;..;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ..;;..;;;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;;;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;/ -- ..;;..;/ -- ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;..;;..;;/ -+ ..;..;..;..;/ -+ ..;..;;..;;/ -+ ;..;..;..;;/ -+ ;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;..;/ -+ ;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ;;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;;/ -- ..;..;;/ -- ;;;;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ;..;..;/ -+ ;;;;;;/ - ..;..;;/ - ;;;;;/ - ..;;..;/ -@@ -3047,16 +3088,17 @@ print / - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -- ..;..;/ -- ..;;..;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ -+ ..;;..;/ - ..;..;/ - ..;..;;/ - ..;..;/ -@@ -3129,291 +3171,329 @@ toupper / - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,) -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,) - - tolower / - (,);(,);(,);(,);/ -@@ -3685,76 +3765,112 @@ tolower / - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,) -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,) - - map "totitle"; / - (,);(,);(,);(,);/ -@@ -3813,291 +3929,329 @@ map "totitle"; / - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ - (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);(,);/ -- (,);(,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,);/ -- (,);(,) -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);(,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,);(,);/ -+ (,) - - % The "combining" class reflects ISO/IEC 10646-1 annex B.1 - % That is, all combining characters (level 2+3). -@@ -4107,42 +4261,43 @@ class "combining"; / - ..;;..;..;/ - ..;..;;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;;..;..;;/ -- ..;..;..;;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;..;;..;/ -- ;..;..;;..;/ -- ..;;..;..;/ -- ..;..;;;;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;;..;;..;/ -- ..;..;..;..;/ -- ;..;..;..;/ -- ..;..;..;..;/ -- ..;..;..;;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;..;;;;/ -- ..;..;..;..;/ -- ..;..;..;..;/ -- ;..;;..;..;/ -- ;..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;;..;/ -+ ..;;..;..;/ -+ ..;;..;;..;/ -+ ;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ;..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;;/ -+ ..;;..;..;;/ -+ ..;..;;..;/ -+ ..;..;..;;;/ -+ ;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;;..;..;/ -+ ..;..;..;..;/ -+ ..;;;;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;;..;..;;/ -+ ..;..;..;;/ - ..;..;..;..;/ - ;..;..;;;/ - ..;..;/ -@@ -4152,23 +4307,29 @@ class "combining"; / - ..;..;/ - ..;..;;/ - ..;..;/ -- ..;..;/ -+ ..;..;;/ - ..;..;;/ - ..;..;/ - ..;;..;/ - ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;/ -- ..;..;;/ -- ;..;..;/ -- ..;.. -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;;;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;..;/ -+ ..;.. - - % The "combining_level3" class reflects ISO/IEC 10646-1 annex B.2 - % That is, combining characters of level 3. -@@ -4197,34 +4358,37 @@ class "combining_level3"; / - ..;..;..;..;/ - ..;;..;..;/ - ..;..;..;..;/ -- ..;..;..;..;/ -- ..;..;;..;/ -- ..;..;..;..;/ -- ..;;..;..;/ -- ..;..;..;..;/ -- ..;;..;..;;/ -- ;;..;..;..;/ -- ..;..;..;..;/ -- ;..;;..;..;/ -- ..;..;..;..;/ -- ;..;..;/ -- ..;;;;;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;/ -- ..;..;/ -- ..;;..;/ -- ..;..;;/ -- ..;..;/ -+ ..;..;..;..;/ -+ ..;..;..;;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;;;;..;/ -+ ..;..;..;..;/ -+ ..;..;;..;;/ -+ ..;..;..;..;/ -+ ..;..;;..;/ -+ ..;..;;/ -+ ;;;..;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;..;;/ -+ ..;..;;/ -+ ..;..;/ -+ ..;;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ -+ ..;..;/ -+ ..;..;/ - ..;..;/ - ..;..;/ - ..;..;/ - ..;;;/ -- ..;..;/ -+ ..;..;;/ - .. - - translit_start -diff --git a/localedata/locales/translit_circle b/localedata/locales/translit_circle -index f9decb0..e3f6154 100644 ---- a/localedata/locales/translit_circle -+++ b/localedata/locales/translit_circle -@@ -9,7 +9,7 @@ comment_char % - % otherwise be governed by that license. - - % Transliterations of encircled characters. --% Generated automatically from UnicodeData.txt by gen_translit_circle.py on 2015-12-09 for Unicode 8.0.0. -+% Generated automatically from UnicodeData.txt by gen_translit_circle.py on 2016-06-29 for Unicode 9.0.0. - - LC_CTYPE - -diff --git a/localedata/locales/translit_cjk_compat b/localedata/locales/translit_cjk_compat -index 949bd18..286f409 100644 ---- a/localedata/locales/translit_cjk_compat -+++ b/localedata/locales/translit_cjk_compat -@@ -9,7 +9,7 @@ comment_char % - % otherwise be governed by that license. - - % Transliterations of CJK compatibility characters. --% Generated automatically from UnicodeData.txt by gen_translit_cjk_compat.py on 2015-12-09 for Unicode 8.0.0. -+% Generated automatically from UnicodeData.txt by gen_translit_cjk_compat.py on 2016-06-29 for Unicode 9.0.0. - - LC_CTYPE - -@@ -583,6 +583,8 @@ translit_start - - % SQUARED CJK UNIFIED IDEOGRAPH-55B6 - -+% SQUARED CJK UNIFIED IDEOGRAPH-914D -+ - % CJK COMPATIBILITY IDEOGRAPH-F900 - - % CJK COMPATIBILITY IDEOGRAPH-F901 -diff --git a/localedata/locales/translit_combining b/localedata/locales/translit_combining -index 74f8638..6c57197 100644 ---- a/localedata/locales/translit_combining -+++ b/localedata/locales/translit_combining -@@ -10,7 +10,7 @@ comment_char % - - % Transliterations that remove all combining characters (accents, - % pronounciation marks, etc.). --% Generated automatically from UnicodeData.txt by gen_translit_combining.py on 2015-12-09 for Unicode 8.0.0. -+% Generated automatically from UnicodeData.txt by gen_translit_combining.py on 2016-06-29 for Unicode 9.0.0. - - LC_CTYPE - -@@ -446,6 +446,34 @@ translit_start - "" - % ARABIC SMALL LOW MEEM - "" -+% ARABIC SMALL HIGH WORD AR-RUB -+ "" -+% ARABIC SMALL HIGH SAD -+ "" -+% ARABIC SMALL HIGH AIN -+ "" -+% ARABIC SMALL HIGH QAF -+ "" -+% ARABIC SMALL HIGH NOON WITH KASRA -+ "" -+% ARABIC SMALL LOW NOON WITH KASRA -+ "" -+% ARABIC SMALL HIGH WORD ATH-THALATHA -+ "" -+% ARABIC SMALL HIGH WORD AS-SAJDA -+ "" -+% ARABIC SMALL HIGH WORD AN-NISF -+ "" -+% ARABIC SMALL HIGH WORD SAKTA -+ "" -+% ARABIC SMALL HIGH WORD QIF -+ "" -+% ARABIC SMALL HIGH WORD WAQFA -+ "" -+% ARABIC SMALL HIGH FOOTNOTE MARKER -+ "" -+% ARABIC SMALL HIGH SIGN SAFHA -+ "" - % ARABIC TURNED DAMMA BELOW - "" - % ARABIC CURLY FATHA -@@ -642,6 +670,8 @@ translit_start - "" - % COMBINING UP TACK ABOVE - "" -+% COMBINING DELETION MARK -+ "" - % COMBINING DOUBLE INVERTED BREVE BELOW - "" - % COMBINING ALMOST EQUAL TO BELOW -@@ -762,12 +792,242 @@ translit_start - "" - % COMBINING OLD PERMIC LETTER SII - "" -+% NEWA VOWEL SIGN AA -+ "" -+% NEWA VOWEL SIGN I -+ "" -+% NEWA VOWEL SIGN II -+ "" -+% NEWA VOWEL SIGN U -+ "" -+% NEWA VOWEL SIGN UU -+ "" -+% NEWA VOWEL SIGN VOCALIC R -+ "" -+% NEWA VOWEL SIGN VOCALIC RR -+ "" -+% NEWA VOWEL SIGN VOCALIC L -+ "" -+% NEWA VOWEL SIGN VOCALIC LL -+ "" -+% NEWA VOWEL SIGN E -+ "" -+% NEWA VOWEL SIGN AI -+ "" -+% NEWA VOWEL SIGN O -+ "" -+% NEWA VOWEL SIGN AU -+ "" -+% NEWA SIGN VIRAMA -+ "" -+% NEWA SIGN CANDRABINDU -+ "" -+% NEWA SIGN ANUSVARA -+ "" -+% NEWA SIGN VISARGA -+ "" -+% NEWA SIGN NUKTA -+ "" -+% BHAIKSUKI VOWEL SIGN AA -+ "" -+% BHAIKSUKI VOWEL SIGN I -+ "" -+% BHAIKSUKI VOWEL SIGN II -+ "" -+% BHAIKSUKI VOWEL SIGN U -+ "" -+% BHAIKSUKI VOWEL SIGN UU -+ "" -+% BHAIKSUKI VOWEL SIGN VOCALIC R -+ "" -+% BHAIKSUKI VOWEL SIGN VOCALIC RR -+ "" -+% BHAIKSUKI VOWEL SIGN VOCALIC L -+ "" -+% BHAIKSUKI VOWEL SIGN E -+ "" -+% BHAIKSUKI VOWEL SIGN AI -+ "" -+% BHAIKSUKI VOWEL SIGN O -+ "" -+% BHAIKSUKI VOWEL SIGN AU -+ "" -+% BHAIKSUKI SIGN CANDRABINDU -+ "" -+% BHAIKSUKI SIGN ANUSVARA -+ "" -+% BHAIKSUKI SIGN VISARGA -+ "" -+% BHAIKSUKI SIGN VIRAMA -+ "" -+% MARCHEN SUBJOINED LETTER KA -+ "" -+% MARCHEN SUBJOINED LETTER KHA -+ "" -+% MARCHEN SUBJOINED LETTER GA -+ "" -+% MARCHEN SUBJOINED LETTER NGA -+ "" -+% MARCHEN SUBJOINED LETTER CA -+ "" -+% MARCHEN SUBJOINED LETTER CHA -+ "" -+% MARCHEN SUBJOINED LETTER JA -+ "" -+% MARCHEN SUBJOINED LETTER NYA -+ "" -+% MARCHEN SUBJOINED LETTER TA -+ "" -+% MARCHEN SUBJOINED LETTER THA -+ "" -+% MARCHEN SUBJOINED LETTER DA -+ "" -+% MARCHEN SUBJOINED LETTER NA -+ "" -+% MARCHEN SUBJOINED LETTER PA -+ "" -+% MARCHEN SUBJOINED LETTER PHA -+ "" -+% MARCHEN SUBJOINED LETTER BA -+ "" -+% MARCHEN SUBJOINED LETTER MA -+ "" -+% MARCHEN SUBJOINED LETTER TSA -+ "" -+% MARCHEN SUBJOINED LETTER TSHA -+ "" -+% MARCHEN SUBJOINED LETTER DZA -+ "" -+% MARCHEN SUBJOINED LETTER WA -+ "" -+% MARCHEN SUBJOINED LETTER ZHA -+ "" -+% MARCHEN SUBJOINED LETTER ZA -+ "" -+% MARCHEN SUBJOINED LETTER YA -+ "" -+% MARCHEN SUBJOINED LETTER RA -+ "" -+% MARCHEN SUBJOINED LETTER LA -+ "" -+% MARCHEN SUBJOINED LETTER SHA -+ "" -+% MARCHEN SUBJOINED LETTER SA -+ "" -+% MARCHEN SUBJOINED LETTER HA -+ "" -+% MARCHEN SUBJOINED LETTER A -+ "" -+% MARCHEN VOWEL SIGN AA -+ "" -+% MARCHEN VOWEL SIGN I -+ "" -+% MARCHEN VOWEL SIGN U -+ "" -+% MARCHEN VOWEL SIGN E -+ "" -+% MARCHEN VOWEL SIGN O -+ "" -+% MARCHEN SIGN ANUSVARA -+ "" -+% MARCHEN SIGN CANDRABINDU -+ "" - % COMBINING GREEK MUSICAL TRISEME - "" - % COMBINING GREEK MUSICAL TETRASEME - "" - % COMBINING GREEK MUSICAL PENTASEME - "" -+% COMBINING GLAGOLITIC LETTER AZU -+ "" -+% COMBINING GLAGOLITIC LETTER BUKY -+ "" -+% COMBINING GLAGOLITIC LETTER VEDE -+ "" -+% COMBINING GLAGOLITIC LETTER GLAGOLI -+ "" -+% COMBINING GLAGOLITIC LETTER DOBRO -+ "" -+% COMBINING GLAGOLITIC LETTER YESTU -+ "" -+% COMBINING GLAGOLITIC LETTER ZHIVETE -+ "" -+% COMBINING GLAGOLITIC LETTER ZEMLJA -+ "" -+% COMBINING GLAGOLITIC LETTER IZHE -+ "" -+% COMBINING GLAGOLITIC LETTER INITIAL IZHE -+ "" -+% COMBINING GLAGOLITIC LETTER I -+ "" -+% COMBINING GLAGOLITIC LETTER DJERVI -+ "" -+% COMBINING GLAGOLITIC LETTER KAKO -+ "" -+% COMBINING GLAGOLITIC LETTER LJUDIJE -+ "" -+% COMBINING GLAGOLITIC LETTER MYSLITE -+ "" -+% COMBINING GLAGOLITIC LETTER NASHI -+ "" -+% COMBINING GLAGOLITIC LETTER ONU -+ "" -+% COMBINING GLAGOLITIC LETTER POKOJI -+ "" -+% COMBINING GLAGOLITIC LETTER RITSI -+ "" -+% COMBINING GLAGOLITIC LETTER SLOVO -+ "" -+% COMBINING GLAGOLITIC LETTER TVRIDO -+ "" -+% COMBINING GLAGOLITIC LETTER UKU -+ "" -+% COMBINING GLAGOLITIC LETTER FRITU -+ "" -+% COMBINING GLAGOLITIC LETTER HERU -+ "" -+% COMBINING GLAGOLITIC LETTER SHTA -+ "" -+% COMBINING GLAGOLITIC LETTER TSI -+ "" -+% COMBINING GLAGOLITIC LETTER CHRIVI -+ "" -+% COMBINING GLAGOLITIC LETTER SHA -+ "" -+% COMBINING GLAGOLITIC LETTER YERU -+ "" -+% COMBINING GLAGOLITIC LETTER YERI -+ "" -+% COMBINING GLAGOLITIC LETTER YATI -+ "" -+% COMBINING GLAGOLITIC LETTER YU -+ "" -+% COMBINING GLAGOLITIC LETTER SMALL YUS -+ "" -+% COMBINING GLAGOLITIC LETTER YO -+ "" -+% COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS -+ "" -+% COMBINING GLAGOLITIC LETTER BIG YUS -+ "" -+% COMBINING GLAGOLITIC LETTER IOTATED BIG YUS -+ "" -+% COMBINING GLAGOLITIC LETTER FITA -+ "" -+% ADLAM ALIF LENGTHENER -+ "" -+% ADLAM VOWEL LENGTHENER -+ "" -+% ADLAM GEMINATION MARK -+ "" -+% ADLAM HAMZA -+ "" -+% ADLAM CONSONANT MODIFIER -+ "" -+% ADLAM GEMINATE CONSONANT MODIFIER -+ "" -+% ADLAM NUKTA -+ "" - - % LATIN CAPITAL LETTER A WITH GRAVE - -diff --git a/localedata/locales/translit_compat b/localedata/locales/translit_compat -index d769b2f..4b5154d 100644 ---- a/localedata/locales/translit_compat -+++ b/localedata/locales/translit_compat -@@ -9,7 +9,7 @@ comment_char % - % otherwise be governed by that license. - - % Transliterations of compatibility characters and ligatures. --% Generated automatically from UnicodeData.txt by gen_translit_compat.py on 2015-12-09 for Unicode 8.0.0. -+% Generated automatically from UnicodeData.txt by gen_translit_compat.py on 2016-06-29 for Unicode 9.0.0. - - LC_CTYPE - -diff --git a/localedata/locales/translit_font b/localedata/locales/translit_font -index 2bd5900..b4bc287 100644 ---- a/localedata/locales/translit_font -+++ b/localedata/locales/translit_font -@@ -9,7 +9,7 @@ comment_char % - % otherwise be governed by that license. - - % Transliterations of font equivalents. --% Generated automatically from UnicodeData.txt by gen_translit_font.py on 2015-12-09 for Unicode 8.0.0. -+% Generated automatically from UnicodeData.txt by gen_translit_font.py on 2016-06-29 for Unicode 9.0.0. - - LC_CTYPE - -diff --git a/localedata/locales/translit_fraction b/localedata/locales/translit_fraction -index 5dbe128..de258d1 100644 ---- a/localedata/locales/translit_fraction -+++ b/localedata/locales/translit_fraction -@@ -9,7 +9,7 @@ comment_char % - % otherwise be governed by that license. - - % Transliterations of fractions. --% Generated automatically from UnicodeData.txt by gen_translit_fraction.py on 2015-12-09 for Unicode 8.0.0. -+% Generated automatically from UnicodeData.txt by gen_translit_fraction.py on 2016-06-29 for Unicode 9.0.0. - % The replacements have been surrounded with spaces, because fractions are - % often preceded by a decimal number and followed by a unit or a math symbol. - -diff --git a/localedata/unicode-gen/DerivedCoreProperties.txt b/localedata/unicode-gen/DerivedCoreProperties.txt -index 35d51e5..0db031d 100644 ---- a/localedata/unicode-gen/DerivedCoreProperties.txt -+++ b/localedata/unicode-gen/DerivedCoreProperties.txt -@@ -1,10 +1,11 @@ --# DerivedCoreProperties-8.0.0.txt --# Date: 2015-03-11, 22:29:21 GMT [MD] -+# DerivedCoreProperties-9.0.0.txt -+# Date: 2016-06-01, 10:34:24 GMT -+# © 2016 Unicode®, Inc. -+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -+# For terms of use, see http://www.unicode.org/terms_of_use.html - # - # Unicode Character Database --# Copyright (c) 1991-2015 Unicode, Inc. --# For terms of use, see http://www.unicode.org/terms_of_use.html --# For documentation, see http://www.unicode.org/reports/tr44/ -+# For documentation, see http://www.unicode.org/reports/tr44/ - - # ================================================ - -@@ -340,6 +341,8 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A - 0829..082C ; Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN - 0840..0858 ; Alphabetic # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN - 08A0..08B4 ; Alphabetic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -+08B6..08BD ; Alphabetic # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON -+08D4..08DF ; Alphabetic # Mn [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA - 08E3..08E9 ; Alphabetic # Mn [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN - 08F0..0902 ; Alphabetic # Mn [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA - 0903 ; Alphabetic # Mc DEVANAGARI SIGN VISARGA -@@ -467,6 +470,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A - 0C58..0C5A ; Alphabetic # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA - 0C60..0C61 ; Alphabetic # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL - 0C62..0C63 ; Alphabetic # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL -+0C80 ; Alphabetic # Lo KANNADA SIGN SPACING CANDRABINDU - 0C81 ; Alphabetic # Mn KANNADA SIGN CANDRABINDU - 0C82..0C83 ; Alphabetic # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA - 0C85..0C8C ; Alphabetic # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L -@@ -498,6 +502,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A - 0D46..0D48 ; Alphabetic # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI - 0D4A..0D4C ; Alphabetic # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU - 0D4E ; Alphabetic # Lo MALAYALAM LETTER DOT REPH -+0D54..0D56 ; Alphabetic # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL - 0D57 ; Alphabetic # Mc MALAYALAM AU LENGTH MARK - 0D5F..0D61 ; Alphabetic # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL - 0D62..0D63 ; Alphabetic # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL -@@ -629,7 +634,9 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A - 1820..1842 ; Alphabetic # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI - 1843 ; Alphabetic # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN - 1844..1877 ; Alphabetic # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA --1880..18A8 ; Alphabetic # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA -+1880..1884 ; Alphabetic # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -+1885..1886 ; Alphabetic # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA -+1887..18A8 ; Alphabetic # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA - 18A9 ; Alphabetic # Mn MONGOLIAN LETTER ALI GALI DAGALGA - 18AA ; Alphabetic # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA - 18B0..18F5 ; Alphabetic # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S -@@ -695,6 +702,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A - 1C4D..1C4F ; Alphabetic # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA - 1C5A..1C77 ; Alphabetic # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH - 1C78..1C7D ; Alphabetic # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -+1C80..1C88 ; Alphabetic # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1CE9..1CEC ; Alphabetic # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL - 1CEE..1CF1 ; Alphabetic # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA - 1CF2..1CF3 ; Alphabetic # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA -@@ -815,7 +823,7 @@ A771..A787 ; Alphabetic # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER - A788 ; Alphabetic # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT - A78B..A78E ; Alphabetic # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT - A78F ; Alphabetic # Lo LATIN LETTER SINOLOGICAL DOT --A790..A7AD ; Alphabetic # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -+A790..A7AE ; Alphabetic # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B7 ; Alphabetic # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA - A7F7 ; Alphabetic # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I - A7F8..A7F9 ; Alphabetic # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE -@@ -831,6 +839,7 @@ A840..A873 ; Alphabetic # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRA - A880..A881 ; Alphabetic # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA - A882..A8B3 ; Alphabetic # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA - A8B4..A8C3 ; Alphabetic # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU -+A8C5 ; Alphabetic # Mn SAURASHTRA SIGN CANDRABINDU - A8F2..A8F7 ; Alphabetic # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA - A8FB ; Alphabetic # Lo DEVANAGARI HEADSTROKE - A8FD ; Alphabetic # Lo DEVANAGARI JAIN OM -@@ -958,6 +967,8 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG - 103D1..103D5 ; Alphabetic # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED - 10400..1044F ; Alphabetic # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - 10450..1049D ; Alphabetic # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO -+104B0..104D3 ; Alphabetic # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA -+104D8..104FB ; Alphabetic # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10500..10527 ; Alphabetic # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE - 10530..10563 ; Alphabetic # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW - 10600..10736 ; Alphabetic # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 -@@ -1029,6 +1040,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG - 11232..11233 ; Alphabetic # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU - 11234 ; Alphabetic # Mn KHOJKI SIGN ANUSVARA - 11237 ; Alphabetic # Mn KHOJKI SIGN SHADDA -+1123E ; Alphabetic # Mn KHOJKI SIGN SUKUN - 11280..11286 ; Alphabetic # Lo [7] MULTANI LETTER A..MULTANI LETTER GA - 11288 ; Alphabetic # Lo MULTANI LETTER GHA - 1128A..1128D ; Alphabetic # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA -@@ -1056,6 +1068,13 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG - 11357 ; Alphabetic # Mc GRANTHA AU LENGTH MARK - 1135D..11361 ; Alphabetic # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL - 11362..11363 ; Alphabetic # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL -+11400..11434 ; Alphabetic # Lo [53] NEWA LETTER A..NEWA LETTER HA -+11435..11437 ; Alphabetic # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II -+11438..1143F ; Alphabetic # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI -+11440..11441 ; Alphabetic # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU -+11443..11444 ; Alphabetic # Mn [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA -+11445 ; Alphabetic # Mc NEWA SIGN VISARGA -+11447..1144A ; Alphabetic # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI - 11480..114AF ; Alphabetic # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA - 114B0..114B2 ; Alphabetic # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II - 114B3..114B8 ; Alphabetic # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL -@@ -1097,6 +1116,21 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG - 118A0..118DF ; Alphabetic # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO - 118FF ; Alphabetic # Lo WARANG CITI OM - 11AC0..11AF8 ; Alphabetic # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL -+11C00..11C08 ; Alphabetic # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L -+11C0A..11C2E ; Alphabetic # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA -+11C2F ; Alphabetic # Mc BHAIKSUKI VOWEL SIGN AA -+11C30..11C36 ; Alphabetic # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L -+11C38..11C3D ; Alphabetic # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA -+11C3E ; Alphabetic # Mc BHAIKSUKI SIGN VISARGA -+11C40 ; Alphabetic # Lo BHAIKSUKI SIGN AVAGRAHA -+11C72..11C8F ; Alphabetic # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A -+11C92..11CA7 ; Alphabetic # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA -+11CA9 ; Alphabetic # Mc MARCHEN SUBJOINED LETTER YA -+11CAA..11CB0 ; Alphabetic # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA -+11CB1 ; Alphabetic # Mc MARCHEN VOWEL SIGN I -+11CB2..11CB3 ; Alphabetic # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E -+11CB4 ; Alphabetic # Mc MARCHEN VOWEL SIGN O -+11CB5..11CB6 ; Alphabetic # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU - 12000..12399 ; Alphabetic # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U - 12400..1246E ; Alphabetic # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM - 12480..12543 ; Alphabetic # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -@@ -1114,6 +1148,9 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG - 16F50 ; Alphabetic # Lo MIAO LETTER NASALIZATION - 16F51..16F7E ; Alphabetic # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG - 16F93..16F9F ; Alphabetic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 -+16FE0 ; Alphabetic # Lm TANGUT ITERATION MARK -+17000..187EC ; Alphabetic # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC -+18800..18AF2 ; Alphabetic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 - 1B000..1B001 ; Alphabetic # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE - 1BC00..1BC6A ; Alphabetic # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M - 1BC70..1BC7C ; Alphabetic # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK -@@ -1150,7 +1187,14 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG - 1D78A..1D7A8 ; Alphabetic # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA - 1D7AA..1D7C2 ; Alphabetic # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - 1D7C4..1D7CB ; Alphabetic # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA -+1E000..1E006 ; Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE -+1E008..1E018 ; Alphabetic # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU -+1E01B..1E021 ; Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI -+1E023..1E024 ; Alphabetic # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS -+1E026..1E02A ; Alphabetic # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA - 1E800..1E8C4 ; Alphabetic # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON -+1E900..1E943 ; Alphabetic # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA -+1E947 ; Alphabetic # Mn ADLAM HAMZA - 1EE00..1EE03 ; Alphabetic # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL - 1EE05..1EE1F ; Alphabetic # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF - 1EE21..1EE22 ; Alphabetic # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM -@@ -1193,7 +1237,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG - 2B820..2CEA1 ; Alphabetic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 - 2F800..2FA1D ; Alphabetic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - --# Total code points: 110943 -+# Total code points: 118240 - - # ================================================ - -@@ -1478,6 +1522,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG - 052F ; Lowercase # L& CYRILLIC SMALL LETTER EL WITH DESCENDER - 0561..0587 ; Lowercase # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN - 13F8..13FD ; Lowercase # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV -+1C80..1C88 ; Lowercase # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1D00..1D2B ; Lowercase # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL - 1D2C..1D6A ; Lowercase # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI - 1D6B..1D77 ; Lowercase # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G -@@ -1820,6 +1865,7 @@ FB00..FB06 ; Lowercase # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATU - FB13..FB17 ; Lowercase # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - 10428..1044F ; Lowercase # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW -+104D8..104FB ; Lowercase # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10CC0..10CF2 ; Lowercase # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US - 118C0..118DF ; Lowercase # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO - 1D41A..1D433 ; Lowercase # L& [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z -@@ -1850,8 +1896,9 @@ FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L - 1D7AA..1D7C2 ; Lowercase # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - 1D7C4..1D7C9 ; Lowercase # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL - 1D7CB ; Lowercase # L& MATHEMATICAL BOLD SMALL DIGAMMA -+1E922..1E943 ; Lowercase # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA - --# Total code points: 2173 -+# Total code points: 2252 - - # ================================================ - -@@ -2447,11 +2494,12 @@ A7A2 ; Uppercase # L& LATIN CAPITAL LETTER K WITH OBLIQUE STROKE - A7A4 ; Uppercase # L& LATIN CAPITAL LETTER N WITH OBLIQUE STROKE - A7A6 ; Uppercase # L& LATIN CAPITAL LETTER R WITH OBLIQUE STROKE - A7A8 ; Uppercase # L& LATIN CAPITAL LETTER S WITH OBLIQUE STROKE --A7AA..A7AD ; Uppercase # L& [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT -+A7AA..A7AE ; Uppercase # L& [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B4 ; Uppercase # L& [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA - A7B6 ; Uppercase # L& LATIN CAPITAL LETTER OMEGA - FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z - 10400..10427 ; Uppercase # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW -+104B0..104D3 ; Uppercase # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA - 10C80..10CB2 ; Uppercase # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US - 118A0..118BF ; Uppercase # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO - 1D400..1D419 ; Uppercase # L& [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z -@@ -2485,11 +2533,12 @@ FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH - 1D756..1D76E ; Uppercase # L& [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA - 1D790..1D7A8 ; Uppercase # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA - 1D7CA ; Uppercase # L& MATHEMATICAL BOLD CAPITAL DIGAMMA -+1E900..1E921 ; Uppercase # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA - 1F130..1F149 ; Uppercase # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z - 1F150..1F169 ; Uppercase # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z - 1F170..1F189 ; Uppercase # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z - --# Total code points: 1751 -+# Total code points: 1822 - - # ================================================ - -@@ -2531,6 +2580,7 @@ FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH - 10CD ; Cased # L& GEORGIAN CAPITAL LETTER AEN - 13A0..13F5 ; Cased # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV - 13F8..13FD ; Cased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV -+1C80..1C88 ; Cased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1D00..1D2B ; Cased # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL - 1D2C..1D6A ; Cased # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI - 1D6B..1D77 ; Cased # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G -@@ -2593,7 +2643,7 @@ A722..A76F ; Cased # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN - A770 ; Cased # Lm MODIFIER LETTER US - A771..A787 ; Cased # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T - A78B..A78E ; Cased # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT --A790..A7AD ; Cased # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -+A790..A7AE ; Cased # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B7 ; Cased # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA - A7F8..A7F9 ; Cased # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE - A7FA ; Cased # L& LATIN LETTER SMALL CAPITAL TURNED M -@@ -2606,6 +2656,8 @@ FB13..FB17 ; Cased # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL - FF21..FF3A ; Cased # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z - FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - 10400..1044F ; Cased # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW -+104B0..104D3 ; Cased # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA -+104D8..104FB ; Cased # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10C80..10CB2 ; Cased # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US - 10CC0..10CF2 ; Cased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US - 118A0..118DF ; Cased # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO -@@ -2639,11 +2691,12 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN - 1D78A..1D7A8 ; Cased # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA - 1D7AA..1D7C2 ; Cased # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - 1D7C4..1D7CB ; Cased # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA -+1E900..1E943 ; Cased # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA - 1F130..1F149 ; Cased # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z - 1F150..1F169 ; Cased # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z - 1F170..1F189 ; Cased # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z - --# Total code points: 3955 -+# Total code points: 4105 - - # ================================================ - -@@ -2716,6 +2769,8 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN - 0828 ; Case_Ignorable # Lm SAMARITAN MODIFIER LETTER I - 0829..082D ; Case_Ignorable # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA - 0859..085B ; Case_Ignorable # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK -+08D4..08E1 ; Case_Ignorable # Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA -+08E2 ; Case_Ignorable # Cf ARABIC DISPUTED END OF AYAH - 08E3..0902 ; Case_Ignorable # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA - 093A ; Case_Ignorable # Mn DEVANAGARI VOWEL SIGN OE - 093C ; Case_Ignorable # Mn DEVANAGARI SIGN NUKTA -@@ -2817,6 +2872,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN - 180B..180D ; Case_Ignorable # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE - 180E ; Case_Ignorable # Cf MONGOLIAN VOWEL SEPARATOR - 1843 ; Case_Ignorable # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN -+1885..1886 ; Case_Ignorable # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA - 18A9 ; Case_Ignorable # Mn MONGOLIAN LETTER ALI GALI DAGALGA - 1920..1922 ; Case_Ignorable # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U - 1927..1928 ; Case_Ignorable # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O -@@ -2861,7 +2917,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN - 1D78 ; Case_Ignorable # Lm MODIFIER LETTER CYRILLIC EN - 1D9B..1DBF ; Case_Ignorable # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA - 1DC0..1DF5 ; Case_Ignorable # Mn [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE --1DFC..1DFF ; Case_Ignorable # Mn [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW -+1DFB..1DFF ; Case_Ignorable # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - 1FBD ; Case_Ignorable # Sk GREEK KORONIS - 1FBF..1FC1 ; Case_Ignorable # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI - 1FCD..1FCF ; Case_Ignorable # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI -@@ -2919,7 +2975,7 @@ A802 ; Case_Ignorable # Mn SYLOTI NAGRI SIGN DVISVARA - A806 ; Case_Ignorable # Mn SYLOTI NAGRI SIGN HASANTA - A80B ; Case_Ignorable # Mn SYLOTI NAGRI SIGN ANUSVARA - A825..A826 ; Case_Ignorable # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E --A8C4 ; Case_Ignorable # Mn SAURASHTRA SIGN VIRAMA -+A8C4..A8C5 ; Case_Ignorable # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU - A8E0..A8F1 ; Case_Ignorable # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA - A926..A92D ; Case_Ignorable # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU - A947..A951 ; Case_Ignorable # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R -@@ -2993,6 +3049,7 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI - 1122F..11231 ; Case_Ignorable # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI - 11234 ; Case_Ignorable # Mn KHOJKI SIGN ANUSVARA - 11236..11237 ; Case_Ignorable # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA -+1123E ; Case_Ignorable # Mn KHOJKI SIGN SUKUN - 112DF ; Case_Ignorable # Mn KHUDAWADI SIGN ANUSVARA - 112E3..112EA ; Case_Ignorable # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA - 11300..11301 ; Case_Ignorable # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU -@@ -3000,6 +3057,9 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI - 11340 ; Case_Ignorable # Mn GRANTHA VOWEL SIGN II - 11366..1136C ; Case_Ignorable # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX - 11370..11374 ; Case_Ignorable # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA -+11438..1143F ; Case_Ignorable # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI -+11442..11444 ; Case_Ignorable # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA -+11446 ; Case_Ignorable # Mn NEWA SIGN NUKTA - 114B3..114B8 ; Case_Ignorable # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL - 114BA ; Case_Ignorable # Mn TIRHUTA VOWEL SIGN SHORT E - 114BF..114C0 ; Case_Ignorable # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA -@@ -3018,11 +3078,19 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI - 1171D..1171F ; Case_Ignorable # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA - 11722..11725 ; Case_Ignorable # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU - 11727..1172B ; Case_Ignorable # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER -+11C30..11C36 ; Case_Ignorable # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L -+11C38..11C3D ; Case_Ignorable # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA -+11C3F ; Case_Ignorable # Mn BHAIKSUKI SIGN VIRAMA -+11C92..11CA7 ; Case_Ignorable # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA -+11CAA..11CB0 ; Case_Ignorable # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA -+11CB2..11CB3 ; Case_Ignorable # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E -+11CB5..11CB6 ; Case_Ignorable # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU - 16AF0..16AF4 ; Case_Ignorable # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE - 16B30..16B36 ; Case_Ignorable # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM - 16B40..16B43 ; Case_Ignorable # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM - 16F8F..16F92 ; Case_Ignorable # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW - 16F93..16F9F ; Case_Ignorable # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 -+16FE0 ; Case_Ignorable # Lm TANGUT ITERATION MARK - 1BC9D..1BC9E ; Case_Ignorable # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK - 1BCA0..1BCA3 ; Case_Ignorable # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP - 1D167..1D169 ; Case_Ignorable # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 -@@ -3037,13 +3105,19 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI - 1DA84 ; Case_Ignorable # Mn SIGNWRITING LOCATION HEAD NECK - 1DA9B..1DA9F ; Case_Ignorable # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 - 1DAA1..1DAAF ; Case_Ignorable # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 -+1E000..1E006 ; Case_Ignorable # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE -+1E008..1E018 ; Case_Ignorable # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU -+1E01B..1E021 ; Case_Ignorable # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI -+1E023..1E024 ; Case_Ignorable # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS -+1E026..1E02A ; Case_Ignorable # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA - 1E8D0..1E8D6 ; Case_Ignorable # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS -+1E944..1E94A ; Case_Ignorable # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA - 1F3FB..1F3FF ; Case_Ignorable # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 - E0001 ; Case_Ignorable # Cf LANGUAGE TAG - E0020..E007F ; Case_Ignorable # Cf [96] TAG SPACE..CANCEL TAG - E0100..E01EF ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - --# Total code points: 2115 -+# Total code points: 2240 - - # ================================================ - -@@ -3633,15 +3707,17 @@ A7A2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH O - A7A4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH OBLIQUE STROKE - A7A6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH OBLIQUE STROKE - A7A8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH OBLIQUE STROKE --A7AA..A7AD ; Changes_When_Lowercased # L& [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT -+A7AA..A7AE ; Changes_When_Lowercased # L& [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B4 ; Changes_When_Lowercased # L& [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA - A7B6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER OMEGA - FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z - 10400..10427 ; Changes_When_Lowercased # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW -+104B0..104D3 ; Changes_When_Lowercased # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA - 10C80..10CB2 ; Changes_When_Lowercased # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US - 118A0..118BF ; Changes_When_Lowercased # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO -+1E900..1E921 ; Changes_When_Lowercased # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA - --# Total code points: 1233 -+# Total code points: 1304 - - # ================================================ - -@@ -3800,8 +3876,7 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE - 0260..0261 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G - 0263 ; Changes_When_Uppercased # L& LATIN SMALL LETTER GAMMA - 0265..0266 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK --0268..0269 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER IOTA --026B..026C ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER L WITH MIDDLE TILDE..LATIN SMALL LETTER L WITH BELT -+0268..026C ; Changes_When_Uppercased # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT - 026F ; Changes_When_Uppercased # L& LATIN SMALL LETTER TURNED M - 0271..0272 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK - 0275 ; Changes_When_Uppercased # L& LATIN SMALL LETTER BARRED O -@@ -3937,6 +4012,7 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE - 052F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EL WITH DESCENDER - 0561..0587 ; Changes_When_Uppercased # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN - 13F8..13FD ; Changes_When_Uppercased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV -+1C80..1C88 ; Changes_When_Uppercased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1D79 ; Changes_When_Uppercased # L& LATIN SMALL LETTER INSULAR G - 1D7D ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH STROKE - 1E01 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH RING BELOW -@@ -4253,10 +4329,12 @@ FB00..FB06 ; Changes_When_Uppercased # L& [7] LATIN SMALL LIGATURE FF..LATI - FB13..FB17 ; Changes_When_Uppercased # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - 10428..1044F ; Changes_When_Uppercased # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW -+104D8..104FB ; Changes_When_Uppercased # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10CC0..10CF2 ; Changes_When_Uppercased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US - 118C0..118DF ; Changes_When_Uppercased # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO -+1E922..1E943 ; Changes_When_Uppercased # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA - --# Total code points: 1316 -+# Total code points: 1396 - - # ================================================ - -@@ -4416,8 +4494,7 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER - 0260..0261 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G - 0263 ; Changes_When_Titlecased # L& LATIN SMALL LETTER GAMMA - 0265..0266 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK --0268..0269 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER IOTA --026B..026C ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER L WITH MIDDLE TILDE..LATIN SMALL LETTER L WITH BELT -+0268..026C ; Changes_When_Titlecased # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT - 026F ; Changes_When_Titlecased # L& LATIN SMALL LETTER TURNED M - 0271..0272 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK - 0275 ; Changes_When_Titlecased # L& LATIN SMALL LETTER BARRED O -@@ -4553,6 +4630,7 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER - 052F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EL WITH DESCENDER - 0561..0587 ; Changes_When_Titlecased # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN - 13F8..13FD ; Changes_When_Titlecased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV -+1C80..1C88 ; Changes_When_Titlecased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1D79 ; Changes_When_Titlecased # L& LATIN SMALL LETTER INSULAR G - 1D7D ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH STROKE - 1E01 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH RING BELOW -@@ -4869,10 +4947,12 @@ FB00..FB06 ; Changes_When_Titlecased # L& [7] LATIN SMALL LIGATURE FF..LATI - FB13..FB17 ; Changes_When_Titlecased # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - FF41..FF5A ; Changes_When_Titlecased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - 10428..1044F ; Changes_When_Titlecased # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW -+104D8..104FB ; Changes_When_Titlecased # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10CC0..10CF2 ; Changes_When_Titlecased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US - 118C0..118DF ; Changes_When_Titlecased # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO -+1E922..1E943 ; Changes_When_Titlecased # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA - --# Total code points: 1289 -+# Total code points: 1369 - - # ================================================ - -@@ -5163,6 +5243,7 @@ FF41..FF5A ; Changes_When_Titlecased # L& [26] FULLWIDTH LATIN SMALL LETTER - 10C7 ; Changes_When_Casefolded # L& GEORGIAN CAPITAL LETTER YN - 10CD ; Changes_When_Casefolded # L& GEORGIAN CAPITAL LETTER AEN - 13F8..13FD ; Changes_When_Casefolded # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV -+1C80..1C88 ; Changes_When_Casefolded # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1E00 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH RING BELOW - 1E02 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER B WITH DOT ABOVE - 1E04 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER B WITH DOT BELOW -@@ -5471,7 +5552,7 @@ A7A2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH O - A7A4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH OBLIQUE STROKE - A7A6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH OBLIQUE STROKE - A7A8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH OBLIQUE STROKE --A7AA..A7AD ; Changes_When_Casefolded # L& [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT -+A7AA..A7AE ; Changes_When_Casefolded # L& [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B4 ; Changes_When_Casefolded # L& [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA - A7B6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER OMEGA - AB70..ABBF ; Changes_When_Casefolded # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA -@@ -5479,10 +5560,12 @@ FB00..FB06 ; Changes_When_Casefolded # L& [7] LATIN SMALL LIGATURE FF..LATI - FB13..FB17 ; Changes_When_Casefolded # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z - 10400..10427 ; Changes_When_Casefolded # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW -+104B0..104D3 ; Changes_When_Casefolded # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA - 10C80..10CB2 ; Changes_When_Casefolded # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US - 118A0..118BF ; Changes_When_Casefolded # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO -+1E900..1E921 ; Changes_When_Casefolded # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA - --# Total code points: 1297 -+# Total code points: 1377 - - # ================================================ - -@@ -5512,8 +5595,7 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE - 0260..0261 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G - 0263 ; Changes_When_Casemapped # L& LATIN SMALL LETTER GAMMA - 0265..0266 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK --0268..0269 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER IOTA --026B..026C ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER L WITH MIDDLE TILDE..LATIN SMALL LETTER L WITH BELT -+0268..026C ; Changes_When_Casemapped # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT - 026F ; Changes_When_Casemapped # L& LATIN SMALL LETTER TURNED M - 0271..0272 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK - 0275 ; Changes_When_Casemapped # L& LATIN SMALL LETTER BARRED O -@@ -5544,6 +5626,7 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE - 10CD ; Changes_When_Casemapped # L& GEORGIAN CAPITAL LETTER AEN - 13A0..13F5 ; Changes_When_Casemapped # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV - 13F8..13FD ; Changes_When_Casemapped # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV -+1C80..1C88 ; Changes_When_Casemapped # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1D79 ; Changes_When_Casemapped # L& LATIN SMALL LETTER INSULAR G - 1D7D ; Changes_When_Casemapped # L& LATIN SMALL LETTER P WITH STROKE - 1E00..1E9B ; Changes_When_Casemapped # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE -@@ -5592,7 +5675,7 @@ A732..A76F ; Changes_When_Casemapped # L& [62] LATIN CAPITAL LETTER AA..LATI - A779..A787 ; Changes_When_Casemapped # L& [15] LATIN CAPITAL LETTER INSULAR D..LATIN SMALL LETTER INSULAR T - A78B..A78D ; Changes_When_Casemapped # L& [3] LATIN CAPITAL LETTER SALTILLO..LATIN CAPITAL LETTER TURNED H - A790..A793 ; Changes_When_Casemapped # L& [4] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER C WITH BAR --A796..A7AD ; Changes_When_Casemapped # L& [24] LATIN CAPITAL LETTER B WITH FLOURISH..LATIN CAPITAL LETTER L WITH BELT -+A796..A7AE ; Changes_When_Casemapped # L& [25] LATIN CAPITAL LETTER B WITH FLOURISH..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B7 ; Changes_When_Casemapped # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA - AB53 ; Changes_When_Casemapped # L& LATIN SMALL LETTER CHI - AB70..ABBF ; Changes_When_Casemapped # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA -@@ -5601,11 +5684,14 @@ FB13..FB17 ; Changes_When_Casemapped # L& [5] ARMENIAN SMALL LIGATURE MEN N - FF21..FF3A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z - FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - 10400..1044F ; Changes_When_Casemapped # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW -+104B0..104D3 ; Changes_When_Casemapped # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA -+104D8..104FB ; Changes_When_Casemapped # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10C80..10CB2 ; Changes_When_Casemapped # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US - 10CC0..10CF2 ; Changes_When_Casemapped # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US - 118A0..118DF ; Changes_When_Casemapped # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO -+1E900..1E943 ; Changes_When_Casemapped # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA - --# Total code points: 2518 -+# Total code points: 2669 - - # ================================================ - -@@ -5678,6 +5764,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER - 0828 ; ID_Start # Lm SAMARITAN MODIFIER LETTER I - 0840..0858 ; ID_Start # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN - 08A0..08B4 ; ID_Start # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -+08B6..08BD ; ID_Start # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON - 0904..0939 ; ID_Start # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA - 093D ; ID_Start # Lo DEVANAGARI SIGN AVAGRAHA - 0950 ; ID_Start # Lo DEVANAGARI OM -@@ -5743,6 +5830,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER - 0C3D ; ID_Start # Lo TELUGU SIGN AVAGRAHA - 0C58..0C5A ; ID_Start # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA - 0C60..0C61 ; ID_Start # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL -+0C80 ; ID_Start # Lo KANNADA SIGN SPACING CANDRABINDU - 0C85..0C8C ; ID_Start # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L - 0C8E..0C90 ; ID_Start # Lo [3] KANNADA LETTER E..KANNADA LETTER AI - 0C92..0CA8 ; ID_Start # Lo [23] KANNADA LETTER O..KANNADA LETTER NA -@@ -5757,6 +5845,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER - 0D12..0D3A ; ID_Start # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA - 0D3D ; ID_Start # Lo MALAYALAM SIGN AVAGRAHA - 0D4E ; ID_Start # Lo MALAYALAM LETTER DOT REPH -+0D54..0D56 ; ID_Start # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL - 0D5F..0D61 ; ID_Start # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL - 0D7A..0D7F ; ID_Start # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K - 0D85..0D96 ; ID_Start # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA -@@ -5840,7 +5929,9 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER - 1820..1842 ; ID_Start # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI - 1843 ; ID_Start # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN - 1844..1877 ; ID_Start # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA --1880..18A8 ; ID_Start # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA -+1880..1884 ; ID_Start # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -+1885..1886 ; ID_Start # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA -+1887..18A8 ; ID_Start # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA - 18AA ; ID_Start # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA - 18B0..18F5 ; ID_Start # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S - 1900..191E ; ID_Start # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA -@@ -5860,6 +5951,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER - 1C4D..1C4F ; ID_Start # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA - 1C5A..1C77 ; ID_Start # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH - 1C78..1C7D ; ID_Start # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -+1C80..1C88 ; ID_Start # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1CE9..1CEC ; ID_Start # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL - 1CEE..1CF1 ; ID_Start # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA - 1CF5..1CF6 ; ID_Start # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA -@@ -5976,7 +6068,7 @@ A771..A787 ; ID_Start # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER I - A788 ; ID_Start # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT - A78B..A78E ; ID_Start # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT - A78F ; ID_Start # Lo LATIN LETTER SINOLOGICAL DOT --A790..A7AD ; ID_Start # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -+A790..A7AE ; ID_Start # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B7 ; ID_Start # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA - A7F7 ; ID_Start # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I - A7F8..A7F9 ; ID_Start # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE -@@ -6081,6 +6173,8 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 103D1..103D5 ; ID_Start # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED - 10400..1044F ; ID_Start # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - 10450..1049D ; ID_Start # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO -+104B0..104D3 ; ID_Start # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA -+104D8..104FB ; ID_Start # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10500..10527 ; ID_Start # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE - 10530..10563 ; ID_Start # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW - 10600..10736 ; ID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 -@@ -6142,6 +6236,8 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 1133D ; ID_Start # Lo GRANTHA SIGN AVAGRAHA - 11350 ; ID_Start # Lo GRANTHA OM - 1135D..11361 ; ID_Start # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL -+11400..11434 ; ID_Start # Lo [53] NEWA LETTER A..NEWA LETTER HA -+11447..1144A ; ID_Start # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI - 11480..114AF ; ID_Start # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA - 114C4..114C5 ; ID_Start # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG - 114C7 ; ID_Start # Lo TIRHUTA OM -@@ -6154,6 +6250,10 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 118A0..118DF ; ID_Start # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO - 118FF ; ID_Start # Lo WARANG CITI OM - 11AC0..11AF8 ; ID_Start # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL -+11C00..11C08 ; ID_Start # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L -+11C0A..11C2E ; ID_Start # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA -+11C40 ; ID_Start # Lo BHAIKSUKI SIGN AVAGRAHA -+11C72..11C8F ; ID_Start # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A - 12000..12399 ; ID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U - 12400..1246E ; ID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM - 12480..12543 ; ID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -@@ -6169,6 +6269,9 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 16F00..16F44 ; ID_Start # Lo [69] MIAO LETTER PA..MIAO LETTER HHA - 16F50 ; ID_Start # Lo MIAO LETTER NASALIZATION - 16F93..16F9F ; ID_Start # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 -+16FE0 ; ID_Start # Lm TANGUT ITERATION MARK -+17000..187EC ; ID_Start # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC -+18800..18AF2 ; ID_Start # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 - 1B000..1B001 ; ID_Start # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE - 1BC00..1BC6A ; ID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M - 1BC70..1BC7C ; ID_Start # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK -@@ -6205,6 +6308,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 1D7AA..1D7C2 ; ID_Start # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - 1D7C4..1D7CB ; ID_Start # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA - 1E800..1E8C4 ; ID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON -+1E900..1E943 ; ID_Start # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA - 1EE00..1EE03 ; ID_Start # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL - 1EE05..1EE1F ; ID_Start # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF - 1EE21..1EE22 ; ID_Start # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM -@@ -6244,7 +6348,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 2B820..2CEA1 ; ID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 - 2F800..2FA1D ; ID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - --# Total code points: 109830 -+# Total code points: 117007 - - # ================================================ - -@@ -6348,6 +6452,8 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 0840..0858 ; ID_Continue # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN - 0859..085B ; ID_Continue # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK - 08A0..08B4 ; ID_Continue # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -+08B6..08BD ; ID_Continue # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON -+08D4..08E1 ; ID_Continue # Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA - 08E3..0902 ; ID_Continue # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA - 0903 ; ID_Continue # Mc DEVANAGARI SIGN VISARGA - 0904..0939 ; ID_Continue # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA -@@ -6491,6 +6597,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 0C60..0C61 ; ID_Continue # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL - 0C62..0C63 ; ID_Continue # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL - 0C66..0C6F ; ID_Continue # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE -+0C80 ; ID_Continue # Lo KANNADA SIGN SPACING CANDRABINDU - 0C81 ; ID_Continue # Mn KANNADA SIGN CANDRABINDU - 0C82..0C83 ; ID_Continue # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA - 0C85..0C8C ; ID_Continue # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L -@@ -6525,6 +6632,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 0D4A..0D4C ; ID_Continue # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU - 0D4D ; ID_Continue # Mn MALAYALAM SIGN VIRAMA - 0D4E ; ID_Continue # Lo MALAYALAM LETTER DOT REPH -+0D54..0D56 ; ID_Continue # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL - 0D57 ; ID_Continue # Mc MALAYALAM AU LENGTH MARK - 0D5F..0D61 ; ID_Continue # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL - 0D62..0D63 ; ID_Continue # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL -@@ -6682,7 +6790,9 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 1820..1842 ; ID_Continue # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI - 1843 ; ID_Continue # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN - 1844..1877 ; ID_Continue # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA --1880..18A8 ; ID_Continue # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA -+1880..1884 ; ID_Continue # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -+1885..1886 ; ID_Continue # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA -+1887..18A8 ; ID_Continue # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA - 18A9 ; ID_Continue # Mn MONGOLIAN LETTER ALI GALI DAGALGA - 18AA ; ID_Continue # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA - 18B0..18F5 ; ID_Continue # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S -@@ -6767,6 +6877,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 1C50..1C59 ; ID_Continue # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE - 1C5A..1C77 ; ID_Continue # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH - 1C78..1C7D ; ID_Continue # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -+1C80..1C88 ; ID_Continue # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1CD0..1CD2 ; ID_Continue # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA - 1CD4..1CE0 ; ID_Continue # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA - 1CE1 ; ID_Continue # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA -@@ -6785,7 +6896,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL - 1D79..1D9A ; ID_Continue # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK - 1D9B..1DBF ; ID_Continue # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA - 1DC0..1DF5 ; ID_Continue # Mn [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE --1DFC..1DFF ; ID_Continue # Mn [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW -+1DFB..1DFF ; ID_Continue # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - 1E00..1F15 ; ID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA - 1F18..1F1D ; ID_Continue # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA - 1F20..1F45 ; ID_Continue # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA -@@ -6909,7 +7020,7 @@ A771..A787 ; ID_Continue # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTE - A788 ; ID_Continue # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT - A78B..A78E ; ID_Continue # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT - A78F ; ID_Continue # Lo LATIN LETTER SINOLOGICAL DOT --A790..A7AD ; ID_Continue # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -+A790..A7AE ; ID_Continue # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B7 ; ID_Continue # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA - A7F7 ; ID_Continue # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I - A7F8..A7F9 ; ID_Continue # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE -@@ -6928,7 +7039,7 @@ A840..A873 ; ID_Continue # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDR - A880..A881 ; ID_Continue # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA - A882..A8B3 ; ID_Continue # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA - A8B4..A8C3 ; ID_Continue # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU --A8C4 ; ID_Continue # Mn SAURASHTRA SIGN VIRAMA -+A8C4..A8C5 ; ID_Continue # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU - A8D0..A8D9 ; ID_Continue # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE - A8E0..A8F1 ; ID_Continue # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA - A8F2..A8F7 ; ID_Continue # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA -@@ -7081,6 +7192,8 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN - 10400..1044F ; ID_Continue # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - 10450..1049D ; ID_Continue # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO - 104A0..104A9 ; ID_Continue # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE -+104B0..104D3 ; ID_Continue # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA -+104D8..104FB ; ID_Continue # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10500..10527 ; ID_Continue # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE - 10530..10563 ; ID_Continue # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW - 10600..10736 ; ID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 -@@ -7164,6 +7277,7 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN - 11234 ; ID_Continue # Mn KHOJKI SIGN ANUSVARA - 11235 ; ID_Continue # Mc KHOJKI SIGN VIRAMA - 11236..11237 ; ID_Continue # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA -+1123E ; ID_Continue # Mn KHOJKI SIGN SUKUN - 11280..11286 ; ID_Continue # Lo [7] MULTANI LETTER A..MULTANI LETTER GA - 11288 ; ID_Continue # Lo MULTANI LETTER GHA - 1128A..1128D ; ID_Continue # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA -@@ -7195,6 +7309,15 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN - 11362..11363 ; ID_Continue # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL - 11366..1136C ; ID_Continue # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX - 11370..11374 ; ID_Continue # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA -+11400..11434 ; ID_Continue # Lo [53] NEWA LETTER A..NEWA LETTER HA -+11435..11437 ; ID_Continue # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II -+11438..1143F ; ID_Continue # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI -+11440..11441 ; ID_Continue # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU -+11442..11444 ; ID_Continue # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA -+11445 ; ID_Continue # Mc NEWA SIGN VISARGA -+11446 ; ID_Continue # Mn NEWA SIGN NUKTA -+11447..1144A ; ID_Continue # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI -+11450..11459 ; ID_Continue # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE - 11480..114AF ; ID_Continue # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA - 114B0..114B2 ; ID_Continue # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II - 114B3..114B8 ; ID_Continue # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL -@@ -7245,6 +7368,23 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN - 118E0..118E9 ; ID_Continue # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE - 118FF ; ID_Continue # Lo WARANG CITI OM - 11AC0..11AF8 ; ID_Continue # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL -+11C00..11C08 ; ID_Continue # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L -+11C0A..11C2E ; ID_Continue # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA -+11C2F ; ID_Continue # Mc BHAIKSUKI VOWEL SIGN AA -+11C30..11C36 ; ID_Continue # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L -+11C38..11C3D ; ID_Continue # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA -+11C3E ; ID_Continue # Mc BHAIKSUKI SIGN VISARGA -+11C3F ; ID_Continue # Mn BHAIKSUKI SIGN VIRAMA -+11C40 ; ID_Continue # Lo BHAIKSUKI SIGN AVAGRAHA -+11C50..11C59 ; ID_Continue # Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE -+11C72..11C8F ; ID_Continue # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A -+11C92..11CA7 ; ID_Continue # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA -+11CA9 ; ID_Continue # Mc MARCHEN SUBJOINED LETTER YA -+11CAA..11CB0 ; ID_Continue # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA -+11CB1 ; ID_Continue # Mc MARCHEN VOWEL SIGN I -+11CB2..11CB3 ; ID_Continue # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E -+11CB4 ; ID_Continue # Mc MARCHEN VOWEL SIGN O -+11CB5..11CB6 ; ID_Continue # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU - 12000..12399 ; ID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U - 12400..1246E ; ID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM - 12480..12543 ; ID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -@@ -7266,6 +7406,9 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN - 16F51..16F7E ; ID_Continue # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG - 16F8F..16F92 ; ID_Continue # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW - 16F93..16F9F ; ID_Continue # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 -+16FE0 ; ID_Continue # Lm TANGUT ITERATION MARK -+17000..187EC ; ID_Continue # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC -+18800..18AF2 ; ID_Continue # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 - 1B000..1B001 ; ID_Continue # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE - 1BC00..1BC6A ; ID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M - 1BC70..1BC7C ; ID_Continue # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK -@@ -7316,8 +7459,16 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN - 1DA84 ; ID_Continue # Mn SIGNWRITING LOCATION HEAD NECK - 1DA9B..1DA9F ; ID_Continue # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 - 1DAA1..1DAAF ; ID_Continue # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 -+1E000..1E006 ; ID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE -+1E008..1E018 ; ID_Continue # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU -+1E01B..1E021 ; ID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI -+1E023..1E024 ; ID_Continue # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS -+1E026..1E02A ; ID_Continue # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA - 1E800..1E8C4 ; ID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON - 1E8D0..1E8D6 ; ID_Continue # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS -+1E900..1E943 ; ID_Continue # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA -+1E944..1E94A ; ID_Continue # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA -+1E950..1E959 ; ID_Continue # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE - 1EE00..1EE03 ; ID_Continue # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL - 1EE05..1EE1F ; ID_Continue # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF - 1EE21..1EE22 ; ID_Continue # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM -@@ -7358,7 +7509,7 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN - 2F800..2FA1D ; ID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - --# Total code points: 112352 -+# Total code points: 119691 - - # ================================================ - -@@ -7428,6 +7579,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR - 0828 ; XID_Start # Lm SAMARITAN MODIFIER LETTER I - 0840..0858 ; XID_Start # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN - 08A0..08B4 ; XID_Start # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -+08B6..08BD ; XID_Start # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON - 0904..0939 ; XID_Start # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA - 093D ; XID_Start # Lo DEVANAGARI SIGN AVAGRAHA - 0950 ; XID_Start # Lo DEVANAGARI OM -@@ -7493,6 +7645,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR - 0C3D ; XID_Start # Lo TELUGU SIGN AVAGRAHA - 0C58..0C5A ; XID_Start # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA - 0C60..0C61 ; XID_Start # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL -+0C80 ; XID_Start # Lo KANNADA SIGN SPACING CANDRABINDU - 0C85..0C8C ; XID_Start # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L - 0C8E..0C90 ; XID_Start # Lo [3] KANNADA LETTER E..KANNADA LETTER AI - 0C92..0CA8 ; XID_Start # Lo [23] KANNADA LETTER O..KANNADA LETTER NA -@@ -7507,6 +7660,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR - 0D12..0D3A ; XID_Start # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA - 0D3D ; XID_Start # Lo MALAYALAM SIGN AVAGRAHA - 0D4E ; XID_Start # Lo MALAYALAM LETTER DOT REPH -+0D54..0D56 ; XID_Start # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL - 0D5F..0D61 ; XID_Start # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL - 0D7A..0D7F ; XID_Start # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K - 0D85..0D96 ; XID_Start # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA -@@ -7590,7 +7744,9 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR - 1820..1842 ; XID_Start # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI - 1843 ; XID_Start # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN - 1844..1877 ; XID_Start # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA --1880..18A8 ; XID_Start # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA -+1880..1884 ; XID_Start # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -+1885..1886 ; XID_Start # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA -+1887..18A8 ; XID_Start # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA - 18AA ; XID_Start # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA - 18B0..18F5 ; XID_Start # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S - 1900..191E ; XID_Start # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA -@@ -7610,6 +7766,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR - 1C4D..1C4F ; XID_Start # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA - 1C5A..1C77 ; XID_Start # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH - 1C78..1C7D ; XID_Start # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -+1C80..1C88 ; XID_Start # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1CE9..1CEC ; XID_Start # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL - 1CEE..1CF1 ; XID_Start # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA - 1CF5..1CF6 ; XID_Start # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA -@@ -7725,7 +7882,7 @@ A771..A787 ; XID_Start # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER - A788 ; XID_Start # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT - A78B..A78E ; XID_Start # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT - A78F ; XID_Start # Lo LATIN LETTER SINOLOGICAL DOT --A790..A7AD ; XID_Start # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -+A790..A7AE ; XID_Start # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B7 ; XID_Start # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA - A7F7 ; XID_Start # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I - A7F8..A7F9 ; XID_Start # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE -@@ -7835,6 +7992,8 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 103D1..103D5 ; XID_Start # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED - 10400..1044F ; XID_Start # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - 10450..1049D ; XID_Start # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO -+104B0..104D3 ; XID_Start # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA -+104D8..104FB ; XID_Start # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10500..10527 ; XID_Start # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE - 10530..10563 ; XID_Start # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW - 10600..10736 ; XID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 -@@ -7896,6 +8055,8 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 1133D ; XID_Start # Lo GRANTHA SIGN AVAGRAHA - 11350 ; XID_Start # Lo GRANTHA OM - 1135D..11361 ; XID_Start # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL -+11400..11434 ; XID_Start # Lo [53] NEWA LETTER A..NEWA LETTER HA -+11447..1144A ; XID_Start # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI - 11480..114AF ; XID_Start # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA - 114C4..114C5 ; XID_Start # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG - 114C7 ; XID_Start # Lo TIRHUTA OM -@@ -7908,6 +8069,10 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 118A0..118DF ; XID_Start # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO - 118FF ; XID_Start # Lo WARANG CITI OM - 11AC0..11AF8 ; XID_Start # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL -+11C00..11C08 ; XID_Start # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L -+11C0A..11C2E ; XID_Start # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA -+11C40 ; XID_Start # Lo BHAIKSUKI SIGN AVAGRAHA -+11C72..11C8F ; XID_Start # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A - 12000..12399 ; XID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U - 12400..1246E ; XID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM - 12480..12543 ; XID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -@@ -7923,6 +8088,9 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 16F00..16F44 ; XID_Start # Lo [69] MIAO LETTER PA..MIAO LETTER HHA - 16F50 ; XID_Start # Lo MIAO LETTER NASALIZATION - 16F93..16F9F ; XID_Start # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 -+16FE0 ; XID_Start # Lm TANGUT ITERATION MARK -+17000..187EC ; XID_Start # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC -+18800..18AF2 ; XID_Start # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 - 1B000..1B001 ; XID_Start # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE - 1BC00..1BC6A ; XID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M - 1BC70..1BC7C ; XID_Start # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK -@@ -7959,6 +8127,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 1D7AA..1D7C2 ; XID_Start # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - 1D7C4..1D7CB ; XID_Start # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA - 1E800..1E8C4 ; XID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON -+1E900..1E943 ; XID_Start # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA - 1EE00..1EE03 ; XID_Start # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL - 1EE05..1EE1F ; XID_Start # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF - 1EE21..1EE22 ; XID_Start # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM -@@ -7998,7 +8167,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 2B820..2CEA1 ; XID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 - 2F800..2FA1D ; XID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - --# Total code points: 109807 -+# Total code points: 116984 - - # ================================================ - -@@ -8098,6 +8267,8 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 0840..0858 ; XID_Continue # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN - 0859..085B ; XID_Continue # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK - 08A0..08B4 ; XID_Continue # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -+08B6..08BD ; XID_Continue # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON -+08D4..08E1 ; XID_Continue # Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA - 08E3..0902 ; XID_Continue # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA - 0903 ; XID_Continue # Mc DEVANAGARI SIGN VISARGA - 0904..0939 ; XID_Continue # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA -@@ -8241,6 +8412,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 0C60..0C61 ; XID_Continue # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL - 0C62..0C63 ; XID_Continue # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL - 0C66..0C6F ; XID_Continue # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE -+0C80 ; XID_Continue # Lo KANNADA SIGN SPACING CANDRABINDU - 0C81 ; XID_Continue # Mn KANNADA SIGN CANDRABINDU - 0C82..0C83 ; XID_Continue # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA - 0C85..0C8C ; XID_Continue # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L -@@ -8275,6 +8447,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 0D4A..0D4C ; XID_Continue # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU - 0D4D ; XID_Continue # Mn MALAYALAM SIGN VIRAMA - 0D4E ; XID_Continue # Lo MALAYALAM LETTER DOT REPH -+0D54..0D56 ; XID_Continue # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL - 0D57 ; XID_Continue # Mc MALAYALAM AU LENGTH MARK - 0D5F..0D61 ; XID_Continue # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL - 0D62..0D63 ; XID_Continue # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL -@@ -8432,7 +8605,9 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 1820..1842 ; XID_Continue # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI - 1843 ; XID_Continue # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN - 1844..1877 ; XID_Continue # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA --1880..18A8 ; XID_Continue # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA -+1880..1884 ; XID_Continue # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -+1885..1886 ; XID_Continue # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA -+1887..18A8 ; XID_Continue # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA - 18A9 ; XID_Continue # Mn MONGOLIAN LETTER ALI GALI DAGALGA - 18AA ; XID_Continue # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA - 18B0..18F5 ; XID_Continue # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S -@@ -8517,6 +8692,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 1C50..1C59 ; XID_Continue # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE - 1C5A..1C77 ; XID_Continue # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH - 1C78..1C7D ; XID_Continue # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -+1C80..1C88 ; XID_Continue # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK - 1CD0..1CD2 ; XID_Continue # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA - 1CD4..1CE0 ; XID_Continue # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA - 1CE1 ; XID_Continue # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA -@@ -8535,7 +8711,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU - 1D79..1D9A ; XID_Continue # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK - 1D9B..1DBF ; XID_Continue # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA - 1DC0..1DF5 ; XID_Continue # Mn [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE --1DFC..1DFF ; XID_Continue # Mn [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW -+1DFB..1DFF ; XID_Continue # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - 1E00..1F15 ; XID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA - 1F18..1F1D ; XID_Continue # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA - 1F20..1F45 ; XID_Continue # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA -@@ -8658,7 +8834,7 @@ A771..A787 ; XID_Continue # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETT - A788 ; XID_Continue # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT - A78B..A78E ; XID_Continue # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT - A78F ; XID_Continue # Lo LATIN LETTER SINOLOGICAL DOT --A790..A7AD ; XID_Continue # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -+A790..A7AE ; XID_Continue # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I - A7B0..A7B7 ; XID_Continue # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA - A7F7 ; XID_Continue # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I - A7F8..A7F9 ; XID_Continue # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE -@@ -8677,7 +8853,7 @@ A840..A873 ; XID_Continue # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CAND - A880..A881 ; XID_Continue # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA - A882..A8B3 ; XID_Continue # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA - A8B4..A8C3 ; XID_Continue # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU --A8C4 ; XID_Continue # Mn SAURASHTRA SIGN VIRAMA -+A8C4..A8C5 ; XID_Continue # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU - A8D0..A8D9 ; XID_Continue # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE - A8E0..A8F1 ; XID_Continue # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA - A8F2..A8F7 ; XID_Continue # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA -@@ -8836,6 +9012,8 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA - 10400..1044F ; XID_Continue # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - 10450..1049D ; XID_Continue # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO - 104A0..104A9 ; XID_Continue # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE -+104B0..104D3 ; XID_Continue # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA -+104D8..104FB ; XID_Continue # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA - 10500..10527 ; XID_Continue # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE - 10530..10563 ; XID_Continue # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW - 10600..10736 ; XID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 -@@ -8919,6 +9097,7 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA - 11234 ; XID_Continue # Mn KHOJKI SIGN ANUSVARA - 11235 ; XID_Continue # Mc KHOJKI SIGN VIRAMA - 11236..11237 ; XID_Continue # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA -+1123E ; XID_Continue # Mn KHOJKI SIGN SUKUN - 11280..11286 ; XID_Continue # Lo [7] MULTANI LETTER A..MULTANI LETTER GA - 11288 ; XID_Continue # Lo MULTANI LETTER GHA - 1128A..1128D ; XID_Continue # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA -@@ -8950,6 +9129,15 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA - 11362..11363 ; XID_Continue # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL - 11366..1136C ; XID_Continue # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX - 11370..11374 ; XID_Continue # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA -+11400..11434 ; XID_Continue # Lo [53] NEWA LETTER A..NEWA LETTER HA -+11435..11437 ; XID_Continue # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II -+11438..1143F ; XID_Continue # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI -+11440..11441 ; XID_Continue # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU -+11442..11444 ; XID_Continue # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA -+11445 ; XID_Continue # Mc NEWA SIGN VISARGA -+11446 ; XID_Continue # Mn NEWA SIGN NUKTA -+11447..1144A ; XID_Continue # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI -+11450..11459 ; XID_Continue # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE - 11480..114AF ; XID_Continue # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA - 114B0..114B2 ; XID_Continue # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II - 114B3..114B8 ; XID_Continue # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL -@@ -9000,6 +9188,23 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA - 118E0..118E9 ; XID_Continue # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE - 118FF ; XID_Continue # Lo WARANG CITI OM - 11AC0..11AF8 ; XID_Continue # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL -+11C00..11C08 ; XID_Continue # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L -+11C0A..11C2E ; XID_Continue # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA -+11C2F ; XID_Continue # Mc BHAIKSUKI VOWEL SIGN AA -+11C30..11C36 ; XID_Continue # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L -+11C38..11C3D ; XID_Continue # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA -+11C3E ; XID_Continue # Mc BHAIKSUKI SIGN VISARGA -+11C3F ; XID_Continue # Mn BHAIKSUKI SIGN VIRAMA -+11C40 ; XID_Continue # Lo BHAIKSUKI SIGN AVAGRAHA -+11C50..11C59 ; XID_Continue # Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE -+11C72..11C8F ; XID_Continue # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A -+11C92..11CA7 ; XID_Continue # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA -+11CA9 ; XID_Continue # Mc MARCHEN SUBJOINED LETTER YA -+11CAA..11CB0 ; XID_Continue # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA -+11CB1 ; XID_Continue # Mc MARCHEN VOWEL SIGN I -+11CB2..11CB3 ; XID_Continue # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E -+11CB4 ; XID_Continue # Mc MARCHEN VOWEL SIGN O -+11CB5..11CB6 ; XID_Continue # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU - 12000..12399 ; XID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U - 12400..1246E ; XID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM - 12480..12543 ; XID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -@@ -9021,6 +9226,9 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA - 16F51..16F7E ; XID_Continue # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG - 16F8F..16F92 ; XID_Continue # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW - 16F93..16F9F ; XID_Continue # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 -+16FE0 ; XID_Continue # Lm TANGUT ITERATION MARK -+17000..187EC ; XID_Continue # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC -+18800..18AF2 ; XID_Continue # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 - 1B000..1B001 ; XID_Continue # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE - 1BC00..1BC6A ; XID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M - 1BC70..1BC7C ; XID_Continue # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK -@@ -9071,8 +9279,16 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA - 1DA84 ; XID_Continue # Mn SIGNWRITING LOCATION HEAD NECK - 1DA9B..1DA9F ; XID_Continue # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 - 1DAA1..1DAAF ; XID_Continue # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 -+1E000..1E006 ; XID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE -+1E008..1E018 ; XID_Continue # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU -+1E01B..1E021 ; XID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI -+1E023..1E024 ; XID_Continue # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS -+1E026..1E02A ; XID_Continue # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA - 1E800..1E8C4 ; XID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON - 1E8D0..1E8D6 ; XID_Continue # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS -+1E900..1E943 ; XID_Continue # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA -+1E944..1E94A ; XID_Continue # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA -+1E950..1E959 ; XID_Continue # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE - 1EE00..1EE03 ; XID_Continue # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL - 1EE05..1EE1F ; XID_Continue # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF - 1EE21..1EE22 ; XID_Continue # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM -@@ -9113,7 +9329,7 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA - 2F800..2FA1D ; XID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - E0100..E01EF ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - --# Total code points: 112333 -+# Total code points: 119672 - - # ================================================ - -@@ -9124,7 +9340,7 @@ E0100..E01EF ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTO - # + Variation_Selector - # - White_Space - # - FFF9..FFFB (Annotation Characters) --# - 0600..0605, 06DD, 070F, 110BD (exceptional Cf characters that should be visible) -+# - 0600..0605, 06DD, 070F, 08E2, 110BD (exceptional Cf characters that should be visible) - - 00AD ; Default_Ignorable_Code_Point # Cf SOFT HYPHEN - 034F ; Default_Ignorable_Code_Point # Mn COMBINING GRAPHEME JOINER -@@ -9186,6 +9402,7 @@ E01F0..E0FFF ; Default_Ignorable_Code_Point # Cn [3600] ........ - 2A700..2B734;W # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 -diff --git a/localedata/unicode-gen/Makefile b/localedata/unicode-gen/Makefile -index 53efcd3..ee55d92 100644 ---- a/localedata/unicode-gen/Makefile -+++ b/localedata/unicode-gen/Makefile -@@ -35,7 +35,7 @@ - # files for making modifications. - - --UNICODE_VERSION = 8.0.0 -+UNICODE_VERSION = 9.0.0 - - PYTHON3 = python3 - WGET = wget -diff --git a/localedata/unicode-gen/UnicodeData.txt b/localedata/unicode-gen/UnicodeData.txt -index aa0e914..a756976 100644 ---- a/localedata/unicode-gen/UnicodeData.txt -+++ b/localedata/unicode-gen/UnicodeData.txt -@@ -616,7 +616,7 @@ - 0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; - 0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 - 0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 --026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; -+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;A7AE;;A7AE - 026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62 - 026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;A7AD;;A7AD - 026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; -@@ -2093,6 +2093,29 @@ - 08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;; - 08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; - 08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -+08B6;ARABIC LETTER BEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;; -+08B7;ARABIC LETTER PEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;; -+08B8;ARABIC LETTER TEH WITH SMALL TEH ABOVE;Lo;0;AL;;;;;N;;;;; -+08B9;ARABIC LETTER REH WITH SMALL NOON ABOVE;Lo;0;AL;;;;;N;;;;; -+08BA;ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE;Lo;0;AL;;;;;N;;;;; -+08BB;ARABIC LETTER AFRICAN FEH;Lo;0;AL;;;;;N;;;;; -+08BC;ARABIC LETTER AFRICAN QAF;Lo;0;AL;;;;;N;;;;; -+08BD;ARABIC LETTER AFRICAN NOON;Lo;0;AL;;;;;N;;;;; -+08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;; -+08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;; -+08D6;ARABIC SMALL HIGH AIN;Mn;230;NSM;;;;;N;;;;; -+08D7;ARABIC SMALL HIGH QAF;Mn;230;NSM;;;;;N;;;;; -+08D8;ARABIC SMALL HIGH NOON WITH KASRA;Mn;230;NSM;;;;;N;;;;; -+08D9;ARABIC SMALL LOW NOON WITH KASRA;Mn;230;NSM;;;;;N;;;;; -+08DA;ARABIC SMALL HIGH WORD ATH-THALATHA;Mn;230;NSM;;;;;N;;;;; -+08DB;ARABIC SMALL HIGH WORD AS-SAJDA;Mn;230;NSM;;;;;N;;;;; -+08DC;ARABIC SMALL HIGH WORD AN-NISF;Mn;230;NSM;;;;;N;;;;; -+08DD;ARABIC SMALL HIGH WORD SAKTA;Mn;230;NSM;;;;;N;;;;; -+08DE;ARABIC SMALL HIGH WORD QIF;Mn;230;NSM;;;;;N;;;;; -+08DF;ARABIC SMALL HIGH WORD WAQFA;Mn;230;NSM;;;;;N;;;;; -+08E0;ARABIC SMALL HIGH FOOTNOTE MARKER;Mn;230;NSM;;;;;N;;;;; -+08E1;ARABIC SMALL HIGH SIGN SAFHA;Mn;230;NSM;;;;;N;;;;; -+08E2;ARABIC DISPUTED END OF AYAH;Cf;0;AN;;;;;N;;;;; - 08E3;ARABIC TURNED DAMMA BELOW;Mn;220;NSM;;;;;N;;;;; - 08E4;ARABIC CURLY FATHA;Mn;230;NSM;;;;;N;;;;; - 08E5;ARABIC CURLY DAMMA;Mn;230;NSM;;;;;N;;;;; -@@ -2765,6 +2788,7 @@ - 0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;; - 0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;; - 0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;; -+0C80;KANNADA SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;; - 0C81;KANNADA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; - 0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; - 0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -@@ -2923,7 +2947,18 @@ - 0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; - 0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; - 0D4E;MALAYALAM LETTER DOT REPH;Lo;0;L;;;;;N;;;;; -+0D4F;MALAYALAM SIGN PARA;So;0;L;;;;;N;;;;; -+0D54;MALAYALAM LETTER CHILLU M;Lo;0;L;;;;;N;;;;; -+0D55;MALAYALAM LETTER CHILLU Y;Lo;0;L;;;;;N;;;;; -+0D56;MALAYALAM LETTER CHILLU LLL;Lo;0;L;;;;;N;;;;; - 0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -+0D58;MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;; -+0D59;MALAYALAM FRACTION ONE FORTIETH;No;0;L;;;;1/40;N;;;;; -+0D5A;MALAYALAM FRACTION THREE EIGHTIETHS;No;0;L;;;;3/80;N;;;;; -+0D5B;MALAYALAM FRACTION ONE TWENTIETH;No;0;L;;;;1/20;N;;;;; -+0D5C;MALAYALAM FRACTION ONE TENTH;No;0;L;;;;1/10;N;;;;; -+0D5D;MALAYALAM FRACTION THREE TWENTIETHS;No;0;L;;;;3/20;N;;;;; -+0D5E;MALAYALAM FRACTION ONE FIFTH;No;0;L;;;;1/5;N;;;;; - 0D5F;MALAYALAM LETTER ARCHAIC II;Lo;0;L;;;;;N;;;;; - 0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; - 0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -@@ -2945,6 +2980,9 @@ - 0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; - 0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; - 0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; -+0D76;MALAYALAM FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;; -+0D77;MALAYALAM FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;; -+0D78;MALAYALAM FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;; - 0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;; - 0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;; - 0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;; -@@ -5458,8 +5496,8 @@ - 1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; - 1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; - 1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; --1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; --1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; -+1885;MONGOLIAN LETTER ALI GALI BALUDA;Mn;0;NSM;;;;;N;;;;; -+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Mn;0;NSM;;;;;N;;;;; - 1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; - 1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; - 1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; -@@ -6319,6 +6357,15 @@ - 1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;; - 1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;; - 1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;; -+1C80;CYRILLIC SMALL LETTER ROUNDED VE;Ll;0;L;;;;;N;;;0412;;0412 -+1C81;CYRILLIC SMALL LETTER LONG-LEGGED DE;Ll;0;L;;;;;N;;;0414;;0414 -+1C82;CYRILLIC SMALL LETTER NARROW O;Ll;0;L;;;;;N;;;041E;;041E -+1C83;CYRILLIC SMALL LETTER WIDE ES;Ll;0;L;;;;;N;;;0421;;0421 -+1C84;CYRILLIC SMALL LETTER TALL TE;Ll;0;L;;;;;N;;;0422;;0422 -+1C85;CYRILLIC SMALL LETTER THREE-LEGGED TE;Ll;0;L;;;;;N;;;0422;;0422 -+1C86;CYRILLIC SMALL LETTER TALL HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A -+1C87;CYRILLIC SMALL LETTER TALL YAT;Ll;0;L;;;;;N;;;0462;;0462 -+1C88;CYRILLIC SMALL LETTER UNBLENDED UK;Ll;0;L;;;;;N;;;A64A;;A64A - 1CC0;SUNDANESE PUNCTUATION BINDU SURYA;Po;0;L;;;;;N;;;;; - 1CC1;SUNDANESE PUNCTUATION BINDU PANGLONG;Po;0;L;;;;;N;;;;; - 1CC2;SUNDANESE PUNCTUATION BINDU PURNAMA;Po;0;L;;;;;N;;;;; -@@ -6614,6 +6661,7 @@ - 1DF3;COMBINING LATIN SMALL LETTER O WITH DIAERESIS;Mn;230;NSM;;;;;N;;;;; - 1DF4;COMBINING LATIN SMALL LETTER U WITH DIAERESIS;Mn;230;NSM;;;;;N;;;;; - 1DF5;COMBINING UP TACK ABOVE;Mn;230;NSM;;;;;N;;;;; -+1DFB;COMBINING DELETION MARK;Mn;230;NSM;;;;;N;;;;; - 1DFC;COMBINING DOUBLE INVERTED BREVE BELOW;Mn;233;NSM;;;;;N;;;;; - 1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;; - 1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; -@@ -8083,6 +8131,10 @@ - 23F8;DOUBLE VERTICAL BAR;So;0;ON;;;;;N;;;;; - 23F9;BLACK SQUARE FOR STOP;So;0;ON;;;;;N;;;;; - 23FA;BLACK CIRCLE FOR RECORD;So;0;ON;;;;;N;;;;; -+23FB;POWER SYMBOL;So;0;ON;;;;;N;;;;; -+23FC;POWER ON-OFF SYMBOL;So;0;ON;;;;;N;;;;; -+23FD;POWER ON SYMBOL;So;0;ON;;;;;N;;;;; -+23FE;POWER SLEEP SYMBOL;So;0;ON;;;;;N;;;;; - 2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; - 2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; - 2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; -@@ -10561,6 +10613,8 @@ - 2E40;DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; - 2E41;REVERSED COMMA;Po;0;ON;;;;;N;;;;; - 2E42;DOUBLE LOW-REVERSED-9 QUOTATION MARK;Ps;0;ON;;;;;N;;;;; -+2E43;DASH WITH LEFT UPTURN;Po;0;ON;;;;;N;;;;; -+2E44;DOUBLE SUSPENSION MARK;Po;0;ON;;;;;N;;;;; - 2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; - 2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; - 2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; -@@ -13889,6 +13943,7 @@ A7AA;LATIN CAPITAL LETTER H WITH HOOK;Lu;0;L;;;;;N;;;;0266; - A7AB;LATIN CAPITAL LETTER REVERSED OPEN E;Lu;0;L;;;;;N;;;;025C; - A7AC;LATIN CAPITAL LETTER SCRIPT G;Lu;0;L;;;;;N;;;;0261; - A7AD;LATIN CAPITAL LETTER L WITH BELT;Lu;0;L;;;;;N;;;;026C; -+A7AE;LATIN CAPITAL LETTER SMALL CAPITAL I;Lu;0;L;;;;;N;;;;026A; - A7B0;LATIN CAPITAL LETTER TURNED K;Lu;0;L;;;;;N;;;;029E; - A7B1;LATIN CAPITAL LETTER TURNED T;Lu;0;L;;;;;N;;;;0287; - A7B2;LATIN CAPITAL LETTER J WITH CROSSED-TAIL;Lu;0;L;;;;;N;;;;029D; -@@ -14085,6 +14140,7 @@ A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; - A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; - A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; - A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -+A8C5;SAURASHTRA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; - A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;; - A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;; - A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -@@ -16834,6 +16890,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; - 1018B;GREEK ONE QUARTER SIGN;No;0;ON;;;;1/4;N;;;;; - 1018C;GREEK SINUSOID SIGN;So;0;ON;;;;;N;;;;; -+1018D;GREEK INDICTION SIGN;So;0;L;;;;;N;;;;; -+1018E;NOMISMA SIGN;So;0;L;;;;;N;;;;; - 10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;; - 10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;; - 10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;; -@@ -17354,6 +17412,78 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; - 104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; - 104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -+104B0;OSAGE CAPITAL LETTER A;Lu;0;L;;;;;N;;;;104D8; -+104B1;OSAGE CAPITAL LETTER AI;Lu;0;L;;;;;N;;;;104D9; -+104B2;OSAGE CAPITAL LETTER AIN;Lu;0;L;;;;;N;;;;104DA; -+104B3;OSAGE CAPITAL LETTER AH;Lu;0;L;;;;;N;;;;104DB; -+104B4;OSAGE CAPITAL LETTER BRA;Lu;0;L;;;;;N;;;;104DC; -+104B5;OSAGE CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;104DD; -+104B6;OSAGE CAPITAL LETTER EHCHA;Lu;0;L;;;;;N;;;;104DE; -+104B7;OSAGE CAPITAL LETTER E;Lu;0;L;;;;;N;;;;104DF; -+104B8;OSAGE CAPITAL LETTER EIN;Lu;0;L;;;;;N;;;;104E0; -+104B9;OSAGE CAPITAL LETTER HA;Lu;0;L;;;;;N;;;;104E1; -+104BA;OSAGE CAPITAL LETTER HYA;Lu;0;L;;;;;N;;;;104E2; -+104BB;OSAGE CAPITAL LETTER I;Lu;0;L;;;;;N;;;;104E3; -+104BC;OSAGE CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;104E4; -+104BD;OSAGE CAPITAL LETTER EHKA;Lu;0;L;;;;;N;;;;104E5; -+104BE;OSAGE CAPITAL LETTER KYA;Lu;0;L;;;;;N;;;;104E6; -+104BF;OSAGE CAPITAL LETTER LA;Lu;0;L;;;;;N;;;;104E7; -+104C0;OSAGE CAPITAL LETTER MA;Lu;0;L;;;;;N;;;;104E8; -+104C1;OSAGE CAPITAL LETTER NA;Lu;0;L;;;;;N;;;;104E9; -+104C2;OSAGE CAPITAL LETTER O;Lu;0;L;;;;;N;;;;104EA; -+104C3;OSAGE CAPITAL LETTER OIN;Lu;0;L;;;;;N;;;;104EB; -+104C4;OSAGE CAPITAL LETTER PA;Lu;0;L;;;;;N;;;;104EC; -+104C5;OSAGE CAPITAL LETTER EHPA;Lu;0;L;;;;;N;;;;104ED; -+104C6;OSAGE CAPITAL LETTER SA;Lu;0;L;;;;;N;;;;104EE; -+104C7;OSAGE CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;104EF; -+104C8;OSAGE CAPITAL LETTER TA;Lu;0;L;;;;;N;;;;104F0; -+104C9;OSAGE CAPITAL LETTER EHTA;Lu;0;L;;;;;N;;;;104F1; -+104CA;OSAGE CAPITAL LETTER TSA;Lu;0;L;;;;;N;;;;104F2; -+104CB;OSAGE CAPITAL LETTER EHTSA;Lu;0;L;;;;;N;;;;104F3; -+104CC;OSAGE CAPITAL LETTER TSHA;Lu;0;L;;;;;N;;;;104F4; -+104CD;OSAGE CAPITAL LETTER DHA;Lu;0;L;;;;;N;;;;104F5; -+104CE;OSAGE CAPITAL LETTER U;Lu;0;L;;;;;N;;;;104F6; -+104CF;OSAGE CAPITAL LETTER WA;Lu;0;L;;;;;N;;;;104F7; -+104D0;OSAGE CAPITAL LETTER KHA;Lu;0;L;;;;;N;;;;104F8; -+104D1;OSAGE CAPITAL LETTER GHA;Lu;0;L;;;;;N;;;;104F9; -+104D2;OSAGE CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;104FA; -+104D3;OSAGE CAPITAL LETTER ZHA;Lu;0;L;;;;;N;;;;104FB; -+104D8;OSAGE SMALL LETTER A;Ll;0;L;;;;;N;;;104B0;;104B0 -+104D9;OSAGE SMALL LETTER AI;Ll;0;L;;;;;N;;;104B1;;104B1 -+104DA;OSAGE SMALL LETTER AIN;Ll;0;L;;;;;N;;;104B2;;104B2 -+104DB;OSAGE SMALL LETTER AH;Ll;0;L;;;;;N;;;104B3;;104B3 -+104DC;OSAGE SMALL LETTER BRA;Ll;0;L;;;;;N;;;104B4;;104B4 -+104DD;OSAGE SMALL LETTER CHA;Ll;0;L;;;;;N;;;104B5;;104B5 -+104DE;OSAGE SMALL LETTER EHCHA;Ll;0;L;;;;;N;;;104B6;;104B6 -+104DF;OSAGE SMALL LETTER E;Ll;0;L;;;;;N;;;104B7;;104B7 -+104E0;OSAGE SMALL LETTER EIN;Ll;0;L;;;;;N;;;104B8;;104B8 -+104E1;OSAGE SMALL LETTER HA;Ll;0;L;;;;;N;;;104B9;;104B9 -+104E2;OSAGE SMALL LETTER HYA;Ll;0;L;;;;;N;;;104BA;;104BA -+104E3;OSAGE SMALL LETTER I;Ll;0;L;;;;;N;;;104BB;;104BB -+104E4;OSAGE SMALL LETTER KA;Ll;0;L;;;;;N;;;104BC;;104BC -+104E5;OSAGE SMALL LETTER EHKA;Ll;0;L;;;;;N;;;104BD;;104BD -+104E6;OSAGE SMALL LETTER KYA;Ll;0;L;;;;;N;;;104BE;;104BE -+104E7;OSAGE SMALL LETTER LA;Ll;0;L;;;;;N;;;104BF;;104BF -+104E8;OSAGE SMALL LETTER MA;Ll;0;L;;;;;N;;;104C0;;104C0 -+104E9;OSAGE SMALL LETTER NA;Ll;0;L;;;;;N;;;104C1;;104C1 -+104EA;OSAGE SMALL LETTER O;Ll;0;L;;;;;N;;;104C2;;104C2 -+104EB;OSAGE SMALL LETTER OIN;Ll;0;L;;;;;N;;;104C3;;104C3 -+104EC;OSAGE SMALL LETTER PA;Ll;0;L;;;;;N;;;104C4;;104C4 -+104ED;OSAGE SMALL LETTER EHPA;Ll;0;L;;;;;N;;;104C5;;104C5 -+104EE;OSAGE SMALL LETTER SA;Ll;0;L;;;;;N;;;104C6;;104C6 -+104EF;OSAGE SMALL LETTER SHA;Ll;0;L;;;;;N;;;104C7;;104C7 -+104F0;OSAGE SMALL LETTER TA;Ll;0;L;;;;;N;;;104C8;;104C8 -+104F1;OSAGE SMALL LETTER EHTA;Ll;0;L;;;;;N;;;104C9;;104C9 -+104F2;OSAGE SMALL LETTER TSA;Ll;0;L;;;;;N;;;104CA;;104CA -+104F3;OSAGE SMALL LETTER EHTSA;Ll;0;L;;;;;N;;;104CB;;104CB -+104F4;OSAGE SMALL LETTER TSHA;Ll;0;L;;;;;N;;;104CC;;104CC -+104F5;OSAGE SMALL LETTER DHA;Ll;0;L;;;;;N;;;104CD;;104CD -+104F6;OSAGE SMALL LETTER U;Ll;0;L;;;;;N;;;104CE;;104CE -+104F7;OSAGE SMALL LETTER WA;Ll;0;L;;;;;N;;;104CF;;104CF -+104F8;OSAGE SMALL LETTER KHA;Ll;0;L;;;;;N;;;104D0;;104D0 -+104F9;OSAGE SMALL LETTER GHA;Ll;0;L;;;;;N;;;104D1;;104D1 -+104FA;OSAGE SMALL LETTER ZA;Ll;0;L;;;;;N;;;104D2;;104D2 -+104FB;OSAGE SMALL LETTER ZHA;Ll;0;L;;;;;N;;;104D3;;104D3 - 10500;ELBASAN LETTER A;Lo;0;L;;;;;N;;;;; - 10501;ELBASAN LETTER BE;Lo;0;L;;;;;N;;;;; - 10502;ELBASAN LETTER CE;Lo;0;L;;;;;N;;;;; -@@ -19180,6 +19310,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1123B;KHOJKI SECTION MARK;Po;0;L;;;;;N;;;;; - 1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; - 1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; -+1123E;KHOJKI SIGN SUKUN;Mn;0;NSM;;;;;N;;;;; - 11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;; - 11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;; - 11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;; -@@ -19372,6 +19503,98 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 11372;COMBINING GRANTHA LETTER NA;Mn;230;NSM;;;;;N;;;;; - 11373;COMBINING GRANTHA LETTER VI;Mn;230;NSM;;;;;N;;;;; - 11374;COMBINING GRANTHA LETTER PA;Mn;230;NSM;;;;;N;;;;; -+11400;NEWA LETTER A;Lo;0;L;;;;;N;;;;; -+11401;NEWA LETTER AA;Lo;0;L;;;;;N;;;;; -+11402;NEWA LETTER I;Lo;0;L;;;;;N;;;;; -+11403;NEWA LETTER II;Lo;0;L;;;;;N;;;;; -+11404;NEWA LETTER U;Lo;0;L;;;;;N;;;;; -+11405;NEWA LETTER UU;Lo;0;L;;;;;N;;;;; -+11406;NEWA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -+11407;NEWA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -+11408;NEWA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -+11409;NEWA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -+1140A;NEWA LETTER E;Lo;0;L;;;;;N;;;;; -+1140B;NEWA LETTER AI;Lo;0;L;;;;;N;;;;; -+1140C;NEWA LETTER O;Lo;0;L;;;;;N;;;;; -+1140D;NEWA LETTER AU;Lo;0;L;;;;;N;;;;; -+1140E;NEWA LETTER KA;Lo;0;L;;;;;N;;;;; -+1140F;NEWA LETTER KHA;Lo;0;L;;;;;N;;;;; -+11410;NEWA LETTER GA;Lo;0;L;;;;;N;;;;; -+11411;NEWA LETTER GHA;Lo;0;L;;;;;N;;;;; -+11412;NEWA LETTER NGA;Lo;0;L;;;;;N;;;;; -+11413;NEWA LETTER NGHA;Lo;0;L;;;;;N;;;;; -+11414;NEWA LETTER CA;Lo;0;L;;;;;N;;;;; -+11415;NEWA LETTER CHA;Lo;0;L;;;;;N;;;;; -+11416;NEWA LETTER JA;Lo;0;L;;;;;N;;;;; -+11417;NEWA LETTER JHA;Lo;0;L;;;;;N;;;;; -+11418;NEWA LETTER NYA;Lo;0;L;;;;;N;;;;; -+11419;NEWA LETTER NYHA;Lo;0;L;;;;;N;;;;; -+1141A;NEWA LETTER TTA;Lo;0;L;;;;;N;;;;; -+1141B;NEWA LETTER TTHA;Lo;0;L;;;;;N;;;;; -+1141C;NEWA LETTER DDA;Lo;0;L;;;;;N;;;;; -+1141D;NEWA LETTER DDHA;Lo;0;L;;;;;N;;;;; -+1141E;NEWA LETTER NNA;Lo;0;L;;;;;N;;;;; -+1141F;NEWA LETTER TA;Lo;0;L;;;;;N;;;;; -+11420;NEWA LETTER THA;Lo;0;L;;;;;N;;;;; -+11421;NEWA LETTER DA;Lo;0;L;;;;;N;;;;; -+11422;NEWA LETTER DHA;Lo;0;L;;;;;N;;;;; -+11423;NEWA LETTER NA;Lo;0;L;;;;;N;;;;; -+11424;NEWA LETTER NHA;Lo;0;L;;;;;N;;;;; -+11425;NEWA LETTER PA;Lo;0;L;;;;;N;;;;; -+11426;NEWA LETTER PHA;Lo;0;L;;;;;N;;;;; -+11427;NEWA LETTER BA;Lo;0;L;;;;;N;;;;; -+11428;NEWA LETTER BHA;Lo;0;L;;;;;N;;;;; -+11429;NEWA LETTER MA;Lo;0;L;;;;;N;;;;; -+1142A;NEWA LETTER MHA;Lo;0;L;;;;;N;;;;; -+1142B;NEWA LETTER YA;Lo;0;L;;;;;N;;;;; -+1142C;NEWA LETTER RA;Lo;0;L;;;;;N;;;;; -+1142D;NEWA LETTER RHA;Lo;0;L;;;;;N;;;;; -+1142E;NEWA LETTER LA;Lo;0;L;;;;;N;;;;; -+1142F;NEWA LETTER LHA;Lo;0;L;;;;;N;;;;; -+11430;NEWA LETTER WA;Lo;0;L;;;;;N;;;;; -+11431;NEWA LETTER SHA;Lo;0;L;;;;;N;;;;; -+11432;NEWA LETTER SSA;Lo;0;L;;;;;N;;;;; -+11433;NEWA LETTER SA;Lo;0;L;;;;;N;;;;; -+11434;NEWA LETTER HA;Lo;0;L;;;;;N;;;;; -+11435;NEWA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -+11436;NEWA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -+11437;NEWA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -+11438;NEWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -+11439;NEWA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -+1143A;NEWA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -+1143B;NEWA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -+1143C;NEWA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -+1143D;NEWA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -+1143E;NEWA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -+1143F;NEWA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -+11440;NEWA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -+11441;NEWA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -+11442;NEWA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -+11443;NEWA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -+11444;NEWA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -+11445;NEWA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -+11446;NEWA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -+11447;NEWA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -+11448;NEWA SIGN FINAL ANUSVARA;Lo;0;L;;;;;N;;;;; -+11449;NEWA OM;Lo;0;L;;;;;N;;;;; -+1144A;NEWA SIDDHI;Lo;0;L;;;;;N;;;;; -+1144B;NEWA DANDA;Po;0;L;;;;;N;;;;; -+1144C;NEWA DOUBLE DANDA;Po;0;L;;;;;N;;;;; -+1144D;NEWA COMMA;Po;0;L;;;;;N;;;;; -+1144E;NEWA GAP FILLER;Po;0;L;;;;;N;;;;; -+1144F;NEWA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; -+11450;NEWA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -+11451;NEWA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -+11452;NEWA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -+11453;NEWA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -+11454;NEWA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -+11455;NEWA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -+11456;NEWA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -+11457;NEWA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -+11458;NEWA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -+11459;NEWA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -+1145B;NEWA PLACEHOLDER MARK;Po;0;L;;;;;N;;;;; -+1145D;NEWA INSERTION SIGN;Po;0;L;;;;;N;;;;; - 11480;TIRHUTA ANJI;Lo;0;L;;;;;N;;;;; - 11481;TIRHUTA LETTER A;Lo;0;L;;;;;N;;;;; - 11482;TIRHUTA LETTER AA;Lo;0;L;;;;;N;;;;; -@@ -19625,6 +19848,19 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 11657;MODI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; - 11658;MODI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; - 11659;MODI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -+11660;MONGOLIAN BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;; -+11661;MONGOLIAN ROTATED BIRGA;Po;0;ON;;;;;N;;;;; -+11662;MONGOLIAN DOUBLE BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;; -+11663;MONGOLIAN TRIPLE BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;; -+11664;MONGOLIAN BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;; -+11665;MONGOLIAN ROTATED BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;; -+11666;MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;; -+11667;MONGOLIAN INVERTED BIRGA;Po;0;ON;;;;;N;;;;; -+11668;MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;; -+11669;MONGOLIAN SWIRL BIRGA;Po;0;ON;;;;;N;;;;; -+1166A;MONGOLIAN SWIRL BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;; -+1166B;MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;; -+1166C;MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;; - 11680;TAKRI LETTER A;Lo;0;L;;;;;N;;;;; - 11681;TAKRI LETTER AA;Lo;0;L;;;;;N;;;;; - 11682;TAKRI LETTER I;Lo;0;L;;;;;N;;;;; -@@ -19889,6 +20125,171 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 11AF6;PAU CIN HAU LOW-FALLING TONE LONG FINAL;Lo;0;L;;;;;N;;;;; - 11AF7;PAU CIN HAU LOW-FALLING TONE FINAL;Lo;0;L;;;;;N;;;;; - 11AF8;PAU CIN HAU GLOTTAL STOP FINAL;Lo;0;L;;;;;N;;;;; -+11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;; -+11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;; -+11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;; -+11C03;BHAIKSUKI LETTER II;Lo;0;L;;;;;N;;;;; -+11C04;BHAIKSUKI LETTER U;Lo;0;L;;;;;N;;;;; -+11C05;BHAIKSUKI LETTER UU;Lo;0;L;;;;;N;;;;; -+11C06;BHAIKSUKI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -+11C07;BHAIKSUKI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -+11C08;BHAIKSUKI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -+11C0A;BHAIKSUKI LETTER E;Lo;0;L;;;;;N;;;;; -+11C0B;BHAIKSUKI LETTER AI;Lo;0;L;;;;;N;;;;; -+11C0C;BHAIKSUKI LETTER O;Lo;0;L;;;;;N;;;;; -+11C0D;BHAIKSUKI LETTER AU;Lo;0;L;;;;;N;;;;; -+11C0E;BHAIKSUKI LETTER KA;Lo;0;L;;;;;N;;;;; -+11C0F;BHAIKSUKI LETTER KHA;Lo;0;L;;;;;N;;;;; -+11C10;BHAIKSUKI LETTER GA;Lo;0;L;;;;;N;;;;; -+11C11;BHAIKSUKI LETTER GHA;Lo;0;L;;;;;N;;;;; -+11C12;BHAIKSUKI LETTER NGA;Lo;0;L;;;;;N;;;;; -+11C13;BHAIKSUKI LETTER CA;Lo;0;L;;;;;N;;;;; -+11C14;BHAIKSUKI LETTER CHA;Lo;0;L;;;;;N;;;;; -+11C15;BHAIKSUKI LETTER JA;Lo;0;L;;;;;N;;;;; -+11C16;BHAIKSUKI LETTER JHA;Lo;0;L;;;;;N;;;;; -+11C17;BHAIKSUKI LETTER NYA;Lo;0;L;;;;;N;;;;; -+11C18;BHAIKSUKI LETTER TTA;Lo;0;L;;;;;N;;;;; -+11C19;BHAIKSUKI LETTER TTHA;Lo;0;L;;;;;N;;;;; -+11C1A;BHAIKSUKI LETTER DDA;Lo;0;L;;;;;N;;;;; -+11C1B;BHAIKSUKI LETTER DDHA;Lo;0;L;;;;;N;;;;; -+11C1C;BHAIKSUKI LETTER NNA;Lo;0;L;;;;;N;;;;; -+11C1D;BHAIKSUKI LETTER TA;Lo;0;L;;;;;N;;;;; -+11C1E;BHAIKSUKI LETTER THA;Lo;0;L;;;;;N;;;;; -+11C1F;BHAIKSUKI LETTER DA;Lo;0;L;;;;;N;;;;; -+11C20;BHAIKSUKI LETTER DHA;Lo;0;L;;;;;N;;;;; -+11C21;BHAIKSUKI LETTER NA;Lo;0;L;;;;;N;;;;; -+11C22;BHAIKSUKI LETTER PA;Lo;0;L;;;;;N;;;;; -+11C23;BHAIKSUKI LETTER PHA;Lo;0;L;;;;;N;;;;; -+11C24;BHAIKSUKI LETTER BA;Lo;0;L;;;;;N;;;;; -+11C25;BHAIKSUKI LETTER BHA;Lo;0;L;;;;;N;;;;; -+11C26;BHAIKSUKI LETTER MA;Lo;0;L;;;;;N;;;;; -+11C27;BHAIKSUKI LETTER YA;Lo;0;L;;;;;N;;;;; -+11C28;BHAIKSUKI LETTER RA;Lo;0;L;;;;;N;;;;; -+11C29;BHAIKSUKI LETTER LA;Lo;0;L;;;;;N;;;;; -+11C2A;BHAIKSUKI LETTER VA;Lo;0;L;;;;;N;;;;; -+11C2B;BHAIKSUKI LETTER SHA;Lo;0;L;;;;;N;;;;; -+11C2C;BHAIKSUKI LETTER SSA;Lo;0;L;;;;;N;;;;; -+11C2D;BHAIKSUKI LETTER SA;Lo;0;L;;;;;N;;;;; -+11C2E;BHAIKSUKI LETTER HA;Lo;0;L;;;;;N;;;;; -+11C2F;BHAIKSUKI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -+11C30;BHAIKSUKI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -+11C31;BHAIKSUKI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -+11C32;BHAIKSUKI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -+11C33;BHAIKSUKI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -+11C34;BHAIKSUKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -+11C35;BHAIKSUKI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -+11C36;BHAIKSUKI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -+11C38;BHAIKSUKI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -+11C39;BHAIKSUKI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -+11C3A;BHAIKSUKI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -+11C3B;BHAIKSUKI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -+11C3C;BHAIKSUKI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -+11C3D;BHAIKSUKI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -+11C3E;BHAIKSUKI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -+11C3F;BHAIKSUKI SIGN VIRAMA;Mn;9;L;;;;;N;;;;; -+11C40;BHAIKSUKI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -+11C41;BHAIKSUKI DANDA;Po;0;L;;;;;N;;;;; -+11C42;BHAIKSUKI DOUBLE DANDA;Po;0;L;;;;;N;;;;; -+11C43;BHAIKSUKI WORD SEPARATOR;Po;0;L;;;;;N;;;;; -+11C44;BHAIKSUKI GAP FILLER-1;Po;0;L;;;;;N;;;;; -+11C45;BHAIKSUKI GAP FILLER-2;Po;0;L;;;;;N;;;;; -+11C50;BHAIKSUKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -+11C51;BHAIKSUKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -+11C52;BHAIKSUKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -+11C53;BHAIKSUKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -+11C54;BHAIKSUKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -+11C55;BHAIKSUKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -+11C56;BHAIKSUKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -+11C57;BHAIKSUKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -+11C58;BHAIKSUKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -+11C59;BHAIKSUKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -+11C5A;BHAIKSUKI NUMBER ONE;No;0;L;;;;1;N;;;;; -+11C5B;BHAIKSUKI NUMBER TWO;No;0;L;;;;2;N;;;;; -+11C5C;BHAIKSUKI NUMBER THREE;No;0;L;;;;3;N;;;;; -+11C5D;BHAIKSUKI NUMBER FOUR;No;0;L;;;;4;N;;;;; -+11C5E;BHAIKSUKI NUMBER FIVE;No;0;L;;;;5;N;;;;; -+11C5F;BHAIKSUKI NUMBER SIX;No;0;L;;;;6;N;;;;; -+11C60;BHAIKSUKI NUMBER SEVEN;No;0;L;;;;7;N;;;;; -+11C61;BHAIKSUKI NUMBER EIGHT;No;0;L;;;;8;N;;;;; -+11C62;BHAIKSUKI NUMBER NINE;No;0;L;;;;9;N;;;;; -+11C63;BHAIKSUKI NUMBER TEN;No;0;L;;;;10;N;;;;; -+11C64;BHAIKSUKI NUMBER TWENTY;No;0;L;;;;20;N;;;;; -+11C65;BHAIKSUKI NUMBER THIRTY;No;0;L;;;;30;N;;;;; -+11C66;BHAIKSUKI NUMBER FORTY;No;0;L;;;;40;N;;;;; -+11C67;BHAIKSUKI NUMBER FIFTY;No;0;L;;;;50;N;;;;; -+11C68;BHAIKSUKI NUMBER SIXTY;No;0;L;;;;60;N;;;;; -+11C69;BHAIKSUKI NUMBER SEVENTY;No;0;L;;;;70;N;;;;; -+11C6A;BHAIKSUKI NUMBER EIGHTY;No;0;L;;;;80;N;;;;; -+11C6B;BHAIKSUKI NUMBER NINETY;No;0;L;;;;90;N;;;;; -+11C6C;BHAIKSUKI HUNDREDS UNIT MARK;No;0;L;;;;100;N;;;;; -+11C70;MARCHEN HEAD MARK;Po;0;L;;;;;N;;;;; -+11C71;MARCHEN MARK SHAD;Po;0;L;;;;;N;;;;; -+11C72;MARCHEN LETTER KA;Lo;0;L;;;;;N;;;;; -+11C73;MARCHEN LETTER KHA;Lo;0;L;;;;;N;;;;; -+11C74;MARCHEN LETTER GA;Lo;0;L;;;;;N;;;;; -+11C75;MARCHEN LETTER NGA;Lo;0;L;;;;;N;;;;; -+11C76;MARCHEN LETTER CA;Lo;0;L;;;;;N;;;;; -+11C77;MARCHEN LETTER CHA;Lo;0;L;;;;;N;;;;; -+11C78;MARCHEN LETTER JA;Lo;0;L;;;;;N;;;;; -+11C79;MARCHEN LETTER NYA;Lo;0;L;;;;;N;;;;; -+11C7A;MARCHEN LETTER TA;Lo;0;L;;;;;N;;;;; -+11C7B;MARCHEN LETTER THA;Lo;0;L;;;;;N;;;;; -+11C7C;MARCHEN LETTER DA;Lo;0;L;;;;;N;;;;; -+11C7D;MARCHEN LETTER NA;Lo;0;L;;;;;N;;;;; -+11C7E;MARCHEN LETTER PA;Lo;0;L;;;;;N;;;;; -+11C7F;MARCHEN LETTER PHA;Lo;0;L;;;;;N;;;;; -+11C80;MARCHEN LETTER BA;Lo;0;L;;;;;N;;;;; -+11C81;MARCHEN LETTER MA;Lo;0;L;;;;;N;;;;; -+11C82;MARCHEN LETTER TSA;Lo;0;L;;;;;N;;;;; -+11C83;MARCHEN LETTER TSHA;Lo;0;L;;;;;N;;;;; -+11C84;MARCHEN LETTER DZA;Lo;0;L;;;;;N;;;;; -+11C85;MARCHEN LETTER WA;Lo;0;L;;;;;N;;;;; -+11C86;MARCHEN LETTER ZHA;Lo;0;L;;;;;N;;;;; -+11C87;MARCHEN LETTER ZA;Lo;0;L;;;;;N;;;;; -+11C88;MARCHEN LETTER -A;Lo;0;L;;;;;N;;;;; -+11C89;MARCHEN LETTER YA;Lo;0;L;;;;;N;;;;; -+11C8A;MARCHEN LETTER RA;Lo;0;L;;;;;N;;;;; -+11C8B;MARCHEN LETTER LA;Lo;0;L;;;;;N;;;;; -+11C8C;MARCHEN LETTER SHA;Lo;0;L;;;;;N;;;;; -+11C8D;MARCHEN LETTER SA;Lo;0;L;;;;;N;;;;; -+11C8E;MARCHEN LETTER HA;Lo;0;L;;;;;N;;;;; -+11C8F;MARCHEN LETTER A;Lo;0;L;;;;;N;;;;; -+11C92;MARCHEN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; -+11C93;MARCHEN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; -+11C94;MARCHEN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; -+11C95;MARCHEN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; -+11C96;MARCHEN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; -+11C97;MARCHEN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; -+11C98;MARCHEN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; -+11C99;MARCHEN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; -+11C9A;MARCHEN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; -+11C9B;MARCHEN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; -+11C9C;MARCHEN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; -+11C9D;MARCHEN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; -+11C9E;MARCHEN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; -+11C9F;MARCHEN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; -+11CA0;MARCHEN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; -+11CA1;MARCHEN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; -+11CA2;MARCHEN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; -+11CA3;MARCHEN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; -+11CA4;MARCHEN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; -+11CA5;MARCHEN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;;;; -+11CA6;MARCHEN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; -+11CA7;MARCHEN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; -+11CA9;MARCHEN SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; -+11CAA;MARCHEN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;;;; -+11CAB;MARCHEN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; -+11CAC;MARCHEN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; -+11CAD;MARCHEN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; -+11CAE;MARCHEN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; -+11CAF;MARCHEN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; -+11CB0;MARCHEN VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; -+11CB1;MARCHEN VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -+11CB2;MARCHEN VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -+11CB3;MARCHEN VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -+11CB4;MARCHEN VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -+11CB5;MARCHEN SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -+11CB6;MARCHEN SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; - 12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;; - 12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;; - 12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;; -@@ -23685,6 +24086,764 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 16F9D;MIAO LETTER REFORMED TONE-5;Lm;0;L;;;;;N;;;;; - 16F9E;MIAO LETTER REFORMED TONE-6;Lm;0;L;;;;;N;;;;; - 16F9F;MIAO LETTER REFORMED TONE-8;Lm;0;L;;;;;N;;;;; -+16FE0;TANGUT ITERATION MARK;Lm;0;L;;;;;N;;;;; -+17000;;Lo;0;L;;;;;N;;;;; -+187EC;;Lo;0;L;;;;;N;;;;; -+18800;TANGUT COMPONENT-001;Lo;0;L;;;;;N;;;;; -+18801;TANGUT COMPONENT-002;Lo;0;L;;;;;N;;;;; -+18802;TANGUT COMPONENT-003;Lo;0;L;;;;;N;;;;; -+18803;TANGUT COMPONENT-004;Lo;0;L;;;;;N;;;;; -+18804;TANGUT COMPONENT-005;Lo;0;L;;;;;N;;;;; -+18805;TANGUT COMPONENT-006;Lo;0;L;;;;;N;;;;; -+18806;TANGUT COMPONENT-007;Lo;0;L;;;;;N;;;;; -+18807;TANGUT COMPONENT-008;Lo;0;L;;;;;N;;;;; -+18808;TANGUT COMPONENT-009;Lo;0;L;;;;;N;;;;; -+18809;TANGUT COMPONENT-010;Lo;0;L;;;;;N;;;;; -+1880A;TANGUT COMPONENT-011;Lo;0;L;;;;;N;;;;; -+1880B;TANGUT COMPONENT-012;Lo;0;L;;;;;N;;;;; -+1880C;TANGUT COMPONENT-013;Lo;0;L;;;;;N;;;;; -+1880D;TANGUT COMPONENT-014;Lo;0;L;;;;;N;;;;; -+1880E;TANGUT COMPONENT-015;Lo;0;L;;;;;N;;;;; -+1880F;TANGUT COMPONENT-016;Lo;0;L;;;;;N;;;;; -+18810;TANGUT COMPONENT-017;Lo;0;L;;;;;N;;;;; -+18811;TANGUT COMPONENT-018;Lo;0;L;;;;;N;;;;; -+18812;TANGUT COMPONENT-019;Lo;0;L;;;;;N;;;;; -+18813;TANGUT COMPONENT-020;Lo;0;L;;;;;N;;;;; -+18814;TANGUT COMPONENT-021;Lo;0;L;;;;;N;;;;; -+18815;TANGUT COMPONENT-022;Lo;0;L;;;;;N;;;;; -+18816;TANGUT COMPONENT-023;Lo;0;L;;;;;N;;;;; -+18817;TANGUT COMPONENT-024;Lo;0;L;;;;;N;;;;; -+18818;TANGUT COMPONENT-025;Lo;0;L;;;;;N;;;;; -+18819;TANGUT COMPONENT-026;Lo;0;L;;;;;N;;;;; -+1881A;TANGUT COMPONENT-027;Lo;0;L;;;;;N;;;;; -+1881B;TANGUT COMPONENT-028;Lo;0;L;;;;;N;;;;; -+1881C;TANGUT COMPONENT-029;Lo;0;L;;;;;N;;;;; -+1881D;TANGUT COMPONENT-030;Lo;0;L;;;;;N;;;;; -+1881E;TANGUT COMPONENT-031;Lo;0;L;;;;;N;;;;; -+1881F;TANGUT COMPONENT-032;Lo;0;L;;;;;N;;;;; -+18820;TANGUT COMPONENT-033;Lo;0;L;;;;;N;;;;; -+18821;TANGUT COMPONENT-034;Lo;0;L;;;;;N;;;;; -+18822;TANGUT COMPONENT-035;Lo;0;L;;;;;N;;;;; -+18823;TANGUT COMPONENT-036;Lo;0;L;;;;;N;;;;; -+18824;TANGUT COMPONENT-037;Lo;0;L;;;;;N;;;;; -+18825;TANGUT COMPONENT-038;Lo;0;L;;;;;N;;;;; -+18826;TANGUT COMPONENT-039;Lo;0;L;;;;;N;;;;; -+18827;TANGUT COMPONENT-040;Lo;0;L;;;;;N;;;;; -+18828;TANGUT COMPONENT-041;Lo;0;L;;;;;N;;;;; -+18829;TANGUT COMPONENT-042;Lo;0;L;;;;;N;;;;; -+1882A;TANGUT COMPONENT-043;Lo;0;L;;;;;N;;;;; -+1882B;TANGUT COMPONENT-044;Lo;0;L;;;;;N;;;;; -+1882C;TANGUT COMPONENT-045;Lo;0;L;;;;;N;;;;; -+1882D;TANGUT COMPONENT-046;Lo;0;L;;;;;N;;;;; -+1882E;TANGUT COMPONENT-047;Lo;0;L;;;;;N;;;;; -+1882F;TANGUT COMPONENT-048;Lo;0;L;;;;;N;;;;; -+18830;TANGUT COMPONENT-049;Lo;0;L;;;;;N;;;;; -+18831;TANGUT COMPONENT-050;Lo;0;L;;;;;N;;;;; -+18832;TANGUT COMPONENT-051;Lo;0;L;;;;;N;;;;; -+18833;TANGUT COMPONENT-052;Lo;0;L;;;;;N;;;;; -+18834;TANGUT COMPONENT-053;Lo;0;L;;;;;N;;;;; -+18835;TANGUT COMPONENT-054;Lo;0;L;;;;;N;;;;; -+18836;TANGUT COMPONENT-055;Lo;0;L;;;;;N;;;;; -+18837;TANGUT COMPONENT-056;Lo;0;L;;;;;N;;;;; -+18838;TANGUT COMPONENT-057;Lo;0;L;;;;;N;;;;; -+18839;TANGUT COMPONENT-058;Lo;0;L;;;;;N;;;;; -+1883A;TANGUT COMPONENT-059;Lo;0;L;;;;;N;;;;; -+1883B;TANGUT COMPONENT-060;Lo;0;L;;;;;N;;;;; -+1883C;TANGUT COMPONENT-061;Lo;0;L;;;;;N;;;;; -+1883D;TANGUT COMPONENT-062;Lo;0;L;;;;;N;;;;; -+1883E;TANGUT COMPONENT-063;Lo;0;L;;;;;N;;;;; -+1883F;TANGUT COMPONENT-064;Lo;0;L;;;;;N;;;;; -+18840;TANGUT COMPONENT-065;Lo;0;L;;;;;N;;;;; -+18841;TANGUT COMPONENT-066;Lo;0;L;;;;;N;;;;; -+18842;TANGUT COMPONENT-067;Lo;0;L;;;;;N;;;;; -+18843;TANGUT COMPONENT-068;Lo;0;L;;;;;N;;;;; -+18844;TANGUT COMPONENT-069;Lo;0;L;;;;;N;;;;; -+18845;TANGUT COMPONENT-070;Lo;0;L;;;;;N;;;;; -+18846;TANGUT COMPONENT-071;Lo;0;L;;;;;N;;;;; -+18847;TANGUT COMPONENT-072;Lo;0;L;;;;;N;;;;; -+18848;TANGUT COMPONENT-073;Lo;0;L;;;;;N;;;;; -+18849;TANGUT COMPONENT-074;Lo;0;L;;;;;N;;;;; -+1884A;TANGUT COMPONENT-075;Lo;0;L;;;;;N;;;;; -+1884B;TANGUT COMPONENT-076;Lo;0;L;;;;;N;;;;; -+1884C;TANGUT COMPONENT-077;Lo;0;L;;;;;N;;;;; -+1884D;TANGUT COMPONENT-078;Lo;0;L;;;;;N;;;;; -+1884E;TANGUT COMPONENT-079;Lo;0;L;;;;;N;;;;; -+1884F;TANGUT COMPONENT-080;Lo;0;L;;;;;N;;;;; -+18850;TANGUT COMPONENT-081;Lo;0;L;;;;;N;;;;; -+18851;TANGUT COMPONENT-082;Lo;0;L;;;;;N;;;;; -+18852;TANGUT COMPONENT-083;Lo;0;L;;;;;N;;;;; -+18853;TANGUT COMPONENT-084;Lo;0;L;;;;;N;;;;; -+18854;TANGUT COMPONENT-085;Lo;0;L;;;;;N;;;;; -+18855;TANGUT COMPONENT-086;Lo;0;L;;;;;N;;;;; -+18856;TANGUT COMPONENT-087;Lo;0;L;;;;;N;;;;; -+18857;TANGUT COMPONENT-088;Lo;0;L;;;;;N;;;;; -+18858;TANGUT COMPONENT-089;Lo;0;L;;;;;N;;;;; -+18859;TANGUT COMPONENT-090;Lo;0;L;;;;;N;;;;; -+1885A;TANGUT COMPONENT-091;Lo;0;L;;;;;N;;;;; -+1885B;TANGUT COMPONENT-092;Lo;0;L;;;;;N;;;;; -+1885C;TANGUT COMPONENT-093;Lo;0;L;;;;;N;;;;; -+1885D;TANGUT COMPONENT-094;Lo;0;L;;;;;N;;;;; -+1885E;TANGUT COMPONENT-095;Lo;0;L;;;;;N;;;;; -+1885F;TANGUT COMPONENT-096;Lo;0;L;;;;;N;;;;; -+18860;TANGUT COMPONENT-097;Lo;0;L;;;;;N;;;;; -+18861;TANGUT COMPONENT-098;Lo;0;L;;;;;N;;;;; -+18862;TANGUT COMPONENT-099;Lo;0;L;;;;;N;;;;; -+18863;TANGUT COMPONENT-100;Lo;0;L;;;;;N;;;;; -+18864;TANGUT COMPONENT-101;Lo;0;L;;;;;N;;;;; -+18865;TANGUT COMPONENT-102;Lo;0;L;;;;;N;;;;; -+18866;TANGUT COMPONENT-103;Lo;0;L;;;;;N;;;;; -+18867;TANGUT COMPONENT-104;Lo;0;L;;;;;N;;;;; -+18868;TANGUT COMPONENT-105;Lo;0;L;;;;;N;;;;; -+18869;TANGUT COMPONENT-106;Lo;0;L;;;;;N;;;;; -+1886A;TANGUT COMPONENT-107;Lo;0;L;;;;;N;;;;; -+1886B;TANGUT COMPONENT-108;Lo;0;L;;;;;N;;;;; -+1886C;TANGUT COMPONENT-109;Lo;0;L;;;;;N;;;;; -+1886D;TANGUT COMPONENT-110;Lo;0;L;;;;;N;;;;; -+1886E;TANGUT COMPONENT-111;Lo;0;L;;;;;N;;;;; -+1886F;TANGUT COMPONENT-112;Lo;0;L;;;;;N;;;;; -+18870;TANGUT COMPONENT-113;Lo;0;L;;;;;N;;;;; -+18871;TANGUT COMPONENT-114;Lo;0;L;;;;;N;;;;; -+18872;TANGUT COMPONENT-115;Lo;0;L;;;;;N;;;;; -+18873;TANGUT COMPONENT-116;Lo;0;L;;;;;N;;;;; -+18874;TANGUT COMPONENT-117;Lo;0;L;;;;;N;;;;; -+18875;TANGUT COMPONENT-118;Lo;0;L;;;;;N;;;;; -+18876;TANGUT COMPONENT-119;Lo;0;L;;;;;N;;;;; -+18877;TANGUT COMPONENT-120;Lo;0;L;;;;;N;;;;; -+18878;TANGUT COMPONENT-121;Lo;0;L;;;;;N;;;;; -+18879;TANGUT COMPONENT-122;Lo;0;L;;;;;N;;;;; -+1887A;TANGUT COMPONENT-123;Lo;0;L;;;;;N;;;;; -+1887B;TANGUT COMPONENT-124;Lo;0;L;;;;;N;;;;; -+1887C;TANGUT COMPONENT-125;Lo;0;L;;;;;N;;;;; -+1887D;TANGUT COMPONENT-126;Lo;0;L;;;;;N;;;;; -+1887E;TANGUT COMPONENT-127;Lo;0;L;;;;;N;;;;; -+1887F;TANGUT COMPONENT-128;Lo;0;L;;;;;N;;;;; -+18880;TANGUT COMPONENT-129;Lo;0;L;;;;;N;;;;; -+18881;TANGUT COMPONENT-130;Lo;0;L;;;;;N;;;;; -+18882;TANGUT COMPONENT-131;Lo;0;L;;;;;N;;;;; -+18883;TANGUT COMPONENT-132;Lo;0;L;;;;;N;;;;; -+18884;TANGUT COMPONENT-133;Lo;0;L;;;;;N;;;;; -+18885;TANGUT COMPONENT-134;Lo;0;L;;;;;N;;;;; -+18886;TANGUT COMPONENT-135;Lo;0;L;;;;;N;;;;; -+18887;TANGUT COMPONENT-136;Lo;0;L;;;;;N;;;;; -+18888;TANGUT COMPONENT-137;Lo;0;L;;;;;N;;;;; -+18889;TANGUT COMPONENT-138;Lo;0;L;;;;;N;;;;; -+1888A;TANGUT COMPONENT-139;Lo;0;L;;;;;N;;;;; -+1888B;TANGUT COMPONENT-140;Lo;0;L;;;;;N;;;;; -+1888C;TANGUT COMPONENT-141;Lo;0;L;;;;;N;;;;; -+1888D;TANGUT COMPONENT-142;Lo;0;L;;;;;N;;;;; -+1888E;TANGUT COMPONENT-143;Lo;0;L;;;;;N;;;;; -+1888F;TANGUT COMPONENT-144;Lo;0;L;;;;;N;;;;; -+18890;TANGUT COMPONENT-145;Lo;0;L;;;;;N;;;;; -+18891;TANGUT COMPONENT-146;Lo;0;L;;;;;N;;;;; -+18892;TANGUT COMPONENT-147;Lo;0;L;;;;;N;;;;; -+18893;TANGUT COMPONENT-148;Lo;0;L;;;;;N;;;;; -+18894;TANGUT COMPONENT-149;Lo;0;L;;;;;N;;;;; -+18895;TANGUT COMPONENT-150;Lo;0;L;;;;;N;;;;; -+18896;TANGUT COMPONENT-151;Lo;0;L;;;;;N;;;;; -+18897;TANGUT COMPONENT-152;Lo;0;L;;;;;N;;;;; -+18898;TANGUT COMPONENT-153;Lo;0;L;;;;;N;;;;; -+18899;TANGUT COMPONENT-154;Lo;0;L;;;;;N;;;;; -+1889A;TANGUT COMPONENT-155;Lo;0;L;;;;;N;;;;; -+1889B;TANGUT COMPONENT-156;Lo;0;L;;;;;N;;;;; -+1889C;TANGUT COMPONENT-157;Lo;0;L;;;;;N;;;;; -+1889D;TANGUT COMPONENT-158;Lo;0;L;;;;;N;;;;; -+1889E;TANGUT COMPONENT-159;Lo;0;L;;;;;N;;;;; -+1889F;TANGUT COMPONENT-160;Lo;0;L;;;;;N;;;;; -+188A0;TANGUT COMPONENT-161;Lo;0;L;;;;;N;;;;; -+188A1;TANGUT COMPONENT-162;Lo;0;L;;;;;N;;;;; -+188A2;TANGUT COMPONENT-163;Lo;0;L;;;;;N;;;;; -+188A3;TANGUT COMPONENT-164;Lo;0;L;;;;;N;;;;; -+188A4;TANGUT COMPONENT-165;Lo;0;L;;;;;N;;;;; -+188A5;TANGUT COMPONENT-166;Lo;0;L;;;;;N;;;;; -+188A6;TANGUT COMPONENT-167;Lo;0;L;;;;;N;;;;; -+188A7;TANGUT COMPONENT-168;Lo;0;L;;;;;N;;;;; -+188A8;TANGUT COMPONENT-169;Lo;0;L;;;;;N;;;;; -+188A9;TANGUT COMPONENT-170;Lo;0;L;;;;;N;;;;; -+188AA;TANGUT COMPONENT-171;Lo;0;L;;;;;N;;;;; -+188AB;TANGUT COMPONENT-172;Lo;0;L;;;;;N;;;;; -+188AC;TANGUT COMPONENT-173;Lo;0;L;;;;;N;;;;; -+188AD;TANGUT COMPONENT-174;Lo;0;L;;;;;N;;;;; -+188AE;TANGUT COMPONENT-175;Lo;0;L;;;;;N;;;;; -+188AF;TANGUT COMPONENT-176;Lo;0;L;;;;;N;;;;; -+188B0;TANGUT COMPONENT-177;Lo;0;L;;;;;N;;;;; -+188B1;TANGUT COMPONENT-178;Lo;0;L;;;;;N;;;;; -+188B2;TANGUT COMPONENT-179;Lo;0;L;;;;;N;;;;; -+188B3;TANGUT COMPONENT-180;Lo;0;L;;;;;N;;;;; -+188B4;TANGUT COMPONENT-181;Lo;0;L;;;;;N;;;;; -+188B5;TANGUT COMPONENT-182;Lo;0;L;;;;;N;;;;; -+188B6;TANGUT COMPONENT-183;Lo;0;L;;;;;N;;;;; -+188B7;TANGUT COMPONENT-184;Lo;0;L;;;;;N;;;;; -+188B8;TANGUT COMPONENT-185;Lo;0;L;;;;;N;;;;; -+188B9;TANGUT COMPONENT-186;Lo;0;L;;;;;N;;;;; -+188BA;TANGUT COMPONENT-187;Lo;0;L;;;;;N;;;;; -+188BB;TANGUT COMPONENT-188;Lo;0;L;;;;;N;;;;; -+188BC;TANGUT COMPONENT-189;Lo;0;L;;;;;N;;;;; -+188BD;TANGUT COMPONENT-190;Lo;0;L;;;;;N;;;;; -+188BE;TANGUT COMPONENT-191;Lo;0;L;;;;;N;;;;; -+188BF;TANGUT COMPONENT-192;Lo;0;L;;;;;N;;;;; -+188C0;TANGUT COMPONENT-193;Lo;0;L;;;;;N;;;;; -+188C1;TANGUT COMPONENT-194;Lo;0;L;;;;;N;;;;; -+188C2;TANGUT COMPONENT-195;Lo;0;L;;;;;N;;;;; -+188C3;TANGUT COMPONENT-196;Lo;0;L;;;;;N;;;;; -+188C4;TANGUT COMPONENT-197;Lo;0;L;;;;;N;;;;; -+188C5;TANGUT COMPONENT-198;Lo;0;L;;;;;N;;;;; -+188C6;TANGUT COMPONENT-199;Lo;0;L;;;;;N;;;;; -+188C7;TANGUT COMPONENT-200;Lo;0;L;;;;;N;;;;; -+188C8;TANGUT COMPONENT-201;Lo;0;L;;;;;N;;;;; -+188C9;TANGUT COMPONENT-202;Lo;0;L;;;;;N;;;;; -+188CA;TANGUT COMPONENT-203;Lo;0;L;;;;;N;;;;; -+188CB;TANGUT COMPONENT-204;Lo;0;L;;;;;N;;;;; -+188CC;TANGUT COMPONENT-205;Lo;0;L;;;;;N;;;;; -+188CD;TANGUT COMPONENT-206;Lo;0;L;;;;;N;;;;; -+188CE;TANGUT COMPONENT-207;Lo;0;L;;;;;N;;;;; -+188CF;TANGUT COMPONENT-208;Lo;0;L;;;;;N;;;;; -+188D0;TANGUT COMPONENT-209;Lo;0;L;;;;;N;;;;; -+188D1;TANGUT COMPONENT-210;Lo;0;L;;;;;N;;;;; -+188D2;TANGUT COMPONENT-211;Lo;0;L;;;;;N;;;;; -+188D3;TANGUT COMPONENT-212;Lo;0;L;;;;;N;;;;; -+188D4;TANGUT COMPONENT-213;Lo;0;L;;;;;N;;;;; -+188D5;TANGUT COMPONENT-214;Lo;0;L;;;;;N;;;;; -+188D6;TANGUT COMPONENT-215;Lo;0;L;;;;;N;;;;; -+188D7;TANGUT COMPONENT-216;Lo;0;L;;;;;N;;;;; -+188D8;TANGUT COMPONENT-217;Lo;0;L;;;;;N;;;;; -+188D9;TANGUT COMPONENT-218;Lo;0;L;;;;;N;;;;; -+188DA;TANGUT COMPONENT-219;Lo;0;L;;;;;N;;;;; -+188DB;TANGUT COMPONENT-220;Lo;0;L;;;;;N;;;;; -+188DC;TANGUT COMPONENT-221;Lo;0;L;;;;;N;;;;; -+188DD;TANGUT COMPONENT-222;Lo;0;L;;;;;N;;;;; -+188DE;TANGUT COMPONENT-223;Lo;0;L;;;;;N;;;;; -+188DF;TANGUT COMPONENT-224;Lo;0;L;;;;;N;;;;; -+188E0;TANGUT COMPONENT-225;Lo;0;L;;;;;N;;;;; -+188E1;TANGUT COMPONENT-226;Lo;0;L;;;;;N;;;;; -+188E2;TANGUT COMPONENT-227;Lo;0;L;;;;;N;;;;; -+188E3;TANGUT COMPONENT-228;Lo;0;L;;;;;N;;;;; -+188E4;TANGUT COMPONENT-229;Lo;0;L;;;;;N;;;;; -+188E5;TANGUT COMPONENT-230;Lo;0;L;;;;;N;;;;; -+188E6;TANGUT COMPONENT-231;Lo;0;L;;;;;N;;;;; -+188E7;TANGUT COMPONENT-232;Lo;0;L;;;;;N;;;;; -+188E8;TANGUT COMPONENT-233;Lo;0;L;;;;;N;;;;; -+188E9;TANGUT COMPONENT-234;Lo;0;L;;;;;N;;;;; -+188EA;TANGUT COMPONENT-235;Lo;0;L;;;;;N;;;;; -+188EB;TANGUT COMPONENT-236;Lo;0;L;;;;;N;;;;; -+188EC;TANGUT COMPONENT-237;Lo;0;L;;;;;N;;;;; -+188ED;TANGUT COMPONENT-238;Lo;0;L;;;;;N;;;;; -+188EE;TANGUT COMPONENT-239;Lo;0;L;;;;;N;;;;; -+188EF;TANGUT COMPONENT-240;Lo;0;L;;;;;N;;;;; -+188F0;TANGUT COMPONENT-241;Lo;0;L;;;;;N;;;;; -+188F1;TANGUT COMPONENT-242;Lo;0;L;;;;;N;;;;; -+188F2;TANGUT COMPONENT-243;Lo;0;L;;;;;N;;;;; -+188F3;TANGUT COMPONENT-244;Lo;0;L;;;;;N;;;;; -+188F4;TANGUT COMPONENT-245;Lo;0;L;;;;;N;;;;; -+188F5;TANGUT COMPONENT-246;Lo;0;L;;;;;N;;;;; -+188F6;TANGUT COMPONENT-247;Lo;0;L;;;;;N;;;;; -+188F7;TANGUT COMPONENT-248;Lo;0;L;;;;;N;;;;; -+188F8;TANGUT COMPONENT-249;Lo;0;L;;;;;N;;;;; -+188F9;TANGUT COMPONENT-250;Lo;0;L;;;;;N;;;;; -+188FA;TANGUT COMPONENT-251;Lo;0;L;;;;;N;;;;; -+188FB;TANGUT COMPONENT-252;Lo;0;L;;;;;N;;;;; -+188FC;TANGUT COMPONENT-253;Lo;0;L;;;;;N;;;;; -+188FD;TANGUT COMPONENT-254;Lo;0;L;;;;;N;;;;; -+188FE;TANGUT COMPONENT-255;Lo;0;L;;;;;N;;;;; -+188FF;TANGUT COMPONENT-256;Lo;0;L;;;;;N;;;;; -+18900;TANGUT COMPONENT-257;Lo;0;L;;;;;N;;;;; -+18901;TANGUT COMPONENT-258;Lo;0;L;;;;;N;;;;; -+18902;TANGUT COMPONENT-259;Lo;0;L;;;;;N;;;;; -+18903;TANGUT COMPONENT-260;Lo;0;L;;;;;N;;;;; -+18904;TANGUT COMPONENT-261;Lo;0;L;;;;;N;;;;; -+18905;TANGUT COMPONENT-262;Lo;0;L;;;;;N;;;;; -+18906;TANGUT COMPONENT-263;Lo;0;L;;;;;N;;;;; -+18907;TANGUT COMPONENT-264;Lo;0;L;;;;;N;;;;; -+18908;TANGUT COMPONENT-265;Lo;0;L;;;;;N;;;;; -+18909;TANGUT COMPONENT-266;Lo;0;L;;;;;N;;;;; -+1890A;TANGUT COMPONENT-267;Lo;0;L;;;;;N;;;;; -+1890B;TANGUT COMPONENT-268;Lo;0;L;;;;;N;;;;; -+1890C;TANGUT COMPONENT-269;Lo;0;L;;;;;N;;;;; -+1890D;TANGUT COMPONENT-270;Lo;0;L;;;;;N;;;;; -+1890E;TANGUT COMPONENT-271;Lo;0;L;;;;;N;;;;; -+1890F;TANGUT COMPONENT-272;Lo;0;L;;;;;N;;;;; -+18910;TANGUT COMPONENT-273;Lo;0;L;;;;;N;;;;; -+18911;TANGUT COMPONENT-274;Lo;0;L;;;;;N;;;;; -+18912;TANGUT COMPONENT-275;Lo;0;L;;;;;N;;;;; -+18913;TANGUT COMPONENT-276;Lo;0;L;;;;;N;;;;; -+18914;TANGUT COMPONENT-277;Lo;0;L;;;;;N;;;;; -+18915;TANGUT COMPONENT-278;Lo;0;L;;;;;N;;;;; -+18916;TANGUT COMPONENT-279;Lo;0;L;;;;;N;;;;; -+18917;TANGUT COMPONENT-280;Lo;0;L;;;;;N;;;;; -+18918;TANGUT COMPONENT-281;Lo;0;L;;;;;N;;;;; -+18919;TANGUT COMPONENT-282;Lo;0;L;;;;;N;;;;; -+1891A;TANGUT COMPONENT-283;Lo;0;L;;;;;N;;;;; -+1891B;TANGUT COMPONENT-284;Lo;0;L;;;;;N;;;;; -+1891C;TANGUT COMPONENT-285;Lo;0;L;;;;;N;;;;; -+1891D;TANGUT COMPONENT-286;Lo;0;L;;;;;N;;;;; -+1891E;TANGUT COMPONENT-287;Lo;0;L;;;;;N;;;;; -+1891F;TANGUT COMPONENT-288;Lo;0;L;;;;;N;;;;; -+18920;TANGUT COMPONENT-289;Lo;0;L;;;;;N;;;;; -+18921;TANGUT COMPONENT-290;Lo;0;L;;;;;N;;;;; -+18922;TANGUT COMPONENT-291;Lo;0;L;;;;;N;;;;; -+18923;TANGUT COMPONENT-292;Lo;0;L;;;;;N;;;;; -+18924;TANGUT COMPONENT-293;Lo;0;L;;;;;N;;;;; -+18925;TANGUT COMPONENT-294;Lo;0;L;;;;;N;;;;; -+18926;TANGUT COMPONENT-295;Lo;0;L;;;;;N;;;;; -+18927;TANGUT COMPONENT-296;Lo;0;L;;;;;N;;;;; -+18928;TANGUT COMPONENT-297;Lo;0;L;;;;;N;;;;; -+18929;TANGUT COMPONENT-298;Lo;0;L;;;;;N;;;;; -+1892A;TANGUT COMPONENT-299;Lo;0;L;;;;;N;;;;; -+1892B;TANGUT COMPONENT-300;Lo;0;L;;;;;N;;;;; -+1892C;TANGUT COMPONENT-301;Lo;0;L;;;;;N;;;;; -+1892D;TANGUT COMPONENT-302;Lo;0;L;;;;;N;;;;; -+1892E;TANGUT COMPONENT-303;Lo;0;L;;;;;N;;;;; -+1892F;TANGUT COMPONENT-304;Lo;0;L;;;;;N;;;;; -+18930;TANGUT COMPONENT-305;Lo;0;L;;;;;N;;;;; -+18931;TANGUT COMPONENT-306;Lo;0;L;;;;;N;;;;; -+18932;TANGUT COMPONENT-307;Lo;0;L;;;;;N;;;;; -+18933;TANGUT COMPONENT-308;Lo;0;L;;;;;N;;;;; -+18934;TANGUT COMPONENT-309;Lo;0;L;;;;;N;;;;; -+18935;TANGUT COMPONENT-310;Lo;0;L;;;;;N;;;;; -+18936;TANGUT COMPONENT-311;Lo;0;L;;;;;N;;;;; -+18937;TANGUT COMPONENT-312;Lo;0;L;;;;;N;;;;; -+18938;TANGUT COMPONENT-313;Lo;0;L;;;;;N;;;;; -+18939;TANGUT COMPONENT-314;Lo;0;L;;;;;N;;;;; -+1893A;TANGUT COMPONENT-315;Lo;0;L;;;;;N;;;;; -+1893B;TANGUT COMPONENT-316;Lo;0;L;;;;;N;;;;; -+1893C;TANGUT COMPONENT-317;Lo;0;L;;;;;N;;;;; -+1893D;TANGUT COMPONENT-318;Lo;0;L;;;;;N;;;;; -+1893E;TANGUT COMPONENT-319;Lo;0;L;;;;;N;;;;; -+1893F;TANGUT COMPONENT-320;Lo;0;L;;;;;N;;;;; -+18940;TANGUT COMPONENT-321;Lo;0;L;;;;;N;;;;; -+18941;TANGUT COMPONENT-322;Lo;0;L;;;;;N;;;;; -+18942;TANGUT COMPONENT-323;Lo;0;L;;;;;N;;;;; -+18943;TANGUT COMPONENT-324;Lo;0;L;;;;;N;;;;; -+18944;TANGUT COMPONENT-325;Lo;0;L;;;;;N;;;;; -+18945;TANGUT COMPONENT-326;Lo;0;L;;;;;N;;;;; -+18946;TANGUT COMPONENT-327;Lo;0;L;;;;;N;;;;; -+18947;TANGUT COMPONENT-328;Lo;0;L;;;;;N;;;;; -+18948;TANGUT COMPONENT-329;Lo;0;L;;;;;N;;;;; -+18949;TANGUT COMPONENT-330;Lo;0;L;;;;;N;;;;; -+1894A;TANGUT COMPONENT-331;Lo;0;L;;;;;N;;;;; -+1894B;TANGUT COMPONENT-332;Lo;0;L;;;;;N;;;;; -+1894C;TANGUT COMPONENT-333;Lo;0;L;;;;;N;;;;; -+1894D;TANGUT COMPONENT-334;Lo;0;L;;;;;N;;;;; -+1894E;TANGUT COMPONENT-335;Lo;0;L;;;;;N;;;;; -+1894F;TANGUT COMPONENT-336;Lo;0;L;;;;;N;;;;; -+18950;TANGUT COMPONENT-337;Lo;0;L;;;;;N;;;;; -+18951;TANGUT COMPONENT-338;Lo;0;L;;;;;N;;;;; -+18952;TANGUT COMPONENT-339;Lo;0;L;;;;;N;;;;; -+18953;TANGUT COMPONENT-340;Lo;0;L;;;;;N;;;;; -+18954;TANGUT COMPONENT-341;Lo;0;L;;;;;N;;;;; -+18955;TANGUT COMPONENT-342;Lo;0;L;;;;;N;;;;; -+18956;TANGUT COMPONENT-343;Lo;0;L;;;;;N;;;;; -+18957;TANGUT COMPONENT-344;Lo;0;L;;;;;N;;;;; -+18958;TANGUT COMPONENT-345;Lo;0;L;;;;;N;;;;; -+18959;TANGUT COMPONENT-346;Lo;0;L;;;;;N;;;;; -+1895A;TANGUT COMPONENT-347;Lo;0;L;;;;;N;;;;; -+1895B;TANGUT COMPONENT-348;Lo;0;L;;;;;N;;;;; -+1895C;TANGUT COMPONENT-349;Lo;0;L;;;;;N;;;;; -+1895D;TANGUT COMPONENT-350;Lo;0;L;;;;;N;;;;; -+1895E;TANGUT COMPONENT-351;Lo;0;L;;;;;N;;;;; -+1895F;TANGUT COMPONENT-352;Lo;0;L;;;;;N;;;;; -+18960;TANGUT COMPONENT-353;Lo;0;L;;;;;N;;;;; -+18961;TANGUT COMPONENT-354;Lo;0;L;;;;;N;;;;; -+18962;TANGUT COMPONENT-355;Lo;0;L;;;;;N;;;;; -+18963;TANGUT COMPONENT-356;Lo;0;L;;;;;N;;;;; -+18964;TANGUT COMPONENT-357;Lo;0;L;;;;;N;;;;; -+18965;TANGUT COMPONENT-358;Lo;0;L;;;;;N;;;;; -+18966;TANGUT COMPONENT-359;Lo;0;L;;;;;N;;;;; -+18967;TANGUT COMPONENT-360;Lo;0;L;;;;;N;;;;; -+18968;TANGUT COMPONENT-361;Lo;0;L;;;;;N;;;;; -+18969;TANGUT COMPONENT-362;Lo;0;L;;;;;N;;;;; -+1896A;TANGUT COMPONENT-363;Lo;0;L;;;;;N;;;;; -+1896B;TANGUT COMPONENT-364;Lo;0;L;;;;;N;;;;; -+1896C;TANGUT COMPONENT-365;Lo;0;L;;;;;N;;;;; -+1896D;TANGUT COMPONENT-366;Lo;0;L;;;;;N;;;;; -+1896E;TANGUT COMPONENT-367;Lo;0;L;;;;;N;;;;; -+1896F;TANGUT COMPONENT-368;Lo;0;L;;;;;N;;;;; -+18970;TANGUT COMPONENT-369;Lo;0;L;;;;;N;;;;; -+18971;TANGUT COMPONENT-370;Lo;0;L;;;;;N;;;;; -+18972;TANGUT COMPONENT-371;Lo;0;L;;;;;N;;;;; -+18973;TANGUT COMPONENT-372;Lo;0;L;;;;;N;;;;; -+18974;TANGUT COMPONENT-373;Lo;0;L;;;;;N;;;;; -+18975;TANGUT COMPONENT-374;Lo;0;L;;;;;N;;;;; -+18976;TANGUT COMPONENT-375;Lo;0;L;;;;;N;;;;; -+18977;TANGUT COMPONENT-376;Lo;0;L;;;;;N;;;;; -+18978;TANGUT COMPONENT-377;Lo;0;L;;;;;N;;;;; -+18979;TANGUT COMPONENT-378;Lo;0;L;;;;;N;;;;; -+1897A;TANGUT COMPONENT-379;Lo;0;L;;;;;N;;;;; -+1897B;TANGUT COMPONENT-380;Lo;0;L;;;;;N;;;;; -+1897C;TANGUT COMPONENT-381;Lo;0;L;;;;;N;;;;; -+1897D;TANGUT COMPONENT-382;Lo;0;L;;;;;N;;;;; -+1897E;TANGUT COMPONENT-383;Lo;0;L;;;;;N;;;;; -+1897F;TANGUT COMPONENT-384;Lo;0;L;;;;;N;;;;; -+18980;TANGUT COMPONENT-385;Lo;0;L;;;;;N;;;;; -+18981;TANGUT COMPONENT-386;Lo;0;L;;;;;N;;;;; -+18982;TANGUT COMPONENT-387;Lo;0;L;;;;;N;;;;; -+18983;TANGUT COMPONENT-388;Lo;0;L;;;;;N;;;;; -+18984;TANGUT COMPONENT-389;Lo;0;L;;;;;N;;;;; -+18985;TANGUT COMPONENT-390;Lo;0;L;;;;;N;;;;; -+18986;TANGUT COMPONENT-391;Lo;0;L;;;;;N;;;;; -+18987;TANGUT COMPONENT-392;Lo;0;L;;;;;N;;;;; -+18988;TANGUT COMPONENT-393;Lo;0;L;;;;;N;;;;; -+18989;TANGUT COMPONENT-394;Lo;0;L;;;;;N;;;;; -+1898A;TANGUT COMPONENT-395;Lo;0;L;;;;;N;;;;; -+1898B;TANGUT COMPONENT-396;Lo;0;L;;;;;N;;;;; -+1898C;TANGUT COMPONENT-397;Lo;0;L;;;;;N;;;;; -+1898D;TANGUT COMPONENT-398;Lo;0;L;;;;;N;;;;; -+1898E;TANGUT COMPONENT-399;Lo;0;L;;;;;N;;;;; -+1898F;TANGUT COMPONENT-400;Lo;0;L;;;;;N;;;;; -+18990;TANGUT COMPONENT-401;Lo;0;L;;;;;N;;;;; -+18991;TANGUT COMPONENT-402;Lo;0;L;;;;;N;;;;; -+18992;TANGUT COMPONENT-403;Lo;0;L;;;;;N;;;;; -+18993;TANGUT COMPONENT-404;Lo;0;L;;;;;N;;;;; -+18994;TANGUT COMPONENT-405;Lo;0;L;;;;;N;;;;; -+18995;TANGUT COMPONENT-406;Lo;0;L;;;;;N;;;;; -+18996;TANGUT COMPONENT-407;Lo;0;L;;;;;N;;;;; -+18997;TANGUT COMPONENT-408;Lo;0;L;;;;;N;;;;; -+18998;TANGUT COMPONENT-409;Lo;0;L;;;;;N;;;;; -+18999;TANGUT COMPONENT-410;Lo;0;L;;;;;N;;;;; -+1899A;TANGUT COMPONENT-411;Lo;0;L;;;;;N;;;;; -+1899B;TANGUT COMPONENT-412;Lo;0;L;;;;;N;;;;; -+1899C;TANGUT COMPONENT-413;Lo;0;L;;;;;N;;;;; -+1899D;TANGUT COMPONENT-414;Lo;0;L;;;;;N;;;;; -+1899E;TANGUT COMPONENT-415;Lo;0;L;;;;;N;;;;; -+1899F;TANGUT COMPONENT-416;Lo;0;L;;;;;N;;;;; -+189A0;TANGUT COMPONENT-417;Lo;0;L;;;;;N;;;;; -+189A1;TANGUT COMPONENT-418;Lo;0;L;;;;;N;;;;; -+189A2;TANGUT COMPONENT-419;Lo;0;L;;;;;N;;;;; -+189A3;TANGUT COMPONENT-420;Lo;0;L;;;;;N;;;;; -+189A4;TANGUT COMPONENT-421;Lo;0;L;;;;;N;;;;; -+189A5;TANGUT COMPONENT-422;Lo;0;L;;;;;N;;;;; -+189A6;TANGUT COMPONENT-423;Lo;0;L;;;;;N;;;;; -+189A7;TANGUT COMPONENT-424;Lo;0;L;;;;;N;;;;; -+189A8;TANGUT COMPONENT-425;Lo;0;L;;;;;N;;;;; -+189A9;TANGUT COMPONENT-426;Lo;0;L;;;;;N;;;;; -+189AA;TANGUT COMPONENT-427;Lo;0;L;;;;;N;;;;; -+189AB;TANGUT COMPONENT-428;Lo;0;L;;;;;N;;;;; -+189AC;TANGUT COMPONENT-429;Lo;0;L;;;;;N;;;;; -+189AD;TANGUT COMPONENT-430;Lo;0;L;;;;;N;;;;; -+189AE;TANGUT COMPONENT-431;Lo;0;L;;;;;N;;;;; -+189AF;TANGUT COMPONENT-432;Lo;0;L;;;;;N;;;;; -+189B0;TANGUT COMPONENT-433;Lo;0;L;;;;;N;;;;; -+189B1;TANGUT COMPONENT-434;Lo;0;L;;;;;N;;;;; -+189B2;TANGUT COMPONENT-435;Lo;0;L;;;;;N;;;;; -+189B3;TANGUT COMPONENT-436;Lo;0;L;;;;;N;;;;; -+189B4;TANGUT COMPONENT-437;Lo;0;L;;;;;N;;;;; -+189B5;TANGUT COMPONENT-438;Lo;0;L;;;;;N;;;;; -+189B6;TANGUT COMPONENT-439;Lo;0;L;;;;;N;;;;; -+189B7;TANGUT COMPONENT-440;Lo;0;L;;;;;N;;;;; -+189B8;TANGUT COMPONENT-441;Lo;0;L;;;;;N;;;;; -+189B9;TANGUT COMPONENT-442;Lo;0;L;;;;;N;;;;; -+189BA;TANGUT COMPONENT-443;Lo;0;L;;;;;N;;;;; -+189BB;TANGUT COMPONENT-444;Lo;0;L;;;;;N;;;;; -+189BC;TANGUT COMPONENT-445;Lo;0;L;;;;;N;;;;; -+189BD;TANGUT COMPONENT-446;Lo;0;L;;;;;N;;;;; -+189BE;TANGUT COMPONENT-447;Lo;0;L;;;;;N;;;;; -+189BF;TANGUT COMPONENT-448;Lo;0;L;;;;;N;;;;; -+189C0;TANGUT COMPONENT-449;Lo;0;L;;;;;N;;;;; -+189C1;TANGUT COMPONENT-450;Lo;0;L;;;;;N;;;;; -+189C2;TANGUT COMPONENT-451;Lo;0;L;;;;;N;;;;; -+189C3;TANGUT COMPONENT-452;Lo;0;L;;;;;N;;;;; -+189C4;TANGUT COMPONENT-453;Lo;0;L;;;;;N;;;;; -+189C5;TANGUT COMPONENT-454;Lo;0;L;;;;;N;;;;; -+189C6;TANGUT COMPONENT-455;Lo;0;L;;;;;N;;;;; -+189C7;TANGUT COMPONENT-456;Lo;0;L;;;;;N;;;;; -+189C8;TANGUT COMPONENT-457;Lo;0;L;;;;;N;;;;; -+189C9;TANGUT COMPONENT-458;Lo;0;L;;;;;N;;;;; -+189CA;TANGUT COMPONENT-459;Lo;0;L;;;;;N;;;;; -+189CB;TANGUT COMPONENT-460;Lo;0;L;;;;;N;;;;; -+189CC;TANGUT COMPONENT-461;Lo;0;L;;;;;N;;;;; -+189CD;TANGUT COMPONENT-462;Lo;0;L;;;;;N;;;;; -+189CE;TANGUT COMPONENT-463;Lo;0;L;;;;;N;;;;; -+189CF;TANGUT COMPONENT-464;Lo;0;L;;;;;N;;;;; -+189D0;TANGUT COMPONENT-465;Lo;0;L;;;;;N;;;;; -+189D1;TANGUT COMPONENT-466;Lo;0;L;;;;;N;;;;; -+189D2;TANGUT COMPONENT-467;Lo;0;L;;;;;N;;;;; -+189D3;TANGUT COMPONENT-468;Lo;0;L;;;;;N;;;;; -+189D4;TANGUT COMPONENT-469;Lo;0;L;;;;;N;;;;; -+189D5;TANGUT COMPONENT-470;Lo;0;L;;;;;N;;;;; -+189D6;TANGUT COMPONENT-471;Lo;0;L;;;;;N;;;;; -+189D7;TANGUT COMPONENT-472;Lo;0;L;;;;;N;;;;; -+189D8;TANGUT COMPONENT-473;Lo;0;L;;;;;N;;;;; -+189D9;TANGUT COMPONENT-474;Lo;0;L;;;;;N;;;;; -+189DA;TANGUT COMPONENT-475;Lo;0;L;;;;;N;;;;; -+189DB;TANGUT COMPONENT-476;Lo;0;L;;;;;N;;;;; -+189DC;TANGUT COMPONENT-477;Lo;0;L;;;;;N;;;;; -+189DD;TANGUT COMPONENT-478;Lo;0;L;;;;;N;;;;; -+189DE;TANGUT COMPONENT-479;Lo;0;L;;;;;N;;;;; -+189DF;TANGUT COMPONENT-480;Lo;0;L;;;;;N;;;;; -+189E0;TANGUT COMPONENT-481;Lo;0;L;;;;;N;;;;; -+189E1;TANGUT COMPONENT-482;Lo;0;L;;;;;N;;;;; -+189E2;TANGUT COMPONENT-483;Lo;0;L;;;;;N;;;;; -+189E3;TANGUT COMPONENT-484;Lo;0;L;;;;;N;;;;; -+189E4;TANGUT COMPONENT-485;Lo;0;L;;;;;N;;;;; -+189E5;TANGUT COMPONENT-486;Lo;0;L;;;;;N;;;;; -+189E6;TANGUT COMPONENT-487;Lo;0;L;;;;;N;;;;; -+189E7;TANGUT COMPONENT-488;Lo;0;L;;;;;N;;;;; -+189E8;TANGUT COMPONENT-489;Lo;0;L;;;;;N;;;;; -+189E9;TANGUT COMPONENT-490;Lo;0;L;;;;;N;;;;; -+189EA;TANGUT COMPONENT-491;Lo;0;L;;;;;N;;;;; -+189EB;TANGUT COMPONENT-492;Lo;0;L;;;;;N;;;;; -+189EC;TANGUT COMPONENT-493;Lo;0;L;;;;;N;;;;; -+189ED;TANGUT COMPONENT-494;Lo;0;L;;;;;N;;;;; -+189EE;TANGUT COMPONENT-495;Lo;0;L;;;;;N;;;;; -+189EF;TANGUT COMPONENT-496;Lo;0;L;;;;;N;;;;; -+189F0;TANGUT COMPONENT-497;Lo;0;L;;;;;N;;;;; -+189F1;TANGUT COMPONENT-498;Lo;0;L;;;;;N;;;;; -+189F2;TANGUT COMPONENT-499;Lo;0;L;;;;;N;;;;; -+189F3;TANGUT COMPONENT-500;Lo;0;L;;;;;N;;;;; -+189F4;TANGUT COMPONENT-501;Lo;0;L;;;;;N;;;;; -+189F5;TANGUT COMPONENT-502;Lo;0;L;;;;;N;;;;; -+189F6;TANGUT COMPONENT-503;Lo;0;L;;;;;N;;;;; -+189F7;TANGUT COMPONENT-504;Lo;0;L;;;;;N;;;;; -+189F8;TANGUT COMPONENT-505;Lo;0;L;;;;;N;;;;; -+189F9;TANGUT COMPONENT-506;Lo;0;L;;;;;N;;;;; -+189FA;TANGUT COMPONENT-507;Lo;0;L;;;;;N;;;;; -+189FB;TANGUT COMPONENT-508;Lo;0;L;;;;;N;;;;; -+189FC;TANGUT COMPONENT-509;Lo;0;L;;;;;N;;;;; -+189FD;TANGUT COMPONENT-510;Lo;0;L;;;;;N;;;;; -+189FE;TANGUT COMPONENT-511;Lo;0;L;;;;;N;;;;; -+189FF;TANGUT COMPONENT-512;Lo;0;L;;;;;N;;;;; -+18A00;TANGUT COMPONENT-513;Lo;0;L;;;;;N;;;;; -+18A01;TANGUT COMPONENT-514;Lo;0;L;;;;;N;;;;; -+18A02;TANGUT COMPONENT-515;Lo;0;L;;;;;N;;;;; -+18A03;TANGUT COMPONENT-516;Lo;0;L;;;;;N;;;;; -+18A04;TANGUT COMPONENT-517;Lo;0;L;;;;;N;;;;; -+18A05;TANGUT COMPONENT-518;Lo;0;L;;;;;N;;;;; -+18A06;TANGUT COMPONENT-519;Lo;0;L;;;;;N;;;;; -+18A07;TANGUT COMPONENT-520;Lo;0;L;;;;;N;;;;; -+18A08;TANGUT COMPONENT-521;Lo;0;L;;;;;N;;;;; -+18A09;TANGUT COMPONENT-522;Lo;0;L;;;;;N;;;;; -+18A0A;TANGUT COMPONENT-523;Lo;0;L;;;;;N;;;;; -+18A0B;TANGUT COMPONENT-524;Lo;0;L;;;;;N;;;;; -+18A0C;TANGUT COMPONENT-525;Lo;0;L;;;;;N;;;;; -+18A0D;TANGUT COMPONENT-526;Lo;0;L;;;;;N;;;;; -+18A0E;TANGUT COMPONENT-527;Lo;0;L;;;;;N;;;;; -+18A0F;TANGUT COMPONENT-528;Lo;0;L;;;;;N;;;;; -+18A10;TANGUT COMPONENT-529;Lo;0;L;;;;;N;;;;; -+18A11;TANGUT COMPONENT-530;Lo;0;L;;;;;N;;;;; -+18A12;TANGUT COMPONENT-531;Lo;0;L;;;;;N;;;;; -+18A13;TANGUT COMPONENT-532;Lo;0;L;;;;;N;;;;; -+18A14;TANGUT COMPONENT-533;Lo;0;L;;;;;N;;;;; -+18A15;TANGUT COMPONENT-534;Lo;0;L;;;;;N;;;;; -+18A16;TANGUT COMPONENT-535;Lo;0;L;;;;;N;;;;; -+18A17;TANGUT COMPONENT-536;Lo;0;L;;;;;N;;;;; -+18A18;TANGUT COMPONENT-537;Lo;0;L;;;;;N;;;;; -+18A19;TANGUT COMPONENT-538;Lo;0;L;;;;;N;;;;; -+18A1A;TANGUT COMPONENT-539;Lo;0;L;;;;;N;;;;; -+18A1B;TANGUT COMPONENT-540;Lo;0;L;;;;;N;;;;; -+18A1C;TANGUT COMPONENT-541;Lo;0;L;;;;;N;;;;; -+18A1D;TANGUT COMPONENT-542;Lo;0;L;;;;;N;;;;; -+18A1E;TANGUT COMPONENT-543;Lo;0;L;;;;;N;;;;; -+18A1F;TANGUT COMPONENT-544;Lo;0;L;;;;;N;;;;; -+18A20;TANGUT COMPONENT-545;Lo;0;L;;;;;N;;;;; -+18A21;TANGUT COMPONENT-546;Lo;0;L;;;;;N;;;;; -+18A22;TANGUT COMPONENT-547;Lo;0;L;;;;;N;;;;; -+18A23;TANGUT COMPONENT-548;Lo;0;L;;;;;N;;;;; -+18A24;TANGUT COMPONENT-549;Lo;0;L;;;;;N;;;;; -+18A25;TANGUT COMPONENT-550;Lo;0;L;;;;;N;;;;; -+18A26;TANGUT COMPONENT-551;Lo;0;L;;;;;N;;;;; -+18A27;TANGUT COMPONENT-552;Lo;0;L;;;;;N;;;;; -+18A28;TANGUT COMPONENT-553;Lo;0;L;;;;;N;;;;; -+18A29;TANGUT COMPONENT-554;Lo;0;L;;;;;N;;;;; -+18A2A;TANGUT COMPONENT-555;Lo;0;L;;;;;N;;;;; -+18A2B;TANGUT COMPONENT-556;Lo;0;L;;;;;N;;;;; -+18A2C;TANGUT COMPONENT-557;Lo;0;L;;;;;N;;;;; -+18A2D;TANGUT COMPONENT-558;Lo;0;L;;;;;N;;;;; -+18A2E;TANGUT COMPONENT-559;Lo;0;L;;;;;N;;;;; -+18A2F;TANGUT COMPONENT-560;Lo;0;L;;;;;N;;;;; -+18A30;TANGUT COMPONENT-561;Lo;0;L;;;;;N;;;;; -+18A31;TANGUT COMPONENT-562;Lo;0;L;;;;;N;;;;; -+18A32;TANGUT COMPONENT-563;Lo;0;L;;;;;N;;;;; -+18A33;TANGUT COMPONENT-564;Lo;0;L;;;;;N;;;;; -+18A34;TANGUT COMPONENT-565;Lo;0;L;;;;;N;;;;; -+18A35;TANGUT COMPONENT-566;Lo;0;L;;;;;N;;;;; -+18A36;TANGUT COMPONENT-567;Lo;0;L;;;;;N;;;;; -+18A37;TANGUT COMPONENT-568;Lo;0;L;;;;;N;;;;; -+18A38;TANGUT COMPONENT-569;Lo;0;L;;;;;N;;;;; -+18A39;TANGUT COMPONENT-570;Lo;0;L;;;;;N;;;;; -+18A3A;TANGUT COMPONENT-571;Lo;0;L;;;;;N;;;;; -+18A3B;TANGUT COMPONENT-572;Lo;0;L;;;;;N;;;;; -+18A3C;TANGUT COMPONENT-573;Lo;0;L;;;;;N;;;;; -+18A3D;TANGUT COMPONENT-574;Lo;0;L;;;;;N;;;;; -+18A3E;TANGUT COMPONENT-575;Lo;0;L;;;;;N;;;;; -+18A3F;TANGUT COMPONENT-576;Lo;0;L;;;;;N;;;;; -+18A40;TANGUT COMPONENT-577;Lo;0;L;;;;;N;;;;; -+18A41;TANGUT COMPONENT-578;Lo;0;L;;;;;N;;;;; -+18A42;TANGUT COMPONENT-579;Lo;0;L;;;;;N;;;;; -+18A43;TANGUT COMPONENT-580;Lo;0;L;;;;;N;;;;; -+18A44;TANGUT COMPONENT-581;Lo;0;L;;;;;N;;;;; -+18A45;TANGUT COMPONENT-582;Lo;0;L;;;;;N;;;;; -+18A46;TANGUT COMPONENT-583;Lo;0;L;;;;;N;;;;; -+18A47;TANGUT COMPONENT-584;Lo;0;L;;;;;N;;;;; -+18A48;TANGUT COMPONENT-585;Lo;0;L;;;;;N;;;;; -+18A49;TANGUT COMPONENT-586;Lo;0;L;;;;;N;;;;; -+18A4A;TANGUT COMPONENT-587;Lo;0;L;;;;;N;;;;; -+18A4B;TANGUT COMPONENT-588;Lo;0;L;;;;;N;;;;; -+18A4C;TANGUT COMPONENT-589;Lo;0;L;;;;;N;;;;; -+18A4D;TANGUT COMPONENT-590;Lo;0;L;;;;;N;;;;; -+18A4E;TANGUT COMPONENT-591;Lo;0;L;;;;;N;;;;; -+18A4F;TANGUT COMPONENT-592;Lo;0;L;;;;;N;;;;; -+18A50;TANGUT COMPONENT-593;Lo;0;L;;;;;N;;;;; -+18A51;TANGUT COMPONENT-594;Lo;0;L;;;;;N;;;;; -+18A52;TANGUT COMPONENT-595;Lo;0;L;;;;;N;;;;; -+18A53;TANGUT COMPONENT-596;Lo;0;L;;;;;N;;;;; -+18A54;TANGUT COMPONENT-597;Lo;0;L;;;;;N;;;;; -+18A55;TANGUT COMPONENT-598;Lo;0;L;;;;;N;;;;; -+18A56;TANGUT COMPONENT-599;Lo;0;L;;;;;N;;;;; -+18A57;TANGUT COMPONENT-600;Lo;0;L;;;;;N;;;;; -+18A58;TANGUT COMPONENT-601;Lo;0;L;;;;;N;;;;; -+18A59;TANGUT COMPONENT-602;Lo;0;L;;;;;N;;;;; -+18A5A;TANGUT COMPONENT-603;Lo;0;L;;;;;N;;;;; -+18A5B;TANGUT COMPONENT-604;Lo;0;L;;;;;N;;;;; -+18A5C;TANGUT COMPONENT-605;Lo;0;L;;;;;N;;;;; -+18A5D;TANGUT COMPONENT-606;Lo;0;L;;;;;N;;;;; -+18A5E;TANGUT COMPONENT-607;Lo;0;L;;;;;N;;;;; -+18A5F;TANGUT COMPONENT-608;Lo;0;L;;;;;N;;;;; -+18A60;TANGUT COMPONENT-609;Lo;0;L;;;;;N;;;;; -+18A61;TANGUT COMPONENT-610;Lo;0;L;;;;;N;;;;; -+18A62;TANGUT COMPONENT-611;Lo;0;L;;;;;N;;;;; -+18A63;TANGUT COMPONENT-612;Lo;0;L;;;;;N;;;;; -+18A64;TANGUT COMPONENT-613;Lo;0;L;;;;;N;;;;; -+18A65;TANGUT COMPONENT-614;Lo;0;L;;;;;N;;;;; -+18A66;TANGUT COMPONENT-615;Lo;0;L;;;;;N;;;;; -+18A67;TANGUT COMPONENT-616;Lo;0;L;;;;;N;;;;; -+18A68;TANGUT COMPONENT-617;Lo;0;L;;;;;N;;;;; -+18A69;TANGUT COMPONENT-618;Lo;0;L;;;;;N;;;;; -+18A6A;TANGUT COMPONENT-619;Lo;0;L;;;;;N;;;;; -+18A6B;TANGUT COMPONENT-620;Lo;0;L;;;;;N;;;;; -+18A6C;TANGUT COMPONENT-621;Lo;0;L;;;;;N;;;;; -+18A6D;TANGUT COMPONENT-622;Lo;0;L;;;;;N;;;;; -+18A6E;TANGUT COMPONENT-623;Lo;0;L;;;;;N;;;;; -+18A6F;TANGUT COMPONENT-624;Lo;0;L;;;;;N;;;;; -+18A70;TANGUT COMPONENT-625;Lo;0;L;;;;;N;;;;; -+18A71;TANGUT COMPONENT-626;Lo;0;L;;;;;N;;;;; -+18A72;TANGUT COMPONENT-627;Lo;0;L;;;;;N;;;;; -+18A73;TANGUT COMPONENT-628;Lo;0;L;;;;;N;;;;; -+18A74;TANGUT COMPONENT-629;Lo;0;L;;;;;N;;;;; -+18A75;TANGUT COMPONENT-630;Lo;0;L;;;;;N;;;;; -+18A76;TANGUT COMPONENT-631;Lo;0;L;;;;;N;;;;; -+18A77;TANGUT COMPONENT-632;Lo;0;L;;;;;N;;;;; -+18A78;TANGUT COMPONENT-633;Lo;0;L;;;;;N;;;;; -+18A79;TANGUT COMPONENT-634;Lo;0;L;;;;;N;;;;; -+18A7A;TANGUT COMPONENT-635;Lo;0;L;;;;;N;;;;; -+18A7B;TANGUT COMPONENT-636;Lo;0;L;;;;;N;;;;; -+18A7C;TANGUT COMPONENT-637;Lo;0;L;;;;;N;;;;; -+18A7D;TANGUT COMPONENT-638;Lo;0;L;;;;;N;;;;; -+18A7E;TANGUT COMPONENT-639;Lo;0;L;;;;;N;;;;; -+18A7F;TANGUT COMPONENT-640;Lo;0;L;;;;;N;;;;; -+18A80;TANGUT COMPONENT-641;Lo;0;L;;;;;N;;;;; -+18A81;TANGUT COMPONENT-642;Lo;0;L;;;;;N;;;;; -+18A82;TANGUT COMPONENT-643;Lo;0;L;;;;;N;;;;; -+18A83;TANGUT COMPONENT-644;Lo;0;L;;;;;N;;;;; -+18A84;TANGUT COMPONENT-645;Lo;0;L;;;;;N;;;;; -+18A85;TANGUT COMPONENT-646;Lo;0;L;;;;;N;;;;; -+18A86;TANGUT COMPONENT-647;Lo;0;L;;;;;N;;;;; -+18A87;TANGUT COMPONENT-648;Lo;0;L;;;;;N;;;;; -+18A88;TANGUT COMPONENT-649;Lo;0;L;;;;;N;;;;; -+18A89;TANGUT COMPONENT-650;Lo;0;L;;;;;N;;;;; -+18A8A;TANGUT COMPONENT-651;Lo;0;L;;;;;N;;;;; -+18A8B;TANGUT COMPONENT-652;Lo;0;L;;;;;N;;;;; -+18A8C;TANGUT COMPONENT-653;Lo;0;L;;;;;N;;;;; -+18A8D;TANGUT COMPONENT-654;Lo;0;L;;;;;N;;;;; -+18A8E;TANGUT COMPONENT-655;Lo;0;L;;;;;N;;;;; -+18A8F;TANGUT COMPONENT-656;Lo;0;L;;;;;N;;;;; -+18A90;TANGUT COMPONENT-657;Lo;0;L;;;;;N;;;;; -+18A91;TANGUT COMPONENT-658;Lo;0;L;;;;;N;;;;; -+18A92;TANGUT COMPONENT-659;Lo;0;L;;;;;N;;;;; -+18A93;TANGUT COMPONENT-660;Lo;0;L;;;;;N;;;;; -+18A94;TANGUT COMPONENT-661;Lo;0;L;;;;;N;;;;; -+18A95;TANGUT COMPONENT-662;Lo;0;L;;;;;N;;;;; -+18A96;TANGUT COMPONENT-663;Lo;0;L;;;;;N;;;;; -+18A97;TANGUT COMPONENT-664;Lo;0;L;;;;;N;;;;; -+18A98;TANGUT COMPONENT-665;Lo;0;L;;;;;N;;;;; -+18A99;TANGUT COMPONENT-666;Lo;0;L;;;;;N;;;;; -+18A9A;TANGUT COMPONENT-667;Lo;0;L;;;;;N;;;;; -+18A9B;TANGUT COMPONENT-668;Lo;0;L;;;;;N;;;;; -+18A9C;TANGUT COMPONENT-669;Lo;0;L;;;;;N;;;;; -+18A9D;TANGUT COMPONENT-670;Lo;0;L;;;;;N;;;;; -+18A9E;TANGUT COMPONENT-671;Lo;0;L;;;;;N;;;;; -+18A9F;TANGUT COMPONENT-672;Lo;0;L;;;;;N;;;;; -+18AA0;TANGUT COMPONENT-673;Lo;0;L;;;;;N;;;;; -+18AA1;TANGUT COMPONENT-674;Lo;0;L;;;;;N;;;;; -+18AA2;TANGUT COMPONENT-675;Lo;0;L;;;;;N;;;;; -+18AA3;TANGUT COMPONENT-676;Lo;0;L;;;;;N;;;;; -+18AA4;TANGUT COMPONENT-677;Lo;0;L;;;;;N;;;;; -+18AA5;TANGUT COMPONENT-678;Lo;0;L;;;;;N;;;;; -+18AA6;TANGUT COMPONENT-679;Lo;0;L;;;;;N;;;;; -+18AA7;TANGUT COMPONENT-680;Lo;0;L;;;;;N;;;;; -+18AA8;TANGUT COMPONENT-681;Lo;0;L;;;;;N;;;;; -+18AA9;TANGUT COMPONENT-682;Lo;0;L;;;;;N;;;;; -+18AAA;TANGUT COMPONENT-683;Lo;0;L;;;;;N;;;;; -+18AAB;TANGUT COMPONENT-684;Lo;0;L;;;;;N;;;;; -+18AAC;TANGUT COMPONENT-685;Lo;0;L;;;;;N;;;;; -+18AAD;TANGUT COMPONENT-686;Lo;0;L;;;;;N;;;;; -+18AAE;TANGUT COMPONENT-687;Lo;0;L;;;;;N;;;;; -+18AAF;TANGUT COMPONENT-688;Lo;0;L;;;;;N;;;;; -+18AB0;TANGUT COMPONENT-689;Lo;0;L;;;;;N;;;;; -+18AB1;TANGUT COMPONENT-690;Lo;0;L;;;;;N;;;;; -+18AB2;TANGUT COMPONENT-691;Lo;0;L;;;;;N;;;;; -+18AB3;TANGUT COMPONENT-692;Lo;0;L;;;;;N;;;;; -+18AB4;TANGUT COMPONENT-693;Lo;0;L;;;;;N;;;;; -+18AB5;TANGUT COMPONENT-694;Lo;0;L;;;;;N;;;;; -+18AB6;TANGUT COMPONENT-695;Lo;0;L;;;;;N;;;;; -+18AB7;TANGUT COMPONENT-696;Lo;0;L;;;;;N;;;;; -+18AB8;TANGUT COMPONENT-697;Lo;0;L;;;;;N;;;;; -+18AB9;TANGUT COMPONENT-698;Lo;0;L;;;;;N;;;;; -+18ABA;TANGUT COMPONENT-699;Lo;0;L;;;;;N;;;;; -+18ABB;TANGUT COMPONENT-700;Lo;0;L;;;;;N;;;;; -+18ABC;TANGUT COMPONENT-701;Lo;0;L;;;;;N;;;;; -+18ABD;TANGUT COMPONENT-702;Lo;0;L;;;;;N;;;;; -+18ABE;TANGUT COMPONENT-703;Lo;0;L;;;;;N;;;;; -+18ABF;TANGUT COMPONENT-704;Lo;0;L;;;;;N;;;;; -+18AC0;TANGUT COMPONENT-705;Lo;0;L;;;;;N;;;;; -+18AC1;TANGUT COMPONENT-706;Lo;0;L;;;;;N;;;;; -+18AC2;TANGUT COMPONENT-707;Lo;0;L;;;;;N;;;;; -+18AC3;TANGUT COMPONENT-708;Lo;0;L;;;;;N;;;;; -+18AC4;TANGUT COMPONENT-709;Lo;0;L;;;;;N;;;;; -+18AC5;TANGUT COMPONENT-710;Lo;0;L;;;;;N;;;;; -+18AC6;TANGUT COMPONENT-711;Lo;0;L;;;;;N;;;;; -+18AC7;TANGUT COMPONENT-712;Lo;0;L;;;;;N;;;;; -+18AC8;TANGUT COMPONENT-713;Lo;0;L;;;;;N;;;;; -+18AC9;TANGUT COMPONENT-714;Lo;0;L;;;;;N;;;;; -+18ACA;TANGUT COMPONENT-715;Lo;0;L;;;;;N;;;;; -+18ACB;TANGUT COMPONENT-716;Lo;0;L;;;;;N;;;;; -+18ACC;TANGUT COMPONENT-717;Lo;0;L;;;;;N;;;;; -+18ACD;TANGUT COMPONENT-718;Lo;0;L;;;;;N;;;;; -+18ACE;TANGUT COMPONENT-719;Lo;0;L;;;;;N;;;;; -+18ACF;TANGUT COMPONENT-720;Lo;0;L;;;;;N;;;;; -+18AD0;TANGUT COMPONENT-721;Lo;0;L;;;;;N;;;;; -+18AD1;TANGUT COMPONENT-722;Lo;0;L;;;;;N;;;;; -+18AD2;TANGUT COMPONENT-723;Lo;0;L;;;;;N;;;;; -+18AD3;TANGUT COMPONENT-724;Lo;0;L;;;;;N;;;;; -+18AD4;TANGUT COMPONENT-725;Lo;0;L;;;;;N;;;;; -+18AD5;TANGUT COMPONENT-726;Lo;0;L;;;;;N;;;;; -+18AD6;TANGUT COMPONENT-727;Lo;0;L;;;;;N;;;;; -+18AD7;TANGUT COMPONENT-728;Lo;0;L;;;;;N;;;;; -+18AD8;TANGUT COMPONENT-729;Lo;0;L;;;;;N;;;;; -+18AD9;TANGUT COMPONENT-730;Lo;0;L;;;;;N;;;;; -+18ADA;TANGUT COMPONENT-731;Lo;0;L;;;;;N;;;;; -+18ADB;TANGUT COMPONENT-732;Lo;0;L;;;;;N;;;;; -+18ADC;TANGUT COMPONENT-733;Lo;0;L;;;;;N;;;;; -+18ADD;TANGUT COMPONENT-734;Lo;0;L;;;;;N;;;;; -+18ADE;TANGUT COMPONENT-735;Lo;0;L;;;;;N;;;;; -+18ADF;TANGUT COMPONENT-736;Lo;0;L;;;;;N;;;;; -+18AE0;TANGUT COMPONENT-737;Lo;0;L;;;;;N;;;;; -+18AE1;TANGUT COMPONENT-738;Lo;0;L;;;;;N;;;;; -+18AE2;TANGUT COMPONENT-739;Lo;0;L;;;;;N;;;;; -+18AE3;TANGUT COMPONENT-740;Lo;0;L;;;;;N;;;;; -+18AE4;TANGUT COMPONENT-741;Lo;0;L;;;;;N;;;;; -+18AE5;TANGUT COMPONENT-742;Lo;0;L;;;;;N;;;;; -+18AE6;TANGUT COMPONENT-743;Lo;0;L;;;;;N;;;;; -+18AE7;TANGUT COMPONENT-744;Lo;0;L;;;;;N;;;;; -+18AE8;TANGUT COMPONENT-745;Lo;0;L;;;;;N;;;;; -+18AE9;TANGUT COMPONENT-746;Lo;0;L;;;;;N;;;;; -+18AEA;TANGUT COMPONENT-747;Lo;0;L;;;;;N;;;;; -+18AEB;TANGUT COMPONENT-748;Lo;0;L;;;;;N;;;;; -+18AEC;TANGUT COMPONENT-749;Lo;0;L;;;;;N;;;;; -+18AED;TANGUT COMPONENT-750;Lo;0;L;;;;;N;;;;; -+18AEE;TANGUT COMPONENT-751;Lo;0;L;;;;;N;;;;; -+18AEF;TANGUT COMPONENT-752;Lo;0;L;;;;;N;;;;; -+18AF0;TANGUT COMPONENT-753;Lo;0;L;;;;;N;;;;; -+18AF1;TANGUT COMPONENT-754;Lo;0;L;;;;;N;;;;; -+18AF2;TANGUT COMPONENT-755;Lo;0;L;;;;;N;;;;; - 1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;; - 1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;; - 1BC00;DUPLOYAN LETTER H;Lo;0;L;;;;;N;;;;; -@@ -26154,6 +27313,44 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;; - 1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;; - 1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;; -+1E000;COMBINING GLAGOLITIC LETTER AZU;Mn;230;NSM;;;;;N;;;;; -+1E001;COMBINING GLAGOLITIC LETTER BUKY;Mn;230;NSM;;;;;N;;;;; -+1E002;COMBINING GLAGOLITIC LETTER VEDE;Mn;230;NSM;;;;;N;;;;; -+1E003;COMBINING GLAGOLITIC LETTER GLAGOLI;Mn;230;NSM;;;;;N;;;;; -+1E004;COMBINING GLAGOLITIC LETTER DOBRO;Mn;230;NSM;;;;;N;;;;; -+1E005;COMBINING GLAGOLITIC LETTER YESTU;Mn;230;NSM;;;;;N;;;;; -+1E006;COMBINING GLAGOLITIC LETTER ZHIVETE;Mn;230;NSM;;;;;N;;;;; -+1E008;COMBINING GLAGOLITIC LETTER ZEMLJA;Mn;230;NSM;;;;;N;;;;; -+1E009;COMBINING GLAGOLITIC LETTER IZHE;Mn;230;NSM;;;;;N;;;;; -+1E00A;COMBINING GLAGOLITIC LETTER INITIAL IZHE;Mn;230;NSM;;;;;N;;;;; -+1E00B;COMBINING GLAGOLITIC LETTER I;Mn;230;NSM;;;;;N;;;;; -+1E00C;COMBINING GLAGOLITIC LETTER DJERVI;Mn;230;NSM;;;;;N;;;;; -+1E00D;COMBINING GLAGOLITIC LETTER KAKO;Mn;230;NSM;;;;;N;;;;; -+1E00E;COMBINING GLAGOLITIC LETTER LJUDIJE;Mn;230;NSM;;;;;N;;;;; -+1E00F;COMBINING GLAGOLITIC LETTER MYSLITE;Mn;230;NSM;;;;;N;;;;; -+1E010;COMBINING GLAGOLITIC LETTER NASHI;Mn;230;NSM;;;;;N;;;;; -+1E011;COMBINING GLAGOLITIC LETTER ONU;Mn;230;NSM;;;;;N;;;;; -+1E012;COMBINING GLAGOLITIC LETTER POKOJI;Mn;230;NSM;;;;;N;;;;; -+1E013;COMBINING GLAGOLITIC LETTER RITSI;Mn;230;NSM;;;;;N;;;;; -+1E014;COMBINING GLAGOLITIC LETTER SLOVO;Mn;230;NSM;;;;;N;;;;; -+1E015;COMBINING GLAGOLITIC LETTER TVRIDO;Mn;230;NSM;;;;;N;;;;; -+1E016;COMBINING GLAGOLITIC LETTER UKU;Mn;230;NSM;;;;;N;;;;; -+1E017;COMBINING GLAGOLITIC LETTER FRITU;Mn;230;NSM;;;;;N;;;;; -+1E018;COMBINING GLAGOLITIC LETTER HERU;Mn;230;NSM;;;;;N;;;;; -+1E01B;COMBINING GLAGOLITIC LETTER SHTA;Mn;230;NSM;;;;;N;;;;; -+1E01C;COMBINING GLAGOLITIC LETTER TSI;Mn;230;NSM;;;;;N;;;;; -+1E01D;COMBINING GLAGOLITIC LETTER CHRIVI;Mn;230;NSM;;;;;N;;;;; -+1E01E;COMBINING GLAGOLITIC LETTER SHA;Mn;230;NSM;;;;;N;;;;; -+1E01F;COMBINING GLAGOLITIC LETTER YERU;Mn;230;NSM;;;;;N;;;;; -+1E020;COMBINING GLAGOLITIC LETTER YERI;Mn;230;NSM;;;;;N;;;;; -+1E021;COMBINING GLAGOLITIC LETTER YATI;Mn;230;NSM;;;;;N;;;;; -+1E023;COMBINING GLAGOLITIC LETTER YU;Mn;230;NSM;;;;;N;;;;; -+1E024;COMBINING GLAGOLITIC LETTER SMALL YUS;Mn;230;NSM;;;;;N;;;;; -+1E026;COMBINING GLAGOLITIC LETTER YO;Mn;230;NSM;;;;;N;;;;; -+1E027;COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS;Mn;230;NSM;;;;;N;;;;; -+1E028;COMBINING GLAGOLITIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;; -+1E029;COMBINING GLAGOLITIC LETTER IOTATED BIG YUS;Mn;230;NSM;;;;;N;;;;; -+1E02A;COMBINING GLAGOLITIC LETTER FITA;Mn;230;NSM;;;;;N;;;;; - 1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;; - 1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;; - 1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;; -@@ -26367,6 +27564,93 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1E8D4;MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS;Mn;220;NSM;;;;;N;;;;; - 1E8D5;MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS;Mn;220;NSM;;;;;N;;;;; - 1E8D6;MENDE KIKAKUI COMBINING NUMBER MILLIONS;Mn;220;NSM;;;;;N;;;;; -+1E900;ADLAM CAPITAL LETTER ALIF;Lu;0;R;;;;;N;;;;1E922; -+1E901;ADLAM CAPITAL LETTER DAALI;Lu;0;R;;;;;N;;;;1E923; -+1E902;ADLAM CAPITAL LETTER LAAM;Lu;0;R;;;;;N;;;;1E924; -+1E903;ADLAM CAPITAL LETTER MIIM;Lu;0;R;;;;;N;;;;1E925; -+1E904;ADLAM CAPITAL LETTER BA;Lu;0;R;;;;;N;;;;1E926; -+1E905;ADLAM CAPITAL LETTER SINNYIIYHE;Lu;0;R;;;;;N;;;;1E927; -+1E906;ADLAM CAPITAL LETTER PE;Lu;0;R;;;;;N;;;;1E928; -+1E907;ADLAM CAPITAL LETTER BHE;Lu;0;R;;;;;N;;;;1E929; -+1E908;ADLAM CAPITAL LETTER RA;Lu;0;R;;;;;N;;;;1E92A; -+1E909;ADLAM CAPITAL LETTER E;Lu;0;R;;;;;N;;;;1E92B; -+1E90A;ADLAM CAPITAL LETTER FA;Lu;0;R;;;;;N;;;;1E92C; -+1E90B;ADLAM CAPITAL LETTER I;Lu;0;R;;;;;N;;;;1E92D; -+1E90C;ADLAM CAPITAL LETTER O;Lu;0;R;;;;;N;;;;1E92E; -+1E90D;ADLAM CAPITAL LETTER DHA;Lu;0;R;;;;;N;;;;1E92F; -+1E90E;ADLAM CAPITAL LETTER YHE;Lu;0;R;;;;;N;;;;1E930; -+1E90F;ADLAM CAPITAL LETTER WAW;Lu;0;R;;;;;N;;;;1E931; -+1E910;ADLAM CAPITAL LETTER NUN;Lu;0;R;;;;;N;;;;1E932; -+1E911;ADLAM CAPITAL LETTER KAF;Lu;0;R;;;;;N;;;;1E933; -+1E912;ADLAM CAPITAL LETTER YA;Lu;0;R;;;;;N;;;;1E934; -+1E913;ADLAM CAPITAL LETTER U;Lu;0;R;;;;;N;;;;1E935; -+1E914;ADLAM CAPITAL LETTER JIIM;Lu;0;R;;;;;N;;;;1E936; -+1E915;ADLAM CAPITAL LETTER CHI;Lu;0;R;;;;;N;;;;1E937; -+1E916;ADLAM CAPITAL LETTER HA;Lu;0;R;;;;;N;;;;1E938; -+1E917;ADLAM CAPITAL LETTER QAAF;Lu;0;R;;;;;N;;;;1E939; -+1E918;ADLAM CAPITAL LETTER GA;Lu;0;R;;;;;N;;;;1E93A; -+1E919;ADLAM CAPITAL LETTER NYA;Lu;0;R;;;;;N;;;;1E93B; -+1E91A;ADLAM CAPITAL LETTER TU;Lu;0;R;;;;;N;;;;1E93C; -+1E91B;ADLAM CAPITAL LETTER NHA;Lu;0;R;;;;;N;;;;1E93D; -+1E91C;ADLAM CAPITAL LETTER VA;Lu;0;R;;;;;N;;;;1E93E; -+1E91D;ADLAM CAPITAL LETTER KHA;Lu;0;R;;;;;N;;;;1E93F; -+1E91E;ADLAM CAPITAL LETTER GBE;Lu;0;R;;;;;N;;;;1E940; -+1E91F;ADLAM CAPITAL LETTER ZAL;Lu;0;R;;;;;N;;;;1E941; -+1E920;ADLAM CAPITAL LETTER KPO;Lu;0;R;;;;;N;;;;1E942; -+1E921;ADLAM CAPITAL LETTER SHA;Lu;0;R;;;;;N;;;;1E943; -+1E922;ADLAM SMALL LETTER ALIF;Ll;0;R;;;;;N;;;1E900;;1E900 -+1E923;ADLAM SMALL LETTER DAALI;Ll;0;R;;;;;N;;;1E901;;1E901 -+1E924;ADLAM SMALL LETTER LAAM;Ll;0;R;;;;;N;;;1E902;;1E902 -+1E925;ADLAM SMALL LETTER MIIM;Ll;0;R;;;;;N;;;1E903;;1E903 -+1E926;ADLAM SMALL LETTER BA;Ll;0;R;;;;;N;;;1E904;;1E904 -+1E927;ADLAM SMALL LETTER SINNYIIYHE;Ll;0;R;;;;;N;;;1E905;;1E905 -+1E928;ADLAM SMALL LETTER PE;Ll;0;R;;;;;N;;;1E906;;1E906 -+1E929;ADLAM SMALL LETTER BHE;Ll;0;R;;;;;N;;;1E907;;1E907 -+1E92A;ADLAM SMALL LETTER RA;Ll;0;R;;;;;N;;;1E908;;1E908 -+1E92B;ADLAM SMALL LETTER E;Ll;0;R;;;;;N;;;1E909;;1E909 -+1E92C;ADLAM SMALL LETTER FA;Ll;0;R;;;;;N;;;1E90A;;1E90A -+1E92D;ADLAM SMALL LETTER I;Ll;0;R;;;;;N;;;1E90B;;1E90B -+1E92E;ADLAM SMALL LETTER O;Ll;0;R;;;;;N;;;1E90C;;1E90C -+1E92F;ADLAM SMALL LETTER DHA;Ll;0;R;;;;;N;;;1E90D;;1E90D -+1E930;ADLAM SMALL LETTER YHE;Ll;0;R;;;;;N;;;1E90E;;1E90E -+1E931;ADLAM SMALL LETTER WAW;Ll;0;R;;;;;N;;;1E90F;;1E90F -+1E932;ADLAM SMALL LETTER NUN;Ll;0;R;;;;;N;;;1E910;;1E910 -+1E933;ADLAM SMALL LETTER KAF;Ll;0;R;;;;;N;;;1E911;;1E911 -+1E934;ADLAM SMALL LETTER YA;Ll;0;R;;;;;N;;;1E912;;1E912 -+1E935;ADLAM SMALL LETTER U;Ll;0;R;;;;;N;;;1E913;;1E913 -+1E936;ADLAM SMALL LETTER JIIM;Ll;0;R;;;;;N;;;1E914;;1E914 -+1E937;ADLAM SMALL LETTER CHI;Ll;0;R;;;;;N;;;1E915;;1E915 -+1E938;ADLAM SMALL LETTER HA;Ll;0;R;;;;;N;;;1E916;;1E916 -+1E939;ADLAM SMALL LETTER QAAF;Ll;0;R;;;;;N;;;1E917;;1E917 -+1E93A;ADLAM SMALL LETTER GA;Ll;0;R;;;;;N;;;1E918;;1E918 -+1E93B;ADLAM SMALL LETTER NYA;Ll;0;R;;;;;N;;;1E919;;1E919 -+1E93C;ADLAM SMALL LETTER TU;Ll;0;R;;;;;N;;;1E91A;;1E91A -+1E93D;ADLAM SMALL LETTER NHA;Ll;0;R;;;;;N;;;1E91B;;1E91B -+1E93E;ADLAM SMALL LETTER VA;Ll;0;R;;;;;N;;;1E91C;;1E91C -+1E93F;ADLAM SMALL LETTER KHA;Ll;0;R;;;;;N;;;1E91D;;1E91D -+1E940;ADLAM SMALL LETTER GBE;Ll;0;R;;;;;N;;;1E91E;;1E91E -+1E941;ADLAM SMALL LETTER ZAL;Ll;0;R;;;;;N;;;1E91F;;1E91F -+1E942;ADLAM SMALL LETTER KPO;Ll;0;R;;;;;N;;;1E920;;1E920 -+1E943;ADLAM SMALL LETTER SHA;Ll;0;R;;;;;N;;;1E921;;1E921 -+1E944;ADLAM ALIF LENGTHENER;Mn;230;NSM;;;;;N;;;;; -+1E945;ADLAM VOWEL LENGTHENER;Mn;230;NSM;;;;;N;;;;; -+1E946;ADLAM GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; -+1E947;ADLAM HAMZA;Mn;230;NSM;;;;;N;;;;; -+1E948;ADLAM CONSONANT MODIFIER;Mn;230;NSM;;;;;N;;;;; -+1E949;ADLAM GEMINATE CONSONANT MODIFIER;Mn;230;NSM;;;;;N;;;;; -+1E94A;ADLAM NUKTA;Mn;7;NSM;;;;;N;;;;; -+1E950;ADLAM DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;; -+1E951;ADLAM DIGIT ONE;Nd;0;R;;1;1;1;N;;;;; -+1E952;ADLAM DIGIT TWO;Nd;0;R;;2;2;2;N;;;;; -+1E953;ADLAM DIGIT THREE;Nd;0;R;;3;3;3;N;;;;; -+1E954;ADLAM DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;; -+1E955;ADLAM DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;; -+1E956;ADLAM DIGIT SIX;Nd;0;R;;6;6;6;N;;;;; -+1E957;ADLAM DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;; -+1E958;ADLAM DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;; -+1E959;ADLAM DIGIT NINE;Nd;0;R;;9;9;9;N;;;;; -+1E95E;ADLAM INITIAL EXCLAMATION MARK;Po;0;R;;;;;N;;;;; -+1E95F;ADLAM INITIAL QUESTION MARK;Po;0;R;;;;;N;;;;; - 1EE00;ARABIC MATHEMATICAL ALEF;Lo;0;AL; 0627;;;;N;;;;; - 1EE01;ARABIC MATHEMATICAL BEH;Lo;0;AL; 0628;;;;N;;;;; - 1EE02;ARABIC MATHEMATICAL JEEM;Lo;0;AL; 062C;;;;N;;;;; -@@ -26883,6 +28167,24 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1F198;SQUARED SOS;So;0;L;;;;;N;;;;; - 1F199;SQUARED UP WITH EXCLAMATION MARK;So;0;L;;;;;N;;;;; - 1F19A;SQUARED VS;So;0;L;;;;;N;;;;; -+1F19B;SQUARED THREE D;So;0;L;;;;;N;;;;; -+1F19C;SQUARED SECOND SCREEN;So;0;L;;;;;N;;;;; -+1F19D;SQUARED TWO K;So;0;L;;;;;N;;;;; -+1F19E;SQUARED FOUR K;So;0;L;;;;;N;;;;; -+1F19F;SQUARED EIGHT K;So;0;L;;;;;N;;;;; -+1F1A0;SQUARED FIVE POINT ONE;So;0;L;;;;;N;;;;; -+1F1A1;SQUARED SEVEN POINT ONE;So;0;L;;;;;N;;;;; -+1F1A2;SQUARED TWENTY-TWO POINT TWO;So;0;L;;;;;N;;;;; -+1F1A3;SQUARED SIXTY P;So;0;L;;;;;N;;;;; -+1F1A4;SQUARED ONE HUNDRED TWENTY P;So;0;L;;;;;N;;;;; -+1F1A5;SQUARED LATIN SMALL LETTER D;So;0;L;;;;;N;;;;; -+1F1A6;SQUARED HC;So;0;L;;;;;N;;;;; -+1F1A7;SQUARED HDR;So;0;L;;;;;N;;;;; -+1F1A8;SQUARED HI-RES;So;0;L;;;;;N;;;;; -+1F1A9;SQUARED LOSSLESS;So;0;L;;;;;N;;;;; -+1F1AA;SQUARED SHV;So;0;L;;;;;N;;;;; -+1F1AB;SQUARED UHD;So;0;L;;;;;N;;;;; -+1F1AC;SQUARED VOD;So;0;L;;;;;N;;;;; - 1F1E6;REGIONAL INDICATOR SYMBOL LETTER A;So;0;L;;;;;N;;;;; - 1F1E7;REGIONAL INDICATOR SYMBOL LETTER B;So;0;L;;;;;N;;;;; - 1F1E8;REGIONAL INDICATOR SYMBOL LETTER C;So;0;L;;;;;N;;;;; -@@ -26955,6 +28257,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1F238;SQUARED CJK UNIFIED IDEOGRAPH-7533;So;0;L; 7533;;;;N;;;;; - 1F239;SQUARED CJK UNIFIED IDEOGRAPH-5272;So;0;L; 5272;;;;N;;;;; - 1F23A;SQUARED CJK UNIFIED IDEOGRAPH-55B6;So;0;L; 55B6;;;;N;;;;; -+1F23B;SQUARED CJK UNIFIED IDEOGRAPH-914D;So;0;L; 914D;;;;N;;;;; - 1F240;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;So;0;L; 3014 672C 3015;;;;N;;;;; - 1F241;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;So;0;L; 3014 4E09 3015;;;;N;;;;; - 1F242;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L; 3014 4E8C 3015;;;;N;;;;; -@@ -27600,6 +28903,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1F577;SPIDER;So;0;ON;;;;;N;;;;; - 1F578;SPIDER WEB;So;0;ON;;;;;N;;;;; - 1F579;JOYSTICK;So;0;ON;;;;;N;;;;; -+1F57A;MAN DANCING;So;0;ON;;;;;N;;;;; - 1F57B;LEFT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;; - 1F57C;TELEPHONE RECEIVER WITH PAGE;So;0;ON;;;;;N;;;;; - 1F57D;RIGHT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;; -@@ -27641,6 +28945,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1F5A1;SIDEWAYS BLACK DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; - 1F5A2;BLACK UP POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;; - 1F5A3;BLACK DOWN POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;; -+1F5A4;BLACK HEART;So;0;ON;;;;;N;;;;; - 1F5A5;DESKTOP COMPUTER;So;0;ON;;;;;N;;;;; - 1F5A6;KEYBOARD AND MOUSE;So;0;ON;;;;;N;;;;; - 1F5A7;THREE NETWORKED COMPUTERS;So;0;ON;;;;;N;;;;; -@@ -27941,6 +29246,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1F6CE;BELLHOP BELL;So;0;ON;;;;;N;;;;; - 1F6CF;BED;So;0;ON;;;;;N;;;;; - 1F6D0;PLACE OF WORSHIP;So;0;ON;;;;;N;;;;; -+1F6D1;OCTAGONAL SIGN;So;0;ON;;;;;N;;;;; -+1F6D2;SHOPPING TROLLEY;So;0;ON;;;;;N;;;;; - 1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;; - 1F6E1;SHIELD;So;0;ON;;;;;N;;;;; - 1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;; -@@ -27958,6 +29265,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1F6F1;ONCOMING FIRE ENGINE;So;0;ON;;;;;N;;;;; - 1F6F2;DIESEL LOCOMOTIVE;So;0;ON;;;;;N;;;;; - 1F6F3;PASSENGER SHIP;So;0;ON;;;;;N;;;;; -+1F6F4;SCOOTER;So;0;ON;;;;;N;;;;; -+1F6F5;MOTOR SCOOTER;So;0;ON;;;;;N;;;;; -+1F6F6;CANOE;So;0;ON;;;;;N;;;;; - 1F700;ALCHEMICAL SYMBOL FOR QUINTESSENCE;So;0;ON;;;;;N;;;;; - 1F701;ALCHEMICAL SYMBOL FOR AIR;So;0;ON;;;;;N;;;;; - 1F702;ALCHEMICAL SYMBOL FOR FIRE;So;0;ON;;;;;N;;;;; -@@ -28316,11 +29626,78 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; - 1F916;ROBOT FACE;So;0;ON;;;;;N;;;;; - 1F917;HUGGING FACE;So;0;ON;;;;;N;;;;; - 1F918;SIGN OF THE HORNS;So;0;ON;;;;;N;;;;; -+1F919;CALL ME HAND;So;0;ON;;;;;N;;;;; -+1F91A;RAISED BACK OF HAND;So;0;ON;;;;;N;;;;; -+1F91B;LEFT-FACING FIST;So;0;ON;;;;;N;;;;; -+1F91C;RIGHT-FACING FIST;So;0;ON;;;;;N;;;;; -+1F91D;HANDSHAKE;So;0;ON;;;;;N;;;;; -+1F91E;HAND WITH INDEX AND MIDDLE FINGERS CROSSED;So;0;ON;;;;;N;;;;; -+1F920;FACE WITH COWBOY HAT;So;0;ON;;;;;N;;;;; -+1F921;CLOWN FACE;So;0;ON;;;;;N;;;;; -+1F922;NAUSEATED FACE;So;0;ON;;;;;N;;;;; -+1F923;ROLLING ON THE FLOOR LAUGHING;So;0;ON;;;;;N;;;;; -+1F924;DROOLING FACE;So;0;ON;;;;;N;;;;; -+1F925;LYING FACE;So;0;ON;;;;;N;;;;; -+1F926;FACE PALM;So;0;ON;;;;;N;;;;; -+1F927;SNEEZING FACE;So;0;ON;;;;;N;;;;; -+1F930;PREGNANT WOMAN;So;0;ON;;;;;N;;;;; -+1F933;SELFIE;So;0;ON;;;;;N;;;;; -+1F934;PRINCE;So;0;ON;;;;;N;;;;; -+1F935;MAN IN TUXEDO;So;0;ON;;;;;N;;;;; -+1F936;MOTHER CHRISTMAS;So;0;ON;;;;;N;;;;; -+1F937;SHRUG;So;0;ON;;;;;N;;;;; -+1F938;PERSON DOING CARTWHEEL;So;0;ON;;;;;N;;;;; -+1F939;JUGGLING;So;0;ON;;;;;N;;;;; -+1F93A;FENCER;So;0;ON;;;;;N;;;;; -+1F93B;MODERN PENTATHLON;So;0;ON;;;;;N;;;;; -+1F93C;WRESTLERS;So;0;ON;;;;;N;;;;; -+1F93D;WATER POLO;So;0;ON;;;;;N;;;;; -+1F93E;HANDBALL;So;0;ON;;;;;N;;;;; -+1F940;WILTED FLOWER;So;0;ON;;;;;N;;;;; -+1F941;DRUM WITH DRUMSTICKS;So;0;ON;;;;;N;;;;; -+1F942;CLINKING GLASSES;So;0;ON;;;;;N;;;;; -+1F943;TUMBLER GLASS;So;0;ON;;;;;N;;;;; -+1F944;SPOON;So;0;ON;;;;;N;;;;; -+1F945;GOAL NET;So;0;ON;;;;;N;;;;; -+1F946;RIFLE;So;0;ON;;;;;N;;;;; -+1F947;FIRST PLACE MEDAL;So;0;ON;;;;;N;;;;; -+1F948;SECOND PLACE MEDAL;So;0;ON;;;;;N;;;;; -+1F949;THIRD PLACE MEDAL;So;0;ON;;;;;N;;;;; -+1F94A;BOXING GLOVE;So;0;ON;;;;;N;;;;; -+1F94B;MARTIAL ARTS UNIFORM;So;0;ON;;;;;N;;;;; -+1F950;CROISSANT;So;0;ON;;;;;N;;;;; -+1F951;AVOCADO;So;0;ON;;;;;N;;;;; -+1F952;CUCUMBER;So;0;ON;;;;;N;;;;; -+1F953;BACON;So;0;ON;;;;;N;;;;; -+1F954;POTATO;So;0;ON;;;;;N;;;;; -+1F955;CARROT;So;0;ON;;;;;N;;;;; -+1F956;BAGUETTE BREAD;So;0;ON;;;;;N;;;;; -+1F957;GREEN SALAD;So;0;ON;;;;;N;;;;; -+1F958;SHALLOW PAN OF FOOD;So;0;ON;;;;;N;;;;; -+1F959;STUFFED FLATBREAD;So;0;ON;;;;;N;;;;; -+1F95A;EGG;So;0;ON;;;;;N;;;;; -+1F95B;GLASS OF MILK;So;0;ON;;;;;N;;;;; -+1F95C;PEANUTS;So;0;ON;;;;;N;;;;; -+1F95D;KIWIFRUIT;So;0;ON;;;;;N;;;;; -+1F95E;PANCAKES;So;0;ON;;;;;N;;;;; - 1F980;CRAB;So;0;ON;;;;;N;;;;; - 1F981;LION FACE;So;0;ON;;;;;N;;;;; - 1F982;SCORPION;So;0;ON;;;;;N;;;;; - 1F983;TURKEY;So;0;ON;;;;;N;;;;; - 1F984;UNICORN FACE;So;0;ON;;;;;N;;;;; -+1F985;EAGLE;So;0;ON;;;;;N;;;;; -+1F986;DUCK;So;0;ON;;;;;N;;;;; -+1F987;BAT;So;0;ON;;;;;N;;;;; -+1F988;SHARK;So;0;ON;;;;;N;;;;; -+1F989;OWL;So;0;ON;;;;;N;;;;; -+1F98A;FOX FACE;So;0;ON;;;;;N;;;;; -+1F98B;BUTTERFLY;So;0;ON;;;;;N;;;;; -+1F98C;DEER;So;0;ON;;;;;N;;;;; -+1F98D;GORILLA;So;0;ON;;;;;N;;;;; -+1F98E;LIZARD;So;0;ON;;;;;N;;;;; -+1F98F;RHINOCEROS;So;0;ON;;;;;N;;;;; -+1F990;SHRIMP;So;0;ON;;;;;N;;;;; -+1F991;SQUID;So;0;ON;;;;;N;;;;; - 1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;; - 20000;;Lo;0;L;;;;;N;;;;; - 2A6D6;;Lo;0;L;;;;;N;;;;; --- -2.7.4 - diff --git a/glibc-rh757881.patch b/glibc-rh757881.patch deleted file mode 100644 index 9db0434..0000000 --- a/glibc-rh757881.patch +++ /dev/null @@ -1,167 +0,0 @@ -diff -Nrup a/malloc/arena.c b/malloc/arena.c ---- a/malloc/arena.c 2012-05-29 16:45:53.000000000 -0600 -+++ b/malloc/arena.c 2012-05-30 00:13:40.683514016 -0600 -@@ -673,7 +673,7 @@ heap_trim(heap_info *heap, size_t pad) - heap = prev_heap; - if(!prev_inuse(p)) { /* consolidate backward */ - p = prev_chunk(p); -- unlink(p, bck, fwd); -+ unlink(ar_ptr, p, bck, fwd); - } - assert(((unsigned long)((char*)p + new_size) & (pagesz-1)) == 0); - assert( ((char*)p + new_size) == ((char*)heap + heap->size) ); -diff -Nrup a/malloc/hooks.c b/malloc/hooks.c ---- a/malloc/hooks.c 2012-05-29 16:45:53.000000000 -0600 -+++ b/malloc/hooks.c 2012-05-30 00:13:40.684514011 -0600 -@@ -191,7 +191,9 @@ top_check(void) - (char*)t + chunksize(t) == mp_.sbrk_base + main_arena.system_mem))) - return 0; - -+ mutex_unlock(&main_arena); - malloc_printerr (check_action, "malloc: top chunk is corrupt", t); -+ mutex_lock(&main_arena); - - /* Try to set up a new top chunk. */ - brk = MORECORE(0); -diff -Nrup a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2012-05-29 16:45:53.000000000 -0600 -+++ b/malloc/malloc.c 2012-05-30 00:13:40.686514001 -0600 -@@ -1424,12 +1424,14 @@ typedef struct malloc_chunk* mbinptr; - #define last(b) ((b)->bk) - - /* Take a chunk off a bin list */ --#define unlink(P, BK, FD) { \ -+#define unlink(AV, P, BK, FD) { \ - FD = P->fd; \ - BK = P->bk; \ -- if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) \ -+ if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) { \ -+ mutex_unlock(&(AV)->mutex); \ - malloc_printerr (check_action, "corrupted double-linked list", P); \ -- else { \ -+ mutex_lock(&(AV)->mutex); \ -+ } else { \ - FD->bk = BK; \ - BK->fd = FD; \ - if (!in_smallbin_range (P->size) \ -@@ -2511,7 +2513,9 @@ static void* sysmalloc(INTERNAL_SIZE_T n - - else if (contiguous(av) && old_size && brk < old_end) { - /* Oops! Someone else killed our space.. Can't touch anything. */ -+ mutex_unlock(&av->mutex); - malloc_printerr (3, "break adjusted to free malloc space", brk); -+ mutex_lock(&av->mutex); - } - - /* -@@ -3345,7 +3349,9 @@ _int_malloc(mstate av, size_t bytes) - { - errstr = "malloc(): memory corruption (fast)"; - errout: -+ mutex_unlock(&av->mutex); - malloc_printerr (check_action, errstr, chunk2mem (victim)); -+ mutex_lock(&av->mutex); - return NULL; - } - check_remalloced_chunk(av, victim, nb); -@@ -3430,8 +3436,12 @@ _int_malloc(mstate av, size_t bytes) - bck = victim->bk; - if (__builtin_expect (victim->size <= 2 * SIZE_SZ, 0) - || __builtin_expect (victim->size > av->system_mem, 0)) -- malloc_printerr (check_action, "malloc(): memory corruption", -- chunk2mem (victim)); -+ { -+ void *p = chunk2mem(victim); -+ mutex_unlock(&av->mutex); -+ malloc_printerr (check_action, "malloc(): memory corruption", p); -+ mutex_lock(&av->mutex); -+ } - size = chunksize(victim); - - /* -@@ -3572,7 +3582,7 @@ _int_malloc(mstate av, size_t bytes) - victim = victim->fd; - - remainder_size = size - nb; -- unlink(victim, bck, fwd); -+ unlink(av, victim, bck, fwd); - - /* Exhaust */ - if (remainder_size < MINSIZE) { -@@ -3670,7 +3680,7 @@ _int_malloc(mstate av, size_t bytes) - remainder_size = size - nb; - - /* unlink */ -- unlink(victim, bck, fwd); -+ unlink(av, victim, bck, fwd); - - /* Exhaust */ - if (remainder_size < MINSIZE) { -@@ -3805,9 +3815,11 @@ _int_free(mstate av, mchunkptr p, int ha - { - errstr = "free(): invalid pointer"; - errout: -- if (! have_lock && locked) -+ if (have_lock || locked) - (void)mutex_unlock(&av->mutex); - malloc_printerr (check_action, errstr, chunk2mem(p)); -+ if (have_lock) -+ mutex_lock(&av->mutex); - return; - } - /* We know that each chunk is at least MINSIZE bytes in size or a -@@ -3952,7 +3964,7 @@ _int_free(mstate av, mchunkptr p, int ha - prevsize = p->prev_size; - size += prevsize; - p = chunk_at_offset(p, -((long) prevsize)); -- unlink(p, bck, fwd); -+ unlink(av, p, bck, fwd); - } - - if (nextchunk != av->top) { -@@ -3961,7 +3973,7 @@ _int_free(mstate av, mchunkptr p, int ha - - /* consolidate forward */ - if (!nextinuse) { -- unlink(nextchunk, bck, fwd); -+ unlink(av, nextchunk, bck, fwd); - size += nextsize; - } else - clear_inuse_bit_at_offset(nextchunk, 0); -@@ -4122,7 +4134,7 @@ static void malloc_consolidate(mstate av - prevsize = p->prev_size; - size += prevsize; - p = chunk_at_offset(p, -((long) prevsize)); -- unlink(p, bck, fwd); -+ unlink(av, p, bck, fwd); - } - - if (nextchunk != av->top) { -@@ -4130,7 +4142,7 @@ static void malloc_consolidate(mstate av - - if (!nextinuse) { - size += nextsize; -- unlink(nextchunk, bck, fwd); -+ unlink(av, nextchunk, bck, fwd); - } else - clear_inuse_bit_at_offset(nextchunk, 0); - -@@ -4199,7 +4211,9 @@ _int_realloc(mstate av, mchunkptr oldp, - { - errstr = "realloc(): invalid old size"; - errout: -+ mutex_unlock(&av->mutex); - malloc_printerr (check_action, errstr, chunk2mem(oldp)); -+ mutex_lock(&av->mutex); - return NULL; - } - -@@ -4241,7 +4255,7 @@ _int_realloc(mstate av, mchunkptr oldp, - (unsigned long)(newsize = oldsize + nextsize) >= - (unsigned long)(nb)) { - newp = oldp; -- unlink(next, bck, fwd); -+ unlink(av, next, bck, fwd); - } - - /* allocate, copy, free */ diff --git a/glibc-rh827510.patch b/glibc-rh827510.patch index f5f024c..7fd3e99 100644 --- a/glibc-rh827510.patch +++ b/glibc-rh827510.patch @@ -16,7 +16,7 @@ index e3fa187..9fd9216 100644 - file->decided = 1; file->data = NULL; - fd = open_not_cancel_2 (file->filename, O_RDONLY | O_CLOEXEC); + fd = __open_nocancel (file->filename, O_RDONLY | O_CLOEXEC); @@ -278,6 +277,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category) newdata->alloc = alloc; diff --git a/glibc-rh952799.patch b/glibc-rh952799.patch deleted file mode 100644 index 9fe22aa..0000000 --- a/glibc-rh952799.patch +++ /dev/null @@ -1,181 +0,0 @@ -# -# Red Hat BZ: -# https://bugzilla.redhat.com/show_bug.cgi?id=816647 -# -# ChangeLog -# -#2013-04-30 Patsy Franklin -# -# * iconv/gconv_cache.c (find_module): Demangle init_fct before -# checking for NULL. Mangle __btowc_fct if init_fct is non-NULL. -# * iconv/gconv_db.c (free_derivation): Check that __shlib_handle -# is non-NULL before demangling the end_fct. Check for NULL -# end_fct after demangling. -# (__gconv_release_step): Demangle the end_fct before checking -# it for NULL. Remove assert on __shlibc_handle != NULL. -# (gen_steps): Don't check btowc_fct for NULL before mangling. -# Demangle init_fct before checking for NULL. -# (increment_counter): Likewise -# * gconv_dl.c (__gconv_find_shlib): Don't check init_fct or -# end_fct for NULL before mangling. -# * wcsmbs/btowc.c (__btowc): Demangle btowc_fct before checking -# for NULL. -# -diff -Nrup a/iconv/gconv_cache.c b/iconv/gconv_cache.c ---- a/iconv/gconv_cache.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_cache.c 2013-04-30 06:43:24.788684270 -0400 -@@ -207,17 +207,16 @@ find_module (const char *directory, cons - result->__data = NULL; - - /* Call the init function. */ -- if (result->__init_fct != NULL) -- { -- __gconv_init_fct init_fct = result->__init_fct; -+ __gconv_init_fct init_fct = result->__init_fct; - #ifdef PTR_DEMANGLE -- PTR_DEMANGLE (init_fct); -+ PTR_DEMANGLE (init_fct); - #endif -+ if (init_fct != NULL) -+ { - status = DL_CALL_FCT (init_fct, (result)); - - #ifdef PTR_MANGLE -- if (result->__btowc_fct != NULL) -- PTR_MANGLE (result->__btowc_fct); -+ PTR_MANGLE (result->__btowc_fct); - #endif - } - } -diff -Nrup a/iconv/gconv_db.c b/iconv/gconv_db.c ---- a/iconv/gconv_db.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_db.c 2013-04-30 06:37:16.886521576 -0400 -@@ -179,16 +179,15 @@ free_derivation (void *p) - size_t cnt; - - for (cnt = 0; cnt < deriv->nsteps; ++cnt) -- if (deriv->steps[cnt].__counter > 0 -- && deriv->steps[cnt].__end_fct != NULL) -+ if ((deriv->steps[cnt].__counter > 0) -+ && (deriv->steps[cnt].__shlib_handle != NULL)) - { -- assert (deriv->steps[cnt].__shlib_handle != NULL); -- - __gconv_end_fct end_fct = deriv->steps[cnt].__end_fct; - #ifdef PTR_DEMANGLE - PTR_DEMANGLE (end_fct); - #endif -- DL_CALL_FCT (end_fct, (&deriv->steps[cnt])); -+ if (end_fct != NULL) -+ DL_CALL_FCT (end_fct, (&deriv->steps[cnt])); - } - - /* Free the name strings. */ -@@ -212,16 +211,12 @@ __gconv_release_step (struct __gconv_ste - if (step->__shlib_handle != NULL && --step->__counter == 0) - { - /* Call the destructor. */ -- if (step->__end_fct != NULL) -- { -- assert (step->__shlib_handle != NULL); -- -- __gconv_end_fct end_fct = step->__end_fct; -+ __gconv_end_fct end_fct = step->__end_fct; - #ifdef PTR_DEMANGLE -- PTR_DEMANGLE (end_fct); -+ PTR_DEMANGLE (end_fct); - #endif -- DL_CALL_FCT (end_fct, (step)); -- } -+ if (end_fct != NULL) -+ DL_CALL_FCT (end_fct, (step)); - - #ifndef STATIC_GCONV - /* Release the loaded module. */ -@@ -293,13 +288,11 @@ gen_steps (struct derivation_step *best, - - /* Call the init function. */ - __gconv_init_fct init_fct = result[step_cnt].__init_fct; -- if (init_fct != NULL) -- { -- assert (result[step_cnt].__shlib_handle != NULL); -- - # ifdef PTR_DEMANGLE -- PTR_DEMANGLE (init_fct); -+ PTR_DEMANGLE (init_fct); - # endif -+ if (init_fct != NULL) -+ { - status = DL_CALL_FCT (init_fct, (&result[step_cnt])); - - if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK) -@@ -312,8 +305,7 @@ gen_steps (struct derivation_step *best, - } - - # ifdef PTR_MANGLE -- if (result[step_cnt].__btowc_fct != NULL) -- PTR_MANGLE (result[step_cnt].__btowc_fct); -+ PTR_MANGLE (result[step_cnt].__btowc_fct); - # endif - } - } -@@ -393,16 +385,15 @@ increment_counter (struct __gconv_step * - - /* Call the init function. */ - __gconv_init_fct init_fct = step->__init_fct; -- if (init_fct != NULL) -- { - #ifdef PTR_DEMANGLE -- PTR_DEMANGLE (init_fct); -+ PTR_DEMANGLE (init_fct); - #endif -+ if (init_fct != NULL) -+ { - DL_CALL_FCT (init_fct, (step)); - - #ifdef PTR_MANGLE -- if (step->__btowc_fct != NULL) -- PTR_MANGLE (step->__btowc_fct); -+ PTR_MANGLE (step->__btowc_fct); - #endif - } - } -diff -Nrup a/iconv/gconv_dl.c b/iconv/gconv_dl.c ---- a/iconv/gconv_dl.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_dl.c 2013-04-30 06:37:16.889521601 -0400 -@@ -132,10 +132,8 @@ __gconv_find_shlib (const char *name) - - #ifdef PTR_MANGLE - PTR_MANGLE (found->fct); -- if (found->init_fct != NULL) -- PTR_MANGLE (found->init_fct); -- if (found->end_fct != NULL) -- PTR_MANGLE (found->end_fct); -+ PTR_MANGLE (found->init_fct); -+ PTR_MANGLE (found->end_fct); - #endif - - /* We have succeeded in loading the shared object. */ -diff -Nrup a/wcsmbs/btowc.c b/wcsmbs/btowc.c ---- a/wcsmbs/btowc.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/wcsmbs/btowc.c 2013-04-30 06:37:16.891521619 -0400 -@@ -47,15 +47,15 @@ __btowc (c) - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - __gconv_btowc_fct btowc_fct = fcts->towc->__btowc_fct; -+#ifdef PTR_DEMANGLE -+ if (fcts->towc->__shlib_handle != NULL) -+ PTR_DEMANGLE (btowc_fct); -+#endif - - if (__builtin_expect (fcts->towc_nsteps == 1, 1) - && __builtin_expect (btowc_fct != NULL, 1)) - { - /* Use the shortcut function. */ --#ifdef PTR_DEMANGLE -- if (fcts->towc->__shlib_handle != NULL) -- PTR_DEMANGLE (btowc_fct); --#endif - return DL_CALL_FCT (btowc_fct, (fcts->towc, (unsigned char) c)); - } - else diff --git a/glibc.spec b/glibc.spec index fe3fb62..e6d60b6 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,8 +1,5 @@ %define checklist %{_builddir}/%{name}-%{version}/Check.list -# crypt blowfish support -%define crypt_bf_ver 1.3 - %define _slibdir /%{_lib} %define _slibdir32 /lib %define _libdir32 %{_prefix}/lib @@ -56,8 +53,8 @@ Summary: The GNU libc libraries Name: glibc Epoch: 6 -Version: 2.24 -Release: 11 +Version: 2.28 +Release: 1 License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ Group: System/Libraries Url: http://www.eglibc.org/ @@ -76,12 +73,6 @@ Source10: libc-lock.h # Locales Source20: Makefile.locales -# Blowfish support -Source50: http://www.openwall.com/crypt/crypt_blowfish-%{crypt_bf_ver}.tar.gz -Source51: http://www.openwall.com/crypt/crypt_blowfish-%{crypt_bf_ver}.tar.gz.sign -Source52: http://cvsweb.openwall.com/cgi/cvsweb.cgi/~checkout~/Owl/packages/glibc/crypt_freesec.c -Source53: http://cvsweb.openwall.com/cgi/cvsweb.cgi/~checkout~/Owl/packages/glibc/crypt_freesec.h - Source100: %{name}.rpmlintrc Source1000: locale-pkg @@ -90,132 +81,89 @@ Source1002: locale_uninstall.sh #----------------------------------------------------------------------- # fedora patches -# -# Patches that are highly unlikely to ever be accepated upstream. -# - -# Configuration twiddle, not sure there's a good case to get upstream to -# change this. -Patch0: glibc-fedora-nscd.patch - -# Horrible hack, never to be upstreamed. Can go away once the world -# has been rebuilt to use the new ld.so path. -Patch1: glibc-arm-hardfloat-3.patch - -# All these were from the glibc-fedora.patch mega-patch and need another -# round of reviewing. Ideally they'll either be submitted upstream or -# dropped. -Patch10: glibc-fedora-__libc_multiple_libcs.patch -Patch11: glibc-fedora-elf-ORIGIN.patch -Patch12: glibc-fedora-elf-init-hidden_undef.patch -Patch13: glibc-fedora-elf-rh737223.patch -Patch14: eglibc-fedora-test-debug-gnuc-hack.patch -Patch15: glibc-fedora-i386-tls-direct-seg-refs.patch -Patch16: glibc-fedora-include-bits-ldbl.patch -Patch17: glibc-fedora-ldd.patch -Patch18: glibc-fedora-linux-tcsetattr.patch -Patch19: eglibc-fedora-locale-euro.patch +Patch21: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-i386-tls-direct-seg-refs.patch +Patch23: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-include-bits-ldbl.patch +Patch25: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-linux-tcsetattr.patch +Patch26: eglibc-fedora-locale-euro.patch +Patch27: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-localedata-rh61908.patch # We disagree with -# glibc-fedora-streams-rh436349.patch +# http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-streams-rh436349.patch # Therefore we don't package/apply it. -Patch20: glibc-fedora-localedata-rh61908.patch -Patch21: glibc-fedora-localedef.patch -Patch22: glibc-fedora-locarchive.patch -Patch23: glibc-fedora-manual-dircategory.patch -Patch24: glibc-fedora-nis-rh188246.patch -Patch25: glibc-fedora-nptl-linklibc.patch - -Patch26: glibc-2.20-i586-hptiming.patch -Patch27: glibc-2.22-blacklist-CPUs-from-lock-elision.patch -Patch28: glibc-bug-regex-gcc5.patch -Patch29: glibc-c-utf8-locale.patch -Patch30: glibc-dns-host-gcc5.patch -# https://sourceware.org/bugzilla/show_bug.cgi?id=17645 -Patch31: glibc-dso_deps.patch -Patch32: glibc-gcc-PR69537.patch -Patch33: glibc-gethnamaddr-gcc5.patch -Patch34: glibc-ld-ctype-gcc5.patch -Patch35: glibc-res-hconf-gcc5.patch - -# -# Patches submitted, but not yet approved upstream. -# Each should be associated with a BZ. -# Obviously we're not there right now, but that's the goal -# - -# Needs to be sent upstream -Patch40: glibc-rh697421.patch -# Build info files in the source tree, then move to the build -# tree so that they're identical for multilib builds -Patch41: glibc-rh825061.patch -Patch42: glibc-rh741105.patch -# Upstream BZ 14247 -Patch43: glibc-rh827510.patch -# Upstream BZ 14185 -Patch44: glibc-rh819430.patch -Patch45: glibc-rh952799.patch - -Patch46: glibc-rh1009145.patch -Patch47: glibc-rh1013801.patch -Patch48: glibc-rh1070416.patch -Patch49: glibc-rh1315108.patch -Patch50: glibc-rh1315476-1.patch -Patch51: glibc-rh1315476-2.patch -Patch52: glibc-rh1324623.patch -Patch53: glibc-rh1335011.patch -Patch54: glibc-rh1351108-update-to-unicode-9.0.0.patch +Patch30: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-localedef.patch +Patch31: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-locarchive.patch +Patch32: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-manual-dircategory.patch +Patch33: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-nis-rh188246.patch +Patch34: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-nptl-linklibc.patch +Patch35: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-ppc-unwind.patch +Patch36: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-aarch64-tls-fixes.patch +Patch38: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-arm-hardfloat-3.patch +Patch40: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-c-utf8-locale.patch +Patch41: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-cs-path.patch +# We disagree with http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-disable-rwlock-elision.patch +# Patch 131 is a much nicer solution that disables rwlock elision only on CPUs that can't handle it. +Patch44: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-__libc_multiple_libcs.patch +Patch46: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-fedora-nscd.patch +Patch47: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-gcc-PR69537.patch +Patch50: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-nscd-sysconfig.patch +Patch52: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh1009145.patch +Patch54: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh1070416.patch +#Patch55: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh1315108.patch +Patch58: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh1324623.patch +#Patch59: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh1335011.patch +Patch61: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh697421.patch +Patch62: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh741105.patch +Patch63: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh819430.patch +Patch64: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh825061.patch +Patch65: http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/plain/glibc-rh827510.patch #----------------------------------------------------------------------- -# mandriva patches -Patch100: eglibc-mandriva-localedef-archive-follow-symlinks.patch -Patch101: eglibc-mandriva-fix-dns-with-broken-routers.patch -Patch102: eglibc-mandriva-nss-upgrade.patch -#Drop patch. Use default directory for locale definitions -#Patch103: eglibc-mandriva-share-locale.patch -Patch104: eglibc-mandriva-nsswitch.conf.patch -Patch105: eglibc-mandriva-xterm-xvt.patch -Patch106: eglibc-mandriva-nscd-enable.patch -Patch107: eglibc-mandriva-nscd-no-host-cache.patch -Patch108: eglibc-mandriva-i386-hwcapinfo.patch -Patch109: eglibc-mandriva-nscd-init-should-start.patch -Patch110: eglibc-mandriva-timezone.patch -Patch111: eglibc-mandriva-biarch-cpp-defines.patch -Patch112: eglibc-mandriva-ENOTTY-fr-translation.patch -Patch113: eglibc-mandriva-biarch-utils.patch -Patch114: eglibc-mandriva-multiarch.patch -Patch115: eglibc-mandriva-i586-if-no-cmov.patch -Patch116: eglibc-mandriva-pt_BR-i18nfixes.patch -Patch117: eglibc-mandriva-testsuite-ldbl-bits.patch -Patch118: eglibc-mandriva-testsuite-rt-notparallel.patch - -# https://bugzilla.redhat.com/show_bug.cgi?id=638477#c275 -# https://bugzilla.redhat.com/show_bug.cgi?id=696096 -# https://bugzilla.redhat.com/attachment.cgi?id=491198 -Patch120: eglibc-mandriva-no-leaf-attribute.patch -Patch121: eglibc-mandriva-mdv-avx-owl-crypt.patch -Patch122: eglibc-mandriva-mdv-owl-crypt_freesec.patch -Patch123: eglibc-mandriva-avx-relocate_fcrypt.patch -Patch124: eglibc-mandriva-avx-increase_BF_FRAME.patch -Patch125: eglibc-mandriva-mdv-wrapper_handle_sha.patch -# Reverts a part of eglibc-fedora-uname-getrlimit.patch that breaks the build -Patch126: nptl-getrlimit-compile.patch -# http://sourceware.org/bugzilla/show_bug.cgi?id=14995 -# http://sourceware.org/bugzilla/attachment.cgi?id=6795 -Patch127: glibc-2.17-gold.patch -# Crypt-blowfish patches -Patch128: crypt_blowfish-arm.patch +# Clear Linux patches +Patch83: https://github.com/clearlinux-pkgs/glibc/blob/master/alternate_trim.patch +Patch84: https://github.com/clearlinux-pkgs/glibc/blob/master/madvise-bss.patch +Patch85: https://github.com/clearlinux-pkgs/glibc/blob/master/spinaphore.patch +Patch86: https://raw.githubusercontent.com/clearlinux-pkgs/glibc/master/large-page-huge-page.patch +Patch87: https://raw.githubusercontent.com/clearlinux-pkgs/glibc/master/use_madv_free.patch +Patch88: https://raw.githubusercontent.com/clearlinux-pkgs/glibc/master/malloc_tune.patch +Patch89: https://raw.githubusercontent.com/clearlinux-pkgs/glibc/master/ldconfig-format-new.patch +# (tpg) CLR disabled this patch +#Patch90: https://raw.githubusercontent.com/clearlinux-pkgs/glibc/master/ldconfig-Os.patch +# https://sourceware.org/ml/libc-alpha/2018-03/msg00504.html +Patch98: https://raw.githubusercontent.com/clearlinux-pkgs/glibc/master/pause.patch +Patch99: https://raw.githubusercontent.com/clearlinux-pkgs/glibc/master/gcc-8-fix.patch +Patch100: https://raw.githubusercontent.com/clearlinux-pkgs/glibc/master/spin-smarter.patch +Patch101: https://raw.githubusercontent.com/clearlinux-pkgs/glibc/master/nostackshrink.patch # # Patches from upstream # -Patch201: glibc-2.24-CVE-2017-18269.patch -Patch202: glibc-2.24-CVE-2018-11236.patch -Patch203: glibc-2.24-CVE-2018-6485.patch -Patch204: glibc-2.24-CVE-2018-1000001.patch -Patch205: glibc-2.24-CVE-2017-16997.patch -Patch206: glibc-2.24-CVE-2017-15670.patch -Patch208: glibc-2.24-CVE-2017-15804.patch +#----------------------------------------------------------------------- +# OpenMandriva patches +Patch1000: eglibc-mandriva-localedef-archive-follow-symlinks.patch +Patch1001: eglibc-mandriva-fix-dns-with-broken-routers.patch +Patch1002: eglibc-mandriva-nss-upgrade.patch +Patch1003: eglibc-mandriva-share-locale.patch +Patch1004: eglibc-mandriva-nsswitch.conf.patch +Patch1005: eglibc-mandriva-xterm-xvt.patch +Patch1006: eglibc-mandriva-nscd-enable.patch +Patch1007: eglibc-mandriva-nscd-no-host-cache.patch +Patch1009: eglibc-mandriva-nscd-init-should-start.patch +Patch1010: eglibc-mandriva-timezone.patch +Patch1011: eglibc-mandriva-biarch-cpp-defines.patch +Patch1012: eglibc-mandriva-ENOTTY-fr-translation.patch +Patch1013: eglibc-mandriva-biarch-utils.patch +Patch1015: glibc-2.26-no-attribute-leaf-for-clang.patch +Patch1018: eglibc-mandriva-testsuite-ldbl-bits.patch +Patch1019: eglibc-mandriva-testsuite-rt-notparallel.patch +Patch1020: glibc-2.19-no-__builtin_va_arg_pack-with-clang.patch +#Patch1021: eglibc-mandriva-no-leaf-attribute.patch +# http://sourceware.org/bugzilla/show_bug.cgi?id=14995 +# http://sourceware.org/bugzilla/attachment.cgi?id=6795 +Patch1029: glibc-2.19-nscd-socket-and-pid-moved-from-varrun-to-run.patch +Patch1033: glibc-2.25-force-use-ld-bfd.patch +Patch1034: glibc-2.27-clang-_Float.patch +Patch1035: glibc-2.28-riscv-compile.patch + BuildRequires: autoconf2.5 BuildRequires: gettext @@ -248,8 +196,6 @@ Requires: bash %endif # The dynamic linker supports DT_GNU_HASH Provides: rtld(GNU_HASH) -Provides: glibc-crypt_blowfish = %{crypt_bf_ver} -Provides: eglibc-crypt_blowfish = %{crypt_bf_ver} Provides: should-restart = system # Determine minimum kernel versions (rhbz#619538) %define enablekernel 2.6.32 @@ -411,8 +357,6 @@ Requires: %{name} = %{EVRD} Requires: %{multilibc} = %{EVRD} %endif Requires: kernel-headers -Provides: glibc-crypt_blowfish-devel = %{crypt_bf_ver} -Provides: eglibc-crypt_blowfish-devel = %{crypt_bf_ver} %rename glibc-doc %if %{with pdf} %rename glibc-doc-pdf @@ -427,7 +371,6 @@ standard header and object files available in order to create the executables. %files devel -%{_mandir}/man3/* %{_infodir}/libc.info* %doc %{_docdir}/glibc/* %exclude %{_docdir}/glibc/nss @@ -439,23 +382,17 @@ executables. %{_libdir}/*.so %{_libdir}/libc_nonshared.a %{_libdir}/libg.a -%{_libdir}/libieee.a %{_libdir}/libmcheck.a %ifarch x86_64 %{_libdir}/libmvec.a %{_libdir}/libmvec_nonshared.a %endif -%{_libdir}/libpthread_nonshared.a -%{_libdir}/librpcsvc.a %if %{build_multiarch} %{_libdir32}/*.o %{_libdir32}/*.so %{_libdir32}/libc_nonshared.a %{_libdir32}/libg.a -%{_libdir32}/libieee.a %{_libdir32}/libmcheck.a -%{_libdir32}/libpthread_nonshared.a -%{_libdir32}/librpcsvc.a %endif #----------------------------------------------------------------------- @@ -477,7 +414,6 @@ library. %{_libdir}/libcrypt.a %{_libdir}/libdl.a %{_libdir}/libm.a -%{_libdir}/libnsl.a %{_libdir}/libpthread.a %{_libdir}/libresolv.a %{_libdir}/librt.a @@ -489,7 +425,6 @@ library. %{_libdir32}/libcrypt.a %{_libdir32}/libdl.a %{_libdir32}/libm.a -%{_libdir32}/libnsl.a %{_libdir32}/libpthread.a %{_libdir32}/libresolv.a %{_libdir32}/librt.a @@ -807,105 +742,67 @@ their ~/.profile configuration file. ######################################################################## %prep -%setup -q -a3 -a50 +%setup -q -a3 -%patch00 -p1 -%patch01 -p1 - -%patch10 -p1 -b .multiple~ -%patch11 -p1 -b .elfORIGIN~ -%patch12 -p1 -%patch13 -p1 -b .rh737223~ -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -b .curr~ -%patch20 -p1 -b .locales~ %patch21 -p1 -%patch22 -p1 %patch23 -p1 -%patch24 -p1 %patch25 -p1 - %patch26 -p1 %patch27 -p1 -%patch28 -p1 -%patch29 -p1 %patch30 -p1 %patch31 -p1 %patch32 -p1 %patch33 -p1 %patch34 -p1 %patch35 -p1 - -%patch40 -p1 +%patch36 -p1 +%patch38 -p1 %patch41 -p1 -%patch42 -p1 -%patch43 -p1 %patch44 -p1 -%patch45 -p1 %patch46 -p1 %patch47 -p1 -%patch48 -p1 -%patch49 -p1 %patch50 -p1 -%patch51 -p1 %patch52 -p1 -%patch53 -p1 %patch54 -p1 - +%patch58 -p1 +%patch61 -p1 +%patch62 -p1 +%patch63 -p1 +%patch64 -p1 +%patch65 -p1 +%patch83 -p1 +%patch84 -p1 +%patch85 -p1 +%patch86 -p1 +%patch87 -p1 +%patch88 -p1 +%patch89 -p1 +%patch98 -p1 +%patch99 -p1 %patch100 -p1 %patch101 -p1 -%patch102 -p1 -b .nssUpgrade~ -#patch103 -p1 -%patch104 -p1 -%patch105 -p1 -%patch106 -p1 -%patch107 -p1 -b .hwcap~ -%patch108 -p1 -%patch109 -p1 -%patch110 -p1 -%patch111 -p1 -%patch112 -p1 -%patch113 -p1 -b .multiarch~ -%patch114 -p1 -%patch115 -p1 -%patch116 -p1 -b .ldbl~ -%patch117 -p1 -b .tsp~ -%patch118 -p1 -%patch120 -p1 - -# copy freesec source -cp %{SOURCE52} %{SOURCE53} crypt/ -echo "Applying crypt_blowfish patch:" -%patch121 -p1 -b .owlCrypt~ -mv crypt/crypt.h crypt/gnu-crypt.h -chmod 0644 crypt_blowfish-%{crypt_bf_ver}/*.[chS] -cp -a crypt_blowfish-%{crypt_bf_ver}/*.[chS] crypt/ - -## FreeSec support for extended/new-style/BSDI hashes in crypt(3) -%patch122 -p1 -b .freesec~ -%patch123 -p1 -b .relocateFcrypt~ -%patch124 -p0 -# add sha256-crypt and sha512-crypt support to the Openwall wrapper -%patch125 -p1 - -%patch126 -p1 -b .compile~ - -%patch127 -p1 -b .gold~ - -%patch128 -p1 -b .blowfish_nonx86~ - -%patch201 -p1 -%patch202 -p1 -%patch203 -p1 -%patch204 -p1 -%patch205 -p1 -%patch206 -p1 -%patch208 -p1 +%patch1000 -p1 +%patch1001 -p1 +%patch1002 -p1 +%patch1003 -p1 +%patch1004 -p1 +%patch1005 -p1 +%patch1006 -p1 +%patch1007 -p1 +%patch1009 -p1 +%patch1010 -p1 +%patch1011 -p1 +%patch1012 -p1 +%patch1013 -p1 +%patch1015 -p1 +%patch1018 -p1 +%patch1019 -p1 +%patch1020 -p1 +%patch1029 -p1 +%patch1033 -p1 +%patch1034 -p1 +%patch1035 -p1 %if %{with selinux} # XXX kludge to build nscd with selinux support as it added -nostdinc @@ -916,7 +813,7 @@ cp -a crypt_blowfish-%{crypt_bf_ver}/*.[chS] crypt/ find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \; # Remove patch backups from files we ship in glibc packages -rm -f ChangeLog.[^0-9]* +rm -rf ChangeLog.[^0-9]* rm -f localedata/locales/{???_??,??_??}.* rm -f localedata/locales/[a-z_]*.* @@ -1086,8 +983,6 @@ BuildGlibc %{_target_cpu} esac %endif -make -C crypt_blowfish-%{crypt_bf_ver} man - # post install wrapper gcc -static -Lbuild-%{_target_cpu}-linux %{optflags} -Os %{SOURCE2} -o build-%{_target_cpu}-linux/glibc_post_upgrade \ '-DLIBTLS="/%{_lib}/tls/"' \ @@ -1190,10 +1085,6 @@ install -m 644 mandriva/nsswitch.conf %{buildroot}%{_sysconfdir}/nsswitch.conf install -m755 -d %{buildroot}/var/db/nscd %endif -# These man pages require special attention -mkdir -p %{buildroot}%{_mandir}/man3 -install -p -m 0644 crypt_blowfish-%{crypt_bf_ver}/*.3 %{buildroot}%{_mandir}/man3/ - # Useless and takes place rm -rf %{buildroot}/%{_datadir}/zoneinfo/{posix,right} @@ -1264,15 +1155,11 @@ install -m 755 -d %{buildroot}%{_docdir}/glibc install -m644 -D manual/libc.pdf %{buildroot}%{_docdir}/glibc/libc.pdf %endif popd -install -m 644 COPYING COPYING.LIB README NEWS INSTALL BUGS \ - PROJECTS CONFORMANCE hesiod/README.hesiod \ - ChangeLog* crypt/README.ufc-crypt nis/nss posix/gai.conf \ +install -m 644 COPYING COPYING.LIB README NEWS INSTALL hesiod/README.hesiod \ + ChangeLog* crypt/README.ufc-crypt nis/nss posix/gai.conf \ %{buildroot}%{_docdir}/glibc xz -0 --text %{buildroot}%{_docdir}/glibc/ChangeLog* install -m 644 timezone/README %{buildroot}%{_docdir}/glibc/README.timezone -install -m 755 -d %{buildroot}%{_docdir}/glibc/crypt_blowfish -install -m 644 crypt_blowfish-%{crypt_bf_ver}/{README,LINKS,PERFORMANCE} \ - %{buildroot}%{_docdir}/glibc/crypt_blowfish # Localization %find_lang libc @@ -1282,8 +1169,6 @@ rm -f %{buildroot}%{_infodir}/dir.old* rm -rf %{buildroot}%{_includedir}/asm-*/mach-*/ rm -f %{buildroot}%{_localedir}/locale-archive* -rm %{buildroot}%{_bindir}/rpcgen %{buildroot}%{_mandir}/man1/rpcgen.1* - # XXX: verify #find %{buildroot}%{_localedir} -type f -name LC_\* -o -name SYS_LC_\* |xargs rm -f diff --git a/glibc_post_upgrade.c b/glibc_post_upgrade.c index 85309bf..0171d67 100644 --- a/glibc_post_upgrade.c +++ b/glibc_post_upgrade.c @@ -11,6 +11,9 @@ #include #include +#define LD_SO_CONF "/etc/ld.so.conf" +#define ICONVCONFIG "/usr/sbin/iconvconfig" + #define verbose_exec(failcode, path...) \ do \ { \ @@ -24,39 +27,6 @@ __attribute__((noinline)) void sayn (long num); __attribute__((noinline)) void message (char *const path[]); __attribute__((noinline)) int check_elf (const char *name); -#ifdef __i386__ -static int -is_ia64 (void) -{ - unsigned int fl1, fl2; - - /* See if we can use cpuid. */ - __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" - "pushl %0; popfl; pushfl; popl %0; popfl" - : "=&r" (fl1), "=&r" (fl2) - : "i" (0x00200000)); - if (((fl1 ^ fl2) & 0x00200000) == 0) - return 0; - - /* Host supports cpuid. See if cpuid gives capabilities, try - CPUID(0). Preserve %ebx and %ecx; cpuid insn clobbers these, we - don't need their CPUID values here, and %ebx may be the PIC - register. */ - __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" - : "=a" (fl1) : "0" (0) : "edx", "cc"); - if (fl1 == 0) - return 0; - - /* Invoke CPUID(1), return %edx; caller can examine bits to - determine what's supported. */ - __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" - : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc"); - return (fl2 & (1 << 30)) != 0; -} -#else -#define is_ia64() 0 -#endif - int main (void) { @@ -73,14 +43,23 @@ main (void) int i, j, fd; off_t base; ssize_t ret; -#ifdef __i386__ - const char *remove_dirs[] = { "/lib/tls", "/lib/i686", "/lib/tls/i486", "/lib/tls/i586", "/lib/tls/i686" }; -#else -#ifndef LIBTLS -#define LIBTLS "/lib/tls" -#endif - const char *remove_dirs[] = { LIBTLS }; + + /* In order to support in-place upgrades, we must immediately remove + obsolete platform directories after installing a new glibc + version. RPM only deletes files removed by updates near the end + of the transaction. If we did not remove the obsolete platform + directories here, they would be preferred by the dynamic linker + during the execution of subsequent RPM scriptlets, likely + resulting in process startup failures. */ + const char *remove_dirs[] = + { +#if defined (__i386__) + "/lib/i686", + "/lib/i686/nosegneg", +#elif defined (__powerpc64__) && _CALL_ELF != 2 + "/lib64/power6", #endif + }; for (j = 0; j < sizeof (remove_dirs) / sizeof (remove_dirs[0]); ++j) { size_t rmlen = strlen (remove_dirs[j]); @@ -146,30 +125,19 @@ main (void) before running one of the lib's %post scriptlet. /sbin/ldconfig will then be run by the other arch's %post. */ if (! access ("/sbin/ldconfig", X_OK)) - verbose_exec (110, "/sbin/ldconfig", "/sbin/ldconfig"); + verbose_exec (110, "/sbin/ldconfig", "/sbin/ldconfig", "-X"); if (! utimes (GCONV_MODULES_DIR "/gconv-modules.cache", NULL)) { -#ifndef ICONVCONFIG -#define ICONVCONFIG "/usr/sbin/iconvconfig" -#endif - const char *iconv_cache = GCONV_MODULES_DIR"/gconv-modules.cache"; - const char *iconv_dir = GCONV_MODULES_DIR; - if (is_ia64 ()) - { - iconv_cache = "/emul/ia32-linux"GCONV_MODULES_DIR"/gconv-modules.cache"; - iconv_dir = "/emul/ia32-linux"GCONV_MODULES_DIR; - } - verbose_exec (113, ICONVCONFIG, "/usr/sbin/iconvconfig", - "-o", iconv_cache, - "--nostdlib", iconv_dir); + char *iconv_cache = GCONV_MODULES_DIR"/gconv-modules.cache"; + char *iconv_dir = GCONV_MODULES_DIR; + verbose_exec (113, ICONVCONFIG, "/usr/sbin/iconvconfig", + "-o", iconv_cache, + "--nostdlib", iconv_dir); } - /* Check if telinit is available and either SysVInit fifo, - or upstart telinit. */ - if (access ("/sbin/telinit", X_OK) - || ((!!access ("/dev/initctl", F_OK)) - ^ !access ("/sbin/initctl", X_OK))) + /* Check if systemctl is available for further systemd deamon restart*/ + if (access ("/bin/systemctl", X_OK)) _exit (0); /* Check if we are not inside of some chroot, because we'd just @@ -183,23 +151,27 @@ main (void) /* Here's another well known way to detect chroot, at least on an ext and xfs filesystems and assuming nothing mounted on the chroot's - root. */ + root. + # (tpg) Possible 2017 solutions + # 1. check if inode for "/" is in 0 between 4096 range, + # as this may get into account almost all firesystems? + # 2. check if /proc/1/cgroup output does contain word docker or lxc + # if (stat ("/", &statbuf) != 0 || (statbuf.st_ino != 2 && statbuf.st_ino != 128)) - _exit (0); + _exit (0); */ if (check_elf ("/proc/1/exe")) - verbose_exec (116, "/sbin/telinit", "/sbin/telinit", "u"); + verbose_exec (116, "/bin/systemctl", "/bin/systemctl", "daemon-reexec"); /* Check if we can safely condrestart sshd. */ - if (access ("/sbin/service", X_OK) == 0 + if (access ("/bin/systemctl", X_OK) == 0 && access ("/usr/sbin/sshd", X_OK) == 0 - && access ("/etc/rc.d/init.d/sshd", X_OK) == 0 - && access ("/bin/bash", X_OK) == 0) + && access ("/bin/sh", F_OK) == 0) { if (check_elf ("/usr/sbin/sshd")) - verbose_exec (-121, "/sbin/service", "/sbin/service", "sshd", "condrestart"); + verbose_exec (-121, "/bin/systemctl", "/bin/systemctl", "-q", "try-restart", "sshd.service"); } _exit(0); @@ -313,8 +285,6 @@ check_elf (const char *name) ret = ehdr.e_machine == EM_386; #elif defined __x86_64__ ret = ehdr.e_machine == EM_X86_64; -#elif defined __ia64__ - ret = ehdr.e_machine == EM_IA_64; #elif defined __powerpc64__ ret = ehdr.e_machine == EM_PPC64; #elif defined __powerpc__ diff --git a/large-page-huge-page.patch b/large-page-huge-page.patch new file mode 100644 index 0000000..6ba61fd --- /dev/null +++ b/large-page-huge-page.patch @@ -0,0 +1,11 @@ +--- glibc-2.24/malloc/malloc.c~ 2016-08-02 02:01:36.000000000 +0000 ++++ glibc-2.24/malloc/malloc.c 2016-08-27 04:16:33.210410956 +0000 +@@ -2333,6 +2333,8 @@ + + if (mm != MAP_FAILED) + { ++ if (size > 8 * 1024 * 1024) ++ __madvise (mm, size , MADV_HUGEPAGE); + /* + The offset to the start of the mmapped region is stored + in the prev_size field of the chunk. This allows us to adjust diff --git a/ldconfig-format-new.patch b/ldconfig-format-new.patch new file mode 100644 index 0000000..2af0d48 --- /dev/null +++ b/ldconfig-format-new.patch @@ -0,0 +1,14 @@ +Subject: Make ldconfig default to "new" cache format. +Index: glibc-2.21/elf/ldconfig.c +=================================================================== +--- glibc-2.21.orig/elf/ldconfig.c 2015-03-03 14:53:52.206995018 +0000 ++++ glibc-2.21/elf/ldconfig.c 2015-03-03 14:54:00.094995204 +0000 +@@ -95,7 +95,7 @@ + + /* Format to support. */ + /* 0: only libc5/glibc2; 1: both; 2: only glibc 2.2. */ +-int opt_format = 1; ++int opt_format = 2; + + /* Build cache. */ + static int opt_build_cache = 1; diff --git a/madvise-bss.patch b/madvise-bss.patch new file mode 100644 index 0000000..b030d09 --- /dev/null +++ b/madvise-bss.patch @@ -0,0 +1,10 @@ +--- glibc-2.22/elf/dl-map-segments.h.org 2015-11-23 17:13:52.948724559 -0500 ++++ glibc-2.22/elf/dl-map-segments.h 2015-11-23 17:14:42.434105906 -0500 +@@ -139,6 +139,7 @@ + -1, 0); + if (__glibc_unlikely (mapat == MAP_FAILED)) + return DL_MAP_SEGMENTS_ERROR_MAP_ZERO_FILL; ++ __madvise((caddr_t) zeropage, zeroend - zeropage, MADV_MERGEABLE); + } + } + diff --git a/malloc_tune.patch b/malloc_tune.patch new file mode 100644 index 0000000..e9076a5 --- /dev/null +++ b/malloc_tune.patch @@ -0,0 +1,20 @@ +--- glibc-2.24/malloc/malloc.c~ 2016-11-13 22:53:14.000000000 +0000 ++++ glibc-2.24/malloc/malloc.c 2016-11-13 23:01:29.750884186 +0000 +@@ -858,7 +858,7 @@ + #define M_TRIM_THRESHOLD -1 + + #ifndef DEFAULT_TRIM_THRESHOLD +-#define DEFAULT_TRIM_THRESHOLD (128 * 1024) ++#define DEFAULT_TRIM_THRESHOLD (512 * 1024) + #endif + + /* +@@ -891,7 +891,7 @@ + #define M_TOP_PAD -2 + + #ifndef DEFAULT_TOP_PAD +-#define DEFAULT_TOP_PAD (0) ++#define DEFAULT_TOP_PAD (64 * 1024) + #endif + + /* diff --git a/nostackshrink.patch b/nostackshrink.patch new file mode 100644 index 0000000..0963ee9 --- /dev/null +++ b/nostackshrink.patch @@ -0,0 +1,14 @@ +when this gets called the stack is likely not there; avoid the tlb flushes + + +--- glibc-2.28/nptl/allocatestack.c~ 2018-08-01 05:10:47.000000000 +0000 ++++ glibc-2.28/nptl/allocatestack.c 2018-09-27 16:18:09.043648892 +0000 +@@ -385,6 +385,8 @@ + { + uintptr_t sp = (uintptr_t) CURRENT_STACK_FRAME; + size_t pagesize_m1 = __getpagesize () - 1; ++ ++ return; + #if _STACK_GROWS_DOWN && !defined(NEED_SEPARATE_REGISTER_STACK) + size_t freesize = (sp - (uintptr_t) mem) & ~pagesize_m1; + assert (freesize < size); diff --git a/nptl-getrlimit-compile.patch b/nptl-getrlimit-compile.patch deleted file mode 100644 index 2052b19..0000000 --- a/nptl-getrlimit-compile.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libc/nptl/nptl-init.c.bero~ 2012-12-01 23:55:26.722754391 +0100 -+++ libc/nptl/nptl-init.c 2012-12-01 23:55:42.725950817 +0100 -@@ -414,7 +414,7 @@ __pthread_initialize_minimal_internal (v - /* Determine the default allowed stack size. This is the size used - in case the user does not specify one. */ - struct rlimit limit; -- if (__getrlimit (RLIMIT_STACK, &limit) != 0 -+ if (getrlimit (RLIMIT_STACK, &limit) != 0 - || limit.rlim_cur == RLIM_INFINITY) - /* The system limit is not usable. Use an architecture-specific - default. */ diff --git a/pause.patch b/pause.patch new file mode 100644 index 0000000..a3dc808 --- /dev/null +++ b/pause.patch @@ -0,0 +1,11 @@ +--- glibc-2.27/sysdeps/x86_64/atomic-machine.h~ 2018-02-01 16:17:18.000000000 +0000 ++++ glibc-2.27/sysdeps/x86_64/atomic-machine.h 2018-04-28 14:19:06.374119197 +0000 +@@ -409,7 +409,7 @@ + __result; }) + + +-#define atomic_spin_nop() asm ("rep; nop") ++#define atomic_spin_nop() asm ("lfence") + + + #define __arch_and_body(lock, mem, mask) \ diff --git a/spin-smarter.patch b/spin-smarter.patch new file mode 100644 index 0000000..1304a86 --- /dev/null +++ b/spin-smarter.patch @@ -0,0 +1,17 @@ +--- glibc-2.27/nptl/pthread_mutex_lock.c~ 2018-02-01 16:17:18.000000000 +0000 ++++ glibc-2.27/nptl/pthread_mutex_lock.c 2018-05-15 14:19:00.864190585 +0000 +@@ -133,7 +133,13 @@ + LLL_MUTEX_LOCK (mutex); + break; + } +- atomic_spin_nop (); ++ /* MO read while spinning */ ++ do ++ { ++ atomic_spin_nop (); ++ } ++ while (atomic_load_relaxed (&mutex->__data.__lock) != 0 && ++ ++cnt < max_cnt); + } + while (LLL_MUTEX_TRYLOCK (mutex) != 0); + diff --git a/spinaphore.patch b/spinaphore.patch new file mode 100644 index 0000000..8477858 --- /dev/null +++ b/spinaphore.patch @@ -0,0 +1,28 @@ +--- glibc-2.23/nptl/pthread_mutex_lock.c.org 2016-03-03 22:33:24.230342596 -0500 ++++ glibc-2.23/nptl/pthread_mutex_lock.c 2016-03-03 22:43:18.285915880 -0500 +@@ -75,9 +75,22 @@ + if (__glibc_likely (type == PTHREAD_MUTEX_TIMED_NP)) + { + FORCE_ELISION (mutex, goto elision); +- simple: +- /* Normal mutex. */ +- LLL_MUTEX_LOCK (mutex); ++ if (LLL_MUTEX_TRYLOCK (mutex) != 0) ++ { ++ int cnt = 0; ++ do ++ { ++ if (cnt++ >= 256 || !__is_smp) ++ { ++ /* Normal mutex. */ ++simple: ++ LLL_MUTEX_LOCK (mutex); ++ break; ++ } ++ atomic_spin_nop (); ++ } ++ while (LLL_MUTEX_TRYLOCK (mutex) != 0); ++ } + assert (mutex->__data.__owner == 0); + } + #ifdef HAVE_ELISION diff --git a/use_madv_free.patch b/use_madv_free.patch new file mode 100644 index 0000000..4d579ac --- /dev/null +++ b/use_madv_free.patch @@ -0,0 +1,22 @@ +--- glibc-2.24/malloc/malloc.c~ 2016-08-27 04:16:33.000000000 +0000 ++++ glibc-2.24/malloc/malloc.c 2016-11-13 22:53:14.772986778 +0000 +@@ -4568,7 +4568,7 @@ + content. */ + memset (paligned_mem, 0x89, size & ~psm1); + #endif +- __madvise (paligned_mem, size & ~psm1, MADV_DONTNEED); ++ __madvise (paligned_mem, size & ~psm1, MADV_FREE); + + result = 1; + } +--- glibc-2.24/malloc/arena.c~ 2016-08-02 02:01:36.000000000 +0000 ++++ glibc-2.24/malloc/arena.c 2016-11-13 22:52:52.889299846 +0000 +@@ -524,7 +524,7 @@ + h->mprotect_size = new_size; + } + else +- __madvise ((char *) h + new_size, diff, MADV_DONTNEED); ++ __madvise ((char *) h + new_size, diff, MADV_FREE); + /*fprintf(stderr, "shrink %p %08lx\n", h, new_size);*/ + + h->size = new_size;