]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
[BZ #5209, BZ #5381]
authorUlrich Drepper <drepper@redhat.com>
Sat, 19 Apr 2008 16:42:41 +0000 (16:42 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 19 Apr 2008 16:42:41 +0000 (16:42 +0000)
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.

15 files changed:
ChangeLog
localedata/ChangeLog
localedata/charmaps/UTF-8
localedata/locales/i18n
nscd/Makefile
nscd/aicache.c
nscd/cache.c
nscd/connections.c
nscd/grpcache.c
nscd/hstcache.c
nscd/initgrcache.c
nscd/mem.c
nscd/nscd.h
nscd/pwdcache.c
nscd/servicescache.c

index 873ddb6808ab407c028814d71da7daca5c275336..2d7aac2c7e8effca91e2bbf08e8fb25c27a5c447 100644 (file)
--- 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.
index 61f2151bb7208e73bb97a6c6e27448ee858c43a5..5c9cbf2215c4cf3b0799acc3d03fef7fc6f61293 100644 (file)
@@ -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.
index 4ace37697efad6dc798a7c8de52b5a4ec5c78713..d4375bbab45cfc52270ca217915fd30c7b86eb37 100644 (file)
@@ -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
index 93ffe90e7ef5bbdfee27d85cbe3e3d07cb09f425..7287424417731be28788c89d2615bf1097fdb035 100644 (file)
@@ -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>;/
index f83e40049add3eb2bcd99a0abd1fc4cc2d0321cf..74df8247697ab3c75a75730dfe67ac2710f49d5d 100644 (file)
@@ -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
index a69a7781d39fd623f9ecce09a70785a956a6df6e..2518f8012821408b6e6f3fc967c206ba311b36af 100644 (file)
@@ -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, &notfound, 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)
        {
index 12c4f01e40cd25fd0b4415fe910de2bd8211b57d..b1dc2c50528a6e121aa287b7e66b5d8dd07d9712 100644 (file)
@@ -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;
 }
 
index 5da5e5f08a6ccff87f60cab0067c7ab8b0f85fe8..64c82cb89201e7ba6bc4303d3bc9ea6bf61225fa 100644 (file)
@@ -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:
index 002f04fb3e2b78d2600d45d2c16e1459821bc3a9..dbc406fcbdc16dda60f2662a0248337c290f5e96 100644 (file)
@@ -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, &notfound, 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.  */
index cc041581e1027a3f29cb98661dc06b3c9900b2d3..b93d4188783594cb2ada5b0ef92c955ad240fb01 100644 (file)
@@ -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, &notfound, 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.  */
index 157cd7860ca0d52c328ef2a61dfada4c11104864..4d6513b5d726473c2484c8ef45bd24df58a7e755 100644 (file)
@@ -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, &notfound, 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.  */
index 048e3ddd322df6ffe987c78a9e49eb3a88b99e15..14928d633ca9ddfea042e1d0a75290ae0a3b85f6 100644 (file)
@@ -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);
index ec2d9454cad8789ab24aae4c20ddb26f337277d0..cbea8e1a9634c3f7f910815e7e1ed2c373715568 100644 (file)
@@ -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);
 
 
index bc1b6bab2f35b78ee94f4f80524fd7937a736f9b..e1bf6e951828c2cec071d397923c5d6d594dce50 100644 (file)
@@ -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, &notfound, 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.  */
index e122cb3f166f4596b1c0884603e55bf462729f33..164b6e298d4c89ba7aa44c754cf794ae1d041f6b 100644 (file)
@@ -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, &notfound, 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.  */