1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-05 19:35:52 +03:00
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.
This commit is contained in:
Ulrich Drepper
2008-04-19 16:42:41 +00:00
parent 87a71b8d67
commit c52137d391
15 changed files with 523 additions and 252 deletions

View File

@@ -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> 2008-04-17 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/dl-osinfo.h: Include fcntl.h. * sysdeps/unix/sysv/linux/dl-osinfo.h: Include fcntl.h.

View 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> 2008-04-09 Ulrich Drepper <drepper@redhat.com>
* tst-langinfo.sh: Adjust for latest fr_FR locale changes. * tst-langinfo.sh: Adjust for latest fr_FR locale changes.

View File

@@ -899,7 +899,6 @@ CHARMAP
<U037C> /xcd/xbc GREEK SMALL DOTTED LUNATE SIGMA SYMBOL <U037C> /xcd/xbc GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
<U037D> /xcd/xbd GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL <U037D> /xcd/xbd GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
<U037E> /xcd/xbe GREEK QUESTION MARK <U037E> /xcd/xbe GREEK QUESTION MARK
<U037F> /xcd/xbf GREEK CAPITAL KAI SYMBOL
<U0384> /xce/x84 GREEK TONOS <U0384> /xce/x84 GREEK TONOS
<U0385> /xce/x85 GREEK DIALYTIKA TONOS <U0385> /xce/x85 GREEK DIALYTIKA TONOS
<U0386> /xce/x86 GREEK CAPITAL LETTER ALPHA WITH TONOS <U0386> /xce/x86 GREEK CAPITAL LETTER ALPHA WITH TONOS
@@ -972,6 +971,7 @@ CHARMAP
<U03CC> /xcf/x8c GREEK SMALL LETTER OMICRON WITH TONOS <U03CC> /xcf/x8c GREEK SMALL LETTER OMICRON WITH TONOS
<U03CD> /xcf/x8d GREEK SMALL LETTER UPSILON WITH TONOS <U03CD> /xcf/x8d GREEK SMALL LETTER UPSILON WITH TONOS
<U03CE> /xcf/x8e GREEK SMALL LETTER OMEGA WITH TONOS <U03CE> /xcf/x8e GREEK SMALL LETTER OMEGA WITH TONOS
<U03CF> /xcf/x8f GREEK CAPITAL KAI SYMBOL
<U03D0> /xcf/x90 GREEK BETA SYMBOL <U03D0> /xcf/x90 GREEK BETA SYMBOL
<U03D1> /xcf/x91 GREEK THETA SYMBOL <U03D1> /xcf/x91 GREEK THETA SYMBOL
<U03D2> /xcf/x92 GREEK UPSILON WITH HOOK SYMBOL <U03D2> /xcf/x92 GREEK UPSILON WITH HOOK SYMBOL
@@ -9443,71 +9443,71 @@ CHARMAP
<U2D23> /xe2/xb4/xa3 GEORGIAN SMALL LETTER WE <U2D23> /xe2/xb4/xa3 GEORGIAN SMALL LETTER WE
<U2D24> /xe2/xb4/xa4 GEORGIAN SMALL LETTER HAR <U2D24> /xe2/xb4/xa4 GEORGIAN SMALL LETTER HAR
<U2D25> /xe2/xb4/xa5 GEORGIAN SMALL LETTER HOE <U2D25> /xe2/xb4/xa5 GEORGIAN SMALL LETTER HOE
<U2D30> /xe2/xb4/xb0 TIFINAGH YA <U2D30> /xe2/xb4/xb0 TIFINAGH LETTER YA
<U2D31> /xe2/xb4/xb1 LETTRE TIFINAGHE YAB <U2D31> /xe2/xb4/xb1 TIFINAGH LETTER YAB
<U2D32> /xe2/xb4/xb2 LETTRE TIFINAGHE YAB SPIRANT <U2D32> /xe2/xb4/xb2 TIFINAGH LETTER YABH
<U2D33> /xe2/xb4/xb3 LETTRE TIFINAGHE YAG <U2D33> /xe2/xb4/xb3 TIFINAGH LETTER YAG
<U2D34> /xe2/xb4/xb4 LETTRE TIFINAGHE YAG SPIRANT <U2D34> /xe2/xb4/xb4 TIFINAGH LETTER YAGHH
<U2D35> /xe2/xb4/xb5 LETTRE TIFINAGHE YADJ KABYLE <U2D35> /xe2/xb4/xb5 TIFINAGH LETTER BERBER ACADEMY YAJ
<U2D36> /xe2/xb4/xb6 LETTRE TIFINAGHE YADJ <U2D36> /xe2/xb4/xb6 TIFINAGH LETTER YAJ
<U2D37> /xe2/xb4/xb7 LETTRE TIFINAGHE YAD <U2D37> /xe2/xb4/xb7 TIFINAGH LETTER YAD
<U2D38> /xe2/xb4/xb8 LETTRE TIFINAGHE YAD SPIRANT (yadh) <U2D38> /xe2/xb4/xb8 TIFINAGH LETTER YADH
<U2D39> /xe2/xb4/xb9 LETTRE TIFINAGHE YADD <U2D39> /xe2/xb4/xb9 TIFINAGH LETTER YADD
<U2D3A> /xe2/xb4/xba LETTRE TIFINAGHE YADD SPIRANT <U2D3A> /xe2/xb4/xba TIFINAGH LETTER YADDH
<U2D3B> /xe2/xb4/xbb LETTRE TIFINAGHE YEY <U2D3B> /xe2/xb4/xbb TIFINAGH LETTER YEY
<U2D3C> /xe2/xb4/xbc LETTRE TIFINAGHE YAF <U2D3C> /xe2/xb4/xbc TIFINAGH LETTER YAF
<U2D3D> /xe2/xb4/xbd LETTRE TIFINAGHE YAK <U2D3D> /xe2/xb4/xbd TIFINAGH LETTER YAK
<U2D3E> /xe2/xb4/xbe LETTRE TIFINAGHE YAK TOUAREG <U2D3E> /xe2/xb4/xbe TIFINAGH LETTER TUAREG YAK
<U2D3F> /xe2/xb4/xbf LETTRE TIFINAGHE YAK SPIRANT <U2D3F> /xe2/xb4/xbf TIFINAGH LETTER YAKHH
<U2D40> /xe2/xb5/x80 LETTRE TIFINAGHE YAH (yab touareg) <U2D40> /xe2/xb5/x80 TIFINAGH LETTER YAH
<U2D41> /xe2/xb5/x81 LETTRE TIFINAGHE YAH KABYLE <U2D41> /xe2/xb5/x81 TIFINAGH LETTER BERBER ACADEMY YAH
<U2D42> /xe2/xb5/x82 LETTRE TIFINAGHE YAH TOUAREG <U2D42> /xe2/xb5/x82 TIFINAGH LETTER TUAREG YAH
<U2D43> /xe2/xb5/x83 LETTRE TIFINAGHE YAHH <U2D43> /xe2/xb5/x83 TIFINAGH LETTER YAHH
<U2D44> /xe2/xb5/x84 LETTRE TIFINAGHE YA <U2D44> /xe2/xb5/x84 TIFINAGH LETTER YAA
<U2D45> /xe2/xb5/x85 LETTRE TIFINAGHE YAKH <U2D45> /xe2/xb5/x85 TIFINAGH LETTER YAKH
<U2D46> /xe2/xb5/x86 LETTRE TIFINAGHE YAKH TOUAREG (quatre-points en carré touareg) <U2D46> /xe2/xb5/x86 TIFINAGH LETTER TUAREG YAKH
<U2D47> /xe2/xb5/x87 LETTRE TIFINAGHE YAQ <U2D47> /xe2/xb5/x87 TIFINAGH LETTER YAQ
<U2D48> /xe2/xb5/x88 LETTRE TIFINAGHE YAQ TOUAREG <U2D48> /xe2/xb5/x88 TIFINAGH LETTER TUAREG YAQ
<U2D49> /xe2/xb5/x89 LETTRE TIFINAGHE YI <U2D49> /xe2/xb5/x89 TIFINAGH LETTER YI
<U2D4A> /xe2/xb5/x8a LETTRE TIFINAGHE YAJ <U2D4A> /xe2/xb5/x8a TIFINAGH LETTER YAZH
<U2D4B> /xe2/xb5/x8b LETTRE TIFINAGHE YAJ DE LAHAGGAR <U2D4B> /xe2/xb5/x8b TIFINAGH LETTER AHAGGAR YAZH
<U2D4C> /xe2/xb5/x8c LETTRE TIFINAGHE YAJ TOUAREG <U2D4C> /xe2/xb5/x8c TIFINAGH LETTER TUAREG YAZH
<U2D4D> /xe2/xb5/x8d LETTRE TIFINAGHE YAL <U2D4D> /xe2/xb5/x8d TIFINAGH LETTER YAL
<U2D4E> /xe2/xb5/x8e LETTRE TIFINAGHE YAM <U2D4E> /xe2/xb5/x8e TIFINAGH LETTER YAM
<U2D4F> /xe2/xb5/x8f LETTRE TIFINAGHE YAN <U2D4F> /xe2/xb5/x8f TIFINAGH LETTER YAN
<U2D50> /xe2/xb5/x90 LETTRE TIFINAGHE YAGN TOUAREG <U2D50> /xe2/xb5/x90 TIFINAGH LETTER TUAREG YAGN
<U2D51> /xe2/xb5/x91 LETTRE TIFINAGHE YANG TOUAREG <U2D51> /xe2/xb5/x91 TIFINAGH LETTER TUAREG YANG
<U2D52> /xe2/xb5/x92 LETTRE TIFINAGHE YAP <U2D52> /xe2/xb5/x92 TIFINAGH LETTER YAP
<U2D53> /xe2/xb5/x93 LETTRE TIFINAGHE YOU (yaw touareg) <U2D53> /xe2/xb5/x93 TIFINAGH LETTER YU
<U2D54> /xe2/xb5/x94 LETTRE TIFINAGHE YAR <U2D54> /xe2/xb5/x94 TIFINAGH LETTER YAR
<U2D55> /xe2/xb5/x95 LETTRE TIFINAGHE YARR <U2D55> /xe2/xb5/x95 TIFINAGH LETTER YARR
<U2D56> /xe2/xb5/x96 LETTRE TIFINAGHE YAGH <U2D56> /xe2/xb5/x96 TIFINAGH LETTER YAGH
<U2D57> /xe2/xb5/x97 LETTRE TIFINAGHE YAGH TOUAREG <U2D57> /xe2/xb5/x97 TIFINAGH LETTER TUAREG YAGH
<U2D58> /xe2/xb5/x98 LETTRE TIFINAGHE YAGH DE LAÏR (yadj de lAdrar, cinq-points en quinconce touareg) <U2D58> /xe2/xb5/x98 TIFINAGH LETTER AYER YAGH
<U2D59> /xe2/xb5/x99 LETTRE TIFINAGHE YAS <U2D59> /xe2/xb5/x99 TIFINAGH LETTER YAS
<U2D5A> /xe2/xb5/x9a LETTRE TIFINAGHE YASS <U2D5A> /xe2/xb5/x9a TIFINAGH LETTER YASS
<U2D5B> /xe2/xb5/x9b LETTRE TIFINAGHE YACH <U2D5B> /xe2/xb5/x9b TIFINAGH LETTER YASH
<U2D5C> /xe2/xb5/x9c LETTRE TIFINAGHE YAT <U2D5C> /xe2/xb5/x9c TIFINAGH LETTER YAT
<U2D5D> /xe2/xb5/x9d LETTRE TIFINAGHE YAT SPIRANT (yath) <U2D5D> /xe2/xb5/x9d TIFINAGH LETTER YATH
<U2D5E> /xe2/xb5/x9e LETTRE TIFINAGHE YATCH <U2D5E> /xe2/xb5/x9e TIFINAGH LETTER YACH
<U2D5F> /xe2/xb5/x9f LETTRE TIFINAGHE YATT <U2D5F> /xe2/xb5/x9f TIFINAGH LETTER YATT
<U2D60> /xe2/xb5/xa0 LETTRE TIFINAGHE YAV <U2D60> /xe2/xb5/xa0 TIFINAGH LETTER YAV
<U2D61> /xe2/xb5/xa1 LETTRE TIFINAGHE YAW <U2D61> /xe2/xb5/xa1 TIFINAGH LETTER YAW
<U2D62> /xe2/xb5/xa2 LETTRE TIFINAGHE YAY <U2D62> /xe2/xb5/xa2 TIFINAGH LETTER YAY
<U2D63> /xe2/xb5/xa3 LETTRE TIFINAGHE YAZ <U2D63> /xe2/xb5/xa3 TIFINAGH LETTER YAZ
<U2D64> /xe2/xb5/xa4 LETTRE TIFINAGHE YAZ TAWELLEMET (yaz harpon) <U2D64> /xe2/xb5/xa4 TIFINAGH LETTER TAWELLEMET YAZ
<U2D65> /xe2/xb5/xa5 LETTRE TIFINAGHE YAZZ <U2D65> /xe2/xb5/xa5 TIFINAGH LETTER YAZZ
<U2D6F> /xe2/xb5/xaf LETTRE MODIFICATIVE TIFINAGHE DE LABIO-VÉLARISATION (tamatart) <U2D6F> /xe2/xb5/xaf TIFINAGH MODIFIER LETTER LABIALIZATION MARK
<U2D80> /xe2/xb6/x80 ETHIOPIC SYLLALE LOA <U2D80> /xe2/xb6/x80 ETHIOPIC SYLLABLE LOA
<U2D81> /xe2/xb6/x81 ETHIOPIC SYLLALE MOA <U2D81> /xe2/xb6/x81 ETHIOPIC SYLLABLE MOA
<U2D82> /xe2/xb6/x82 ETHIOPIC SYLLALE ROA <U2D82> /xe2/xb6/x82 ETHIOPIC SYLLABLE ROA
<U2D83> /xe2/xb6/x83 ETHIOPIC SYLLALE SOA <U2D83> /xe2/xb6/x83 ETHIOPIC SYLLABLE SOA
<U2D84> /xe2/xb6/x84 ETHIOPIC SYLLALE SHOA <U2D84> /xe2/xb6/x84 ETHIOPIC SYLLABLE SHOA
<U2D85> /xe2/xb6/x85 ETHIOPIC SYLLALE BOA <U2D85> /xe2/xb6/x85 ETHIOPIC SYLLABLE BOA
<U2D86> /xe2/xb6/x86 ETHIOPIC SYLLALE TOA <U2D86> /xe2/xb6/x86 ETHIOPIC SYLLABLE TOA
<U2D87> /xe2/xb6/x87 ETHIOPIC SYLLALE COA <U2D87> /xe2/xb6/x87 ETHIOPIC SYLLABLE COA
<U2D88> /xe2/xb6/x88 ETHIOPIC SYLLALE NOA <U2D88> /xe2/xb6/x88 ETHIOPIC SYLLABLE NOA
<U2D89> /xe2/xb6/x89 ETHIOPIC SYLLALE NYOA <U2D89> /xe2/xb6/x89 ETHIOPIC SYLLABLE NYOA
<U2D8A> /xe2/xb6/x8a ETHIOPIC SYLLABLE GLOTTAL OA <U2D8A> /xe2/xb6/x8a ETHIOPIC SYLLABLE GLOTTAL OA
<U2D8B> /xe2/xb6/x8b ETHIOPIC SYLLABLE ZOA <U2D8B> /xe2/xb6/x8b ETHIOPIC SYLLABLE ZOA
<U2D8C> /xe2/xb6/x8c ETHIOPIC SYLLABLE DOA <U2D8C> /xe2/xb6/x8c ETHIOPIC SYLLABLE DOA
@@ -26425,7 +26425,6 @@ CHARMAP
<UFFFC> /xef/xbf/xbc OBJECT REPLACEMENT CHARACTER <UFFFC> /xef/xbf/xbc OBJECT REPLACEMENT CHARACTER
<UFFFD> /xef/xbf/xbd 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
<U00010000> /xf0/x90/x80/x80 LINEAR B SYLLABLE B008 A
<U00010001> /xf0/x90/x80/x81 LINEAR B SYLLABLE B038 E <U00010001> /xf0/x90/x80/x81 LINEAR B SYLLABLE B038 E
<U00010002> /xf0/x90/x80/x82 LINEAR B SYLLABLE B028 I <U00010002> /xf0/x90/x80/x82 LINEAR B SYLLABLE B028 I
<U00010003> /xf0/x90/x80/x83 LINEAR B SYLLABLE B061 O <U00010003> /xf0/x90/x80/x83 LINEAR B SYLLABLE B061 O

