diff options
author | Ulrich Drepper <drepper@redhat.com> | 2008-04-19 16:42:41 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2008-04-19 16:42:41 +0000 |
commit | c52137d39101515cacb67a2bcd43b77bd06284e0 (patch) | |
tree | 301583f49438de52f3a7cf54676d958b4158ec8f | |
parent | 87a71b8d67e501d422528b8435e733e8e78a165a (diff) | |
download | glibc-c52137d39101515cacb67a2bcd43b77bd06284e0.tar.gz glibc-c52137d39101515cacb67a2bcd43b77bd06284e0.tar.xz glibc-c52137d39101515cacb67a2bcd43b77bd06284e0.zip |
[BZ #5209, BZ #5381]
2008-04-15 Ulrich Drepper <drepper@redhat.com> [BZ #5209] * sysdeps/unix/sysv/linux/times.c: New file. [BZ #5381] * nscd/nscd.h: Define enum in_flight, mem_in_flight, and mem_in_flight_list variables. Add new parameter to mempool_alloc prototype. * nscd/mem.c (mempool_alloc): Take additional parameter. Initialize appropriate mem_in_flight element. (gc): Take allocations which have not yet been committed to the database into account. * nscd/cache.c (cache_add): Add new parameter to mempool_alloc call. Reset mem_in_flight before returning. * nscd/connections.c (nscd_run_worker): Initialize mem_in_flight and cue it up in mem_in_flight_list. * nscd/aicache.c: Adjust mempool_alloc call. * nscd/grpcache.c: Likewise. * nscd/hstcache.c: Likewise. * nscd/initgrcache.c: Likewise. * nscd/pwdcache.c: Likewise. * nscd/servicescache.c: Likewise. * nscd/Makefile (nscd-flags): Until ld is fixed, use -fpic instead of -fpie. * nscd/connections.c (handle_request): Provide better error message in case SELinux forbids the service. * version.h (VERSION): Bump to 2.8.90.
-rw-r--r-- | ChangeLog | 31 | ||||
-rw-r--r-- | localedata/ChangeLog | 5 | ||||
-rw-r--r-- | localedata/charmaps/UTF-8 | 133 | ||||
-rw-r--r-- | localedata/locales/i18n | 412 | ||||
-rw-r--r-- | nscd/Makefile | 5 | ||||
-rw-r--r-- | nscd/aicache.c | 11 | ||||
-rw-r--r-- | nscd/cache.c | 13 | ||||
-rw-r--r-- | nscd/connections.c | 47 | ||||
-rw-r--r-- | nscd/grpcache.c | 11 | ||||
-rw-r--r-- | nscd/hstcache.c | 11 | ||||
-rw-r--r-- | nscd/initgrcache.c | 11 | ||||
-rw-r--r-- | nscd/mem.c | 35 | ||||
-rw-r--r-- | nscd/nscd.h | 28 | ||||
-rw-r--r-- | nscd/pwdcache.c | 11 | ||||
-rw-r--r-- | nscd/servicescache.c | 11 |
15 files changed, 523 insertions, 252 deletions
diff --git a/ChangeLog b/ChangeLog index 873ddb6808..2d7aac2c7e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,34 @@ +2008-04-15 Ulrich Drepper <drepper@redhat.com> + + [BZ #5209] + * sysdeps/unix/sysv/linux/times.c: New file. + + [BZ #5381] + * nscd/nscd.h: Define enum in_flight, mem_in_flight, and + mem_in_flight_list variables. Add new parameter to mempool_alloc + prototype. + * nscd/mem.c (mempool_alloc): Take additional parameter. Initialize + appropriate mem_in_flight element. + (gc): Take allocations which have not yet been committed to the + database into account. + * nscd/cache.c (cache_add): Add new parameter to mempool_alloc call. + Reset mem_in_flight before returning. + * nscd/connections.c (nscd_run_worker): Initialize mem_in_flight and + cue it up in mem_in_flight_list. + * nscd/aicache.c: Adjust mempool_alloc call. + * nscd/grpcache.c: Likewise. + * nscd/hstcache.c: Likewise. + * nscd/initgrcache.c: Likewise. + * nscd/pwdcache.c: Likewise. + * nscd/servicescache.c: Likewise. + * nscd/Makefile (nscd-flags): Until ld is fixed, use -fpic instead + of -fpie. + + * nscd/connections.c (handle_request): Provide better error message + in case SELinux forbids the service. + + * version.h (VERSION): Bump to 2.8.90. + 2008-04-17 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/dl-osinfo.h: Include fcntl.h. diff --git a/localedata/ChangeLog b/localedata/ChangeLog index 61f2151bb7..5c9cbf2215 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,8 @@ +2008-04-15 Ulrich Drepper <drepper@redhat.com> + + * charmaps/UTF-8: Update for Unicode v5.1. + * locales/i18n: Update for Unicode 5. + 2008-04-09 Ulrich Drepper <drepper@redhat.com> * tst-langinfo.sh: Adjust for latest fr_FR locale changes. diff --git a/localedata/charmaps/UTF-8 b/localedata/charmaps/UTF-8 index 4ace37697e..d4375bbab4 100644 --- a/localedata/charmaps/UTF-8 +++ b/localedata/charmaps/UTF-8 @@ -899,7 +899,6 @@ CHARMAP <U037C> /xcd/xbc GREEK SMALL DOTTED LUNATE SIGMA SYMBOL <U037D> /xcd/xbd GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL <U037E> /xcd/xbe GREEK QUESTION MARK -<U037F> /xcd/xbf GREEK CAPITAL KAI SYMBOL <U0384> /xce/x84 GREEK TONOS <U0385> /xce/x85 GREEK DIALYTIKA TONOS <U0386> /xce/x86 GREEK CAPITAL LETTER ALPHA WITH TONOS @@ -972,6 +971,7 @@ CHARMAP <U03CC> /xcf/x8c GREEK SMALL LETTER OMICRON WITH TONOS <U03CD> /xcf/x8d GREEK SMALL LETTER UPSILON WITH TONOS <U03CE> /xcf/x8e GREEK SMALL LETTER OMEGA WITH TONOS +<U03CF> /xcf/x8f GREEK CAPITAL KAI SYMBOL <U03D0> /xcf/x90 GREEK BETA SYMBOL <U03D1> /xcf/x91 GREEK THETA SYMBOL <U03D2> /xcf/x92 GREEK UPSILON WITH HOOK SYMBOL @@ -9443,71 +9443,71 @@ CHARMAP <U2D23> /xe2/xb4/xa3 GEORGIAN SMALL LETTER WE <U2D24> /xe2/xb4/xa4 GEORGIAN SMALL LETTER HAR <U2D25> /xe2/xb4/xa5 GEORGIAN SMALL LETTER HOE -<U2D30> /xe2/xb4/xb0 TIFINAGH YA -<U2D31> /xe2/xb4/xb1 LETTRE TIFINAGHE YAB -<U2D32> /xe2/xb4/xb2 LETTRE TIFINAGHE YAB SPIRANT -<U2D33> /xe2/xb4/xb3 LETTRE TIFINAGHE YAG -<U2D34> /xe2/xb4/xb4 LETTRE TIFINAGHE YAG SPIRANT -<U2D35> /xe2/xb4/xb5 LETTRE TIFINAGHE YADJ KABYLE -<U2D36> /xe2/xb4/xb6 LETTRE TIFINAGHE YADJ -<U2D37> /xe2/xb4/xb7 LETTRE TIFINAGHE YAD -<U2D38> /xe2/xb4/xb8 LETTRE TIFINAGHE YAD SPIRANT (yadh) -<U2D39> /xe2/xb4/xb9 LETTRE TIFINAGHE YADD -<U2D3A> /xe2/xb4/xba LETTRE TIFINAGHE YADD SPIRANT -<U2D3B> /xe2/xb4/xbb LETTRE TIFINAGHE YEY -<U2D3C> /xe2/xb4/xbc LETTRE TIFINAGHE YAF -<U2D3D> /xe2/xb4/xbd LETTRE TIFINAGHE YAK -<U2D3E> /xe2/xb4/xbe LETTRE TIFINAGHE YAK TOUAREG -<U2D3F> /xe2/xb4/xbf LETTRE TIFINAGHE YAK SPIRANT -<U2D40> /xe2/xb5/x80 LETTRE TIFINAGHE YAH (yab touareg) -<U2D41> /xe2/xb5/x81 LETTRE TIFINAGHE YAH KABYLE -<U2D42> /xe2/xb5/x82 LETTRE TIFINAGHE YAH TOUAREG -<U2D43> /xe2/xb5/x83 LETTRE TIFINAGHE YAHH -<U2D44> /xe2/xb5/x84 LETTRE TIFINAGHE YA’ -<U2D45> /xe2/xb5/x85 LETTRE TIFINAGHE YAKH -<U2D46> /xe2/xb5/x86 LETTRE TIFINAGHE YAKH TOUAREG (quatre-points en carré touareg) -<U2D47> /xe2/xb5/x87 LETTRE TIFINAGHE YAQ -<U2D48> /xe2/xb5/x88 LETTRE TIFINAGHE YAQ TOUAREG -<U2D49> /xe2/xb5/x89 LETTRE TIFINAGHE YI -<U2D4A> /xe2/xb5/x8a LETTRE TIFINAGHE YAJ -<U2D4B> /xe2/xb5/x8b LETTRE TIFINAGHE YAJ DE L’AHAGGAR -<U2D4C> /xe2/xb5/x8c LETTRE TIFINAGHE YAJ TOUAREG -<U2D4D> /xe2/xb5/x8d LETTRE TIFINAGHE YAL -<U2D4E> /xe2/xb5/x8e LETTRE TIFINAGHE YAM -<U2D4F> /xe2/xb5/x8f LETTRE TIFINAGHE YAN -<U2D50> /xe2/xb5/x90 LETTRE TIFINAGHE YAGN TOUAREG -<U2D51> /xe2/xb5/x91 LETTRE TIFINAGHE YANG TOUAREG -<U2D52> /xe2/xb5/x92 LETTRE TIFINAGHE YAP -<U2D53> /xe2/xb5/x93 LETTRE TIFINAGHE YOU (yaw touareg) -<U2D54> /xe2/xb5/x94 LETTRE TIFINAGHE YAR -<U2D55> /xe2/xb5/x95 LETTRE TIFINAGHE YARR -<U2D56> /xe2/xb5/x96 LETTRE TIFINAGHE YAGH -<U2D57> /xe2/xb5/x97 LETTRE TIFINAGHE YAGH TOUAREG -<U2D58> /xe2/xb5/x98 LETTRE TIFINAGHE YAGH DE L’AÏR (yadj de l’Adrar, cinq-points en quinconce touareg) -<U2D59> /xe2/xb5/x99 LETTRE TIFINAGHE YAS -<U2D5A> /xe2/xb5/x9a LETTRE TIFINAGHE YASS -<U2D5B> /xe2/xb5/x9b LETTRE TIFINAGHE YACH -<U2D5C> /xe2/xb5/x9c LETTRE TIFINAGHE YAT -<U2D5D> /xe2/xb5/x9d LETTRE TIFINAGHE YAT SPIRANT (yath) -<U2D5E> /xe2/xb5/x9e LETTRE TIFINAGHE YATCH -<U2D5F> /xe2/xb5/x9f LETTRE TIFINAGHE YATT -<U2D60> /xe2/xb5/xa0 LETTRE TIFINAGHE YAV -<U2D61> /xe2/xb5/xa1 LETTRE TIFINAGHE YAW -<U2D62> /xe2/xb5/xa2 LETTRE TIFINAGHE YAY -<U2D63> /xe2/xb5/xa3 LETTRE TIFINAGHE YAZ -<U2D64> /xe2/xb5/xa4 LETTRE TIFINAGHE YAZ TAWELLEMET (yaz harpon) -<U2D65> /xe2/xb5/xa5 LETTRE TIFINAGHE YAZZ -<U2D6F> /xe2/xb5/xaf LETTRE MODIFICATIVE TIFINAGHE DE LABIO-VÉLARISATION (tamatart) -<U2D80> /xe2/xb6/x80 ETHIOPIC SYLLALE LOA -<U2D81> /xe2/xb6/x81 ETHIOPIC SYLLALE MOA -<U2D82> /xe2/xb6/x82 ETHIOPIC SYLLALE ROA -<U2D83> /xe2/xb6/x83 ETHIOPIC SYLLALE SOA -<U2D84> /xe2/xb6/x84 ETHIOPIC SYLLALE SHOA -<U2D85> /xe2/xb6/x85 ETHIOPIC SYLLALE BOA -<U2D86> /xe2/xb6/x86 ETHIOPIC SYLLALE TOA -<U2D87> /xe2/xb6/x87 ETHIOPIC SYLLALE COA -<U2D88> /xe2/xb6/x88 ETHIOPIC SYLLALE NOA -<U2D89> /xe2/xb6/x89 ETHIOPIC SYLLALE NYOA +<U2D30> /xe2/xb4/xb0 TIFINAGH LETTER YA +<U2D31> /xe2/xb4/xb1 TIFINAGH LETTER YAB +<U2D32> /xe2/xb4/xb2 TIFINAGH LETTER YABH +<U2D33> /xe2/xb4/xb3 TIFINAGH LETTER YAG +<U2D34> /xe2/xb4/xb4 TIFINAGH LETTER YAGHH +<U2D35> /xe2/xb4/xb5 TIFINAGH LETTER BERBER ACADEMY YAJ +<U2D36> /xe2/xb4/xb6 TIFINAGH LETTER YAJ +<U2D37> /xe2/xb4/xb7 TIFINAGH LETTER YAD +<U2D38> /xe2/xb4/xb8 TIFINAGH LETTER YADH +<U2D39> /xe2/xb4/xb9 TIFINAGH LETTER YADD +<U2D3A> /xe2/xb4/xba TIFINAGH LETTER YADDH +<U2D3B> /xe2/xb4/xbb TIFINAGH LETTER YEY +<U2D3C> /xe2/xb4/xbc TIFINAGH LETTER YAF +<U2D3D> /xe2/xb4/xbd TIFINAGH LETTER YAK +<U2D3E> /xe2/xb4/xbe TIFINAGH LETTER TUAREG YAK +<U2D3F> /xe2/xb4/xbf TIFINAGH LETTER YAKHH +<U2D40> /xe2/xb5/x80 TIFINAGH LETTER YAH +<U2D41> /xe2/xb5/x81 TIFINAGH LETTER BERBER ACADEMY YAH +<U2D42> /xe2/xb5/x82 TIFINAGH LETTER TUAREG YAH +<U2D43> /xe2/xb5/x83 TIFINAGH LETTER YAHH +<U2D44> /xe2/xb5/x84 TIFINAGH LETTER YAA +<U2D45> /xe2/xb5/x85 TIFINAGH LETTER YAKH +<U2D46> /xe2/xb5/x86 TIFINAGH LETTER TUAREG YAKH +<U2D47> /xe2/xb5/x87 TIFINAGH LETTER YAQ +<U2D48> /xe2/xb5/x88 TIFINAGH LETTER TUAREG YAQ +<U2D49> /xe2/xb5/x89 TIFINAGH LETTER YI +<U2D4A> /xe2/xb5/x8a TIFINAGH LETTER YAZH +<U2D4B> /xe2/xb5/x8b TIFINAGH LETTER AHAGGAR YAZH +<U2D4C> /xe2/xb5/x8c TIFINAGH LETTER TUAREG YAZH +<U2D4D> /xe2/xb5/x8d TIFINAGH LETTER YAL +<U2D4E> /xe2/xb5/x8e TIFINAGH LETTER YAM +<U2D4F> /xe2/xb5/x8f TIFINAGH LETTER YAN +<U2D50> /xe2/xb5/x90 TIFINAGH LETTER TUAREG YAGN +<U2D51> /xe2/xb5/x91 TIFINAGH LETTER TUAREG YANG +<U2D52> /xe2/xb5/x92 TIFINAGH LETTER YAP +<U2D53> /xe2/xb5/x93 TIFINAGH LETTER YU +<U2D54> /xe2/xb5/x94 TIFINAGH LETTER YAR +<U2D55> /xe2/xb5/x95 TIFINAGH LETTER YARR +<U2D56> /xe2/xb5/x96 TIFINAGH LETTER YAGH +<U2D57> /xe2/xb5/x97 TIFINAGH LETTER TUAREG YAGH +<U2D58> /xe2/xb5/x98 TIFINAGH LETTER AYER YAGH +<U2D59> /xe2/xb5/x99 TIFINAGH LETTER YAS +<U2D5A> /xe2/xb5/x9a TIFINAGH LETTER YASS +<U2D5B> /xe2/xb5/x9b TIFINAGH LETTER YASH +<U2D5C> /xe2/xb5/x9c TIFINAGH LETTER YAT +<U2D5D> /xe2/xb5/x9d TIFINAGH LETTER YATH +<U2D5E> /xe2/xb5/x9e TIFINAGH LETTER YACH +<U2D5F> /xe2/xb5/x9f TIFINAGH LETTER YATT +<U2D60> /xe2/xb5/xa0 TIFINAGH LETTER YAV +<U2D61> /xe2/xb5/xa1 TIFINAGH LETTER YAW +<U2D62> /xe2/xb5/xa2 TIFINAGH LETTER YAY +<U2D63> /xe2/xb5/xa3 TIFINAGH LETTER YAZ +<U2D64> /xe2/xb5/xa4 TIFINAGH LETTER TAWELLEMET YAZ +<U2D65> /xe2/xb5/xa5 TIFINAGH LETTER YAZZ +<U2D6F> /xe2/xb5/xaf TIFINAGH MODIFIER LETTER LABIALIZATION MARK +<U2D80> /xe2/xb6/x80 ETHIOPIC SYLLABLE LOA +<U2D81> /xe2/xb6/x81 ETHIOPIC SYLLABLE MOA +<U2D82> /xe2/xb6/x82 ETHIOPIC SYLLABLE ROA +<U2D83> /xe2/xb6/x83 ETHIOPIC SYLLABLE SOA +<U2D84> /xe2/xb6/x84 ETHIOPIC SYLLABLE SHOA +<U2D85> /xe2/xb6/x85 ETHIOPIC SYLLABLE BOA +<U2D86> /xe2/xb6/x86 ETHIOPIC SYLLABLE TOA +<U2D87> /xe2/xb6/x87 ETHIOPIC SYLLABLE COA +<U2D88> /xe2/xb6/x88 ETHIOPIC SYLLABLE NOA +<U2D89> /xe2/xb6/x89 ETHIOPIC SYLLABLE NYOA <U2D8A> /xe2/xb6/x8a ETHIOPIC SYLLABLE GLOTTAL OA <U2D8B> /xe2/xb6/x8b ETHIOPIC SYLLABLE ZOA <U2D8C> /xe2/xb6/x8c ETHIOPIC SYLLABLE DOA @@ -26425,7 +26425,6 @@ CHARMAP <UFFFC> /xef/xbf/xbc OBJECT REPLACEMENT CHARACTER <UFFFD> /xef/xbf/xbd REPLACEMENT CHARACTER <U00010000> /xf0/x90/x80/x80 LINEAR B SYLLABLE B008 A -<U00010000> /xf0/x90/x80/x80 LINEAR B SYLLABLE B008 A <U00010001> /xf0/x90/x80/x81 LINEAR B SYLLABLE B038 E <U00010002> /xf0/x90/x80/x82 LINEAR B SYLLABLE B028 I <U00010003> /xf0/x90/x80/x83 LINEAR B SYLLABLE B061 O diff --git a/localedata/locales/i18n b/localedata/locales/i18n index 93ffe90e7e..7287424417 100644 --- a/localedata/locales/i18n +++ b/localedata/locales/i18n @@ -2,20 +2,17 @@ escape_char / comment_char % LC_IDENTIFICATION -% This is the ISO/IEC TR 14652 "i18n" definition for -% the LC_IDENTIFICATION category. -% -title "ISO/IEC TR 14652 i18n FDCC-set" -source "ISO/IEC Copyright Office" -address "Case postale 56, CH-1211 Geneve 20, Switzerland" +title "" +source "" +address "" contact "" email "" tel "" fax "" language "" -territory "ISO" -revision "1.0" -date "2000-01-24" +territory "" +revision "" +date "2008-04-13" % category "i18n:2000";LC_IDENTIFICATION category "i18n:2000";LC_CTYPE @@ -63,6 +60,7 @@ upper / <U023A>;<U023B>;<U023D>;<U023E>;/ <U0241>;<U0243>..<U0246>;<U0248>;<U024A>;<U024C>;<U024E>;/ % BASIC GREEK/ + <U0370>;<U0372>;<U0376>;/ <U0386>;<U0388>..<U038A>;<U038C>;<U038E>;<U038F>;<U0391>..<U03A1>;/ <U03A3>..<U03AB>;<U03D8>..(2)..<U03DE>;/ % GREEK SYMBOLS AND COPTIC/ @@ -73,7 +71,7 @@ upper / <U0480>;<U048A>..(2)..<U04BE>;<U04C0>;<U04C1>..(2)..<U04CD>;/ <U04D0>..(2)..<U04FE>;/ % CYRILLIC SUPPLEMENT/ - <U0500>..(2)..<U0512>;/ + <U0500>..(2)..<U0522>;/ % ARMENIAN/ <U0531>..<U0556>;/ % GEORGIAN/ @@ -83,8 +81,8 @@ upper / <U10A0>..<U10C5>;/ % LATIN EXTENDED ADDITIONAL/ <U1E00>..(2)..<U1E7E>;/ - <U1E80>..(2)..<U1E94>;/ - <U1EA0>..(2)..<U1EF8>;/ + <U1E80>..(2)..<U1E94>;<U1E9E>;/ + <U1EA0>..(2)..<U1EFE>;/ % GREEK EXTENDED/ <U1F08>..<U1F0F>;<U1F18>..<U1F1D>;<U1F28>..<U1F2F>;<U1F38>..<U1F3F>;/ <U1F48>..<U1F4D>;<U1F59>..(2)..<U1F5F>;<U1F68>..<U1F6F>;/ @@ -101,9 +99,15 @@ upper / % GLAGOLITIC/ <U2C00>..<U2C2E>;/ % LATIN EXTENDED-C/ - <U2C60>;<U2C62>..<U2C64>;<U2C67>..(2)..<U2C6B>;<U2C75>;/ + <U2C60>;<U2C62>..<U2C64>;<U2C67>..(2)..<U2C6B>;<U2C6D>..<U2C6F>;/ + <U2C72>;<U2C75>;<UA78B>;/ % COPTIC/ <U2C80>..(2)..<U2CE2>;/ +% CYRILLIC SUPPLEMENT 2/ + <UA640>..(2)..<UA65E>;<UA662>..(2)..<UA66C>;<UA680>..(2)..<UA696>;/ +% LATIN EXTENDED-D/ + <UA722>..(2)..<UA72E>;<UA732>..(2)..<UA76E>;<UA779>..(2)..<UA77D>;/ + <UA77E>..(2)..<UA786>;/ % HALFWIDTH AND FULLWIDTH FORMS/ <UFF21>..<UFF3A>;/ % DESERET/ @@ -133,6 +137,7 @@ lower / % COMBINING DIACRITICAL MARKS/ <U0345>;/ % BASIC GREEK/ + <U0371>;<U0373>;<U0377>;/ <U037B>..<U037D>;/ <U03AC>..<U03AF>;<U03B1>..<U03CE>;/ % GREEK SYMBOLS AND COPTIC/ @@ -142,13 +147,13 @@ lower / <U0430>..<U045F>;<U0461>..(2)..<U047F>;/ <U0481>;<U048B>..(2)..<U04BF>;<U04C2>..(2)..<U04CE>;/ <U04CF>;/ - <U04D1>..(2)..<U0513>;/ + <U04D1>..(2)..<U0523>;/ % ARMENIAN/ <U0561>..<U0586>;/ % PHONETIC EXTENSIONS/ <U1D7D>;/ % LATIN EXTENDED ADDITIONAL/ - <U1E01>..(2)..<U1E95>;<U1E9B>;<U1EA1>..(2)..<U1EF9>;/ + <U1E01>..(2)..<U1E95>;<U1E9B>..<U1E9D>;<U1E9F>;<U1EA1>..(2)..<U1EFF>;/ % GREEK EXTENDED/ <U1F00>..<U1F07>;<U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;/ <U1F40>..<U1F45>;<U1F51>..(2)..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;/ @@ -158,19 +163,25 @@ lower / % LETTERLIKE SYMBOLS/ <U214E>;/ % NUMBER FORMS/ - <U2170>..<U217F>;<U2184>;/ + <U2170>..<U217F>;<U2188>;/ % ENCLOSED ALPHANUMERICS/ <U24D0>..<U24E9>;/ % GLAGOLITIC/ <U2C30>..<U2C5E>;/ % LATIN EXTENDED-C/ - <U2C61>;<U2C65>;<U2C66>..(2)..<U2C6C>;<U2C76>;/ + <U2C61>;<U2C65>;<U2C66>..(2)..<U2C6C>;<U2C71>;<U2C73>;<U2C74>;/ + <U2C76>..<U2C7A>;/ % COPTIC/ <U2C81>..(2)..<U2CE3>;/ % GEORGIAN SUPPLEMENT/ % well, there are three georgian blocks defined; one caseless (the one usually/ % used), one defined as uppercase and one as lowercase. defining the lowercase one here/ <U2D00>..<U2D25>;/ +% CYRILLIC SUPPLEMENT 2/ + <UA641>..(2)..<UA65F>;<UA663>..(2)..<UA66D>;<UA681>..(2)..<UA697>;/ +% LATIN EXTENDED-D/ + <UA723>..(2)..<UA72F>;<UA730>;<UA731>..(2)..<UA76F>;<UA771>..<UA778>;/ + <UA77A>..(2)..<UA77C>;<UA77F>..(2)..<UA787>;<UA78C>;/ % HALFWIDTH AND FULLWIDTH FORMS/ <UFF41>..<UFF5A>;/ % DESERET/ @@ -196,7 +207,7 @@ alpha / % COMBINING DIACRITICAL MARKS/ <U0345>;/ % BASIC GREEK/ - <U037A>..<U037D>;<U0386>;/ + <U0370>..<U0373>;<U0376>..<U0377>;<U037A>..<U037D>;<U0386>;/ <U0388>..<U038A>;<U038C>;<U038E>..<U03A1>;/ <U03A3>..<U03CE>;/ % GREEK SYMBOLS AND COPTIC/ @@ -204,18 +215,18 @@ alpha / % CYRILLIC/ <U0400>..<U0481>;<U048A>..<U04FF>;/ % CYRILLIC SUPPLEMENT/ - <U0500>..<U0513>;/ + <U0500>..<U0523>;/ % ARMENIAN/ <U0531>..<U0556>;<U0559>;<U0561>..<U0587>;/ % HEBREW/ <U05D0>..<U05EA>;<U05F0>..<U05F2>;/ % ARABIC/ - <U0621>..<U063A>;<U0640>..<U064A>;<U066E>..<U066F>;<U0671>..<U06D3>;/ + <U0621>..<U064A>;<U066E>..<U066F>;<U0671>..<U06D3>;/ <U06D5>;<U06E5>..<U06E6>;<U06EE>..<U06EF>;<U06FA>..<U06FC>;<U06FF>;/ % SYRIAC/ <U0710>;<U0712>..<U072F>;<U074D>..<U074F>;/ % ARABIC SUPPLEMENT/ - <U0750>..<U076D>;/ + <U0750>..<U077F>;/ % THAANA/ <U0780>..<U07A5>;<U07B1>;/ % NKO/ @@ -238,20 +249,20 @@ alpha / % ORIYA/ <U0B05>..<U0B0C>;<U0B0F>;<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/ <U0B32>;<U0B33>;<U0B35>..<U0B39>;<U0B3D>;<U0B5C>;<U0B5D>;/ - <U0B5F>..<U0B61>;<U0B71>;/ + <U0B5F>..<U0B63>;<U0B71>;/ % TAMIL/ <U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>;/ <U0B9A>;<U0B9C>;<U0B9E>;<U0B9F>;<U0BA3>;<U0BA4>;<U0BA8>..<U0BAA>;/ <U0BAE>..<U0BB9>;/ % TELUGU/ <U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;<U0C2A>..<U0C33>;/ - <U0C35>..<U0C39>;<U0C60>..<U0C61>;/ + <U0C35>..<U0C39>;<U0C3D>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/ % KANNADA/ <U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;<U0CAA>..<U0CB3>;/ <U0CB5>..<U0CB9>;<U0CDE>;<U0CE0>..<U0CE1>;/ % MALAYALAM/ <U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;/ - <U0D60>..<U0D61>;/ + <U0D3D>;<U0D60>..<U0D63>;/ % SINHALA/ <U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/ <U0DC0>..<U0DC6>;/ @@ -263,9 +274,10 @@ alpha / <U0EAA>..<U0EAB>;<U0EAD>..<U0EB0>;<U0EB2>..<U0EB3>;<U0EBD>;/ <U0EC0>..<U0EC4>;<U0EC6>;<U0EDC>..<U0EDD>;/ % TIBETAN/ - <U0F00>;<U0F40>..<U0F47>;<U0F49>..<U0F6A>;<U0F88>..<U0F8B>;/ + <U0F00>;<U0F40>..<U0F47>;<U0F49>..<U0F6C>;<U0F88>..<U0F8B>;/ % MYANMAR/ - <U1000>..<U1021>;<U1023>..<U1027>;<U1029>;<U102A>;<U1050>..<U1055>;/ + <U1000>..<U102A>;<U1050>..<U1055>;<U105A>..<U105D>;<U1061>;<U0165>;/ + <U1066>;<U106E>..<U1070>;<U1075>..<U1081>;<U108E>;/ % GEORGIAN/ <U10A0>..<U10C5>;<U10D0>..<U10FA>;<U10FC>;/ % HANGUL JAMO/ @@ -298,7 +310,7 @@ alpha / % KHMER/ <U1780>..<U17B3>;<U17D7>;<U17DC>;/ % MONGOLIAN/ - <U1820>..<U1877>;<U1880>..<U18A8>;/ + <U1820>..<U1877>;<U1880>..<U18A8>;<U18AA>;/ % LIMBU/ <U1900>..<U191C>;<U1946>..<U194F>;/ % TAI LE/ @@ -309,10 +321,16 @@ alpha / <U1A00>..<U1A16>;/ % BALINESE/ <U1B05>..<U1B33>;<U1B45>..<U1B4B>;<U1B50>..<U1B59>;/ +% SUNDANESE/ + <U1B83>..<U1BA0>;<U1BAE>..<U1BAF>;/ +% LEPCHA/ + <U1C00>..<U1C23>;<U1C4D>..<U1C4F>;/ +% OL CHIKI/ + <U1C5A>..<U1C7D>;/ % PHONETIC EXTENSIONS/ <U1D00>..<U1DBF>;/ % LATIN EXTENDED ADDITIONAL/ - <U1E00>..<U1E9B>;<U1EA0>..<U1EF9>;/ + <U1E00>..<U1E9F>;<U1EA0>..<U1EFF>;/ % GREEK EXTENDED/ <U1F00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/ <U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;/ @@ -326,13 +344,13 @@ alpha / <U2126>;<U2128>..<U212D>;<U212F>..<U2139>;/ <U213C>..<U213F>;<U2145>..<U2149>;<U214E>;/ % NUMBER FORMS/ - <U2160>..<U2184>;/ + <U2160>..<U2188>;/ % ENCLOSED ALPHANUMERICS/ <U249C>..<U24E9>;/ % GLAGOLITIC/ <U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/ % LATIN EXTENDED-C/ - <U2C60>..<U2C6C>;<U2C74>..<U2C77>;/ + <U2C60>..<U2C6F>;<U2C71>..<U2C7D>;/ % COPTIC/ <U2C80>..<U2CE4>;/ % GEORGIAN SUPPLEMENT/ @@ -350,7 +368,7 @@ alpha / % KATAKANA/ <U30A1>..<U30FA>;<U30FC>..<U30FF>;/ % BOPOMOFO/ - <U3105>..<U312C>;/ + <U3105>..<U312D>;/ % HANGUL COMPATIBILITY JAMO/ <U3131>..<U318E>;/ % BOPOMOFO EXTENDED/ @@ -363,12 +381,24 @@ alpha / <U4E00>..<U9FBB>;/ % YI SYLLABLES/ <UA000>..<UA48C>;/ +% VAI SYLLABLES/ + <UA500>..<UA60B>;<UA610>..<UA61F>;<UA62A>..<UA62B>;/ +% CYRILLIC SUPPLEMENT 2/ + <UA640>..<UA65F>;<UA662>..<UA66E>;<UA680>..<UA697>;/ % LATIN EXTENDED-D/ - <UA717>..<UA71A>;/ + <UA717>..<UA71F>;<UA722>..<UA78C>;<UA7FB>..<UA7FF>;/ % SYLOTI NEGRI/ <UA800>;<UA801>;<UA803>..<UA805>;<UA807>..<UA80A>;<UA80C>..<UA822>;/ % PHAGS PA/ <UA840>..<UA873>;/ +% SAURASHTRA/ + <UA882>..<UA8B3>;/ +% KAYAH LI/ + <UA90A>..<UA92D>;/ +% REJANG/ + <UA930>..<UA946>;/ +% CHAM/ + <UAA00>..<UAA28>;<UAA40>..<UAA42>;<UAA44>..<UAA4B>;/ % HANGUL SYLLABLES/ <UAC00>..<UD7A3>;/ % CJK COMPATIBILITY IDEOGRAPHS/ @@ -394,6 +424,10 @@ alpha / <U00010080>..<U000100FA>;/ % ANCIENT GREEK NUMBERS/ <U00010140>..<U00010174>;/ +% LYCIAN/ + <U00010280>..<U0001029C>;/ +% CARIAN/ + <U000102A0>..<U000102D0>;/ % OLD ITALIC/ <U00010300>..<U0001031E>;/ % GOTHIC/ @@ -458,11 +492,11 @@ alpha / % TAMIL/ <U0BE6>..<U0BEF>;/ % TELUGU/ - <U0C66>..<U0C6F>;/ + <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/ % KANNADA/ <U0CE6>..<U0CEF>;/ % MALAYALAM/ - <U0D66>..<U0D6F>;/ + <U0D66>..<U0D75>;<U0D79>..<U0D7F>;/ % THAI/ <U0E50>..<U0E59>;/ % LAO/ @@ -475,6 +509,20 @@ alpha / <U17E0>..<U17E9>;/ % MONGOLIAN/ <U1810>..<U1819>;/ +% SUNDANESE/ + <U1BB0>..<U1BB9>;/ +% LEPCHA/ + <U1C40>..<U1C49>;/ +% OL CHIKI/ + <U1C50>..<U1C59>;/ +% VAI/ + <UA620>..<UA629>;/ +% SAURASHTRA/ + <UA8D0>..<UA8D9>;/ +% KAYAH LI/ + <UA900>..<UA909>;/ +% CHAM/ + <UAA50>..<UAA59>;/ % HALFWIDTH AND FULLWIDTH FORMS/ <UFF10>..<UFF19> @@ -514,57 +562,67 @@ punct / <U02EF>..<U0344>;<U0346>..<U036F>;<U0374>..<U0375>;<U037E>;/ <U0384>..<U0385>;<U0387>;<U03F6>;<U0482>..<U0486>;<U0488>..<U0489>;/ <U055A>..<U055F>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05F3>..<U05F4>;/ - <U0600>..<U0603>;<U060B>..<U0615>;<U061B>;<U061E>..<U061F>;/ + <U0600>..<U0603>;<U060B>..<U061B>;<U061E>..<U061F>;/ <U064B>..<U065E>;<U066A>..<U066D>;<U0670>;<U06D4>;<U06D6>..<U06E4>;/ <U06E7>..<U06ED>;<U06FD>..<U06FE>;<U0700>..<U070D>;<U070F>;<U0711>;/ <U0730>..<U074A>;<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U07F6>..<U07F9>;/ <U0901>..<U0903>;<U093C>;<U093E>..<U094D>;<U0951>..<U0954>;/ - <U0962>..<U0965>;<U0970>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/ + <U0962>..<U0965>;<U0972>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/ <U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/ <U09F2>..<U09FA>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/ - <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;/ + <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;/ + <U0A75>;<U0A81>..<U0A83>;/ <U0ABC>;<U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/ - <U0AE2>..<U0AE3>;<U0AF1>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;/ + <U0AE2>..<U0AE3>;<U0AF1>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;/ <U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B70>;<U0B82>;/ - <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;/ + <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;/ <U0BF0>..<U0BFA>;<U0C01>..<U0C03>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/ <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBC>;/ <U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;/ - <U0CE2>..<U0CE3>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D3E>..<U0D43>;/ + <U0CE2>..<U0CE3>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D3E>..<U0D44>;/ <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D82>..<U0D83>;<U0DCA>;/ <U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E2F>;/ <U0E3F>;<U0E46>;<U0E4F>;<U0E5A>..<U0E5B>;<U0EB1>;<U0EB4>..<U0EB9>;/ <U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F01>..<U0F1F>;<U0F2A>..<U0F3F>;/ <U0F71>..<U0F87>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;/ - <U0FCF>..<U0FD1>;<U102C>..<U1032>;<U1036>..<U1039>;<U104A>..<U104F>;/ - <U1056>..<U1059>;<U10FB>;<U135F>..<U137C>;<U1390>..<U1399>;/ + <U0FCE>..<U0FD4>;<U102B>..<U103F>;<U104A>..<U104F>;<U1056>..<U1059>;/ + <U105E>..<U1060>;<U1062>..<U1064>;<U1067>..<U106D>;<U1071>..<U1074>;/ + <U1082>..<U108D>;<U108F>..<U1099>;<U109E>;<U109F>;/ + <U10FB>;<U135F>..<U137C>;<U1390>..<U1399>;/ <U166D>..<U166E>;<U169B>..<U169C>;<U16EB>..<U16ED>;<U1712>..<U1714>;/ <U1732>..<U1736>;<U1752>..<U1753>;<U1772>..<U1773>;<U17B4>..<U17D6>;/ <U17D8>..<U17DB>;<U17DD>;<U17F0>..<U17F9>;<U1800>..<U180D>;<U18A9>;/ <U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U1945>;/ <U19B0>..<U19C0>;<U19C8>..<U19C9>;<U19DE>..<U19FF>;<U1A17>..<U1A1B>;/ <U1A1E>..<U1A1F>;<U1B00>..<U1B04>;<U1B34>..<U1B44>;<U1B5A>..<U1B7C>;/ - <U1DC0>..<U1DCA>;<U1DFE>..<U1DFF>;<U1FBD>;<U1FBF>..<U1FC1>;/ + <U1B80>..<U1B82>;<U1BA1>..<U1BAA>;<U1C24>..<U1C37>;<U1C3B>..<U1C3F>;/ + <U1C7E>..<U1C7F>;/ + <U1DC0>..<U1DE6>;<U1DFE>..<U1DFF>;<U1FBD>;<U1FBF>..<U1FC1>;/ <U1FCD>..<U1FCF>;<U1FDD>..<U1FDF>;<U1FED>..<U1FEF>;<U1FFD>..<U1FFE>;/ - <U2007>;<U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2063>;/ + <U2007>;<U200B>..<U2027>;<U202A>..<U205E>;<U2060>..<U2064>;/ <U206A>..<U2070>;<U2074>..<U207E>;<U2080>..<U208E>;<U20A0>..<U20B5>;/ - <U20D0>..<U20EF>;<U2100>..<U2101>;<U2103>..<U2106>;<U2108>..<U2109>;/ + <U20D0>..<U20F0>;<U2100>..<U2101>;<U2103>..<U2106>;<U2108>..<U2109>;/ <U2114>;<U2116>..<U2118>;<U211E>..<U2123>;<U2125>;<U2127>;<U212E>;/ <U213A>..<U213B>;<U2140>..<U2144>;<U214A>..<U214D>;<U2153>..<U215F>;/ <U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U249B>;/ - <U24EA>..<U269C>;<U26A0>..<U26B2>;<U2701>..<U2704>;<U2706>..<U2709>;/ + <U24EA>..<U269D>;<U26A0>..<U26C3>;<U2701>..<U2704>;<U2706>..<U2709>;/ <U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/ <U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/ - <U27C0>..<U27CA>;<U27D0>..<U27EB>;<U27F0>..<U2B1A>;<U2B20>..<U2B23>;/ - <U2CE5>..<U2CEA>;<U2CF9>..<U2CFF>;<U2E00>..<U2E17>;<U2E1C>..<U2E1D>;/ + <U27C0>..<U27CA>;<U27CC>;<U27D0>..<U27EF>;<U27F0>..<U2B4C>;/ + <U2B50>..<U2B54>;<U2DE0>..<U2DFF>;/ + <U2CE5>..<U2CEA>;<U2CF9>..<U2CFF>;<U2E00>..<U2E30>;/ <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;/ <U3001>..<U3004>;<U3008>..<U3020>;<U302A>..<U3030>;<U3036>..<U3037>;/ <U303D>..<U303F>;<U3099>..<U309C>;<U30A0>;<U30FB>;<U3190>..<U319F>;/ <U31C0>..<U31CF>;<U3200>..<U321E>;<U3220>..<U3243>;<U3250>..<U32FE>;/ - <U3300>..<U33FF>;<U4DC0>..<U4DFF>;<UA490>..<UA4C6>;<UA700>..<UA716>;/ + <U3300>..<U33FF>;<U4DC0>..<U4DFF>;<UA490>..<UA4C6>;<UA60C>..<UA60F>;/ + <UA66F>..<UA673>;<UA67C>..<UA67F>;<UA700>..<UA716>;/ <UA720>..<UA721>;<UA802>;<UA806>;<UA80B>;<UA823>..<UA82B>;/ - <UA874>..<UA877>;<UE000>..<UF8FF>;<UFB1E>;<UFB29>;<UFD3E>..<UFD3F>;/ - <UFDFC>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE23>;<UFE30>..<UFE52>;/ + <UA874>..<UA877>;<UA880>;<UA881>;<UA8B4>..<UA8C4>;<UA8CE>..<UA8CF>;/ + <UA92E>..<UA92F>;<UA947>..<UA953>;<UA95F>;<UAA29>..<UAA36>;<UAA43>;/ + <UAA4C>..<UAA4D>;<UAA5C>..<UAA5F>;/ + <UE000>..<UF8FF>;<UFB1E>;<UFB29>;<UFD3E>..<UFD3F>;/ + <UFDFC>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE26>;<UFE30>..<UFE52>;/ <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFEFF>;<UFF01>..<UFF0F>;/ <UFF1A>..<UFF20>;<UFF3B>..<UFF40>;<UFF5B>..<UFF65>;<UFFE0>..<UFFE6>;/ <UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;<U00010100>..<U00010102>;/ @@ -575,7 +633,7 @@ punct / <U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;/ <U00010A3F>..<U00010A47>;<U00010A50>..<U00010A58>;/ <U00012470>..<U00012473>;<U0001D000>..<U0001D0F5>;/ - <U0001D100>..<U0001D126>;<U0001D12A>..<U0001D1DD>;/ + <U0001D100>..<U0001D126>;<U0001D129>..<U0001D1DD>;/ <U0001D200>..<U0001D245>;<U0001D300>..<U0001D356>;/ <U0001D360>..<U0001D371>;<U0001D6C1>;<U0001D6DB>;<U0001D6FB>;<U0001D715>;/ <U0001D735>;<U0001D74F>;<U0001D76F>;<U0001D789>;<U0001D7A9>;<U0001D7C3>;/ @@ -583,52 +641,55 @@ punct / <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD> graph / - <U0021>..<U007E>;<U00A0>..<U036F>;<U0374>..<U0375>;<U037A>..<U037E>;/ - <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U03CE>;/ - <U03D0>..<U0486>;<U0488>..<U0513>;<U0531>..<U0556>;<U0559>..<U055F>;/ + <U0021>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037E>;/ + <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U0486>;/ + <U0488>..<U0523>;<U0531>..<U0556>;<U0559>..<U055F>;/ <U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/ - <U05F0>..<U05F4>;<U0600>..<U0603>;<U060B>..<U0615>;<U061B>;/ - <U061E>..<U061F>;<U0621>..<U063A>;<U0640>..<U065E>;<U0660>..<U070D>;/ - <U070F>..<U074A>;<U074D>..<U076D>;<U0780>..<U07B1>;<U07C0>..<U07FA>;/ - <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;/ + <U05F0>..<U05F4>;<U0600>..<U0603>;<U0606>..<U061B>;/ + <U061E>..<U061F>;<U0621>..<U065E>;<U0660>..<U070D>;/ + <U070F>..<U074A>;<U074D>..<U07B1>;<U07C0>..<U07FA>;/ + <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0972>;/ <U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/ <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/ <U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/ <U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/ <U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/ <U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/ - <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;/ - <U0A5E>;<U0A66>..<U0A74>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/ + <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;/ + <U0A59>..<U0A5C>;/ + <U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/ <U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/ <U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/ <U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/ <U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/ - <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B43>;<U0B47>..<U0B48>;/ - <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;/ + <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B44>;<U0B47>..<U0B48>;/ + <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B63>;/ <U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/ <U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/ <U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;<U0BAE>..<U0BB9>;<U0BBE>..<U0BC2>;/ - <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0BE6>..<U0BFA>;/ + <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;<U0BE6>..<U0BFA>;/ <U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/ - <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/ - <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;/ + <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3D>..<U0C44>;<U0C46>..<U0C48>;/ + <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/ + <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/ <U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/ <U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/ <U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/ <U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/ - <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3E>..<U0D43>;/ - <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D61>;/ - <U0D66>..<U0D6F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;/ + <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3D>..<U0D44>;/ + <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D63>;/ + <U0D66>..<U0D75>;<U0D79>..<U0D7F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;/ + <U0D9A>..<U0DB1>;/ <U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/ <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/ <U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/ <U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/ <U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/ <U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/ - <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6A>;<U0F71>..<U0F8B>;/ - <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCF>..<U0FD1>;/ - <U1000>..<U1021>;<U1023>..<U1027>;<U1029>..<U102A>;<U102C>..<U1032>;/ - <U1036>..<U1039>;<U1040>..<U1059>;<U10A0>..<U10C5>;<U10D0>..<U10FC>;/ + <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6C>;<U0F71>..<U0F8B>;/ + <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCE>..<U0FD4>;/ + <U1000>..<U102A>;<U102B>..<U103F>;<U1040>..<U1099>;<U109E>;<U109F>;/ + <U10A0>..<U10C5>;<U10D0>..<U10FC>;/ <U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/ <U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/ <U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/ @@ -638,37 +699,43 @@ graph / <U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/ <U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/ <U1780>..<U17DD>;<U17E0>..<U17E9>;<U17F0>..<U17F9>;<U1800>..<U180D>;/ - <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18A9>;<U1900>..<U191C>;/ + <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18AA>;<U1900>..<U191C>;/ <U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;/ <U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/ <U19DE>..<U1A1B>;<U1A1E>..<U1A1F>;<U1B00>..<U1B4B>;<U1B50>..<U1B7C>;/ - <U1D00>..<U1DCA>;<U1DFE>..<U1E9B>;<U1EA0>..<U1EF9>;<U1F00>..<U1F15>;/ + <U1B80>..<U1BAA>;<U1BAE>..<U1BB9>;<U1C00>..<U1C37>;<U1C3B>..<U1C49>;/ + <U1C4D>..<U1C7F>;/ + <U1D00>..<U1DE6>;<U1DFE>..<U1E9F>;<U1EA0>..<U1EFF>;<U1F00>..<U1F15>;/ <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/ <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/ <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/ <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2007>;<U200B>..<U2027>;/ - <U202A>..<U205E>;<U2060>..<U2063>;<U206A>..<U2071>;<U2074>..<U208E>;/ - <U2090>..<U2094>;<U20A0>..<U20B5>;<U20D0>..<U20EF>;<U2100>..<U214E>;/ - <U2153>..<U2184>;<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;/ - <U2460>..<U269C>;<U26A0>..<U26B2>;<U2701>..<U2704>;<U2706>..<U2709>;/ + <U202A>..<U205E>;<U2060>..<U2064>;<U206A>..<U2071>;<U2074>..<U208E>;/ + <U2090>..<U2094>;<U20A0>..<U20B5>;<U20D0>..<U20F0>;<U2100>..<U214F>;/ + <U2153>..<U2188>;<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;/ + <U2460>..<U269D>;<U26A0>..<U26C3>;<U2701>..<U2704>;<U2706>..<U2709>;/ <U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/ <U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/ - <U27C0>..<U27CA>;<U27D0>..<U27EB>;<U27F0>..<U2B1A>;<U2B20>..<U2B23>;/ - <U2C00>..<U2C2E>;<U2C30>..<U2C5E>;<U2C60>..<U2C6C>;<U2C74>..<U2C77>;/ + <U27C0>..<U27CA>;<U27CC>;<U27D0>..<U27EF>;<U27F0>..<U2B4C>;/ + <U2B50>..<U2B54>;/ + <U2C00>..<U2C2E>;<U2C30>..<U2C5E>;<U2C60>..<U2C6F>;<U2C71>..<U2C7D>;/ <U2C80>..<U2CEA>;<U2CF9>..<U2D25>;<U2D30>..<U2D65>;<U2D6F>;/ <U2D80>..<U2D96>;<U2DA0>..<U2DA6>;<U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;/ <U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;<U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;/ - <U2DD8>..<U2DDE>;<U2E00>..<U2E17>;<U2E1C>..<U2E1D>;<U2E80>..<U2E99>;/ + <U2DD8>..<U2DDE>;<U2DE0>..<U2E30>;<U2E80>..<U2E99>;/ <U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;<U3001>..<U303F>;/ - <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312C>;<U3131>..<U318E>;/ + <U3041>..<U3096>;<U3099>..<U30FF>;<U3105>..<U312D>;<U3131>..<U318E>;/ <U3190>..<U31B7>;<U31C0>..<U31CF>;<U31F0>..<U321E>;<U3220>..<U3243>;/ <U3250>..<U32FE>;<U3300>..<U4DB5>;<U4DC0>..<U9FBB>;<UA000>..<UA48C>;/ - <UA490>..<UA4C6>;<UA700>..<UA71A>;<UA720>..<UA721>;<UA800>..<UA82B>;/ - <UA840>..<UA877>;<UAC00>..<UD7A3>;<UE000>..<UFA2D>;<UFA30>..<UFA6A>;/ + <UA490>..<UA4C6>;<UA500>..<UA62B>;<UA640>..<UA65F>;<UA662>..<UA673>;/ + <UA67C>..<UA697>;<UA700>..<UA78C>;<UA7FB>..<UA7FF>;<UA800>..<UA82B>;/ + <UA840>..<UA877>;<UA880>..<UA8C4>;<UA8CE>..<UA8D9>;<UA900>..<UA953>;/ + <UA95F>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/ + <UAA5C>..<UAA5F>;<UAC00>..<UD7A3>;<UE000>..<UFA2D>;<UFA30>..<UFA6A>;/ <UFA70>..<UFAD9>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;<UFB1D>..<UFB36>;/ <UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;<UFB43>..<UFB44>;/ <UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;<UFD50>..<UFD8F>;<UFD92>..<UFDC7>;/ - <UFDF0>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE23>;<UFE30>..<UFE52>;/ + <UFDF0>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE26>;<UFE30>..<UFE52>;/ <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;/ <UFEFF>;<UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/ <UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/ @@ -677,6 +744,8 @@ graph / <U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/ <U00010080>..<U000100FA>;<U00010100>..<U00010102>;/ <U00010107>..<U00010133>;<U00010137>..<U0001018A>;/ + <U00010190>..<U0001019B>;<U000101D0>..<U000101FD>;/ + <U00010280>..<U0001029C>;<U000102A0>..<U000102D0>;/ <U00010300>..<U0001031E>;<U00010320>..<U00010323>;/ <U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/ <U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/ @@ -690,7 +759,7 @@ graph / <U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/ <U00012400>..<U00012462>;<U00012470>..<U00012473>;/ <U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/ - <U0001D12A>..<U0001D1DD>;<U0001D200>..<U0001D245>;/ + <U0001D129>..<U0001D1DD>;<U0001D200>..<U0001D245>;/ <U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/ <U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/ <U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/ @@ -701,57 +770,61 @@ graph / <U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/ <U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/ <U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/ + <U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/ <U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/ <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/ <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD> print / - <U0020>..<U007E>;<U00A0>..<U036F>;<U0374>..<U0375>;<U037A>..<U037E>;/ - <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U03CE>;/ - <U03D0>..<U0486>;<U0488>..<U0513>;<U0531>..<U0556>;<U0559>..<U055F>;/ + <U0020>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037E>;/ + <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U0486>;/ + <U0488>..<U0523>;<U0531>..<U0556>;<U0559>..<U055F>;/ <U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/ - <U05F0>..<U05F4>;<U0600>..<U0603>;<U060B>..<U0615>;<U061B>;/ - <U061E>..<U061F>;<U0621>..<U063A>;<U0640>..<U065E>;<U0660>..<U070D>;/ - <U070F>..<U074A>;<U074D>..<U076D>;<U0780>..<U07B1>;<U07C0>..<U07FA>;/ - <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;/ + <U05F0>..<U05F4>;<U0600>..<U0603>;<U0606>..<U061B>;/ + <U061E>..<U061F>;<U0621>..<U065E>;<U0660>..<U070D>;/ + <U070F>..<U074A>;<U074D>..<U07B1>;<U07C0>..<U07FA>;/ + <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0972>;/ <U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/ <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/ <U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/ <U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/ <U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/ <U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/ - <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;/ - <U0A5E>;<U0A66>..<U0A74>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/ + <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;/ + <U0A59>..<U0A5C>;/ + <U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/ <U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/ <U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/ <U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/ <U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/ - <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B43>;<U0B47>..<U0B48>;/ - <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;/ + <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B44>;<U0B47>..<U0B48>;/ + <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B63>;/ <U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/ <U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/ <U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;<U0BAE>..<U0BB9>;<U0BBE>..<U0BC2>;/ - <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0BE6>..<U0BFA>;/ + <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;<U0BE6>..<U0BFA>;/ <U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/ - <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/ - <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;/ + <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3D>..<U0C44>;<U0C46>..<U0C48>;/ + <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/ + <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/ <U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/ <U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/ <U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/ <U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/ - <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3E>..<U0D43>;/ - <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D61>;/ - <U0D66>..<U0D6F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;/ + <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3D>..<U0D44>;/ + <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D63>;/ + <U0D66>..<U0D75>;<U0D79>..<U0D7F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;/ + <U0D9A>..<U0DB1>;/ <U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/ <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/ <U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/ <U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/ <U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/ <U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/ - <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6A>;<U0F71>..<U0F8B>;/ - <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCF>..<U0FD1>;/ - <U1000>..<U1021>;<U1023>..<U1027>;<U1029>..<U102A>;<U102C>..<U1032>;/ - <U1036>..<U1039>;<U1040>..<U1059>;<U10A0>..<U10C5>;<U10D0>..<U10FC>;/ + <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6C>;<U0F71>..<U0F8B>;/ + <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCE>..<U0FD4>;/ + <U1000>..<U102A>;<U102B>..<U103F>;<U1040>..<U1099>;<U109E>;<U109F>;/ + <U10A0>..<U10C5>;<U10D0>..<U10FC>;/ <U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/ <U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/ <U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/ @@ -761,37 +834,45 @@ print / <U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/ <U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/ <U1780>..<U17DD>;<U17E0>..<U17E9>;<U17F0>..<U17F9>;<U1800>..<U180E>;/ - <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18A9>;<U1900>..<U191C>;/ + <U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18AA>;<U1900>..<U191C>;/ <U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;/ <U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/ <U19DE>..<U1A1B>;<U1A1E>..<U1A1F>;<U1B00>..<U1B4B>;<U1B50>..<U1B7C>;/ - <U1D00>..<U1DCA>;<U1DFE>..<U1E9B>;<U1EA0>..<U1EF9>;<U1F00>..<U1F15>;/ + <U1B80>..<U1BAA>;<U1BAE>..<U1BB9>;<U1C00>..<U1C37>;<U1C3B>..<U1C49>;/ + <U1C4D>..<U1C7F>;/ + <U1D00>..<U1DE6>;<U1DFE>..<U1E9F>;<U1EA0>..<U1EFF>;<U1F00>..<U1F15>;/ <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/ <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/ <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/ - <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2063>;/ + <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2064>;/ <U206A>..<U2071>;<U2074>..<U208E>;<U2090>..<U2094>;<U20A0>..<U20B5>;/ - <U20D0>..<U20EF>;<U2100>..<U214E>;<U2153>..<U2184>;<U2190>..<U23E7>;/ - <U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U269C>;<U26A0>..<U26B2>;/ + <U20D0>..<U20F0>;<U2100>..<U214F>;<U2153>..<U2188>;<U2190>..<U23E7>;/ + <U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U269D>;<U26A0>..<U26C3>;/ <U2701>..<U2704>;<U2706>..<U2709>;<U270C>..<U2727>;<U2729>..<U274B>;/ <U274D>;<U274F>..<U2752>;<U2756>;<U2758>..<U275E>;<U2761>..<U2794>;/ - <U2798>..<U27AF>;<U27B1>..<U27BE>;<U27C0>..<U27CA>;<U27D0>..<U27EB>;/ - <U27F0>..<U2B1A>;<U2B20>..<U2B23>;<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/ - <U2C60>..<U2C6C>;<U2C74>..<U2C77>;<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;/ + <U2798>..<U27AF>;<U27B1>..<U27BE>;<U27C0>..<U27CA>;<U27CC>;/ + <U27D0>..<U27EF>;/ + <U27F0>..<U2B4C>;<U2B50>..<U2B54>;<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/ + <U2C60>..<U2C6F>;<U2C71>..<U2C7D>;<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;/ <U2D30>..<U2D65>;<U2D6F>;<U2D80>..<U2D96>;<U2DA0>..<U2DA6>;/ <U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;/ - <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2E00>..<U2E17>;/ - <U2E1C>..<U2E1D>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/ + <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E30>;/ + <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/ <U2FF0>..<U2FFB>;<U3000>..<U303F>;<U3041>..<U3096>;<U3099>..<U30FF>;/ - <U3105>..<U312C>;<U3131>..<U318E>;<U3190>..<U31B7>;<U31C0>..<U31CF>;/ + <U3105>..<U312D>;<U3131>..<U318E>;<U3190>..<U31B7>;<U31C0>..<U31CF>;/ <U31F0>..<U321E>;<U3220>..<U3243>;<U3250>..<U32FE>;<U3300>..<U4DB5>;/ - <U4DC0>..<U9FBB>;<UA000>..<UA48C>;<UA490>..<UA4C6>;<UA700>..<UA71A>;/ - <UA720>..<UA721>;<UA800>..<UA82B>;<UA840>..<UA877>;<UAC00>..<UD7A3>;/ + <U4DC0>..<U9FBB>;<UA000>..<UA48C>;<UA490>..<UA4C6>;<UA500>..<UA62B>;/ + <UA640>..<UA65F>;<UA662>..<UA673>;<UA67C>..<UA697>;<UA700>..<UA78C>;/ + <UA7FB>..<UA7FF>;<UA800>..<UA82B>;<UA840>..<UA877>;/ + <UA880>..<UA8C4>;<UA8CE>..<UA8D9>;<UAC00>..<UD7A3>;/ + <UA840>..<UA877>;<UA880>..<UA8C4>;<UA8CE>..<UA8D9>;<UA900>..<UA953>;/ + <UA95F>;<UAA00>..<UAA36>;<UAA40>..<UAA4D>;<UAA50>..<UAA59>;/ + <UAA5C>..<UAA5F>;/ <UE000>..<UFA2D>;<UFA30>..<UFA6A>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;/ <UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;/ <UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;/ <UFD50>..<UFD8F>;<UFD92>..<UFDC7>;<UFDF0>..<UFDFD>;<UFE00>..<UFE19>;/ - <UFE20>..<UFE23>;<UFE30>..<UFE52>;<UFE54>..<UFE66>;<UFE68>..<UFE6B>;/ + <UFE20>..<UFE26>;<UFE30>..<UFE52>;<UFE54>..<UFE66>;<UFE68>..<UFE6B>;/ <UFE70>..<UFE74>;<UFE76>..<UFEFC>;<UFEFF>;<UFF01>..<UFFBE>;/ <UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;/ <UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/ @@ -800,6 +881,8 @@ print / <U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/ <U00010080>..<U000100FA>;<U00010100>..<U00010102>;/ <U00010107>..<U00010133>;<U00010137>..<U0001018A>;/ + <U00010190>..<U0001019B>;<U000101D0>..<U000101FD>;/ + <U00010280>..<U0001029C>;<U000102A0>..<U000102D0>;/ <U00010300>..<U0001031E>;<U00010320>..<U00010323>;/ <U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/ <U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/ @@ -813,7 +896,7 @@ print / <U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/ <U00012400>..<U00012462>;<U00012470>..<U00012473>;/ <U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/ - <U0001D12A>..<U0001D1DD>;<U0001D200>..<U0001D245>;/ + <U0001D129>..<U0001D1DD>;<U0001D200>..<U0001D245>;/ <U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/ <U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/ <U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/ @@ -824,6 +907,7 @@ print / <U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/ <U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/ <U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/ + <U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/ <U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/ <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/ <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD> @@ -844,7 +928,8 @@ toupper / (<U006D>,<U004D>);(<U006E>,<U004E>);(<U006F>,<U004F>);(<U0070>,<U0050>);/ (<U0071>,<U0051>);(<U0072>,<U0052>);(<U0073>,<U0053>);(<U0074>,<U0054>);/ (<U0075>,<U0055>);(<U0076>,<U0056>);(<U0077>,<U0057>);(<U0078>,<U0058>);/ - (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00B5>,<U039C>);(<U00E0>,<U00C0>);/ + (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00B5>,<U039C>);(<U00DF>,<U1E9E>);/ + (<U00E0>,<U00C0>);/ (<U00E1>,<U00C1>);(<U00E2>,<U00C2>);(<U00E3>,<U00C3>);(<U00E4>,<U00C4>);/ (<U00E5>,<U00C5>);(<U00E6>,<U00C6>);(<U00E7>,<U00C7>);(<U00E8>,<U00C8>);/ (<U00E9>,<U00C9>);(<U00EA>,<U00CA>);(<U00EB>,<U00CB>);(<U00EC>,<U00CC>);/ @@ -889,13 +974,16 @@ toupper / (<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/ (<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);(<U0242>,<U0241>);/ (<U0247>,<U0246>);(<U0249>,<U0248>);(<U024B>,<U024A>);(<U024D>,<U024C>);/ - (<U024F>,<U024E>);(<U0253>,<U0181>);(<U0254>,<U0186>);(<U0256>,<U0189>);/ + (<U024F>,<U024E>);(<U0250>,<U2C6F>);(<U0251>,<U2C6D>);(<U0253>,<U0181>);/ + (<U0254>,<U0186>);(<U0256>,<U0189>);/ (<U0257>,<U018A>);(<U0259>,<U018F>);(<U025B>,<U0190>);(<U0260>,<U0193>);/ (<U0263>,<U0194>);(<U0268>,<U0197>);(<U0269>,<U0196>);(<U026B>,<U2C62>);/ - (<U026F>,<U019C>);(<U0272>,<U019D>);(<U0275>,<U019F>);(<U027D>,<U2C64>);/ + (<U026F>,<U019C>);(<U0271>,<U2C6E>);(<U0272>,<U019D>);(<U0275>,<U019F>);/ + (<U027D>,<U2C64>);/ (<U0280>,<U01A6>);(<U0283>,<U01A9>);(<U0288>,<U01AE>);(<U0289>,<U0244>);/ (<U028A>,<U01B1>);(<U028B>,<U01B2>);(<U028C>,<U0245>);(<U0292>,<U01B7>);/ - (<U0345>,<U0399>);(<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);/ + (<U0345>,<U0399>);(<U0371>,<U0370>);(<U0373>,<U0372>);(<U0377>,<U0376>);/ + (<U037B>,<U03FD>);(<U037C>,<U03FE>);(<U037D>,<U03FF>);/ (<U03AC>,<U0386>);(<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);/ (<U03B1>,<U0391>);(<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);/ (<U03B5>,<U0395>);(<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);/ @@ -943,7 +1031,9 @@ toupper / (<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/ (<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/ (<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);/ - (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0561>,<U0531>);(<U0562>,<U0532>);/ + (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);/ + (<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);/ + (<U0521>,<U0520>);(<U0523>,<U0522>);(<U0561>,<U0531>);(<U0562>,<U0532>);/ (<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/ (<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/ (<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/ @@ -983,7 +1073,8 @@ toupper / (<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);/ (<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);/ (<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);/ - (<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);/ + (<U1EF7>,<U1EF6>);(<U1EF9>,<U1EF8>);(<U1EFB>,<U1EFA>);(<U1EFD>,<U1EFC>);/ + (<U1EFF>,<U1EFE>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);/ (<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);/ (<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);/ (<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);/ @@ -1032,6 +1123,7 @@ toupper / (<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);/ (<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);(<U2C61>,<U2C60>);(<U2C65>,<U023A>);/ (<U2C66>,<U023E>);(<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);/ + (<U2C73>,<U2C72>);/ (<U2C76>,<U2C75>);(<U2C81>,<U2C80>);(<U2C83>,<U2C82>);(<U2C85>,<U2C84>);/ (<U2C87>,<U2C86>);(<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);/ (<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);(<U2C93>,<U2C92>);(<U2C95>,<U2C94>);/ @@ -1139,7 +1231,8 @@ tolower / (<U0232>,<U0233>);(<U023A>,<U2C65>);(<U023B>,<U023C>);(<U023D>,<U019A>);/ (<U023E>,<U2C66>);(<U0241>,<U0242>);(<U0243>,<U0180>);(<U0244>,<U0289>);/ (<U0245>,<U028C>);(<U0246>,<U0247>);(<U0248>,<U0249>);(<U024A>,<U024B>);/ - (<U024C>,<U024D>);(<U024E>,<U024F>);(<U0386>,<U03AC>);(<U0388>,<U03AD>);/ + (<U024C>,<U024D>);(<U024E>,<U024F>);(<U0370>,<U0371>);(<U0372>,<U0373>);/ + (<U0376>,<U0377>);(<U0386>,<U03AC>);(<U0388>,<U03AD>);/ (<U0389>,<U03AE>);(<U038A>,<U03AF>);(<U038C>,<U03CC>);(<U038E>,<U03CD>);/ (<U038F>,<U03CE>);(<U0391>,<U03B1>);(<U0392>,<U03B2>);(<U0393>,<U03B3>);/ (<U0394>,<U03B4>);(<U0395>,<U03B5>);(<U0396>,<U03B6>);(<U0397>,<U03B7>);/ @@ -1186,6 +1279,8 @@ tolower / (<U04FC>,<U04FD>);(<U04FE>,<U04FF>);(<U0500>,<U0501>);(<U0502>,<U0503>);/ (<U0504>,<U0505>);(<U0506>,<U0507>);(<U0508>,<U0509>);(<U050A>,<U050B>);/ (<U050C>,<U050D>);(<U050E>,<U050F>);(<U0510>,<U0511>);(<U0512>,<U0513>);/ + (<U0514>,<U0515>);(<U0516>,<U0517>);(<U0518>,<U0519>);(<U051A>,<U051B>);/ + (<U051C>,<U051D>);(<U051E>,<U051F>);(<U0520>,<U0521>);(<U0522>,<U0523>);/ (<U0531>,<U0561>);(<U0532>,<U0562>);(<U0533>,<U0563>);(<U0534>,<U0564>);/ (<U0535>,<U0565>);(<U0536>,<U0566>);(<U0537>,<U0567>);(<U0538>,<U0568>);/ (<U0539>,<U0569>);(<U053A>,<U056A>);(<U053B>,<U056B>);(<U053C>,<U056C>);/ @@ -1223,7 +1318,8 @@ tolower / (<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);(<U1E7E>,<U1E7F>);/ (<U1E80>,<U1E81>);(<U1E82>,<U1E83>);(<U1E84>,<U1E85>);(<U1E86>,<U1E87>);/ (<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);(<U1E8C>,<U1E8D>);(<U1E8E>,<U1E8F>);/ - (<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);(<U1EA0>,<U1EA1>);/ + (<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);(<U1E9E>,<U00DF>);/ + (<U1EA0>,<U1EA1>);/ (<U1EA2>,<U1EA3>);(<U1EA4>,<U1EA5>);(<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);/ (<U1EAA>,<U1EAB>);(<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);/ (<U1EB2>,<U1EB3>);(<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);/ @@ -1235,6 +1331,7 @@ tolower / (<U1EE2>,<U1EE3>);(<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);/ (<U1EEA>,<U1EEB>);(<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);/ (<U1EF2>,<U1EF3>);(<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);/ + (<U1EFA>,<U1EFB>);(<U1EFC>,<U1EFD>);(<U1EFE>,<U1EFF>);/ (<U1F08>,<U1F00>);(<U1F09>,<U1F01>);(<U1F0A>,<U1F02>);(<U1F0B>,<U1F03>);/ (<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);(<U1F0E>,<U1F06>);(<U1F0F>,<U1F07>);/ (<U1F18>,<U1F10>);(<U1F19>,<U1F11>);(<U1F1A>,<U1F12>);(<U1F1B>,<U1F13>);/ @@ -1284,7 +1381,8 @@ tolower / (<U2C29>,<U2C59>);(<U2C2A>,<U2C5A>);(<U2C2B>,<U2C5B>);(<U2C2C>,<U2C5C>);/ (<U2C2D>,<U2C5D>);(<U2C2E>,<U2C5E>);(<U2C60>,<U2C61>);(<U2C62>,<U026B>);/ (<U2C63>,<U1D7D>);(<U2C64>,<U027D>);(<U2C67>,<U2C68>);(<U2C69>,<U2C6A>);/ - (<U2C6B>,<U2C6C>);(<U2C75>,<U2C76>);(<U2C80>,<U2C81>);(<U2C82>,<U2C83>);/ + (<U2C6B>,<U2C6C>);(<U2C6D>,<U0251>);(<U2C6E>,<U0271>);(<U2C6F>,<U0250>);/ + (<U2C72>,<U2C73>);(<U2C75>,<U2C76>);(<U2C80>,<U2C81>);(<U2C82>,<U2C83>);/ (<U2C84>,<U2C85>);(<U2C86>,<U2C87>);(<U2C88>,<U2C89>);(<U2C8A>,<U2C8B>);/ (<U2C8C>,<U2C8D>);(<U2C8E>,<U2C8F>);(<U2C90>,<U2C91>);(<U2C92>,<U2C93>);/ (<U2C94>,<U2C95>);(<U2C96>,<U2C97>);(<U2C98>,<U2C99>);(<U2C9A>,<U2C9B>);/ @@ -1431,7 +1529,9 @@ map "totitle"; / (<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/ (<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/ (<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);/ - (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0561>,<U0531>);(<U0562>,<U0532>);/ + (<U0511>,<U0510>);(<U0513>,<U0512>);(<U0515>,<U0514>);(<U0517>,<U0516>);/ + (<U0519>,<U0518>);(<U051B>,<U051A>);(<U051D>,<U051C>);(<U051F>,<U051E>);/ + (<U0521>,<U0520>);(<U0523>,<U0522>);(<U0561>,<U0531>);(<U0562>,<U0532>);/ (<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/ (<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/ (<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/ @@ -1574,35 +1674,40 @@ map "totitle"; / % That is, all combining characters (level 2+3). class "combining"; / <U0300>..<U036F>;<U0483>..<U0486>;<U0488>..<U0489>;<U0591>..<U05BD>;/ - <U05BF>;<U05C1>..<U05C2>;<U05C4>..<U05C5>;<U05C7>;<U0610>..<U0615>;/ + <U05BF>;<U05C1>..<U05C2>;<U05C4>..<U05C5>;<U05C7>;<U0610>..<U061A>;/ <U064B>..<U065E>;<U0670>;<U06D6>..<U06DC>;<U06DE>..<U06E4>;/ <U06E7>..<U06E8>;<U06EA>..<U06ED>;<U0711>;<U0730>..<U074A>;/ <U07A6>..<U07B0>;<U07EB>..<U07F3>;<U0901>..<U0903>;<U093C>;/ <U093E>..<U094D>;<U0951>..<U0954>;<U0962>..<U0963>;<U0981>..<U0983>;/ <U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;/ <U09E2>..<U09E3>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/ - <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;/ + <U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;/ + <U0A75>;<U0A81>..<U0A83>;/ <U0ABC>;<U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/ - <U0AE2>..<U0AE3>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;/ + <U0AE2>..<U0AE3>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;/ <U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B82>;/ - <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;/ + <U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;/ <U0C01>..<U0C03>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;/ - <U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBC>;<U0CBE>..<U0CC4>;/ + <U0C55>..<U0C56>;<U0C62>..<U0C63>;<U0C82>..<U0C83>;<U0CBC>;/ + <U0CBE>..<U0CC4>;/ <U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CE2>..<U0CE3>;/ - <U0D02>..<U0D03>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/ - <U0D57>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;/ - <U0DD8>..<U0DDF>;<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;/ + <U0D02>..<U0D03>;<U0D3E>..<U0D44>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/ + <U0D57>;<U0D62>..<U0D63>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;/ + <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;/ <U0E47>..<U0E4E>;<U0EB1>;<U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;/ <U0EC8>..<U0ECD>;<U0F18>..<U0F19>;<U0F35>;<U0F37>;<U0F39>;/ <U0F3E>..<U0F3F>;<U0F71>..<U0F84>;<U0F86>..<U0F87>;<U0F90>..<U0F97>;/ - <U0F99>..<U0FBC>;<U0FC6>;<U102C>..<U1032>;<U1036>..<U1039>;/ - <U1056>..<U1059>;<U135F>;<U1712>..<U1714>;<U1732>..<U1734>;/ + <U0F99>..<U0FBC>;<U0FC6>;<U102B>..<U103F>;/ + <U1056>..<U1059>;<U105E>..<U1060>;<U1062>..<U1064>;<U1067>..<U106D>;/ + <U1071>..<U1074>;<U1082>..<U108D>;<U108F>;/ + <U135F>;<U1712>..<U1714>;<U1732>..<U1734>;/ <U1752>..<U1753>;<U1772>..<U1773>;<U17B6>..<U17D3>;<U17DD>;/ <U180B>..<U180D>;<U18A9>;<U1920>..<U192B>;<U1930>..<U193B>;/ <U19B0>..<U19C0>;<U19C8>..<U19C9>;<U1A17>..<U1A1B>;<U1B00>..<U1B04>;/ - <U1B34>..<U1B44>;<U1B6B>..<U1B73>;<U1DC0>..<U1DCA>;<U1DFE>..<U1DFF>;/ - <U20D0>..<U20EF>;<U302A>..<U302F>;<U3099>..<U309A>;<UA802>;<UA806>;/ - <UA80B>;<UA823>..<UA827>;<UFB1E>;<UFE00>..<UFE0F>;<UFE20>..<UFE23>;/ + <U1B34>..<U1B44>;<U1B6B>..<U1B73>;<U1DC0>..<U1DE6>;<U1DFE>..<U1DFF>;/ + <U20D0>..<U20F0>;<U2DE0>..<U2DFF>;<U302A>..<U302F>;<U3099>..<U309A>;/ + <UA66F>..<UA672>;<UA67C>;<UA67D>;<UA802>;<UA806>;/ + <UA80B>;<UA823>..<UA827>;<UFB1E>;<UFE00>..<UFE0F>;<UFE20>..<UFE26>;/ <U00010A01>..<U00010A03>;<U00010A05>..<U00010A06>;/ <U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;<U00010A3F>;/ <U0001D165>..<U0001D169>;<U0001D16D>..<U0001D172>;/ @@ -1619,20 +1724,25 @@ class "combining_level3"; / <U0962>..<U0963>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/ <U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/ <U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;/ - <U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;<U0ABC>;/ + <U0A4B>..<U0A4D>;<U0A51>;<U0A70>..<U0A71>;<U0375>;<U0A81>..<U0A83>;/ + <U0ABC>;/ <U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;<U0AE2>..<U0AE3>;/ - <U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;<U0B47>..<U0B48>;/ + <U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B44>;<U0B47>..<U0B48>;/ <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B82>;<U0BBE>..<U0BC2>;/ - <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0C01>..<U0C03>;/ + <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD0>;<U0BD7>;<U0C01>..<U0C03>;/ <U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;/ + <U0C62>..<U0C63>;/ <U0C82>..<U0C83>;<U0CBC>;<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;/ <U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CE2>..<U0CE3>;<U0D02>..<U0D03>;/ - <U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;/ + <U0D3E>..<U0D44>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;/ + <U0D62>..<U0D63>;/ <U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;/ <U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;<U0E47>..<U0E4E>;<U0EB1>;/ <U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F3E>..<U0F3F>;/ <U0F71>..<U0F81>;<U0F84>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;/ - <U102C>..<U1032>;<U1036>..<U1039>;<U1056>..<U1059>;<U1712>..<U1714>;/ + <U102B>..<U103F>;<U1056>..<U1059>;<U105E>..<U1060>;<U1062>..<U1064>;/ + <U1067>..<U106D>;/ + <U1071>..<U1074>;<U1082>..<U108D>;<U108F>;<U1712>..<U1714>;/ <U1732>..<U1734>;<U1752>..<U1753>;<U1772>..<U1773>;<U17B6>..<U17D3>;/ <U180B>..<U180D>;<U1920>..<U192B>;<U1930>..<U1938>;<U19B0>..<U19C0>;/ <U19C8>..<U19C9>;<U1A19>..<U1A1B>;<U1B00>..<U1B04>;<U1B34>..<U1B44>;/ diff --git a/nscd/Makefile b/nscd/Makefile index f83e40049a..74df824769 100644 --- a/nscd/Makefile +++ b/nscd/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007 +# Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007,2008 # Free Software Foundation, Inc. # This file is part of the GNU C Library. @@ -90,7 +90,8 @@ CFLAGS-nscd_initgroups.c = -fexceptions nscd-cflags = -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2 ifeq (yesyes,$(have-fpie)$(build-shared)) -nscd-cflags += -fpie +#nscd-cflags += -fpie +nscd-cflags += -fpic endif ifeq (yes,$(have-ssp)) nscd-cflags += -fstack-protector diff --git a/nscd/aicache.c b/nscd/aicache.c index a69a7781d3..2518f80128 100644 --- a/nscd/aicache.c +++ b/nscd/aicache.c @@ -1,5 +1,5 @@ /* Cache handling for host lookup. - Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. @@ -262,7 +262,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req, { dataset = (struct dataset *) mempool_alloc (db, total - + req->key_len); + + req->key_len, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -338,7 +339,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req, struct dataset *newp = (struct dataset *) mempool_alloc (db, total - + req->key_len); + + req->key_len, + IDX_result_data); if (__builtin_expect (newp != NULL, 1)) { /* Adjust pointer into the memory block. */ @@ -424,7 +426,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req, if (fd != -1) TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { diff --git a/nscd/cache.c b/nscd/cache.c index 12c4f01e40..b1dc2c5052 100644 --- a/nscd/cache.c +++ b/nscd/cache.c @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 1999, 2003-2006, 2007 Free Software Foundation, Inc. +/* Copyright (c) 1998, 1999, 2003-2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. @@ -155,11 +155,16 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet, unsigned long int hash = __nis_hash (key, len) % table->head->module; struct hashentry *newp; - newp = mempool_alloc (table, sizeof (struct hashentry)); + newp = mempool_alloc (table, sizeof (struct hashentry), IDX_record_data); /* If we cannot allocate memory, just do not do anything. */ if (newp == NULL) { ++table->head->addfailed; + + /* Mark the in-flight memory as unused. */ + for (enum in_flight idx = 0; idx < IDX_record_data; ++idx) + mem_in_flight.block[idx].dbidx = -1; + return -1; } @@ -215,6 +220,10 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet, else next_wakeup = table->wakeup_time; + /* Mark the in-flight memory as unused. */ + for (enum in_flight idx = 0; idx < IDX_last; ++idx) + mem_in_flight.block[idx].dbidx = -1; + return 0; } diff --git a/nscd/connections.c b/nscd/connections.c index 5da5e5f08a..64c82cb892 100644 --- a/nscd/connections.c +++ b/nscd/connections.c @@ -225,6 +225,11 @@ static int sock; /* Number of times clients had to wait. */ unsigned long int client_queued; +/* Data structure for recording in-flight memory allocation. */ +__thread struct mem_in_flight mem_in_flight; +/* Global list of the mem_in_flight variables of all the threads. */ +struct mem_in_flight *mem_in_flight_list; + ssize_t writeall (int fd, const void *buf, size_t len) @@ -964,7 +969,7 @@ send_ro_fd (struct database_dyn *db, char *key, int fd) /* Handle new request. */ static void -handle_request (int fd, request_header *req, void *key, uid_t uid) +handle_request (int fd, request_header *req, void *key, uid_t uid, pid_t pid) { if (__builtin_expect (req->version, NSCD_VERSION) != NSCD_VERSION) { @@ -979,7 +984,31 @@ cannot handle old request version %d; current version is %d"), if (selinux_enabled && nscd_request_avc_has_perm (fd, req->type) != 0) { if (debug_level > 0) - dbg_log (_("request not handled due to missing permission")); + { +#ifdef SO_PEERCRED +# ifdef PATH_MAX + char buf[PATH_MAX]; +# else + char buf[4096]; +# endif + + snprintf (buf, sizeof (buf), "/proc/%ld/exe", (long int) pid); + ssize_t n = readlink (buf, buf, sizeof (buf) - 1); + + if (n <= 0) + dbg_log (_("\ +request from %ld not handled due to missing permission"), (long int) pid); + else + { + buf[n] = '\0'; + dbg_log (_("\ +request from '%s' [%ld] not handled due to missing permission"), + buf, (long int) pid); + } +#else + dbg_log (_("request not handled due to missing permission")); +#endif + } return; } @@ -1426,6 +1455,16 @@ nscd_run_worker (void *p) { char buf[256]; + /* Initialize the memory-in-flight list. */ + for (enum in_flight idx = 0; idx < IDX_last; ++idx) + mem_in_flight.block[idx].dbidx = -1; + /* And queue this threads structure. */ + do + mem_in_flight.next = mem_in_flight_list; + while (atomic_compare_and_exchange_bool_acq (&mem_in_flight_list, + &mem_in_flight, + mem_in_flight.next) != 0); + /* Initial locking. */ pthread_mutex_lock (&readylist_lock); @@ -1491,6 +1530,8 @@ nscd_run_worker (void *p) if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) == 0) pid = caller.pid; } +#else + const pid_t pid = 0; #endif /* It should not be possible to crash the nscd with a silly @@ -1531,7 +1572,7 @@ handle_request: request received (Version = %d)"), req.version); } /* Phew, we got all the data, now process it. */ - handle_request (fd, &req, keybuf, uid); + handle_request (fd, &req, keybuf, uid, pid); } close_and_out: diff --git a/nscd/grpcache.c b/nscd/grpcache.c index 002f04fb3e..dbc406fcbd 100644 --- a/nscd/grpcache.c +++ b/nscd/grpcache.c @@ -1,5 +1,5 @@ /* Cache handling for group lookup. - Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. @@ -113,7 +113,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -204,7 +205,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, if (he == NULL) { - dataset = (struct dataset *) mempool_alloc (db, total + n); + dataset = (struct dataset *) mempool_alloc (db, total + n, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -274,7 +276,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, /* We have to create a new record. Just allocate appropriate memory and copy it. */ struct dataset *newp - = (struct dataset *) mempool_alloc (db, total + n); + = (struct dataset *) mempool_alloc (db, total + n, + IDX_result_data); if (newp != NULL) { /* Adjust pointers into the memory block. */ diff --git a/nscd/hstcache.c b/nscd/hstcache.c index cc041581e1..b93d418878 100644 --- a/nscd/hstcache.c +++ b/nscd/hstcache.c @@ -1,5 +1,5 @@ /* Cache handling for host lookup. - Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. @@ -121,7 +121,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -226,7 +227,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, if (he == NULL && h_addr_list_cnt == 1) { dataset = (struct dataset *) mempool_alloc (db, - total + req->key_len); + total + req->key_len, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -312,7 +314,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, appropriate memory and copy it. */ struct dataset *newp = (struct dataset *) mempool_alloc (db, - total + req->key_len); + total + req->key_len, + IDX_result_data); if (newp != NULL) { /* Adjust pointers into the memory block. */ diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c index 157cd7860c..4d6513b5d7 100644 --- a/nscd/initgrcache.c +++ b/nscd/initgrcache.c @@ -1,5 +1,5 @@ /* Cache handling for host lookup. - Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. @@ -197,7 +197,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -259,7 +260,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, if (he == NULL) { dataset = (struct dataset *) mempool_alloc (db, - total + req->key_len); + total + req->key_len, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -329,7 +331,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, /* We have to create a new record. Just allocate appropriate memory and copy it. */ struct dataset *newp - = (struct dataset *) mempool_alloc (db, total + req->key_len); + = (struct dataset *) mempool_alloc (db, total + req->key_len, + IDX_result_data); if (newp != NULL) { /* Adjust pointer into the memory block. */ diff --git a/nscd/mem.c b/nscd/mem.c index 048e3ddd32..14928d633c 100644 --- a/nscd/mem.c +++ b/nscd/mem.c @@ -1,5 +1,5 @@ /* Cache memory handling. - Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. @@ -197,6 +197,31 @@ gc (struct database_dyn *db) } assert (cnt == db->head->nentries); + /* Go through the list of in-flight memory blocks. */ + struct mem_in_flight *mrunp = mem_in_flight_list; + while (mrunp != NULL) + { + /* NB: There can be no race between this test and another thread + setting the field to the index we are looking for because + this would require the other thread to also have the memlock + for the database. + + NB2: we do not have to look at latter blocks (higher indices) if + earlier blocks are not in flight. They are always allocated in + sequence. */ + for (enum in_flight idx = IDX_result_data; + idx < IDX_last && mrunp->block[idx].dbidx == db - dbs; ++idx) + { + assert ((char *) mrunp->block[idx].blockaddr > db->data); + assert ((char *) mrunp->block[idx].blockaddr + + mrunp->block[0].blocklen <= db->data + db->memsize); + markrange (mark, (char *) mrunp->block[idx].blockaddr - db->data, + mrunp->block[idx].blocklen); + } + + mrunp = mrunp->next; + } + /* Sort the entries by the addresses of the referenced data. All the entries pointing to the same DATAHEAD object will have the same key. Stability of the sorting is unimportant. */ @@ -503,7 +528,7 @@ gc (struct database_dyn *db) void * -mempool_alloc (struct database_dyn *db, size_t len) +mempool_alloc (struct database_dyn *db, size_t len, enum in_flight idx) { /* Make sure LEN is a multiple of our maximum alignment so we can keep track of used memory is multiples of this alignment value. */ @@ -567,6 +592,12 @@ mempool_alloc (struct database_dyn *db, size_t len) db->head->first_free += len; db->last_alloc_failed = false; + + /* Remember that we have allocated this memory. */ + assert (idx >= 0 && idx < IDX_last); + mem_in_flight.block[idx].dbidx = db - dbs; + mem_in_flight.block[idx].blocklen = len; + mem_in_flight.block[idx].blockaddr = res; } pthread_mutex_unlock (&db->memlock); diff --git a/nscd/nscd.h b/nscd/nscd.h index ec2d9454ca..cbea8e1a96 100644 --- a/nscd/nscd.h +++ b/nscd/nscd.h @@ -181,6 +181,31 @@ extern uid_t old_uid; extern gid_t old_gid; +/* Memory allocation in flight. Each thread can have a limited number + of allocation in flight. No need to create dynamic data + structures. We use fixed indices. */ +enum in_flight + { + IDX_result_data = 0, + /* Keep the IDX_record_data entry last at all times. */ + IDX_record_data = 1, + IDX_last + }; +extern __thread struct mem_in_flight +{ + struct + { + int dbidx; + nscd_ssize_t blocklen; + void *blockaddr; + } block[IDX_last]; + + struct mem_in_flight *next; +} mem_in_flight; +/* Global list of the mem_in_flight variables of all the threads. */ +extern struct mem_in_flight *mem_in_flight_list; + + /* Prototypes for global functions. */ /* nscd.c */ @@ -271,7 +296,8 @@ extern void readdservbyport (struct database_dyn *db, struct hashentry *he, struct datahead *dh); /* mem.c */ -extern void *mempool_alloc (struct database_dyn *db, size_t len); +extern void *mempool_alloc (struct database_dyn *db, size_t len, + enum in_flight idx); extern void gc (struct database_dyn *db); diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c index bc1b6bab2f..e1bf6e9518 100644 --- a/nscd/pwdcache.c +++ b/nscd/pwdcache.c @@ -1,5 +1,5 @@ /* Cache handling for passwd lookup. - Copyright (C) 1998-2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 1998-2005, 2006, 2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. @@ -120,7 +120,8 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -199,7 +200,8 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, if (he == NULL) { - dataset = (struct dataset *) mempool_alloc (db, total + n); + dataset = (struct dataset *) mempool_alloc (db, total + n, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -270,7 +272,8 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, /* We have to create a new record. Just allocate appropriate memory and copy it. */ struct dataset *newp - = (struct dataset *) mempool_alloc (db, total + n); + = (struct dataset *) mempool_alloc (db, total + n, + IDX_result_data); if (newp != NULL) { /* Adjust pointer into the memory block. */ diff --git a/nscd/servicescache.c b/nscd/servicescache.c index e122cb3f16..164b6e298d 100644 --- a/nscd/servicescache.c +++ b/nscd/servicescache.c @@ -1,5 +1,5 @@ /* Cache handling for services lookup. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@drepper.com>, 2007. @@ -103,7 +103,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len); + dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, + IDX_result_data); /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) { @@ -190,7 +191,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, if (he == NULL) { dataset = (struct dataset *) mempool_alloc (db, - total + req->key_len); + total + req->key_len, + IDX_result_data); if (dataset == NULL) ++db->head->addfailed; } @@ -261,7 +263,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, /* We have to create a new record. Just allocate appropriate memory and copy it. */ struct dataset *newp - = (struct dataset *) mempool_alloc (db, total + req->key_len); + = (struct dataset *) mempool_alloc (db, total + req->key_len, + IDX_result_data); if (newp != NULL) { /* Adjust pointers into the memory block. */ |