View File

@@ -2,20 +2,17 @@ escape_char /
comment_char % comment_char %
LC_IDENTIFICATION LC_IDENTIFICATION
% This is the ISO/IEC TR 14652 "i18n" definition for title ""
% the LC_IDENTIFICATION category. source ""
% address ""
title "ISO/IEC TR 14652 i18n FDCC-set"
source "ISO/IEC Copyright Office"
address "Case postale 56, CH-1211 Geneve 20, Switzerland"
contact "" contact ""
email "" email ""
tel "" tel ""
fax "" fax ""
language "" language ""
territory "ISO" territory ""
revision "1.0" revision ""
date "2000-01-24" date "2008-04-13"
% %
category "i18n:2000";LC_IDENTIFICATION category "i18n:2000";LC_IDENTIFICATION
category "i18n:2000";LC_CTYPE category "i18n:2000";LC_CTYPE
@@ -63,6 +60,7 @@ upper /
<U023A>;<U023B>;<U023D>;<U023E>;/ <U023A>;<U023B>;<U023D>;<U023E>;/
<U0241>;<U0243>..<U0246>;<U0248>;<U024A>;<U024C>;<U024E>;/ <U0241>;<U0243>..<U0246>;<U0248>;<U024A>;<U024C>;<U024E>;/
% BASIC GREEK/ % BASIC GREEK/
<U0370>;<U0372>;<U0376>;/
<U0386>;<U0388>..<U038A>;<U038C>;<U038E>;<U038F>;<U0391>..<U03A1>;/ <U0386>;<U0388>..<U038A>;<U038C>;<U038E>;<U038F>;<U0391>..<U03A1>;/
<U03A3>..<U03AB>;<U03D8>..(2)..<U03DE>;/ <U03A3>..<U03AB>;<U03D8>..(2)..<U03DE>;/
% GREEK SYMBOLS AND COPTIC/ % GREEK SYMBOLS AND COPTIC/
@@ -73,7 +71,7 @@ upper /
<U0480>;<U048A>..(2)..<U04BE>;<U04C0>;<U04C1>..(2)..<U04CD>;/ <U0480>;<U048A>..(2)..<U04BE>;<U04C0>;<U04C1>..(2)..<U04CD>;/
<U04D0>..(2)..<U04FE>;/ <U04D0>..(2)..<U04FE>;/
% CYRILLIC SUPPLEMENT/ % CYRILLIC SUPPLEMENT/
<U0500>..(2)..<U0512>;/ <U0500>..(2)..<U0522>;/
% ARMENIAN/ % ARMENIAN/
<U0531>..<U0556>;/ <U0531>..<U0556>;/
% GEORGIAN/ % GEORGIAN/
@@ -83,8 +81,8 @@ upper /
<U10A0>..<U10C5>;/ <U10A0>..<U10C5>;/
% LATIN EXTENDED ADDITIONAL/ % LATIN EXTENDED ADDITIONAL/
<U1E00>..(2)..<U1E7E>;/ <U1E00>..(2)..<U1E7E>;/
<U1E80>..(2)..<U1E94>;/ <U1E80>..(2)..<U1E94>;<U1E9E>;/
<U1EA0>..(2)..<U1EF8>;/ <U1EA0>..(2)..<U1EFE>;/
% GREEK EXTENDED/ % GREEK EXTENDED/
<U1F08>..<U1F0F>;<U1F18>..<U1F1D>;<U1F28>..<U1F2F>;<U1F38>..<U1F3F>;/ <U1F08>..<U1F0F>;<U1F18>..<U1F1D>;<U1F28>..<U1F2F>;<U1F38>..<U1F3F>;/
<U1F48>..<U1F4D>;<U1F59>..(2)..<U1F5F>;<U1F68>..<U1F6F>;/ <U1F48>..<U1F4D>;<U1F59>..(2)..<U1F5F>;<U1F68>..<U1F6F>;/
@@ -101,9 +99,15 @@ upper /
% GLAGOLITIC/ % GLAGOLITIC/
<U2C00>..<U2C2E>;/ <U2C00>..<U2C2E>;/
% LATIN EXTENDED-C/ % LATIN EXTENDED-C/
<U2C60>;<U2C62>..<U2C64>;<U2C67>..(2)..<U2C6B>;<U2C75>;/ <U2C60>;<U2C62>..<U2C64>;<U2C67>..(2)..<U2C6B>;<U2C6D>..<U2C6F>;/
<U2C72>;<U2C75>;<UA78B>;/
% COPTIC/ % COPTIC/
<U2C80>..(2)..<U2CE2>;/ <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/ % HALFWIDTH AND FULLWIDTH FORMS/
<UFF21>..<UFF3A>;/ <UFF21>..<UFF3A>;/
% DESERET/ % DESERET/
@@ -133,6 +137,7 @@ lower /
% COMBINING DIACRITICAL MARKS/ % COMBINING DIACRITICAL MARKS/
<U0345>;/ <U0345>;/
% BASIC GREEK/ % BASIC GREEK/
<U0371>;<U0373>;<U0377>;/
<U037B>..<U037D>;/ <U037B>..<U037D>;/
<U03AC>..<U03AF>;<U03B1>..<U03CE>;/ <U03AC>..<U03AF>;<U03B1>..<U03CE>;/
% GREEK SYMBOLS AND COPTIC/ % GREEK SYMBOLS AND COPTIC/
@@ -142,13 +147,13 @@ lower /
<U0430>..<U045F>;<U0461>..(2)..<U047F>;/ <U0430>..<U045F>;<U0461>..(2)..<U047F>;/
<U0481>;<U048B>..(2)..<U04BF>;<U04C2>..(2)..<U04CE>;/ <U0481>;<U048B>..(2)..<U04BF>;<U04C2>..(2)..<U04CE>;/
<U04CF>;/ <U04CF>;/
<U04D1>..(2)..<U0513>;/ <U04D1>..(2)..<U0523>;/
% ARMENIAN/ % ARMENIAN/
<U0561>..<U0586>;/ <U0561>..<U0586>;/
% PHONETIC EXTENSIONS/ % PHONETIC EXTENSIONS/
<U1D7D>;/ <U1D7D>;/
% LATIN EXTENDED ADDITIONAL/ % LATIN EXTENDED ADDITIONAL/
<U1E01>..(2)..<U1E95>;<U1E9B>;<U1EA1>..(2)..<U1EF9>;/ <U1E01>..(2)..<U1E95>;<U1E9B>..<U1E9D>;<U1E9F>;<U1EA1>..(2)..<U1EFF>;/
% GREEK EXTENDED/ % GREEK EXTENDED/
<U1F00>..<U1F07>;<U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;/ <U1F00>..<U1F07>;<U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;/
<U1F40>..<U1F45>;<U1F51>..(2)..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;/ <U1F40>..<U1F45>;<U1F51>..(2)..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;/
@@ -158,19 +163,25 @@ lower /
% LETTERLIKE SYMBOLS/ % LETTERLIKE SYMBOLS/
<U214E>;/ <U214E>;/
% NUMBER FORMS/ % NUMBER FORMS/
<U2170>..<U217F>;<U2184>;/ <U2170>..<U217F>;<U2188>;/
% ENCLOSED ALPHANUMERICS/ % ENCLOSED ALPHANUMERICS/
<U24D0>..<U24E9>;/ <U24D0>..<U24E9>;/
% GLAGOLITIC/ % GLAGOLITIC/
<U2C30>..<U2C5E>;/ <U2C30>..<U2C5E>;/
% LATIN EXTENDED-C/ % LATIN EXTENDED-C/
<U2C61>;<U2C65>;<U2C66>..(2)..<U2C6C>;<U2C76>;/ <U2C61>;<U2C65>;<U2C66>..(2)..<U2C6C>;<U2C71>;<U2C73>;<U2C74>;/
<U2C76>..<U2C7A>;/
% COPTIC/ % COPTIC/
<U2C81>..(2)..<U2CE3>;/ <U2C81>..(2)..<U2CE3>;/
% GEORGIAN SUPPLEMENT/ % GEORGIAN SUPPLEMENT/
% well, there are three georgian blocks defined; one caseless (the one usually/ % 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/ % used), one defined as uppercase and one as lowercase. defining the lowercase one here/
<U2D00>..<U2D25>;/ <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/ % HALFWIDTH AND FULLWIDTH FORMS/
<UFF41>..<UFF5A>;/ <UFF41>..<UFF5A>;/
% DESERET/ % DESERET/
@@ -196,7 +207,7 @@ alpha /
% COMBINING DIACRITICAL MARKS/ % COMBINING DIACRITICAL MARKS/
<U0345>;/ <U0345>;/
% BASIC GREEK/ % BASIC GREEK/
<U037A>..<U037D>;<U0386>;/ <U0370>..<U0373>;<U0376>..<U0377>;<U037A>..<U037D>;<U0386>;/
<U0388>..<U038A>;<U038C>;<U038E>..<U03A1>;/ <U0388>..<U038A>;<U038C>;<U038E>..<U03A1>;/
<U03A3>..<U03CE>;/ <U03A3>..<U03CE>;/
% GREEK SYMBOLS AND COPTIC/ % GREEK SYMBOLS AND COPTIC/
@@ -204,18 +215,18 @@ alpha /
% CYRILLIC/ % CYRILLIC/
<U0400>..<U0481>;<U048A>..<U04FF>;/ <U0400>..<U0481>;<U048A>..<U04FF>;/
% CYRILLIC SUPPLEMENT/ % CYRILLIC SUPPLEMENT/
<U0500>..<U0513>;/ <U0500>..<U0523>;/
% ARMENIAN/ % ARMENIAN/
<U0531>..<U0556>;<U0559>;<U0561>..<U0587>;/ <U0531>..<U0556>;<U0559>;<U0561>..<U0587>;/
% HEBREW/ % HEBREW/
<U05D0>..<U05EA>;<U05F0>..<U05F2>;/ <U05D0>..<U05EA>;<U05F0>..<U05F2>;/
% ARABIC/ % ARABIC/
<U0621>..<U063A>;<U0640>..<U064A>;<U066E>..<U066F>;<U0671>..<U06D3>;/ <U0621>..<U064A>;<U066E>..<U066F>;<U0671>..<U06D3>;/
<U06D5>;<U06E5>..<U06E6>;<U06EE>..<U06EF>;<U06FA>..<U06FC>;<U06FF>;/ <U06D5>;<U06E5>..<U06E6>;<U06EE>..<U06EF>;<U06FA>..<U06FC>;<U06FF>;/
% SYRIAC/ % SYRIAC/
<U0710>;<U0712>..<U072F>;<U074D>..<U074F>;/ <U0710>;<U0712>..<U072F>;<U074D>..<U074F>;/
% ARABIC SUPPLEMENT/ % ARABIC SUPPLEMENT/
<U0750>..<U076D>;/ <U0750>..<U077F>;/
% THAANA/ % THAANA/
<U0780>..<U07A5>;<U07B1>;/ <U0780>..<U07A5>;<U07B1>;/
% NKO/ % NKO/
@@ -238,20 +249,20 @@ alpha /
% ORIYA/ % ORIYA/
<U0B05>..<U0B0C>;<U0B0F>;<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/ <U0B05>..<U0B0C>;<U0B0F>;<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
<U0B32>;<U0B33>;<U0B35>..<U0B39>;<U0B3D>;<U0B5C>;<U0B5D>;/ <U0B32>;<U0B33>;<U0B35>..<U0B39>;<U0B3D>;<U0B5C>;<U0B5D>;/
<U0B5F>..<U0B61>;<U0B71>;/ <U0B5F>..<U0B63>;<U0B71>;/
% TAMIL/ % TAMIL/
<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>;/ <U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>;/
<U0B9A>;<U0B9C>;<U0B9E>;<U0B9F>;<U0BA3>;<U0BA4>;<U0BA8>..<U0BAA>;/ <U0B9A>;<U0B9C>;<U0B9E>;<U0B9F>;<U0BA3>;<U0BA4>;<U0BA8>..<U0BAA>;/
<U0BAE>..<U0BB9>;/ <U0BAE>..<U0BB9>;/
% TELUGU/ % TELUGU/
<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;<U0C2A>..<U0C33>;/ <U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;<U0C2A>..<U0C33>;/
<U0C35>..<U0C39>;<U0C60>..<U0C61>;/ <U0C35>..<U0C39>;<U0C3D>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
% KANNADA/ % KANNADA/
<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;<U0CAA>..<U0CB3>;/ <U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;<U0CAA>..<U0CB3>;/
<U0CB5>..<U0CB9>;<U0CDE>;<U0CE0>..<U0CE1>;/ <U0CB5>..<U0CB9>;<U0CDE>;<U0CE0>..<U0CE1>;/
% MALAYALAM/ % MALAYALAM/
<U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;/ <U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;/
<U0D60>..<U0D61>;/ <U0D3D>;<U0D60>..<U0D63>;/
% SINHALA/ % SINHALA/
<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/ <U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/
<U0DC0>..<U0DC6>;/ <U0DC0>..<U0DC6>;/
@@ -263,9 +274,10 @@ alpha /
<U0EAA>..<U0EAB>;<U0EAD>..<U0EB0>;<U0EB2>..<U0EB3>;<U0EBD>;/ <U0EAA>..<U0EAB>;<U0EAD>..<U0EB0>;<U0EB2>..<U0EB3>;<U0EBD>;/
<U0EC0>..<U0EC4>;<U0EC6>;<U0EDC>..<U0EDD>;/ <U0EC0>..<U0EC4>;<U0EC6>;<U0EDC>..<U0EDD>;/
% TIBETAN/ % TIBETAN/
<U0F00>;<U0F40>..<U0F47>;<U0F49>..<U0F6A>;<U0F88>..<U0F8B>;/ <U0F00>;<U0F40>..<U0F47>;<U0F49>..<U0F6C>;<U0F88>..<U0F8B>;/
% MYANMAR/ % MYANMAR/
<U1000>..<U1021>;<U1023>..<U1027>;<U1029>;<U102A>;<U1050>..<U1055>;/ <U1000>..<U102A>;<U1050>..<U1055>;<U105A>..<U105D>;<U1061>;<U0165>;/
<U1066>;<U106E>..<U1070>;<U1075>..<U1081>;<U108E>;/
% GEORGIAN/ % GEORGIAN/
<U10A0>..<U10C5>;<U10D0>..<U10FA>;<U10FC>;/ <U10A0>..<U10C5>;<U10D0>..<U10FA>;<U10FC>;/
% HANGUL JAMO/ % HANGUL JAMO/
@@ -298,7 +310,7 @@ alpha /
% KHMER/ % KHMER/
<U1780>..<U17B3>;<U17D7>;<U17DC>;/ <U1780>..<U17B3>;<U17D7>;<U17DC>;/
% MONGOLIAN/ % MONGOLIAN/
<U1820>..<U1877>;<U1880>..<U18A8>;/ <U1820>..<U1877>;<U1880>..<U18A8>;<U18AA>;/
% LIMBU/ % LIMBU/
<U1900>..<U191C>;<U1946>..<U194F>;/ <U1900>..<U191C>;<U1946>..<U194F>;/
% TAI LE/ % TAI LE/
@@ -309,10 +321,16 @@ alpha /
<U1A00>..<U1A16>;/ <U1A00>..<U1A16>;/
% BALINESE/ % BALINESE/
<U1B05>..<U1B33>;<U1B45>..<U1B4B>;<U1B50>..<U1B59>;/ <U1B05>..<U1B33>;<U1B45>..<U1B4B>;<U1B50>..<U1B59>;/
% SUNDANESE/
<U1B83>..<U1BA0>;<U1BAE>..<U1BAF>;/
% LEPCHA/
<U1C00>..<U1C23>;<U1C4D>..<U1C4F>;/
% OL CHIKI/
<U1C5A>..<U1C7D>;/
% PHONETIC EXTENSIONS/ % PHONETIC EXTENSIONS/
<U1D00>..<U1DBF>;/ <U1D00>..<U1DBF>;/
% LATIN EXTENDED ADDITIONAL/ % LATIN EXTENDED ADDITIONAL/
<U1E00>..<U1E9B>;<U1EA0>..<U1EF9>;/ <U1E00>..<U1E9F>;<U1EA0>..<U1EFF>;/
% GREEK EXTENDED/ % GREEK EXTENDED/
<U1F00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/ <U1F00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/
<U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;/ <U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;/
@@ -326,13 +344,13 @@ alpha /
<U2126>;<U2128>..<U212D>;<U212F>..<U2139>;/ <U2126>;<U2128>..<U212D>;<U212F>..<U2139>;/
<U213C>..<U213F>;<U2145>..<U2149>;<U214E>;/ <U213C>..<U213F>;<U2145>..<U2149>;<U214E>;/
% NUMBER FORMS/ % NUMBER FORMS/
<U2160>..<U2184>;/ <U2160>..<U2188>;/
% ENCLOSED ALPHANUMERICS/ % ENCLOSED ALPHANUMERICS/
<U249C>..<U24E9>;/ <U249C>..<U24E9>;/
% GLAGOLITIC/ % GLAGOLITIC/
<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/ <U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/
% LATIN EXTENDED-C/ % LATIN EXTENDED-C/
<U2C60>..<U2C6C>;<U2C74>..<U2C77>;/ <U2C60>..<U2C6F>;<U2C71>..<U2C7D>;/
% COPTIC/ % COPTIC/
<U2C80>..<U2CE4>;/ <U2C80>..<U2CE4>;/
% GEORGIAN SUPPLEMENT/ % GEORGIAN SUPPLEMENT/
@@ -350,7 +368,7 @@ alpha /
% KATAKANA/ % KATAKANA/
<U30A1>..<U30FA>;<U30FC>..<U30FF>;/ <U30A1>..<U30FA>;<U30FC>..<U30FF>;/
% BOPOMOFO/ % BOPOMOFO/
<U3105>..<U312C>;/ <U3105>..<U312D>;/
% HANGUL COMPATIBILITY JAMO/ % HANGUL COMPATIBILITY JAMO/
<U3131>..<U318E>;/ <U3131>..<U318E>;/
% BOPOMOFO EXTENDED/ % BOPOMOFO EXTENDED/
@@ -363,12 +381,24 @@ alpha /
<U4E00>..<U9FBB>;/ <U4E00>..<U9FBB>;/
% YI SYLLABLES/ % YI SYLLABLES/
<UA000>..<UA48C>;/ <UA000>..<UA48C>;/
% VAI SYLLABLES/
<UA500>..<UA60B>;<UA610>..<UA61F>;<UA62A>..<UA62B>;/
% CYRILLIC SUPPLEMENT 2/
<UA640>..<UA65F>;<UA662>..<UA66E>;<UA680>..<UA697>;/
% LATIN EXTENDED-D/ % LATIN EXTENDED-D/
<UA717>..<UA71A>;/ <UA717>..<UA71F>;<UA722>..<UA78C>;<UA7FB>..<UA7FF>;/
% SYLOTI NEGRI/ % SYLOTI NEGRI/
<UA800>;<UA801>;<UA803>..<UA805>;<UA807>..<UA80A>;<UA80C>..<UA822>;/ <UA800>;<UA801>;<UA803>..<UA805>;<UA807>..<UA80A>;<UA80C>..<UA822>;/
% PHAGS PA/ % PHAGS PA/
<UA840>..<UA873>;/ <UA840>..<UA873>;/
% SAURASHTRA/
<UA882>..<UA8B3>;/
% KAYAH LI/
<UA90A>..<UA92D>;/
% REJANG/
<UA930>..<UA946>;/
% CHAM/
<UAA00>..<UAA28>;<UAA40>..<UAA42>;<UAA44>..<UAA4B>;/
% HANGUL SYLLABLES/ % HANGUL SYLLABLES/
<UAC00>..<UD7A3>;/ <UAC00>..<UD7A3>;/
% CJK COMPATIBILITY IDEOGRAPHS/ % CJK COMPATIBILITY IDEOGRAPHS/
@@ -394,6 +424,10 @@ alpha /
<U00010080>..<U000100FA>;/ <U00010080>..<U000100FA>;/
% ANCIENT GREEK NUMBERS/ % ANCIENT GREEK NUMBERS/
<U00010140>..<U00010174>;/ <U00010140>..<U00010174>;/
% LYCIAN/
<U00010280>..<U0001029C>;/
% CARIAN/
<U000102A0>..<U000102D0>;/
% OLD ITALIC/ % OLD ITALIC/
<U00010300>..<U0001031E>;/ <U00010300>..<U0001031E>;/
% GOTHIC/ % GOTHIC/
@@ -458,11 +492,11 @@ alpha /
% TAMIL/ % TAMIL/
<U0BE6>..<U0BEF>;/ <U0BE6>..<U0BEF>;/
% TELUGU/ % TELUGU/
<U0C66>..<U0C6F>;/ <U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/
% KANNADA/ % KANNADA/
<U0CE6>..<U0CEF>;/ <U0CE6>..<U0CEF>;/
% MALAYALAM/ % MALAYALAM/
<U0D66>..<U0D6F>;/ <U0D66>..<U0D75>;<U0D79>..<U0D7F>;/
% THAI/ % THAI/
<U0E50>..<U0E59>;/ <U0E50>..<U0E59>;/
% LAO/ % LAO/
@@ -475,6 +509,20 @@ alpha /
<U17E0>..<U17E9>;/ <U17E0>..<U17E9>;/
% MONGOLIAN/ % MONGOLIAN/
<U1810>..<U1819>;/ <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/ % HALFWIDTH AND FULLWIDTH FORMS/
<UFF10>..<UFF19> <UFF10>..<UFF19>
@@ -514,57 +562,67 @@ punct /
<U02EF>..<U0344>;<U0346>..<U036F>;<U0374>..<U0375>;<U037E>;/ <U02EF>..<U0344>;<U0346>..<U036F>;<U0374>..<U0375>;<U037E>;/
<U0384>..<U0385>;<U0387>;<U03F6>;<U0482>..<U0486>;<U0488>..<U0489>;/ <U0384>..<U0385>;<U0387>;<U03F6>;<U0482>..<U0486>;<U0488>..<U0489>;/
<U055A>..<U055F>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05F3>..<U05F4>;/ <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>;/ <U064B>..<U065E>;<U066A>..<U066D>;<U0670>;<U06D4>;<U06D6>..<U06E4>;/
<U06E7>..<U06ED>;<U06FD>..<U06FE>;<U0700>..<U070D>;<U070F>;<U0711>;/ <U06E7>..<U06ED>;<U06FD>..<U06FE>;<U0700>..<U070D>;<U070F>;<U0711>;/
<U0730>..<U074A>;<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U07F6>..<U07F9>;/ <U0730>..<U074A>;<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U07F6>..<U07F9>;/
<U0901>..<U0903>;<U093C>;<U093E>..<U094D>;<U0951>..<U0954>;/ <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>;/ <U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/
<U09F2>..<U09FA>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/ <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>;/ <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>;/ <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>;/ <U0BF0>..<U0BFA>;<U0C01>..<U0C03>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBC>;/ <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBC>;/
<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;/ <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>;/ <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D82>..<U0D83>;<U0DCA>;/
<U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E2F>;/ <U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E2F>;/
<U0E3F>;<U0E46>;<U0E4F>;<U0E5A>..<U0E5B>;<U0EB1>;<U0EB4>..<U0EB9>;/ <U0E3F>;<U0E46>;<U0E4F>;<U0E5A>..<U0E5B>;<U0EB1>;<U0EB4>..<U0EB9>;/
<U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F01>..<U0F1F>;<U0F2A>..<U0F3F>;/ <U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F01>..<U0F1F>;<U0F2A>..<U0F3F>;/
<U0F71>..<U0F87>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;/ <U0F71>..<U0F87>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;/
<U0FCF>..<U0FD1>;<U102C>..<U1032>;<U1036>..<U1039>;<U104A>..<U104F>;/ <U0FCE>..<U0FD4>;<U102B>..<U103F>;<U104A>..<U104F>;<U1056>..<U1059>;/
<U1056>..<U1059>;<U10FB>;<U135F>..<U137C>;<U1390>..<U1399>;/ <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>;/ <U166D>..<U166E>;<U169B>..<U169C>;<U16EB>..<U16ED>;<U1712>..<U1714>;/
<U1732>..<U1736>;<U1752>..<U1753>;<U1772>..<U1773>;<U17B4>..<U17D6>;/ <U1732>..<U1736>;<U1752>..<U1753>;<U1772>..<U1773>;<U17B4>..<U17D6>;/
<U17D8>..<U17DB>;<U17DD>;<U17F0>..<U17F9>;<U1800>..<U180D>;<U18A9>;/ <U17D8>..<U17DB>;<U17DD>;<U17F0>..<U17F9>;<U1800>..<U180D>;<U18A9>;/
<U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U1945>;/ <U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U1945>;/
<U19B0>..<U19C0>;<U19C8>..<U19C9>;<U19DE>..<U19FF>;<U1A17>..<U1A1B>;/ <U19B0>..<U19C0>;<U19C8>..<U19C9>;<U19DE>..<U19FF>;<U1A17>..<U1A1B>;/
<U1A1E>..<U1A1F>;<U1B00>..<U1B04>;<U1B34>..<U1B44>;<U1B5A>..<U1B7C>;/ <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>;/ <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>;/ <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>;/ <U2114>;<U2116>..<U2118>;<U211E>..<U2123>;<U2125>;<U2127>;<U212E>;/
<U213A>..<U213B>;<U2140>..<U2144>;<U214A>..<U214D>;<U2153>..<U215F>;/ <U213A>..<U213B>;<U2140>..<U2144>;<U214A>..<U214D>;<U2153>..<U215F>;/
<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U249B>;/ <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>;/ <U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/
<U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/ <U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/
<U27C0>..<U27CA>;<U27D0>..<U27EB>;<U27F0>..<U2B1A>;<U2B20>..<U2B23>;/ <U27C0>..<U27CA>;<U27CC>;<U27D0>..<U27EF>;<U27F0>..<U2B4C>;/
<U2CE5>..<U2CEA>;<U2CF9>..<U2CFF>;<U2E00>..<U2E17>;<U2E1C>..<U2E1D>;/ <U2B50>..<U2B54>;<U2DE0>..<U2DFF>;/
<U2CE5>..<U2CEA>;<U2CF9>..<U2CFF>;<U2E00>..<U2E30>;/
<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;/ <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;/
<U3001>..<U3004>;<U3008>..<U3020>;<U302A>..<U3030>;<U3036>..<U3037>;/ <U3001>..<U3004>;<U3008>..<U3020>;<U302A>..<U3030>;<U3036>..<U3037>;/
<U303D>..<U303F>;<U3099>..<U309C>;<U30A0>;<U30FB>;<U3190>..<U319F>;/ <U303D>..<U303F>;<U3099>..<U309C>;<U30A0>;<U30FB>;<U3190>..<U319F>;/
<U31C0>..<U31CF>;<U3200>..<U321E>;<U3220>..<U3243>;<U3250>..<U32FE>;/ <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>;/ <UA720>..<UA721>;<UA802>;<UA806>;<UA80B>;<UA823>..<UA82B>;/
<UA874>..<UA877>;<UE000>..<UF8FF>;<UFB1E>;<UFB29>;<UFD3E>..<UFD3F>;/ <UA874>..<UA877>;<UA880>;<UA881>;<UA8B4>..<UA8C4>;<UA8CE>..<UA8CF>;/
<UFDFC>..<UFDFD>;<UFE00>..<UFE19>;<UFE20>..<UFE23>;<UFE30>..<UFE52>;/ <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>;/ <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFEFF>;<UFF01>..<UFF0F>;/
<UFF1A>..<UFF20>;<UFF3B>..<UFF40>;<UFF5B>..<UFF65>;<UFFE0>..<UFFE6>;/ <UFF1A>..<UFF20>;<UFF3B>..<UFF40>;<UFF5B>..<UFF65>;<UFFE0>..<UFFE6>;/
<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;<U00010100>..<U00010102>;/ <UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;<U00010100>..<U00010102>;/
@@ -575,7 +633,7 @@ punct /
<U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;/ <U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;/
<U00010A3F>..<U00010A47>;<U00010A50>..<U00010A58>;/ <U00010A3F>..<U00010A47>;<U00010A50>..<U00010A58>;/
<U00012470>..<U00012473>;<U0001D000>..<U0001D0F5>;/ <U00012470>..<U00012473>;<U0001D000>..<U0001D0F5>;/
<U0001D100>..<U0001D126>;<U0001D12A>..<U0001D1DD>;/ <U0001D100>..<U0001D126>;<U0001D129>..<U0001D1DD>;/
<U0001D200>..<U0001D245>;<U0001D300>..<U0001D356>;/ <U0001D200>..<U0001D245>;<U0001D300>..<U0001D356>;/
<U0001D360>..<U0001D371>;<U0001D6C1>;<U0001D6DB>;<U0001D6FB>;<U0001D715>;/ <U0001D360>..<U0001D371>;<U0001D6C1>;<U0001D6DB>;<U0001D6FB>;<U0001D715>;/
<U0001D735>;<U0001D74F>;<U0001D76F>;<U0001D789>;<U0001D7A9>;<U0001D7C3>;/ <U0001D735>;<U0001D74F>;<U0001D76F>;<U0001D789>;<U0001D7A9>;<U0001D7C3>;/
@@ -583,52 +641,55 @@ punct /
<U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD> <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
graph / graph /
<U0021>..<U007E>;<U00A0>..<U036F>;<U0374>..<U0375>;<U037A>..<U037E>;/ <U0021>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037E>;/
<U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U03CE>;/ <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U0486>;/
<U03D0>..<U0486>;<U0488>..<U0513>;<U0531>..<U0556>;<U0559>..<U055F>;/ <U0488>..<U0523>;<U0531>..<U0556>;<U0559>..<U055F>;/
<U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/ <U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/
<U05F0>..<U05F4>;<U0600>..<U0603>;<U060B>..<U0615>;<U061B>;/ <U05F0>..<U05F4>;<U0600>..<U0603>;<U0606>..<U061B>;/
<U061E>..<U061F>;<U0621>..<U063A>;<U0640>..<U065E>;<U0660>..<U070D>;/ <U061E>..<U061F>;<U0621>..<U065E>;<U0660>..<U070D>;/
<U070F>..<U074A>;<U074D>..<U076D>;<U0780>..<U07B1>;<U07C0>..<U07FA>;/ <U070F>..<U074A>;<U074D>..<U07B1>;<U07C0>..<U07FA>;/
<U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;/ <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0972>;/
<U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/ <U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/
<U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/ <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/
<U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/ <U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/
<U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/ <U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/
<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/ <U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/
<U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/ <U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/
<U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;/ <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;/
<U0A5E>;<U0A66>..<U0A74>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/ <U0A59>..<U0A5C>;/
<U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
<U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/ <U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/
<U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/ <U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
<U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/ <U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/
<U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/ <U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
<U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B43>;<U0B47>..<U0B48>;/ <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B44>;<U0B47>..<U0B48>;/
<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;/ <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B63>;/
<U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/ <U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/
<U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/ <U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/
<U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;<U0BAE>..<U0BB9>;<U0BBE>..<U0BC2>;/ <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>;/ <U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/
<U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/ <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3D>..<U0C44>;<U0C46>..<U0C48>;/
<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;/ <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
<U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/
<U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/ <U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/
<U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/ <U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/
<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/ <U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/
<U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/ <U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/
<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3E>..<U0D43>;/ <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3D>..<U0D44>;/
<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D61>;/ <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D63>;/
<U0D66>..<U0D6F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;/ <U0D66>..<U0D75>;<U0D79>..<U0D7F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;/
<U0D9A>..<U0DB1>;/
<U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/ <U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/
<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/ <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/
<U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/ <U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/
<U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/ <U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/
<U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/ <U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/
<U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/ <U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/
<U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6A>;<U0F71>..<U0F8B>;/ <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6C>;<U0F71>..<U0F8B>;/
<U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCF>..<U0FD1>;/ <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCE>..<U0FD4>;/
<U1000>..<U1021>;<U1023>..<U1027>;<U1029>..<U102A>;<U102C>..<U1032>;/ <U1000>..<U102A>;<U102B>..<U103F>;<U1040>..<U1099>;<U109E>;<U109F>;/
<U1036>..<U1039>;<U1040>..<U1059>;<U10A0>..<U10C5>;<U10D0>..<U10FC>;/ <U10A0>..<U10C5>;<U10D0>..<U10FC>;/
<U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/ <U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/
<U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/ <U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/
<U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/ <U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/
@@ -638,37 +699,43 @@ graph /
<U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/ <U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/
<U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/ <U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/
<U1780>..<U17DD>;<U17E0>..<U17E9>;<U17F0>..<U17F9>;<U1800>..<U180D>;/ <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>;/ <U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;/
<U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/ <U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/
<U19DE>..<U1A1B>;<U1A1E>..<U1A1F>;<U1B00>..<U1B4B>;<U1B50>..<U1B7C>;/ <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>;/ <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/ <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
<U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/ <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
<U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2007>;<U200B>..<U2027>;/ <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2007>;<U200B>..<U2027>;/
<U202A>..<U205E>;<U2060>..<U2063>;<U206A>..<U2071>;<U2074>..<U208E>;/ <U202A>..<U205E>;<U2060>..<U2064>;<U206A>..<U2071>;<U2074>..<U208E>;/
<U2090>..<U2094>;<U20A0>..<U20B5>;<U20D0>..<U20EF>;<U2100>..<U214E>;/ <U2090>..<U2094>;<U20A0>..<U20B5>;<U20D0>..<U20F0>;<U2100>..<U214F>;/
<U2153>..<U2184>;<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;/ <U2153>..<U2188>;<U2190>..<U23E7>;<U2400>..<U2426>;<U2440>..<U244A>;/
<U2460>..<U269C>;<U26A0>..<U26B2>;<U2701>..<U2704>;<U2706>..<U2709>;/ <U2460>..<U269D>;<U26A0>..<U26C3>;<U2701>..<U2704>;<U2706>..<U2709>;/
<U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/ <U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/
<U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/ <U2758>..<U275E>;<U2761>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/
<U27C0>..<U27CA>;<U27D0>..<U27EB>;<U27F0>..<U2B1A>;<U2B20>..<U2B23>;/ <U27C0>..<U27CA>;<U27CC>;<U27D0>..<U27EF>;<U27F0>..<U2B4C>;/
<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;<U2C60>..<U2C6C>;<U2C74>..<U2C77>;/ <U2B50>..<U2B54>;/
<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;<U2C60>..<U2C6F>;<U2C71>..<U2C7D>;/
<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;<U2D30>..<U2D65>;<U2D6F>;/ <U2C80>..<U2CEA>;<U2CF9>..<U2D25>;<U2D30>..<U2D65>;<U2D6F>;/
<U2D80>..<U2D96>;<U2DA0>..<U2DA6>;<U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;/ <U2D80>..<U2D96>;<U2DA0>..<U2DA6>;<U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;/
<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;<U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;/ <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>;/ <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>;/ <U3190>..<U31B7>;<U31C0>..<U31CF>;<U31F0>..<U321E>;<U3220>..<U3243>;/
<U3250>..<U32FE>;<U3300>..<U4DB5>;<U4DC0>..<U9FBB>;<UA000>..<UA48C>;/ <U3250>..<U32FE>;<U3300>..<U4DB5>;<U4DC0>..<U9FBB>;<UA000>..<UA48C>;/
<UA490>..<UA4C6>;<UA700>..<UA71A>;<UA720>..<UA721>;<UA800>..<UA82B>;/ <UA490>..<UA4C6>;<UA500>..<UA62B>;<UA640>..<UA65F>;<UA662>..<UA673>;/
<UA840>..<UA877>;<UAC00>..<UD7A3>;<UE000>..<UFA2D>;<UFA30>..<UFA6A>;/ <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>;/ <UFA70>..<UFAD9>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;<UFB1D>..<UFB36>;/
<UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;<UFB43>..<UFB44>;/ <UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;<UFB43>..<UFB44>;/
<UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;<UFD50>..<UFD8F>;<UFD92>..<UFDC7>;/ <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>;/ <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE74>;<UFE76>..<UFEFC>;/
<UFEFF>;<UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/ <UFEFF>;<UFF01>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/
<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/ <UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/
@@ -677,6 +744,8 @@ graph /
<U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/ <U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
<U00010080>..<U000100FA>;<U00010100>..<U00010102>;/ <U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
<U00010107>..<U00010133>;<U00010137>..<U0001018A>;/ <U00010107>..<U00010133>;<U00010137>..<U0001018A>;/
<U00010190>..<U0001019B>;<U000101D0>..<U000101FD>;/
<U00010280>..<U0001029C>;<U000102A0>..<U000102D0>;/
<U00010300>..<U0001031E>;<U00010320>..<U00010323>;/ <U00010300>..<U0001031E>;<U00010320>..<U00010323>;/
<U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/ <U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/
<U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/ <U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/
@@ -690,7 +759,7 @@ graph /
<U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/ <U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/
<U00012400>..<U00012462>;<U00012470>..<U00012473>;/ <U00012400>..<U00012462>;<U00012470>..<U00012473>;/
<U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/ <U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
<U0001D12A>..<U0001D1DD>;<U0001D200>..<U0001D245>;/ <U0001D129>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
<U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/ <U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/
<U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/ <U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/
<U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/ <U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/
@@ -701,57 +770,61 @@ graph /
<U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/ <U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/
<U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/ <U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/
<U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/ <U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/
<U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/
<U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/ <U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/
<U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/ <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
<U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD> <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
print / print /
<U0020>..<U007E>;<U00A0>..<U036F>;<U0374>..<U0375>;<U037A>..<U037E>;/ <U0020>..<U007E>;<U00A0>..<U0377>;<U037A>..<U037E>;/
<U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U03CE>;/ <U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U0486>;/
<U03D0>..<U0486>;<U0488>..<U0513>;<U0531>..<U0556>;<U0559>..<U055F>;/ <U0488>..<U0523>;<U0531>..<U0556>;<U0559>..<U055F>;/
<U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/ <U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05C7>;<U05D0>..<U05EA>;/
<U05F0>..<U05F4>;<U0600>..<U0603>;<U060B>..<U0615>;<U061B>;/ <U05F0>..<U05F4>;<U0600>..<U0603>;<U0606>..<U061B>;/
<U061E>..<U061F>;<U0621>..<U063A>;<U0640>..<U065E>;<U0660>..<U070D>;/ <U061E>..<U061F>;<U0621>..<U065E>;<U0660>..<U070D>;/
<U070F>..<U074A>;<U074D>..<U076D>;<U0780>..<U07B1>;<U07C0>..<U07FA>;/ <U070F>..<U074A>;<U074D>..<U07B1>;<U07C0>..<U07FA>;/
<U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;/ <U0901>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0972>;/
<U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/ <U097B>..<U097F>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/
<U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/ <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/
<U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/ <U09BC>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CE>;<U09D7>;/
<U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/ <U09DC>..<U09DD>;<U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A01>..<U0A03>;/
<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/ <U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/
<U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/ <U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;<U0A3C>;/
<U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;/ <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A51>;/
<U0A5E>;<U0A66>..<U0A74>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/ <U0A59>..<U0A5C>;/
<U0A5E>;<U0A66>..<U0A75>;<U0A81>..<U0A83>;<U0A85>..<U0A8D>;/
<U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/ <U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;/
<U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/ <U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;/
<U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/ <U0AD0>;<U0AE0>..<U0AE3>;<U0AE6>..<U0AEF>;<U0AF1>;<U0B01>..<U0B03>;/
<U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/ <U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
<U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B43>;<U0B47>..<U0B48>;/ <U0B32>..<U0B33>;<U0B35>..<U0B39>;<U0B3C>..<U0B44>;<U0B47>..<U0B48>;/
<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;/ <U0B4B>..<U0B4D>;<U0B56>..<U0B57>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B63>;/
<U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/ <U0B66>..<U0B71>;<U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/
<U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/ <U0B92>..<U0B95>;<U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;/
<U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;<U0BAE>..<U0BB9>;<U0BBE>..<U0BC2>;/ <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>;/ <U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/
<U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/ <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3D>..<U0C44>;<U0C46>..<U0C48>;/
<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;/ <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C58>..<U0C59>;<U0C60>..<U0C63>;/
<U0C66>..<U0C6F>;<U0C78>..<U0C7F>;/
<U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/ <U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/
<U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/ <U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBC>..<U0CC4>;<U0CC6>..<U0CC8>;/
<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/ <U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE3>;/
<U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/ <U0CE6>..<U0CEF>;<U0CF1>..<U0CF2>;<U0D02>..<U0D03>;<U0D05>..<U0D0C>;/
<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3E>..<U0D43>;/ <U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;<U0D3D>..<U0D44>;/
<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D61>;/ <U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>..<U0D63>;/
<U0D66>..<U0D6F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;<U0D9A>..<U0DB1>;/ <U0D66>..<U0D75>;<U0D79>..<U0D7F>;<U0D82>..<U0D83>;<U0D85>..<U0D96>;/
<U0D9A>..<U0DB1>;/
<U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/ <U0DB3>..<U0DBB>;<U0DBD>;<U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;/
<U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/ <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;/
<U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/ <U0E3F>..<U0E5B>;<U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;/
<U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/ <U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;/
<U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/ <U0EA7>;<U0EAA>..<U0EAB>;<U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;/
<U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/ <U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/
<U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6A>;<U0F71>..<U0F8B>;/ <U0EDC>..<U0EDD>;<U0F00>..<U0F47>;<U0F49>..<U0F6C>;<U0F71>..<U0F8B>;/
<U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCF>..<U0FD1>;/ <U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;<U0FCE>..<U0FD4>;/
<U1000>..<U1021>;<U1023>..<U1027>;<U1029>..<U102A>;<U102C>..<U1032>;/ <U1000>..<U102A>;<U102B>..<U103F>;<U1040>..<U1099>;<U109E>;<U109F>;/
<U1036>..<U1039>;<U1040>..<U1059>;<U10A0>..<U10C5>;<U10D0>..<U10FC>;/ <U10A0>..<U10C5>;<U10D0>..<U10FC>;/
<U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/ <U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1248>;/
<U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/ <U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/
<U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/ <U1260>..<U1288>;<U128A>..<U128D>;<U1290>..<U12B0>;<U12B2>..<U12B5>;/
@@ -761,37 +834,45 @@ print /
<U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/ <U16A0>..<U16F0>;<U1700>..<U170C>;<U170E>..<U1714>;<U1720>..<U1736>;/
<U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/ <U1740>..<U1753>;<U1760>..<U176C>;<U176E>..<U1770>;<U1772>..<U1773>;/
<U1780>..<U17DD>;<U17E0>..<U17E9>;<U17F0>..<U17F9>;<U1800>..<U180E>;/ <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>;/ <U1920>..<U192B>;<U1930>..<U193B>;<U1940>;<U1944>..<U196D>;/
<U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/ <U1970>..<U1974>;<U1980>..<U19A9>;<U19B0>..<U19C9>;<U19D0>..<U19D9>;/
<U19DE>..<U1A1B>;<U1A1E>..<U1A1F>;<U1B00>..<U1B4B>;<U1B50>..<U1B7C>;/ <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>;/ <U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;/
<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/ <U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
<U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/ <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>;/ <U206A>..<U2071>;<U2074>..<U208E>;<U2090>..<U2094>;<U20A0>..<U20B5>;/
<U20D0>..<U20EF>;<U2100>..<U214E>;<U2153>..<U2184>;<U2190>..<U23E7>;/ <U20D0>..<U20F0>;<U2100>..<U214F>;<U2153>..<U2188>;<U2190>..<U23E7>;/
<U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U269C>;<U26A0>..<U26B2>;/ <U2400>..<U2426>;<U2440>..<U244A>;<U2460>..<U269D>;<U26A0>..<U26C3>;/
<U2701>..<U2704>;<U2706>..<U2709>;<U270C>..<U2727>;<U2729>..<U274B>;/ <U2701>..<U2704>;<U2706>..<U2709>;<U270C>..<U2727>;<U2729>..<U274B>;/
<U274D>;<U274F>..<U2752>;<U2756>;<U2758>..<U275E>;<U2761>..<U2794>;/ <U274D>;<U274F>..<U2752>;<U2756>;<U2758>..<U275E>;<U2761>..<U2794>;/
<U2798>..<U27AF>;<U27B1>..<U27BE>;<U27C0>..<U27CA>;<U27D0>..<U27EB>;/ <U2798>..<U27AF>;<U27B1>..<U27BE>;<U27C0>..<U27CA>;<U27CC>;/
<U27F0>..<U2B1A>;<U2B20>..<U2B23>;<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/ <U27D0>..<U27EF>;/
<U2C60>..<U2C6C>;<U2C74>..<U2C77>;<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;/ <U27F0>..<U2B4C>;<U2B50>..<U2B54>;<U2C00>..<U2C2E>;<U2C30>..<U2C5E>;/
<U2C60>..<U2C6F>;<U2C71>..<U2C7D>;<U2C80>..<U2CEA>;<U2CF9>..<U2D25>;/
<U2D30>..<U2D65>;<U2D6F>;<U2D80>..<U2D96>;<U2DA0>..<U2DA6>;/ <U2D30>..<U2D65>;<U2D6F>;<U2D80>..<U2D96>;<U2DA0>..<U2DA6>;/
<U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;/ <U2DA8>..<U2DAE>;<U2DB0>..<U2DB6>;<U2DB8>..<U2DBE>;<U2DC0>..<U2DC6>;/
<U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2E00>..<U2E17>;/ <U2DC8>..<U2DCE>;<U2DD0>..<U2DD6>;<U2DD8>..<U2DDE>;<U2DE0>..<U2E30>;/
<U2E1C>..<U2E1D>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/ <U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/
<U2FF0>..<U2FFB>;<U3000>..<U303F>;<U3041>..<U3096>;<U3099>..<U30FF>;/ <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>;/ <U31F0>..<U321E>;<U3220>..<U3243>;<U3250>..<U32FE>;<U3300>..<U4DB5>;/
<U4DC0>..<U9FBB>;<UA000>..<UA48C>;<UA490>..<UA4C6>;<UA700>..<UA71A>;/ <U4DC0>..<U9FBB>;<UA000>..<UA48C>;<UA490>..<UA4C6>;<UA500>..<UA62B>;/
<UA720>..<UA721>;<UA800>..<UA82B>;<UA840>..<UA877>;<UAC00>..<UD7A3>;/ <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>;/ <UE000>..<UFA2D>;<UFA30>..<UFA6A>;<UFA70>..<UFAD9>;<UFB00>..<UFB06>;/
<UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;/ <UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;/
<UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;/ <UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;/
<UFD50>..<UFD8F>;<UFD92>..<UFDC7>;<UFDF0>..<UFDFD>;<UFE00>..<UFE19>;/ <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>;/ <UFE70>..<UFE74>;<UFE76>..<UFEFC>;<UFEFF>;<UFF01>..<UFFBE>;/
<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;/ <UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;/
<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/ <UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>;/
@@ -800,6 +881,8 @@ print /
<U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/ <U0001003F>..<U0001004D>;<U00010050>..<U0001005D>;/
<U00010080>..<U000100FA>;<U00010100>..<U00010102>;/ <U00010080>..<U000100FA>;<U00010100>..<U00010102>;/
<U00010107>..<U00010133>;<U00010137>..<U0001018A>;/ <U00010107>..<U00010133>;<U00010137>..<U0001018A>;/
<U00010190>..<U0001019B>;<U000101D0>..<U000101FD>;/
<U00010280>..<U0001029C>;<U000102A0>..<U000102D0>;/
<U00010300>..<U0001031E>;<U00010320>..<U00010323>;/ <U00010300>..<U0001031E>;<U00010320>..<U00010323>;/
<U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/ <U00010330>..<U0001034A>;<U00010380>..<U0001039D>;/
<U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/ <U0001039F>..<U000103C3>;<U000103C8>..<U000103D5>;/
@@ -813,7 +896,7 @@ print /
<U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/ <U00010A50>..<U00010A58>;<U00012000>..<U0001236E>;/
<U00012400>..<U00012462>;<U00012470>..<U00012473>;/ <U00012400>..<U00012462>;<U00012470>..<U00012473>;/
<U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/ <U0001D000>..<U0001D0F5>;<U0001D100>..<U0001D126>;/
<U0001D12A>..<U0001D1DD>;<U0001D200>..<U0001D245>;/ <U0001D129>..<U0001D1DD>;<U0001D200>..<U0001D245>;/
<U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/ <U0001D300>..<U0001D356>;<U0001D360>..<U0001D371>;/
<U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/ <U0001D400>..<U0001D454>;<U0001D456>..<U0001D49C>;/
<U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/ <U0001D49E>..<U0001D49F>;<U0001D4A2>;<U0001D4A5>..<U0001D4A6>;/
@@ -824,6 +907,7 @@ print /
<U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/ <U0001D53B>..<U0001D53E>;<U0001D540>..<U0001D544>;<U0001D546>;/
<U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/ <U0001D54A>..<U0001D550>;<U0001D552>..<U0001D6A5>;/
<U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/ <U0001D6A8>..<U0001D7CB>;<U0001D7CE>..<U0001D7FF>;/
<U0001F000>..<U0001F02B>;<U0001F030>..<U0001F093>;/
<U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/ <U00020000>..<U0002A6D6>;<U0002F800>..<U0002FA1D>;<U000E0001>;/
<U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/ <U000E0020>..<U000E007F>;<U000E0100>..<U000E01EF>;/
<U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD> <U000F0000>..<U000FFFFD>;<U00100000>..<U0010FFFD>
@@ -844,7 +928,8 @@ toupper /
(<U006D>,<U004D>);(<U006E>,<U004E>);(<U006F>,<U004F>);(<U0070>,<U0050>);/ (<U006D>,<U004D>);(<U006E>,<U004E>);(<U006F>,<U004F>);(<U0070>,<U0050>);/
(<U0071>,<U0051>);(<U0072>,<U0052>);(<U0073>,<U0053>);(<U0074>,<U0054>);/ (<U0071>,<U0051>);(<U0072>,<U0052>);(<U0073>,<U0053>);(<U0074>,<U0054>);/
(<U0075>,<U0055>);(<U0076>,<U0056>);(<U0077>,<U0057>);(<U0078>,<U0058>);/ (<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>);/ (<U00E1>,<U00C1>);(<U00E2>,<U00C2>);(<U00E3>,<U00C3>);(<U00E4>,<U00C4>);/
(<U00E5>,<U00C5>);(<U00E6>,<U00C6>);(<U00E7>,<U00C7>);(<U00E8>,<U00C8>);/ (<U00E5>,<U00C5>);(<U00E6>,<U00C6>);(<U00E7>,<U00C7>);(<U00E8>,<U00C8>);/
(<U00E9>,<U00C9>);(<U00EA>,<U00CA>);(<U00EB>,<U00CB>);(<U00EC>,<U00CC>);/ (<U00E9>,<U00C9>);(<U00EA>,<U00CA>);(<U00EB>,<U00CB>);(<U00EC>,<U00CC>);/
@@ -889,13 +974,16 @@ toupper /
(<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/ (<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/
(<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);(<U0242>,<U0241>);/ (<U0231>,<U0230>);(<U0233>,<U0232>);(<U023C>,<U023B>);(<U0242>,<U0241>);/
(<U0247>,<U0246>);(<U0249>,<U0248>);(<U024B>,<U024A>);(<U024D>,<U024C>);/ (<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>);/ (<U0257>,<U018A>);(<U0259>,<U018F>);(<U025B>,<U0190>);(<U0260>,<U0193>);/
(<U0263>,<U0194>);(<U0268>,<U0197>);(<U0269>,<U0196>);(<U026B>,<U2C62>);/ (<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>);/ (<U0280>,<U01A6>);(<U0283>,<U01A9>);(<U0288>,<U01AE>);(<U0289>,<U0244>);/
(<U028A>,<U01B1>);(<U028B>,<U01B2>);(<U028C>,<U0245>);(<U0292>,<U01B7>);/ (<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>);/ (<U03AC>,<U0386>);(<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);/
(<U03B1>,<U0391>);(<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);/ (<U03B1>,<U0391>);(<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);/
(<U03B5>,<U0395>);(<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);/ (<U03B5>,<U0395>);(<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);/
@@ -943,7 +1031,9 @@ toupper /
(<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/ (<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/
(<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/ (<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/
(<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);/ (<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>);/ (<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/
(<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/ (<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/
(<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/ (<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/
@@ -983,7 +1073,8 @@ toupper /
(<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);/ (<U1EDF>,<U1EDE>);(<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);/
(<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);/ (<U1EE7>,<U1EE6>);(<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);/
(<U1EEF>,<U1EEE>);(<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);/ (<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>);/ (<U1F02>,<U1F0A>);(<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);/
(<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);/ (<U1F06>,<U1F0E>);(<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);/
(<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);/ (<U1F12>,<U1F1A>);(<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);/
@@ -1032,6 +1123,7 @@ toupper /
(<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);/ (<U2C59>,<U2C29>);(<U2C5A>,<U2C2A>);(<U2C5B>,<U2C2B>);(<U2C5C>,<U2C2C>);/
(<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);(<U2C61>,<U2C60>);(<U2C65>,<U023A>);/ (<U2C5D>,<U2C2D>);(<U2C5E>,<U2C2E>);(<U2C61>,<U2C60>);(<U2C65>,<U023A>);/
(<U2C66>,<U023E>);(<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);/ (<U2C66>,<U023E>);(<U2C68>,<U2C67>);(<U2C6A>,<U2C69>);(<U2C6C>,<U2C6B>);/
(<U2C73>,<U2C72>);/
(<U2C76>,<U2C75>);(<U2C81>,<U2C80>);(<U2C83>,<U2C82>);(<U2C85>,<U2C84>);/ (<U2C76>,<U2C75>);(<U2C81>,<U2C80>);(<U2C83>,<U2C82>);(<U2C85>,<U2C84>);/
(<U2C87>,<U2C86>);(<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);/ (<U2C87>,<U2C86>);(<U2C89>,<U2C88>);(<U2C8B>,<U2C8A>);(<U2C8D>,<U2C8C>);/
(<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);(<U2C93>,<U2C92>);(<U2C95>,<U2C94>);/ (<U2C8F>,<U2C8E>);(<U2C91>,<U2C90>);(<U2C93>,<U2C92>);(<U2C95>,<U2C94>);/
@@ -1139,7 +1231,8 @@ tolower /
(<U0232>,<U0233>);(<U023A>,<U2C65>);(<U023B>,<U023C>);(<U023D>,<U019A>);/ (<U0232>,<U0233>);(<U023A>,<U2C65>);(<U023B>,<U023C>);(<U023D>,<U019A>);/
(<U023E>,<U2C66>);(<U0241>,<U0242>);(<U0243>,<U0180>);(<U0244>,<U0289>);/ (<U023E>,<U2C66>);(<U0241>,<U0242>);(<U0243>,<U0180>);(<U0244>,<U0289>);/
(<U0245>,<U028C>);(<U0246>,<U0247>);(<U0248>,<U0249>);(<U024A>,<U024B>);/ (<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>);/ (<U0389>,<U03AE>);(<U038A>,<U03AF>);(<U038C>,<U03CC>);(<U038E>,<U03CD>);/
(<U038F>,<U03CE>);(<U0391>,<U03B1>);(<U0392>,<U03B2>);(<U0393>,<U03B3>);/ (<U038F>,<U03CE>);(<U0391>,<U03B1>);(<U0392>,<U03B2>);(<U0393>,<U03B3>);/
(<U0394>,<U03B4>);(<U0395>,<U03B5>);(<U0396>,<U03B6>);(<U0397>,<U03B7>);/ (<U0394>,<U03B4>);(<U0395>,<U03B5>);(<U0396>,<U03B6>);(<U0397>,<U03B7>);/
@@ -1186,6 +1279,8 @@ tolower /
(<U04FC>,<U04FD>);(<U04FE>,<U04FF>);(<U0500>,<U0501>);(<U0502>,<U0503>);/ (<U04FC>,<U04FD>);(<U04FE>,<U04FF>);(<U0500>,<U0501>);(<U0502>,<U0503>);/
(<U0504>,<U0505>);(<U0506>,<U0507>);(<U0508>,<U0509>);(<U050A>,<U050B>);/ (<U0504>,<U0505>);(<U0506>,<U0507>);(<U0508>,<U0509>);(<U050A>,<U050B>);/
(<U050C>,<U050D>);(<U050E>,<U050F>);(<U0510>,<U0511>);(<U0512>,<U0513>);/ (<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>);/ (<U0531>,<U0561>);(<U0532>,<U0562>);(<U0533>,<U0563>);(<U0534>,<U0564>);/
(<U0535>,<U0565>);(<U0536>,<U0566>);(<U0537>,<U0567>);(<U0538>,<U0568>);/ (<U0535>,<U0565>);(<U0536>,<U0566>);(<U0537>,<U0567>);(<U0538>,<U0568>);/
(<U0539>,<U0569>);(<U053A>,<U056A>);(<U053B>,<U056B>);(<U053C>,<U056C>);/ (<U0539>,<U0569>);(<U053A>,<U056A>);(<U053B>,<U056B>);(<U053C>,<U056C>);/
@@ -1223,7 +1318,8 @@ tolower /
(<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);(<U1E7E>,<U1E7F>);/ (<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);(<U1E7E>,<U1E7F>);/
(<U1E80>,<U1E81>);(<U1E82>,<U1E83>);(<U1E84>,<U1E85>);(<U1E86>,<U1E87>);/ (<U1E80>,<U1E81>);(<U1E82>,<U1E83>);(<U1E84>,<U1E85>);(<U1E86>,<U1E87>);/
(<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);(<U1E8C>,<U1E8D>);(<U1E8E>,<U1E8F>);/ (<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>);/ (<U1EA2>,<U1EA3>);(<U1EA4>,<U1EA5>);(<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);/
(<U1EAA>,<U1EAB>);(<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);/ (<U1EAA>,<U1EAB>);(<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);/
(<U1EB2>,<U1EB3>);(<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);/ (<U1EB2>,<U1EB3>);(<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);/
@@ -1235,6 +1331,7 @@ tolower /
(<U1EE2>,<U1EE3>);(<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);/ (<U1EE2>,<U1EE3>);(<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);/
(<U1EEA>,<U1EEB>);(<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);/ (<U1EEA>,<U1EEB>);(<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);/
(<U1EF2>,<U1EF3>);(<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);/ (<U1EF2>,<U1EF3>);(<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);/
(<U1EFA>,<U1EFB>);(<U1EFC>,<U1EFD>);(<U1EFE>,<U1EFF>);/
(<U1F08>,<U1F00>);(<U1F09>,<U1F01>);(<U1F0A>,<U1F02>);(<U1F0B>,<U1F03>);/ (<U1F08>,<U1F00>);(<U1F09>,<U1F01>);(<U1F0A>,<U1F02>);(<U1F0B>,<U1F03>);/
(<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);(<U1F0E>,<U1F06>);(<U1F0F>,<U1F07>);/ (<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);(<U1F0E>,<U1F06>);(<U1F0F>,<U1F07>);/
(<U1F18>,<U1F10>);(<U1F19>,<U1F11>);(<U1F1A>,<U1F12>);(<U1F1B>,<U1F13>);/ (<U1F18>,<U1F10>);(<U1F19>,<U1F11>);(<U1F1A>,<U1F12>);(<U1F1B>,<U1F13>);/
@@ -1284,7 +1381,8 @@ tolower /
(<U2C29>,<U2C59>);(<U2C2A>,<U2C5A>);(<U2C2B>,<U2C5B>);(<U2C2C>,<U2C5C>);/ (<U2C29>,<U2C59>);(<U2C2A>,<U2C5A>);(<U2C2B>,<U2C5B>);(<U2C2C>,<U2C5C>);/
(<U2C2D>,<U2C5D>);(<U2C2E>,<U2C5E>);(<U2C60>,<U2C61>);(<U2C62>,<U026B>);/ (<U2C2D>,<U2C5D>);(<U2C2E>,<U2C5E>);(<U2C60>,<U2C61>);(<U2C62>,<U026B>);/
(<U2C63>,<U1D7D>);(<U2C64>,<U027D>);(<U2C67>,<U2C68>);(<U2C69>,<U2C6A>);/ (<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>);/ (<U2C84>,<U2C85>);(<U2C86>,<U2C87>);(<U2C88>,<U2C89>);(<U2C8A>,<U2C8B>);/
(<U2C8C>,<U2C8D>);(<U2C8E>,<U2C8F>);(<U2C90>,<U2C91>);(<U2C92>,<U2C93>);/ (<U2C8C>,<U2C8D>);(<U2C8E>,<U2C8F>);(<U2C90>,<U2C91>);(<U2C92>,<U2C93>);/
(<U2C94>,<U2C95>);(<U2C96>,<U2C97>);(<U2C98>,<U2C99>);(<U2C9A>,<U2C9B>);/ (<U2C94>,<U2C95>);(<U2C96>,<U2C97>);(<U2C98>,<U2C99>);(<U2C9A>,<U2C9B>);/
@@ -1431,7 +1529,9 @@ map "totitle"; /
(<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/ (<U04F9>,<U04F8>);(<U04FB>,<U04FA>);(<U04FD>,<U04FC>);(<U04FF>,<U04FE>);/
(<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/ (<U0501>,<U0500>);(<U0503>,<U0502>);(<U0505>,<U0504>);(<U0507>,<U0506>);/
(<U0509>,<U0508>);(<U050B>,<U050A>);(<U050D>,<U050C>);(<U050F>,<U050E>);/ (<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>);/ (<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/
(<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/ (<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/
(<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/ (<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/
@@ -1574,35 +1674,40 @@ map "totitle"; /
% That is, all combining characters (level 2+3). % That is, all combining characters (level 2+3).
class "combining"; / class "combining"; /
<U0300>..<U036F>;<U0483>..<U0486>;<U0488>..<U0489>;<U0591>..<U05BD>;/ <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>;/ <U064B>..<U065E>;<U0670>;<U06D6>..<U06DC>;<U06DE>..<U06E4>;/
<U06E7>..<U06E8>;<U06EA>..<U06ED>;<U0711>;<U0730>..<U074A>;/ <U06E7>..<U06E8>;<U06EA>..<U06ED>;<U0711>;<U0730>..<U074A>;/
<U07A6>..<U07B0>;<U07EB>..<U07F3>;<U0901>..<U0903>;<U093C>;/ <U07A6>..<U07B0>;<U07EB>..<U07F3>;<U0901>..<U0903>;<U093C>;/
<U093E>..<U094D>;<U0951>..<U0954>;<U0962>..<U0963>;<U0981>..<U0983>;/ <U093E>..<U094D>;<U0951>..<U0954>;<U0962>..<U0963>;<U0981>..<U0983>;/
<U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;/ <U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;/
<U09E2>..<U09E3>;<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;/ <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>;/ <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>;/ <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>;/ <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>;/ <U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CE2>..<U0CE3>;/
<U0D02>..<U0D03>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/ <U0D02>..<U0D03>;<U0D3E>..<U0D44>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/
<U0D57>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;/ <U0D57>;<U0D62>..<U0D63>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;/
<U0DD8>..<U0DDF>;<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;/ <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;/
<U0E47>..<U0E4E>;<U0EB1>;<U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;/ <U0E47>..<U0E4E>;<U0EB1>;<U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;/
<U0EC8>..<U0ECD>;<U0F18>..<U0F19>;<U0F35>;<U0F37>;<U0F39>;/ <U0EC8>..<U0ECD>;<U0F18>..<U0F19>;<U0F35>;<U0F37>;<U0F39>;/
<U0F3E>..<U0F3F>;<U0F71>..<U0F84>;<U0F86>..<U0F87>;<U0F90>..<U0F97>;/ <U0F3E>..<U0F3F>;<U0F71>..<U0F84>;<U0F86>..<U0F87>;<U0F90>..<U0F97>;/
<U0F99>..<U0FBC>;<U0FC6>;<U102C>..<U1032>;<U1036>..<U1039>;/ <U0F99>..<U0FBC>;<U0FC6>;<U102B>..<U103F>;/
<U1056>..<U1059>;<U135F>;<U1712>..<U1714>;<U1732>..<U1734>;/ <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>;/ <U1752>..<U1753>;<U1772>..<U1773>;<U17B6>..<U17D3>;<U17DD>;/
<U180B>..<U180D>;<U18A9>;<U1920>..<U192B>;<U1930>..<U193B>;/ <U180B>..<U180D>;<U18A9>;<U1920>..<U192B>;<U1930>..<U193B>;/
<U19B0>..<U19C0>;<U19C8>..<U19C9>;<U1A17>..<U1A1B>;<U1B00>..<U1B04>;/ <U19B0>..<U19C0>;<U19C8>..<U19C9>;<U1A17>..<U1A1B>;<U1B00>..<U1B04>;/
<U1B34>..<U1B44>;<U1B6B>..<U1B73>;<U1DC0>..<U1DCA>;<U1DFE>..<U1DFF>;/ <U1B34>..<U1B44>;<U1B6B>..<U1B73>;<U1DC0>..<U1DE6>;<U1DFE>..<U1DFF>;/
<U20D0>..<U20EF>;<U302A>..<U302F>;<U3099>..<U309A>;<UA802>;<UA806>;/ <U20D0>..<U20F0>;<U2DE0>..<U2DFF>;<U302A>..<U302F>;<U3099>..<U309A>;/
<UA80B>;<UA823>..<UA827>;<UFB1E>;<UFE00>..<UFE0F>;<UFE20>..<UFE23>;/ <UA66F>..<UA672>;<UA67C>;<UA67D>;<UA802>;<UA806>;/
<UA80B>;<UA823>..<UA827>;<UFB1E>;<UFE00>..<UFE0F>;<UFE20>..<UFE26>;/
<U00010A01>..<U00010A03>;<U00010A05>..<U00010A06>;/ <U00010A01>..<U00010A03>;<U00010A05>..<U00010A06>;/
<U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;<U00010A3F>;/ <U00010A0C>..<U00010A0F>;<U00010A38>..<U00010A3A>;<U00010A3F>;/
<U0001D165>..<U0001D169>;<U0001D16D>..<U0001D172>;/ <U0001D165>..<U0001D169>;<U0001D16D>..<U0001D172>;/
@@ -1619,20 +1724,25 @@ class "combining_level3"; /
<U0962>..<U0963>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/ <U0962>..<U0963>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/
<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/ <U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;/
<U0A01>..<U0A03>;<U0A3C>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;/ <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>;/ <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>;/ <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>;/ <U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;/
<U0C62>..<U0C63>;/
<U0C82>..<U0C83>;<U0CBC>;<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;/ <U0C82>..<U0C83>;<U0CBC>;<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;/
<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0CE2>..<U0CE3>;<U0D02>..<U0D03>;/ <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>;/ <U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;/
<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;<U0E47>..<U0E4E>;<U0EB1>;/ <U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;<U0E47>..<U0E4E>;<U0EB1>;/
<U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F3E>..<U0F3F>;/ <U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F3E>..<U0F3F>;/
<U0F71>..<U0F81>;<U0F84>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;/ <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>;/ <U1732>..<U1734>;<U1752>..<U1753>;<U1772>..<U1773>;<U17B6>..<U17D3>;/
<U180B>..<U180D>;<U1920>..<U192B>;<U1930>..<U1938>;<U19B0>..<U19C0>;/ <U180B>..<U180D>;<U1920>..<U192B>;<U1930>..<U1938>;<U19B0>..<U19C0>;/
<U19C8>..<U19C9>;<U1A19>..<U1A1B>;<U1B00>..<U1B04>;<U1B34>..<U1B44>;/ <U19C8>..<U19C9>;<U1A19>..<U1A1B>;<U1B00>..<U1B04>;<U1B34>..<U1B44>;/

View 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. # Free Software Foundation, Inc.
# This file is part of the GNU C Library. # 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 nscd-cflags = -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2
ifeq (yesyes,$(have-fpie)$(build-shared)) ifeq (yesyes,$(have-fpie)$(build-shared))
nscd-cflags += -fpie #nscd-cflags += -fpie
nscd-cflags += -fpic
endif endif
ifeq (yes,$(have-ssp)) ifeq (yes,$(have-ssp))
nscd-cflags += -fstack-protector nscd-cflags += -fstack-protector

View File

@@ -1,5 +1,5 @@
/* Cache handling for host lookup. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. 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, dataset = (struct dataset *) mempool_alloc (db,
total total
+ req->key_len); + req->key_len,
IDX_result_data);
if (dataset == NULL) if (dataset == NULL)
++db->head->addfailed; ++db->head->addfailed;
} }
@@ -338,7 +339,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
struct dataset *newp struct dataset *newp
= (struct dataset *) mempool_alloc (db, = (struct dataset *) mempool_alloc (db,
total total
+ req->key_len); + req->key_len,
IDX_result_data);
if (__builtin_expect (newp != NULL, 1)) if (__builtin_expect (newp != NULL, 1))
{ {
/* Adjust pointer into the memory block. */ /* Adjust pointer into the memory block. */
@@ -424,7 +426,8 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
if (fd != -1) if (fd != -1)
TEMP_FAILURE_RETRY (send (fd, &notfound, total, MSG_NOSIGNAL)); 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 we cannot permanently store the result, so be it. */
if (dataset != NULL) if (dataset != NULL)
{ {

View 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. 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; unsigned long int hash = __nis_hash (key, len) % table->head->module;
struct hashentry *newp; 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 we cannot allocate memory, just do not do anything. */
if (newp == NULL) if (newp == NULL)
{ {
++table->head->addfailed; ++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; return -1;
} }
@@ -215,6 +220,10 @@ cache_add (int type, const void *key, size_t len, struct datahead *packet,
else else
next_wakeup = table->wakeup_time; 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; return 0;
} }

View File

@@ -225,6 +225,11 @@ static int sock;
/* Number of times clients had to wait. */ /* Number of times clients had to wait. */
unsigned long int client_queued; 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 ssize_t
writeall (int fd, const void *buf, size_t len) 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. */ /* Handle new request. */
static void 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) 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 (selinux_enabled && nscd_request_avc_has_perm (fd, req->type) != 0)
{ {
if (debug_level > 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; return;
} }
@@ -1426,6 +1455,16 @@ nscd_run_worker (void *p)
{ {
char buf[256]; 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. */ /* Initial locking. */
pthread_mutex_lock (&readylist_lock); pthread_mutex_lock (&readylist_lock);
@@ -1491,6 +1530,8 @@ nscd_run_worker (void *p)
if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) == 0) if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) == 0)
pid = caller.pid; pid = caller.pid;
} }
#else
const pid_t pid = 0;
#endif #endif
/* It should not be possible to crash the nscd with a silly /* 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. */ /* 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: close_and_out:

View File

@@ -1,5 +1,5 @@
/* Cache handling for group lookup. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. 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, written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL)); 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 we cannot permanently store the result, so be it. */
if (dataset != NULL) if (dataset != NULL)
{ {
@@ -204,7 +205,8 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
if (he == NULL) 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) if (dataset == NULL)
++db->head->addfailed; ++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 /* We have to create a new record. Just allocate
appropriate memory and copy it. */ appropriate memory and copy it. */
struct dataset *newp struct dataset *newp
= (struct dataset *) mempool_alloc (db, total + n); = (struct dataset *) mempool_alloc (db, total + n,
IDX_result_data);
if (newp != NULL) if (newp != NULL)
{ {
/* Adjust pointers into the memory block. */ /* Adjust pointers into the memory block. */

View File

@@ -1,5 +1,5 @@
/* Cache handling for host lookup. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. 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, written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL)); 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 we cannot permanently store the result, so be it. */
if (dataset != NULL) 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) if (he == NULL && h_addr_list_cnt == 1)
{ {
dataset = (struct dataset *) mempool_alloc (db, dataset = (struct dataset *) mempool_alloc (db,
total + req->key_len); total + req->key_len,
IDX_result_data);
if (dataset == NULL) if (dataset == NULL)
++db->head->addfailed; ++db->head->addfailed;
} }
@@ -312,7 +314,8 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
appropriate memory and copy it. */ appropriate memory and copy it. */
struct dataset *newp struct dataset *newp
= (struct dataset *) mempool_alloc (db, = (struct dataset *) mempool_alloc (db,
total + req->key_len); total + req->key_len,
IDX_result_data);
if (newp != NULL) if (newp != NULL)
{ {
/* Adjust pointers into the memory block. */ /* Adjust pointers into the memory block. */

View File

@@ -1,5 +1,5 @@
/* Cache handling for host lookup. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. 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, written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL)); 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 we cannot permanently store the result, so be it. */
if (dataset != NULL) if (dataset != NULL)
{ {
@@ -259,7 +260,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
if (he == NULL) if (he == NULL)
{ {
dataset = (struct dataset *) mempool_alloc (db, dataset = (struct dataset *) mempool_alloc (db,
total + req->key_len); total + req->key_len,
IDX_result_data);
if (dataset == NULL) if (dataset == NULL)
++db->head->addfailed; ++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 /* We have to create a new record. Just allocate
appropriate memory and copy it. */ appropriate memory and copy it. */
struct dataset *newp 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) if (newp != NULL)
{ {
/* Adjust pointer into the memory block. */ /* Adjust pointer into the memory block. */

View File

@@ -1,5 +1,5 @@
/* Cache memory handling. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -197,6 +197,31 @@ gc (struct database_dyn *db)
} }
assert (cnt == db->head->nentries); 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 /* Sort the entries by the addresses of the referenced data. All
the entries pointing to the same DATAHEAD object will have the the entries pointing to the same DATAHEAD object will have the
same key. Stability of the sorting is unimportant. */ same key. Stability of the sorting is unimportant. */
@@ -503,7 +528,7 @@ gc (struct database_dyn *db)
void * 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 /* Make sure LEN is a multiple of our maximum alignment so we can
keep track of used memory is multiples of this alignment value. */ 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->head->first_free += len;
db->last_alloc_failed = false; 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); pthread_mutex_unlock (&db->memlock);

View File

@@ -181,6 +181,31 @@ extern uid_t old_uid;
extern gid_t old_gid; 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. */ /* Prototypes for global functions. */
/* nscd.c */ /* nscd.c */
@@ -271,7 +296,8 @@ extern void readdservbyport (struct database_dyn *db, struct hashentry *he,
struct datahead *dh); struct datahead *dh);
/* mem.c */ /* 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); extern void gc (struct database_dyn *db);

View File

@@ -1,5 +1,5 @@
/* Cache handling for passwd lookup. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. 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, written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL)); 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 we cannot permanently store the result, so be it. */
if (dataset != NULL) if (dataset != NULL)
{ {
@@ -199,7 +200,8 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
if (he == NULL) 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) if (dataset == NULL)
++db->head->addfailed; ++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 /* We have to create a new record. Just allocate
appropriate memory and copy it. */ appropriate memory and copy it. */
struct dataset *newp struct dataset *newp
= (struct dataset *) mempool_alloc (db, total + n); = (struct dataset *) mempool_alloc (db, total + n,
IDX_result_data);
if (newp != NULL) if (newp != NULL)
{ {
/* Adjust pointer into the memory block. */ /* Adjust pointer into the memory block. */

View File

@@ -1,5 +1,5 @@
/* Cache handling for services lookup. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@drepper.com>, 2007. 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, written = TEMP_FAILURE_RETRY (send (fd, &notfound, total,
MSG_NOSIGNAL)); 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 we cannot permanently store the result, so be it. */
if (dataset != NULL) if (dataset != NULL)
{ {
@@ -190,7 +191,8 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
if (he == NULL) if (he == NULL)
{ {
dataset = (struct dataset *) mempool_alloc (db, dataset = (struct dataset *) mempool_alloc (db,
total + req->key_len); total + req->key_len,
IDX_result_data);
if (dataset == NULL) if (dataset == NULL)
++db->head->addfailed; ++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 /* We have to create a new record. Just allocate
appropriate memory and copy it. */ appropriate memory and copy it. */
struct dataset *newp 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) if (newp != NULL)
{ {
/* Adjust pointers into the memory block. */ /* Adjust pointers into the memory block. */