python-idna/CVE-2024-3651.patch

2845 lines
53 KiB
Diff

From 0259d17a2384735176621ca053959bd79be6b8d6 Mon Sep 17 00:00:00 2001
From: Lumir Balhar <lbalhar@redhat.com>
Date: Tue, 23 Apr 2024 11:19:25 +0200
Subject: [PATCH] CVE-2024-3651
---
idna/core.py | 16 +-
idna/idnadata.py | 2351 ++++++++++++++++++++++++++++++++++++++++++++--
tools/idna-data | 13 +-
3 files changed, 2291 insertions(+), 89 deletions(-)
diff --git a/idna/core.py b/idna/core.py
index 41ec5c7..5f54c89 100644
--- a/idna/core.py
+++ b/idna/core.py
@@ -161,9 +161,11 @@ def valid_contextj(label, pos):
joining_type = idnadata.joining_types.get(ord(label[i]))
if joining_type == ord('T'):
continue
- if joining_type in [ord('L'), ord('D')]:
+ elif joining_type in [ord('L'), ord('D')]:
ok = True
break
+ else:
+ break
if not ok:
return False
@@ -173,9 +175,11 @@ def valid_contextj(label, pos):
joining_type = idnadata.joining_types.get(ord(label[i]))
if joining_type == ord('T'):
continue
- if joining_type in [ord('R'), ord('D')]:
+ elif joining_type in [ord('R'), ord('D')]:
ok = True
break
+ else:
+ break
return ok
if cp_value == 0x200d:
@@ -247,12 +251,8 @@ def check_label(label):
if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']):
continue
elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']):
- try:
- if not valid_contextj(label, pos):
- raise InvalidCodepointContext('Joiner {0} not allowed at position {1} in {2}'.format(
- _unot(cp_value), pos+1, repr(label)))
- except ValueError:
- raise IDNAError('Unknown codepoint adjacent to joiner {0} at position {1} in {2}'.format(
+ if not valid_contextj(label, pos):
+ raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format(
_unot(cp_value), pos+1, repr(label)))
elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']):
if not valid_contexto(label, pos):
diff --git a/idna/idnadata.py b/idna/idnadata.py
index a284e4c..c61dcf9 100644
--- a/idna/idnadata.py
+++ b/idna/idnadata.py
@@ -1,6 +1,6 @@
# This file is automatically generated by tools/idna-data
-__version__ = "13.0.0"
+__version__ = '15.1.0'
scripts = {
'Greek': (
0x37000000374,
@@ -49,17 +49,20 @@ scripts = {
0x30210000302a,
0x30380000303c,
0x340000004dc0,
- 0x4e0000009ffd,
+ 0x4e000000a000,
0xf9000000fa6e,
0xfa700000fada,
+ 0x16fe200016fe4,
0x16ff000016ff2,
- 0x200000002a6de,
- 0x2a7000002b735,
+ 0x200000002a6e0,
+ 0x2a7000002b73a,
0x2b7400002b81e,
0x2b8200002cea2,
0x2ceb00002ebe1,
+ 0x2ebf00002ee5e,
0x2f8000002fa1e,
0x300000003134b,
+ 0x31350000323b0,
),
'Hebrew': (
0x591000005c8,
@@ -75,7 +78,8 @@ scripts = {
'Hiragana': (
0x304100003097,
0x309d000030a0,
- 0x1b0010001b11f,
+ 0x1b0010001b120,
+ 0x1b1320001b133,
0x1b1500001b153,
0x1f2000001f201,
),
@@ -87,21 +91,200 @@ scripts = {
0x330000003358,
0xff660000ff70,
0xff710000ff9e,
+ 0x1aff00001aff4,
+ 0x1aff50001affc,
+ 0x1affd0001afff,
0x1b0000001b001,
+ 0x1b1200001b123,
+ 0x1b1550001b156,
0x1b1640001b168,
),
}
joining_types = {
- 0x600: 85,
- 0x601: 85,
- 0x602: 85,
- 0x603: 85,
- 0x604: 85,
- 0x605: 85,
- 0x608: 85,
- 0x60b: 85,
+ 0xad: 84,
+ 0x300: 84,
+ 0x301: 84,
+ 0x302: 84,
+ 0x303: 84,
+ 0x304: 84,
+ 0x305: 84,
+ 0x306: 84,
+ 0x307: 84,
+ 0x308: 84,
+ 0x309: 84,
+ 0x30a: 84,
+ 0x30b: 84,
+ 0x30c: 84,
+ 0x30d: 84,
+ 0x30e: 84,
+ 0x30f: 84,
+ 0x310: 84,
+ 0x311: 84,
+ 0x312: 84,
+ 0x313: 84,
+ 0x314: 84,
+ 0x315: 84,
+ 0x316: 84,
+ 0x317: 84,
+ 0x318: 84,
+ 0x319: 84,
+ 0x31a: 84,
+ 0x31b: 84,
+ 0x31c: 84,
+ 0x31d: 84,
+ 0x31e: 84,
+ 0x31f: 84,
+ 0x320: 84,
+ 0x321: 84,
+ 0x322: 84,
+ 0x323: 84,
+ 0x324: 84,
+ 0x325: 84,
+ 0x326: 84,
+ 0x327: 84,
+ 0x328: 84,
+ 0x329: 84,
+ 0x32a: 84,
+ 0x32b: 84,
+ 0x32c: 84,
+ 0x32d: 84,
+ 0x32e: 84,
+ 0x32f: 84,
+ 0x330: 84,
+ 0x331: 84,
+ 0x332: 84,
+ 0x333: 84,
+ 0x334: 84,
+ 0x335: 84,
+ 0x336: 84,
+ 0x337: 84,
+ 0x338: 84,
+ 0x339: 84,
+ 0x33a: 84,
+ 0x33b: 84,
+ 0x33c: 84,
+ 0x33d: 84,
+ 0x33e: 84,
+ 0x33f: 84,
+ 0x340: 84,
+ 0x341: 84,
+ 0x342: 84,
+ 0x343: 84,
+ 0x344: 84,
+ 0x345: 84,
+ 0x346: 84,
+ 0x347: 84,
+ 0x348: 84,
+ 0x349: 84,
+ 0x34a: 84,
+ 0x34b: 84,
+ 0x34c: 84,
+ 0x34d: 84,
+ 0x34e: 84,
+ 0x34f: 84,
+ 0x350: 84,
+ 0x351: 84,
+ 0x352: 84,
+ 0x353: 84,
+ 0x354: 84,
+ 0x355: 84,
+ 0x356: 84,
+ 0x357: 84,
+ 0x358: 84,
+ 0x359: 84,
+ 0x35a: 84,
+ 0x35b: 84,
+ 0x35c: 84,
+ 0x35d: 84,
+ 0x35e: 84,
+ 0x35f: 84,
+ 0x360: 84,
+ 0x361: 84,
+ 0x362: 84,
+ 0x363: 84,
+ 0x364: 84,
+ 0x365: 84,
+ 0x366: 84,
+ 0x367: 84,
+ 0x368: 84,
+ 0x369: 84,
+ 0x36a: 84,
+ 0x36b: 84,
+ 0x36c: 84,
+ 0x36d: 84,
+ 0x36e: 84,
+ 0x36f: 84,
+ 0x483: 84,
+ 0x484: 84,
+ 0x485: 84,
+ 0x486: 84,
+ 0x487: 84,
+ 0x488: 84,
+ 0x489: 84,
+ 0x591: 84,
+ 0x592: 84,
+ 0x593: 84,
+ 0x594: 84,
+ 0x595: 84,
+ 0x596: 84,
+ 0x597: 84,
+ 0x598: 84,
+ 0x599: 84,
+ 0x59a: 84,
+ 0x59b: 84,
+ 0x59c: 84,
+ 0x59d: 84,
+ 0x59e: 84,
+ 0x59f: 84,
+ 0x5a0: 84,
+ 0x5a1: 84,
+ 0x5a2: 84,
+ 0x5a3: 84,
+ 0x5a4: 84,
+ 0x5a5: 84,
+ 0x5a6: 84,
+ 0x5a7: 84,
+ 0x5a8: 84,
+ 0x5a9: 84,
+ 0x5aa: 84,
+ 0x5ab: 84,
+ 0x5ac: 84,
+ 0x5ad: 84,
+ 0x5ae: 84,
+ 0x5af: 84,
+ 0x5b0: 84,
+ 0x5b1: 84,
+ 0x5b2: 84,
+ 0x5b3: 84,
+ 0x5b4: 84,
+ 0x5b5: 84,
+ 0x5b6: 84,
+ 0x5b7: 84,
+ 0x5b8: 84,
+ 0x5b9: 84,
+ 0x5ba: 84,
+ 0x5bb: 84,
+ 0x5bc: 84,
+ 0x5bd: 84,
+ 0x5bf: 84,
+ 0x5c1: 84,
+ 0x5c2: 84,
+ 0x5c4: 84,
+ 0x5c5: 84,
+ 0x5c7: 84,
+ 0x610: 84,
+ 0x611: 84,
+ 0x612: 84,
+ 0x613: 84,
+ 0x614: 84,
+ 0x615: 84,
+ 0x616: 84,
+ 0x617: 84,
+ 0x618: 84,
+ 0x619: 84,
+ 0x61a: 84,
+ 0x61c: 84,
0x620: 68,
- 0x621: 85,
0x622: 82,
0x623: 82,
0x624: 82,
@@ -143,12 +326,33 @@ joining_types = {
0x648: 82,
0x649: 68,
0x64a: 68,
+ 0x64b: 84,
+ 0x64c: 84,
+ 0x64d: 84,
+ 0x64e: 84,
+ 0x64f: 84,
+ 0x650: 84,
+ 0x651: 84,
+ 0x652: 84,
+ 0x653: 84,
+ 0x654: 84,
+ 0x655: 84,
+ 0x656: 84,
+ 0x657: 84,
+ 0x658: 84,
+ 0x659: 84,
+ 0x65a: 84,
+ 0x65b: 84,
+ 0x65c: 84,
+ 0x65d: 84,
+ 0x65e: 84,
+ 0x65f: 84,
0x66e: 68,
0x66f: 68,
+ 0x670: 84,
0x671: 82,
0x672: 82,
0x673: 82,
- 0x674: 85,
0x675: 82,
0x676: 82,
0x677: 82,
@@ -245,7 +449,25 @@ joining_types = {
0x6d2: 82,
0x6d3: 82,
0x6d5: 82,
- 0x6dd: 85,
+ 0x6d6: 84,
+ 0x6d7: 84,
+ 0x6d8: 84,
+ 0x6d9: 84,
+ 0x6da: 84,
+ 0x6db: 84,
+ 0x6dc: 84,
+ 0x6df: 84,
+ 0x6e0: 84,
+ 0x6e1: 84,
+ 0x6e2: 84,
+ 0x6e3: 84,
+ 0x6e4: 84,
+ 0x6e7: 84,
+ 0x6e8: 84,
+ 0x6ea: 84,
+ 0x6eb: 84,
+ 0x6ec: 84,
+ 0x6ed: 84,
0x6ee: 82,
0x6ef: 82,
0x6fa: 68,
@@ -254,6 +476,7 @@ joining_types = {
0x6ff: 68,
0x70f: 84,
0x710: 82,
+ 0x711: 84,
0x712: 68,
0x713: 68,
0x714: 68,
@@ -284,6 +507,33 @@ joining_types = {
0x72d: 68,
0x72e: 68,
0x72f: 82,
+ 0x730: 84,
+ 0x731: 84,
+ 0x732: 84,
+ 0x733: 84,
+ 0x734: 84,
+ 0x735: 84,
+ 0x736: 84,
+ 0x737: 84,
+ 0x738: 84,
+ 0x739: 84,
+ 0x73a: 84,
+ 0x73b: 84,
+ 0x73c: 84,
+ 0x73d: 84,
+ 0x73e: 84,
+ 0x73f: 84,
+ 0x740: 84,
+ 0x741: 84,
+ 0x742: 84,
+ 0x743: 84,
+ 0x744: 84,
+ 0x745: 84,
+ 0x746: 84,
+ 0x747: 84,
+ 0x748: 84,
+ 0x749: 84,
+ 0x74a: 84,
0x74d: 82,
0x74e: 68,
0x74f: 68,
@@ -335,6 +585,17 @@ joining_types = {
0x77d: 68,
0x77e: 68,
0x77f: 68,
+ 0x7a6: 84,
+ 0x7a7: 84,
+ 0x7a8: 84,
+ 0x7a9: 84,
+ 0x7aa: 84,
+ 0x7ab: 84,
+ 0x7ac: 84,
+ 0x7ad: 84,
+ 0x7ae: 84,
+ 0x7af: 84,
+ 0x7b0: 84,
0x7ca: 68,
0x7cb: 68,
0x7cc: 68,
@@ -368,7 +629,38 @@ joining_types = {
0x7e8: 68,
0x7e9: 68,
0x7ea: 68,
+ 0x7eb: 84,
+ 0x7ec: 84,
+ 0x7ed: 84,
+ 0x7ee: 84,
+ 0x7ef: 84,
+ 0x7f0: 84,
+ 0x7f1: 84,
+ 0x7f2: 84,
+ 0x7f3: 84,
0x7fa: 67,
+ 0x7fd: 84,
+ 0x816: 84,
+ 0x817: 84,
+ 0x818: 84,
+ 0x819: 84,
+ 0x81b: 84,
+ 0x81c: 84,
+ 0x81d: 84,
+ 0x81e: 84,
+ 0x81f: 84,
+ 0x820: 84,
+ 0x821: 84,
+ 0x822: 84,
+ 0x823: 84,
+ 0x825: 84,
+ 0x826: 84,
+ 0x827: 84,
+ 0x829: 84,
+ 0x82a: 84,
+ 0x82b: 84,
+ 0x82c: 84,
+ 0x82d: 84,
0x840: 82,
0x841: 68,
0x842: 68,
@@ -394,17 +686,55 @@ joining_types = {
0x856: 82,
0x857: 82,
0x858: 82,
+ 0x859: 84,
+ 0x85a: 84,
+ 0x85b: 84,
0x860: 68,
- 0x861: 85,
0x862: 68,
0x863: 68,
0x864: 68,
0x865: 68,
- 0x866: 85,
0x867: 82,
0x868: 68,
0x869: 82,
0x86a: 82,
+ 0x870: 82,
+ 0x871: 82,
+ 0x872: 82,
+ 0x873: 82,
+ 0x874: 82,
+ 0x875: 82,
+ 0x876: 82,
+ 0x877: 82,
+ 0x878: 82,
+ 0x879: 82,
+ 0x87a: 82,
+ 0x87b: 82,
+ 0x87c: 82,
+ 0x87d: 82,
+ 0x87e: 82,
+ 0x87f: 82,
+ 0x880: 82,
+ 0x881: 82,
+ 0x882: 82,
+ 0x883: 67,
+ 0x884: 67,
+ 0x885: 67,
+ 0x886: 68,
+ 0x889: 68,
+ 0x88a: 68,
+ 0x88b: 68,
+ 0x88c: 68,
+ 0x88d: 68,
+ 0x88e: 82,
+ 0x898: 84,
+ 0x899: 84,
+ 0x89a: 84,
+ 0x89b: 84,
+ 0x89c: 84,
+ 0x89d: 84,
+ 0x89e: 84,
+ 0x89f: 84,
0x8a0: 68,
0x8a1: 68,
0x8a2: 68,
@@ -418,7 +748,6 @@ joining_types = {
0x8aa: 82,
0x8ab: 82,
0x8ac: 82,
- 0x8ad: 85,
0x8ae: 82,
0x8af: 68,
0x8b0: 68,
@@ -426,6 +755,7 @@ joining_types = {
0x8b2: 82,
0x8b3: 68,
0x8b4: 68,
+ 0x8b5: 68,
0x8b6: 68,
0x8b7: 68,
0x8b8: 68,
@@ -444,11 +774,358 @@ joining_types = {
0x8c5: 68,
0x8c6: 68,
0x8c7: 68,
- 0x8e2: 85,
- 0x1806: 85,
+ 0x8c8: 68,
+ 0x8ca: 84,
+ 0x8cb: 84,
+ 0x8cc: 84,
+ 0x8cd: 84,
+ 0x8ce: 84,
+ 0x8cf: 84,
+ 0x8d0: 84,
+ 0x8d1: 84,
+ 0x8d2: 84,
+ 0x8d3: 84,
+ 0x8d4: 84,
+ 0x8d5: 84,
+ 0x8d6: 84,
+ 0x8d7: 84,
+ 0x8d8: 84,
+ 0x8d9: 84,
+ 0x8da: 84,
+ 0x8db: 84,
+ 0x8dc: 84,
+ 0x8dd: 84,
+ 0x8de: 84,
+ 0x8df: 84,
+ 0x8e0: 84,
+ 0x8e1: 84,
+ 0x8e3: 84,
+ 0x8e4: 84,
+ 0x8e5: 84,
+ 0x8e6: 84,
+ 0x8e7: 84,
+ 0x8e8: 84,
+ 0x8e9: 84,
+ 0x8ea: 84,
+ 0x8eb: 84,
+ 0x8ec: 84,
+ 0x8ed: 84,
+ 0x8ee: 84,
+ 0x8ef: 84,
+ 0x8f0: 84,
+ 0x8f1: 84,
+ 0x8f2: 84,
+ 0x8f3: 84,
+ 0x8f4: 84,
+ 0x8f5: 84,
+ 0x8f6: 84,
+ 0x8f7: 84,
+ 0x8f8: 84,
+ 0x8f9: 84,
+ 0x8fa: 84,
+ 0x8fb: 84,
+ 0x8fc: 84,
+ 0x8fd: 84,
+ 0x8fe: 84,
+ 0x8ff: 84,
+ 0x900: 84,
+ 0x901: 84,
+ 0x902: 84,
+ 0x93a: 84,
+ 0x93c: 84,
+ 0x941: 84,
+ 0x942: 84,
+ 0x943: 84,
+ 0x944: 84,
+ 0x945: 84,
+ 0x946: 84,
+ 0x947: 84,
+ 0x948: 84,
+ 0x94d: 84,
+ 0x951: 84,
+ 0x952: 84,
+ 0x953: 84,
+ 0x954: 84,
+ 0x955: 84,
+ 0x956: 84,
+ 0x957: 84,
+ 0x962: 84,
+ 0x963: 84,
+ 0x981: 84,
+ 0x9bc: 84,
+ 0x9c1: 84,
+ 0x9c2: 84,
+ 0x9c3: 84,
+ 0x9c4: 84,
+ 0x9cd: 84,
+ 0x9e2: 84,
+ 0x9e3: 84,
+ 0x9fe: 84,
+ 0xa01: 84,
+ 0xa02: 84,
+ 0xa3c: 84,
+ 0xa41: 84,
+ 0xa42: 84,
+ 0xa47: 84,
+ 0xa48: 84,
+ 0xa4b: 84,
+ 0xa4c: 84,
+ 0xa4d: 84,
+ 0xa51: 84,
+ 0xa70: 84,
+ 0xa71: 84,
+ 0xa75: 84,
+ 0xa81: 84,
+ 0xa82: 84,
+ 0xabc: 84,
+ 0xac1: 84,
+ 0xac2: 84,
+ 0xac3: 84,
+ 0xac4: 84,
+ 0xac5: 84,
+ 0xac7: 84,
+ 0xac8: 84,
+ 0xacd: 84,
+ 0xae2: 84,
+ 0xae3: 84,
+ 0xafa: 84,
+ 0xafb: 84,
+ 0xafc: 84,
+ 0xafd: 84,
+ 0xafe: 84,
+ 0xaff: 84,
+ 0xb01: 84,
+ 0xb3c: 84,
+ 0xb3f: 84,
+ 0xb41: 84,
+ 0xb42: 84,
+ 0xb43: 84,
+ 0xb44: 84,
+ 0xb4d: 84,
+ 0xb55: 84,
+ 0xb56: 84,
+ 0xb62: 84,
+ 0xb63: 84,
+ 0xb82: 84,
+ 0xbc0: 84,
+ 0xbcd: 84,
+ 0xc00: 84,
+ 0xc04: 84,
+ 0xc3c: 84,
+ 0xc3e: 84,
+ 0xc3f: 84,
+ 0xc40: 84,
+ 0xc46: 84,
+ 0xc47: 84,
+ 0xc48: 84,
+ 0xc4a: 84,
+ 0xc4b: 84,
+ 0xc4c: 84,
+ 0xc4d: 84,
+ 0xc55: 84,
+ 0xc56: 84,
+ 0xc62: 84,
+ 0xc63: 84,
+ 0xc81: 84,
+ 0xcbc: 84,
+ 0xcbf: 84,
+ 0xcc6: 84,
+ 0xccc: 84,
+ 0xccd: 84,
+ 0xce2: 84,
+ 0xce3: 84,
+ 0xd00: 84,
+ 0xd01: 84,
+ 0xd3b: 84,
+ 0xd3c: 84,
+ 0xd41: 84,
+ 0xd42: 84,
+ 0xd43: 84,
+ 0xd44: 84,
+ 0xd4d: 84,
+ 0xd62: 84,
+ 0xd63: 84,
+ 0xd81: 84,
+ 0xdca: 84,
+ 0xdd2: 84,
+ 0xdd3: 84,
+ 0xdd4: 84,
+ 0xdd6: 84,
+ 0xe31: 84,
+ 0xe34: 84,
+ 0xe35: 84,
+ 0xe36: 84,
+ 0xe37: 84,
+ 0xe38: 84,
+ 0xe39: 84,
+ 0xe3a: 84,
+ 0xe47: 84,
+ 0xe48: 84,
+ 0xe49: 84,
+ 0xe4a: 84,
+ 0xe4b: 84,
+ 0xe4c: 84,
+ 0xe4d: 84,
+ 0xe4e: 84,
+ 0xeb1: 84,
+ 0xeb4: 84,
+ 0xeb5: 84,
+ 0xeb6: 84,
+ 0xeb7: 84,
+ 0xeb8: 84,
+ 0xeb9: 84,
+ 0xeba: 84,
+ 0xebb: 84,
+ 0xebc: 84,
+ 0xec8: 84,
+ 0xec9: 84,
+ 0xeca: 84,
+ 0xecb: 84,
+ 0xecc: 84,
+ 0xecd: 84,
+ 0xece: 84,
+ 0xf18: 84,
+ 0xf19: 84,
+ 0xf35: 84,
+ 0xf37: 84,
+ 0xf39: 84,
+ 0xf71: 84,
+ 0xf72: 84,
+ 0xf73: 84,
+ 0xf74: 84,
+ 0xf75: 84,
+ 0xf76: 84,
+ 0xf77: 84,
+ 0xf78: 84,
+ 0xf79: 84,
+ 0xf7a: 84,
+ 0xf7b: 84,
+ 0xf7c: 84,
+ 0xf7d: 84,
+ 0xf7e: 84,
+ 0xf80: 84,
+ 0xf81: 84,
+ 0xf82: 84,
+ 0xf83: 84,
+ 0xf84: 84,
+ 0xf86: 84,
+ 0xf87: 84,
+ 0xf8d: 84,
+ 0xf8e: 84,
+ 0xf8f: 84,
+ 0xf90: 84,
+ 0xf91: 84,
+ 0xf92: 84,
+ 0xf93: 84,
+ 0xf94: 84,
+ 0xf95: 84,
+ 0xf96: 84,
+ 0xf97: 84,
+ 0xf99: 84,
+ 0xf9a: 84,
+ 0xf9b: 84,
+ 0xf9c: 84,
+ 0xf9d: 84,
+ 0xf9e: 84,
+ 0xf9f: 84,
+ 0xfa0: 84,
+ 0xfa1: 84,
+ 0xfa2: 84,
+ 0xfa3: 84,
+ 0xfa4: 84,
+ 0xfa5: 84,
+ 0xfa6: 84,
+ 0xfa7: 84,
+ 0xfa8: 84,
+ 0xfa9: 84,
+ 0xfaa: 84,
+ 0xfab: 84,
+ 0xfac: 84,
+ 0xfad: 84,
+ 0xfae: 84,
+ 0xfaf: 84,
+ 0xfb0: 84,
+ 0xfb1: 84,
+ 0xfb2: 84,
+ 0xfb3: 84,
+ 0xfb4: 84,
+ 0xfb5: 84,
+ 0xfb6: 84,
+ 0xfb7: 84,
+ 0xfb8: 84,
+ 0xfb9: 84,
+ 0xfba: 84,
+ 0xfbb: 84,
+ 0xfbc: 84,
+ 0xfc6: 84,
+ 0x102d: 84,
+ 0x102e: 84,
+ 0x102f: 84,
+ 0x1030: 84,
+ 0x1032: 84,
+ 0x1033: 84,
+ 0x1034: 84,
+ 0x1035: 84,
+ 0x1036: 84,
+ 0x1037: 84,
+ 0x1039: 84,
+ 0x103a: 84,
+ 0x103d: 84,
+ 0x103e: 84,
+ 0x1058: 84,
+ 0x1059: 84,
+ 0x105e: 84,
+ 0x105f: 84,
+ 0x1060: 84,
+ 0x1071: 84,
+ 0x1072: 84,
+ 0x1073: 84,
+ 0x1074: 84,
+ 0x1082: 84,
+ 0x1085: 84,
+ 0x1086: 84,
+ 0x108d: 84,
+ 0x109d: 84,
+ 0x135d: 84,
+ 0x135e: 84,
+ 0x135f: 84,
+ 0x1712: 84,
+ 0x1713: 84,
+ 0x1714: 84,
+ 0x1732: 84,
+ 0x1733: 84,
+ 0x1752: 84,
+ 0x1753: 84,
+ 0x1772: 84,
+ 0x1773: 84,
+ 0x17b4: 84,
+ 0x17b5: 84,
+ 0x17b7: 84,
+ 0x17b8: 84,
+ 0x17b9: 84,
+ 0x17ba: 84,
+ 0x17bb: 84,
+ 0x17bc: 84,
+ 0x17bd: 84,
+ 0x17c6: 84,
+ 0x17c9: 84,
+ 0x17ca: 84,
+ 0x17cb: 84,
+ 0x17cc: 84,
+ 0x17cd: 84,
+ 0x17ce: 84,
+ 0x17cf: 84,
+ 0x17d0: 84,
+ 0x17d1: 84,
+ 0x17d2: 84,
+ 0x17d3: 84,
+ 0x17dd: 84,
0x1807: 68,
0x180a: 67,
- 0x180e: 85,
+ 0x180b: 84,
+ 0x180c: 84,
+ 0x180d: 84,
+ 0x180f: 84,
0x1820: 68,
0x1821: 68,
0x1822: 68,
@@ -538,11 +1215,6 @@ joining_types = {
0x1876: 68,
0x1877: 68,
0x1878: 68,
- 0x1880: 85,
- 0x1881: 85,
- 0x1882: 85,
- 0x1883: 85,
- 0x1884: 85,
0x1885: 84,
0x1886: 84,
0x1887: 68,
@@ -579,14 +1251,339 @@ joining_types = {
0x18a6: 68,
0x18a7: 68,
0x18a8: 68,
+ 0x18a9: 84,
0x18aa: 68,
- 0x200c: 85,
+ 0x1920: 84,
+ 0x1921: 84,
+ 0x1922: 84,
+ 0x1927: 84,
+ 0x1928: 84,
+ 0x1932: 84,
+ 0x1939: 84,
+ 0x193a: 84,
+ 0x193b: 84,
+ 0x1a17: 84,
+ 0x1a18: 84,
+ 0x1a1b: 84,
+ 0x1a56: 84,
+ 0x1a58: 84,
+ 0x1a59: 84,
+ 0x1a5a: 84,
+ 0x1a5b: 84,
+ 0x1a5c: 84,
+ 0x1a5d: 84,
+ 0x1a5e: 84,
+ 0x1a60: 84,
+ 0x1a62: 84,
+ 0x1a65: 84,
+ 0x1a66: 84,
+ 0x1a67: 84,
+ 0x1a68: 84,
+ 0x1a69: 84,
+ 0x1a6a: 84,
+ 0x1a6b: 84,
+ 0x1a6c: 84,
+ 0x1a73: 84,
+ 0x1a74: 84,
+ 0x1a75: 84,
+ 0x1a76: 84,
+ 0x1a77: 84,
+ 0x1a78: 84,
+ 0x1a79: 84,
+ 0x1a7a: 84,
+ 0x1a7b: 84,
+ 0x1a7c: 84,
+ 0x1a7f: 84,
+ 0x1ab0: 84,
+ 0x1ab1: 84,
+ 0x1ab2: 84,
+ 0x1ab3: 84,
+ 0x1ab4: 84,
+ 0x1ab5: 84,
+ 0x1ab6: 84,
+ 0x1ab7: 84,
+ 0x1ab8: 84,
+ 0x1ab9: 84,
+ 0x1aba: 84,
+ 0x1abb: 84,
+ 0x1abc: 84,
+ 0x1abd: 84,
+ 0x1abe: 84,
+ 0x1abf: 84,
+ 0x1ac0: 84,
+ 0x1ac1: 84,
+ 0x1ac2: 84,
+ 0x1ac3: 84,
+ 0x1ac4: 84,
+ 0x1ac5: 84,
+ 0x1ac6: 84,
+ 0x1ac7: 84,
+ 0x1ac8: 84,
+ 0x1ac9: 84,
+ 0x1aca: 84,
+ 0x1acb: 84,
+ 0x1acc: 84,
+ 0x1acd: 84,
+ 0x1ace: 84,
+ 0x1b00: 84,
+ 0x1b01: 84,
+ 0x1b02: 84,
+ 0x1b03: 84,
+ 0x1b34: 84,
+ 0x1b36: 84,
+ 0x1b37: 84,
+ 0x1b38: 84,
+ 0x1b39: 84,
+ 0x1b3a: 84,
+ 0x1b3c: 84,
+ 0x1b42: 84,
+ 0x1b6b: 84,
+ 0x1b6c: 84,
+ 0x1b6d: 84,
+ 0x1b6e: 84,
+ 0x1b6f: 84,
+ 0x1b70: 84,
+ 0x1b71: 84,
+ 0x1b72: 84,
+ 0x1b73: 84,
+ 0x1b80: 84,
+ 0x1b81: 84,
+ 0x1ba2: 84,
+ 0x1ba3: 84,
+ 0x1ba4: 84,
+ 0x1ba5: 84,
+ 0x1ba8: 84,
+ 0x1ba9: 84,
+ 0x1bab: 84,
+ 0x1bac: 84,
+ 0x1bad: 84,
+ 0x1be6: 84,
+ 0x1be8: 84,
+ 0x1be9: 84,
+ 0x1bed: 84,
+ 0x1bef: 84,
+ 0x1bf0: 84,
+ 0x1bf1: 84,
+ 0x1c2c: 84,
+ 0x1c2d: 84,
+ 0x1c2e: 84,
+ 0x1c2f: 84,
+ 0x1c30: 84,
+ 0x1c31: 84,
+ 0x1c32: 84,
+ 0x1c33: 84,
+ 0x1c36: 84,
+ 0x1c37: 84,
+ 0x1cd0: 84,
+ 0x1cd1: 84,
+ 0x1cd2: 84,
+ 0x1cd4: 84,
+ 0x1cd5: 84,
+ 0x1cd6: 84,
+ 0x1cd7: 84,
+ 0x1cd8: 84,
+ 0x1cd9: 84,
+ 0x1cda: 84,
+ 0x1cdb: 84,
+ 0x1cdc: 84,
+ 0x1cdd: 84,
+ 0x1cde: 84,
+ 0x1cdf: 84,
+ 0x1ce0: 84,
+ 0x1ce2: 84,
+ 0x1ce3: 84,
+ 0x1ce4: 84,
+ 0x1ce5: 84,
+ 0x1ce6: 84,
+ 0x1ce7: 84,
+ 0x1ce8: 84,
+ 0x1ced: 84,
+ 0x1cf4: 84,
+ 0x1cf8: 84,
+ 0x1cf9: 84,
+ 0x1dc0: 84,
+ 0x1dc1: 84,
+ 0x1dc2: 84,
+ 0x1dc3: 84,
+ 0x1dc4: 84,
+ 0x1dc5: 84,
+ 0x1dc6: 84,
+ 0x1dc7: 84,
+ 0x1dc8: 84,
+ 0x1dc9: 84,
+ 0x1dca: 84,
+ 0x1dcb: 84,
+ 0x1dcc: 84,
+ 0x1dcd: 84,
+ 0x1dce: 84,
+ 0x1dcf: 84,
+ 0x1dd0: 84,
+ 0x1dd1: 84,
+ 0x1dd2: 84,
+ 0x1dd3: 84,
+ 0x1dd4: 84,
+ 0x1dd5: 84,
+ 0x1dd6: 84,
+ 0x1dd7: 84,
+ 0x1dd8: 84,
+ 0x1dd9: 84,
+ 0x1dda: 84,
+ 0x1ddb: 84,
+ 0x1ddc: 84,
+ 0x1ddd: 84,
+ 0x1dde: 84,
+ 0x1ddf: 84,
+ 0x1de0: 84,
+ 0x1de1: 84,
+ 0x1de2: 84,
+ 0x1de3: 84,
+ 0x1de4: 84,
+ 0x1de5: 84,
+ 0x1de6: 84,
+ 0x1de7: 84,
+ 0x1de8: 84,
+ 0x1de9: 84,
+ 0x1dea: 84,
+ 0x1deb: 84,
+ 0x1dec: 84,
+ 0x1ded: 84,
+ 0x1dee: 84,
+ 0x1def: 84,
+ 0x1df0: 84,
+ 0x1df1: 84,
+ 0x1df2: 84,
+ 0x1df3: 84,
+ 0x1df4: 84,
+ 0x1df5: 84,
+ 0x1df6: 84,
+ 0x1df7: 84,
+ 0x1df8: 84,
+ 0x1df9: 84,
+ 0x1dfa: 84,
+ 0x1dfb: 84,
+ 0x1dfc: 84,
+ 0x1dfd: 84,
+ 0x1dfe: 84,
+ 0x1dff: 84,
+ 0x200b: 84,
0x200d: 67,
- 0x202f: 85,
- 0x2066: 85,
- 0x2067: 85,
- 0x2068: 85,
- 0x2069: 85,
+ 0x200e: 84,
+ 0x200f: 84,
+ 0x202a: 84,
+ 0x202b: 84,
+ 0x202c: 84,
+ 0x202d: 84,
+ 0x202e: 84,
+ 0x2060: 84,
+ 0x2061: 84,
+ 0x2062: 84,
+ 0x2063: 84,
+ 0x2064: 84,
+ 0x206a: 84,
+ 0x206b: 84,
+ 0x206c: 84,
+ 0x206d: 84,
+ 0x206e: 84,
+ 0x206f: 84,
+ 0x20d0: 84,
+ 0x20d1: 84,
+ 0x20d2: 84,
+ 0x20d3: 84,
+ 0x20d4: 84,
+ 0x20d5: 84,
+ 0x20d6: 84,
+ 0x20d7: 84,
+ 0x20d8: 84,
+ 0x20d9: 84,
+ 0x20da: 84,
+ 0x20db: 84,
+ 0x20dc: 84,
+ 0x20dd: 84,
+ 0x20de: 84,
+ 0x20df: 84,
+ 0x20e0: 84,
+ 0x20e1: 84,
+ 0x20e2: 84,
+ 0x20e3: 84,
+ 0x20e4: 84,
+ 0x20e5: 84,
+ 0x20e6: 84,
+ 0x20e7: 84,
+ 0x20e8: 84,
+ 0x20e9: 84,
+ 0x20ea: 84,
+ 0x20eb: 84,
+ 0x20ec: 84,
+ 0x20ed: 84,
+ 0x20ee: 84,
+ 0x20ef: 84,
+ 0x20f0: 84,
+ 0x2cef: 84,
+ 0x2cf0: 84,
+ 0x2cf1: 84,
+ 0x2d7f: 84,
+ 0x2de0: 84,
+ 0x2de1: 84,
+ 0x2de2: 84,
+ 0x2de3: 84,
+ 0x2de4: 84,
+ 0x2de5: 84,
+ 0x2de6: 84,
+ 0x2de7: 84,
+ 0x2de8: 84,
+ 0x2de9: 84,
+ 0x2dea: 84,
+ 0x2deb: 84,
+ 0x2dec: 84,
+ 0x2ded: 84,
+ 0x2dee: 84,
+ 0x2def: 84,
+ 0x2df0: 84,
+ 0x2df1: 84,
+ 0x2df2: 84,
+ 0x2df3: 84,
+ 0x2df4: 84,
+ 0x2df5: 84,
+ 0x2df6: 84,
+ 0x2df7: 84,
+ 0x2df8: 84,
+ 0x2df9: 84,
+ 0x2dfa: 84,
+ 0x2dfb: 84,
+ 0x2dfc: 84,
+ 0x2dfd: 84,
+ 0x2dfe: 84,
+ 0x2dff: 84,
+ 0x302a: 84,
+ 0x302b: 84,
+ 0x302c: 84,
+ 0x302d: 84,
+ 0x3099: 84,
+ 0x309a: 84,
+ 0xa66f: 84,
+ 0xa670: 84,
+ 0xa671: 84,
+ 0xa672: 84,
+ 0xa674: 84,
+ 0xa675: 84,
+ 0xa676: 84,
+ 0xa677: 84,
+ 0xa678: 84,
+ 0xa679: 84,
+ 0xa67a: 84,
+ 0xa67b: 84,
+ 0xa67c: 84,
+ 0xa67d: 84,
+ 0xa69e: 84,
+ 0xa69f: 84,
+ 0xa6f0: 84,
+ 0xa6f1: 84,
+ 0xa802: 84,
+ 0xa806: 84,
+ 0xa80b: 84,
+ 0xa825: 84,
+ 0xa826: 84,
+ 0xa82c: 84,
0xa840: 68,
0xa841: 68,
0xa842: 68,
@@ -638,20 +1635,151 @@ joining_types = {
0xa870: 68,
0xa871: 68,
0xa872: 76,
- 0xa873: 85,
+ 0xa8c4: 84,
+ 0xa8c5: 84,
+ 0xa8e0: 84,
+ 0xa8e1: 84,
+ 0xa8e2: 84,
+ 0xa8e3: 84,
+ 0xa8e4: 84,
+ 0xa8e5: 84,
+ 0xa8e6: 84,
+ 0xa8e7: 84,
+ 0xa8e8: 84,
+ 0xa8e9: 84,
+ 0xa8ea: 84,
+ 0xa8eb: 84,
+ 0xa8ec: 84,
+ 0xa8ed: 84,
+ 0xa8ee: 84,
+ 0xa8ef: 84,
+ 0xa8f0: 84,
+ 0xa8f1: 84,
+ 0xa8ff: 84,
+ 0xa926: 84,
+ 0xa927: 84,
+ 0xa928: 84,
+ 0xa929: 84,
+ 0xa92a: 84,
+ 0xa92b: 84,
+ 0xa92c: 84,
+ 0xa92d: 84,
+ 0xa947: 84,
+ 0xa948: 84,
+ 0xa949: 84,
+ 0xa94a: 84,
+ 0xa94b: 84,
+ 0xa94c: 84,
+ 0xa94d: 84,
+ 0xa94e: 84,
+ 0xa94f: 84,
+ 0xa950: 84,
+ 0xa951: 84,
+ 0xa980: 84,
+ 0xa981: 84,
+ 0xa982: 84,
+ 0xa9b3: 84,
+ 0xa9b6: 84,
+ 0xa9b7: 84,
+ 0xa9b8: 84,
+ 0xa9b9: 84,
+ 0xa9bc: 84,
+ 0xa9bd: 84,
+ 0xa9e5: 84,
+ 0xaa29: 84,
+ 0xaa2a: 84,
+ 0xaa2b: 84,
+ 0xaa2c: 84,
+ 0xaa2d: 84,
+ 0xaa2e: 84,
+ 0xaa31: 84,
+ 0xaa32: 84,
+ 0xaa35: 84,
+ 0xaa36: 84,
+ 0xaa43: 84,
+ 0xaa4c: 84,
+ 0xaa7c: 84,
+ 0xaab0: 84,
+ 0xaab2: 84,
+ 0xaab3: 84,
+ 0xaab4: 84,
+ 0xaab7: 84,
+ 0xaab8: 84,
+ 0xaabe: 84,
+ 0xaabf: 84,
+ 0xaac1: 84,
+ 0xaaec: 84,
+ 0xaaed: 84,
+ 0xaaf6: 84,
+ 0xabe5: 84,
+ 0xabe8: 84,
+ 0xabed: 84,
+ 0xfb1e: 84,
+ 0xfe00: 84,
+ 0xfe01: 84,
+ 0xfe02: 84,
+ 0xfe03: 84,
+ 0xfe04: 84,
+ 0xfe05: 84,
+ 0xfe06: 84,
+ 0xfe07: 84,
+ 0xfe08: 84,
+ 0xfe09: 84,
+ 0xfe0a: 84,
+ 0xfe0b: 84,
+ 0xfe0c: 84,
+ 0xfe0d: 84,
+ 0xfe0e: 84,
+ 0xfe0f: 84,
+ 0xfe20: 84,
+ 0xfe21: 84,
+ 0xfe22: 84,
+ 0xfe23: 84,
+ 0xfe24: 84,
+ 0xfe25: 84,
+ 0xfe26: 84,
+ 0xfe27: 84,
+ 0xfe28: 84,
+ 0xfe29: 84,
+ 0xfe2a: 84,
+ 0xfe2b: 84,
+ 0xfe2c: 84,
+ 0xfe2d: 84,
+ 0xfe2e: 84,
+ 0xfe2f: 84,
+ 0xfeff: 84,
+ 0xfff9: 84,
+ 0xfffa: 84,
+ 0xfffb: 84,
+ 0x101fd: 84,
+ 0x102e0: 84,
+ 0x10376: 84,
+ 0x10377: 84,
+ 0x10378: 84,
+ 0x10379: 84,
+ 0x1037a: 84,
+ 0x10a01: 84,
+ 0x10a02: 84,
+ 0x10a03: 84,
+ 0x10a05: 84,
+ 0x10a06: 84,
+ 0x10a0c: 84,
+ 0x10a0d: 84,
+ 0x10a0e: 84,
+ 0x10a0f: 84,
+ 0x10a38: 84,
+ 0x10a39: 84,
+ 0x10a3a: 84,
+ 0x10a3f: 84,
0x10ac0: 68,
0x10ac1: 68,
0x10ac2: 68,
0x10ac3: 68,
0x10ac4: 68,
0x10ac5: 82,
- 0x10ac6: 85,
0x10ac7: 82,
- 0x10ac8: 85,
0x10ac9: 82,
0x10aca: 82,
- 0x10acb: 85,
- 0x10acc: 85,
0x10acd: 76,
0x10ace: 82,
0x10acf: 82,
@@ -673,9 +1801,9 @@ joining_types = {
0x10adf: 68,
0x10ae0: 68,
0x10ae1: 82,
- 0x10ae2: 85,
- 0x10ae3: 85,
0x10ae4: 82,
+ 0x10ae5: 84,
+ 0x10ae6: 84,
0x10aeb: 68,
0x10aec: 68,
0x10aed: 68,
@@ -705,7 +1833,6 @@ joining_types = {
0x10bac: 82,
0x10bad: 68,
0x10bae: 68,
- 0x10baf: 85,
0x10d00: 76,
0x10d01: 68,
0x10d02: 68,
@@ -742,6 +1869,15 @@ joining_types = {
0x10d21: 68,
0x10d22: 82,
0x10d23: 68,
+ 0x10d24: 84,
+ 0x10d25: 84,
+ 0x10d26: 84,
+ 0x10d27: 84,
+ 0x10eab: 84,
+ 0x10eac: 84,
+ 0x10efd: 84,
+ 0x10efe: 84,
+ 0x10eff: 84,
0x10f30: 68,
0x10f31: 68,
0x10f32: 68,
@@ -763,19 +1899,49 @@ joining_types = {
0x10f42: 68,
0x10f43: 68,
0x10f44: 68,
- 0x10f45: 85,
+ 0x10f46: 84,
+ 0x10f47: 84,
+ 0x10f48: 84,
+ 0x10f49: 84,
+ 0x10f4a: 84,
+ 0x10f4b: 84,
+ 0x10f4c: 84,
+ 0x10f4d: 84,
+ 0x10f4e: 84,
+ 0x10f4f: 84,
+ 0x10f50: 84,
0x10f51: 68,
0x10f52: 68,
0x10f53: 68,
0x10f54: 82,
+ 0x10f70: 68,
+ 0x10f71: 68,
+ 0x10f72: 68,
+ 0x10f73: 68,
+ 0x10f74: 82,
+ 0x10f75: 82,
+ 0x10f76: 68,
+ 0x10f77: 68,
+ 0x10f78: 68,
+ 0x10f79: 68,
+ 0x10f7a: 68,
+ 0x10f7b: 68,
+ 0x10f7c: 68,
+ 0x10f7d: 68,
+ 0x10f7e: 68,
+ 0x10f7f: 68,
+ 0x10f80: 68,
+ 0x10f81: 68,
+ 0x10f82: 84,
+ 0x10f83: 84,
+ 0x10f84: 84,
+ 0x10f85: 84,
0x10fb0: 68,
- 0x10fb1: 85,
0x10fb2: 68,
0x10fb3: 68,
0x10fb4: 82,
0x10fb5: 82,
0x10fb6: 82,
- 0x10fb7: 85,
0x10fb8: 68,
0x10fb9: 82,
0x10fba: 82,
@@ -784,20 +1950,668 @@ joining_types = {
0x10fbd: 82,
0x10fbe: 68,
0x10fbf: 68,
- 0x10fc0: 85,
0x10fc1: 68,
0x10fc2: 82,
0x10fc3: 82,
0x10fc4: 68,
- 0x10fc5: 85,
- 0x10fc6: 85,
- 0x10fc7: 85,
- 0x10fc8: 85,
0x10fc9: 82,
0x10fca: 68,
0x10fcb: 76,
- 0x110bd: 85,
- 0x110cd: 85,
+ 0x11001: 84,
+ 0x11038: 84,
+ 0x11039: 84,
+ 0x1103a: 84,
+ 0x1103b: 84,
+ 0x1103c: 84,
+ 0x1103d: 84,
+ 0x1103e: 84,
+ 0x1103f: 84,
+ 0x11040: 84,
+ 0x11041: 84,
+ 0x11042: 84,
+ 0x11043: 84,
+ 0x11044: 84,
+ 0x11045: 84,
+ 0x11046: 84,
+ 0x11070: 84,
+ 0x11073: 84,
+ 0x11074: 84,
+ 0x1107f: 84,
+ 0x11080: 84,
+ 0x11081: 84,
+ 0x110b3: 84,
+ 0x110b4: 84,
+ 0x110b5: 84,
+ 0x110b6: 84,
+ 0x110b9: 84,
+ 0x110ba: 84,
+ 0x110c2: 84,
+ 0x11100: 84,
+ 0x11101: 84,
+ 0x11102: 84,
+ 0x11127: 84,
+ 0x11128: 84,
+ 0x11129: 84,
+ 0x1112a: 84,
+ 0x1112b: 84,
+ 0x1112d: 84,
+ 0x1112e: 84,
+ 0x1112f: 84,
+ 0x11130: 84,
+ 0x11131: 84,
+ 0x11132: 84,
+ 0x11133: 84,
+ 0x11134: 84,
+ 0x11173: 84,
+ 0x11180: 84,
+ 0x11181: 84,
+ 0x111b6: 84,
+ 0x111b7: 84,
+ 0x111b8: 84,
+ 0x111b9: 84,
+ 0x111ba: 84,
+ 0x111bb: 84,
+ 0x111bc: 84,
+ 0x111bd: 84,
+ 0x111be: 84,
+ 0x111c9: 84,
+ 0x111ca: 84,
+ 0x111cb: 84,
+ 0x111cc: 84,
+ 0x111cf: 84,
+ 0x1122f: 84,
+ 0x11230: 84,
+ 0x11231: 84,
+ 0x11234: 84,
+ 0x11236: 84,
+ 0x11237: 84,
+ 0x1123e: 84,
+ 0x11241: 84,
+ 0x112df: 84,
+ 0x112e3: 84,
+ 0x112e4: 84,
+ 0x112e5: 84,
+ 0x112e6: 84,
+ 0x112e7: 84,
+ 0x112e8: 84,
+ 0x112e9: 84,
+ 0x112ea: 84,
+ 0x11300: 84,
+ 0x11301: 84,
+ 0x1133b: 84,
+ 0x1133c: 84,
+ 0x11340: 84,
+ 0x11366: 84,
+ 0x11367: 84,
+ 0x11368: 84,
+ 0x11369: 84,
+ 0x1136a: 84,
+ 0x1136b: 84,
+ 0x1136c: 84,
+ 0x11370: 84,
+ 0x11371: 84,
+ 0x11372: 84,
+ 0x11373: 84,
+ 0x11374: 84,
+ 0x11438: 84,
+ 0x11439: 84,
+ 0x1143a: 84,
+ 0x1143b: 84,
+ 0x1143c: 84,
+ 0x1143d: 84,
+ 0x1143e: 84,
+ 0x1143f: 84,
+ 0x11442: 84,
+ 0x11443: 84,
+ 0x11444: 84,
+ 0x11446: 84,
+ 0x1145e: 84,
+ 0x114b3: 84,
+ 0x114b4: 84,
+ 0x114b5: 84,
+ 0x114b6: 84,
+ 0x114b7: 84,
+ 0x114b8: 84,
+ 0x114ba: 84,
+ 0x114bf: 84,
+ 0x114c0: 84,
+ 0x114c2: 84,
+ 0x114c3: 84,
+ 0x115b2: 84,
+ 0x115b3: 84,
+ 0x115b4: 84,
+ 0x115b5: 84,
+ 0x115bc: 84,
+ 0x115bd: 84,
+ 0x115bf: 84,
+ 0x115c0: 84,
+ 0x115dc: 84,
+ 0x115dd: 84,
+ 0x11633: 84,
+ 0x11634: 84,
+ 0x11635: 84,
+ 0x11636: 84,
+ 0x11637: 84,
+ 0x11638: 84,
+ 0x11639: 84,
+ 0x1163a: 84,
+ 0x1163d: 84,
+ 0x1163f: 84,
+ 0x11640: 84,
+ 0x116ab: 84,
+ 0x116ad: 84,
+ 0x116b0: 84,
+ 0x116b1: 84,
+ 0x116b2: 84,
+ 0x116b3: 84,
+ 0x116b4: 84,
+ 0x116b5: 84,
+ 0x116b7: 84,
+ 0x1171d: 84,
+ 0x1171e: 84,
+ 0x1171f: 84,
+ 0x11722: 84,
+ 0x11723: 84,
+ 0x11724: 84,
+ 0x11725: 84,
+ 0x11727: 84,
+ 0x11728: 84,
+ 0x11729: 84,
+ 0x1172a: 84,
+ 0x1172b: 84,
+ 0x1182f: 84,
+ 0x11830: 84,
+ 0x11831: 84,
+ 0x11832: 84,
+ 0x11833: 84,
+ 0x11834: 84,
+ 0x11835: 84,
+ 0x11836: 84,
+ 0x11837: 84,
+ 0x11839: 84,
+ 0x1183a: 84,
+ 0x1193b: 84,
+ 0x1193c: 84,
+ 0x1193e: 84,
+ 0x11943: 84,
+ 0x119d4: 84,
+ 0x119d5: 84,
+ 0x119d6: 84,
+ 0x119d7: 84,
+ 0x119da: 84,
+ 0x119db: 84,
+ 0x119e0: 84,
+ 0x11a01: 84,
+ 0x11a02: 84,
+ 0x11a03: 84,
+ 0x11a04: 84,
+ 0x11a05: 84,
+ 0x11a06: 84,
+ 0x11a07: 84,
+ 0x11a08: 84,
+ 0x11a09: 84,
+ 0x11a0a: 84,
+ 0x11a33: 84,
+ 0x11a34: 84,
+ 0x11a35: 84,
+ 0x11a36: 84,
+ 0x11a37: 84,
+ 0x11a38: 84,
+ 0x11a3b: 84,
+ 0x11a3c: 84,
+ 0x11a3d: 84,
+ 0x11a3e: 84,
+ 0x11a47: 84,
+ 0x11a51: 84,
+ 0x11a52: 84,
+ 0x11a53: 84,
+ 0x11a54: 84,
+ 0x11a55: 84,
+ 0x11a56: 84,
+ 0x11a59: 84,
+ 0x11a5a: 84,
+ 0x11a5b: 84,
+ 0x11a8a: 84,
+ 0x11a8b: 84,
+ 0x11a8c: 84,
+ 0x11a8d: 84,
+ 0x11a8e: 84,
+ 0x11a8f: 84,
+ 0x11a90: 84,
+ 0x11a91: 84,
+ 0x11a92: 84,
+ 0x11a93: 84,
+ 0x11a94: 84,
+ 0x11a95: 84,
+ 0x11a96: 84,
+ 0x11a98: 84,
+ 0x11a99: 84,
+ 0x11c30: 84,
+ 0x11c31: 84,
+ 0x11c32: 84,
+ 0x11c33: 84,
+ 0x11c34: 84,
+ 0x11c35: 84,
+ 0x11c36: 84,
+ 0x11c38: 84,
+ 0x11c39: 84,
+ 0x11c3a: 84,
+ 0x11c3b: 84,
+ 0x11c3c: 84,
+ 0x11c3d: 84,
+ 0x11c3f: 84,
+ 0x11c92: 84,
+ 0x11c93: 84,
+ 0x11c94: 84,
+ 0x11c95: 84,
+ 0x11c96: 84,
+ 0x11c97: 84,
+ 0x11c98: 84,
+ 0x11c99: 84,
+ 0x11c9a: 84,
+ 0x11c9b: 84,
+ 0x11c9c: 84,
+ 0x11c9d: 84,
+ 0x11c9e: 84,
+ 0x11c9f: 84,
+ 0x11ca0: 84,
+ 0x11ca1: 84,
+ 0x11ca2: 84,
+ 0x11ca3: 84,
+ 0x11ca4: 84,
+ 0x11ca5: 84,
+ 0x11ca6: 84,
+ 0x11ca7: 84,
+ 0x11caa: 84,
+ 0x11cab: 84,
+ 0x11cac: 84,
+ 0x11cad: 84,
+ 0x11cae: 84,
+ 0x11caf: 84,
+ 0x11cb0: 84,
+ 0x11cb2: 84,
+ 0x11cb3: 84,
+ 0x11cb5: 84,
+ 0x11cb6: 84,
+ 0x11d31: 84,
+ 0x11d32: 84,
+ 0x11d33: 84,
+ 0x11d34: 84,
+ 0x11d35: 84,
+ 0x11d36: 84,
+ 0x11d3a: 84,
+ 0x11d3c: 84,
+ 0x11d3d: 84,
+ 0x11d3f: 84,
+ 0x11d40: 84,
+ 0x11d41: 84,
+ 0x11d42: 84,
+ 0x11d43: 84,
+ 0x11d44: 84,
+ 0x11d45: 84,
+ 0x11d47: 84,
+ 0x11d90: 84,
+ 0x11d91: 84,
+ 0x11d95: 84,
+ 0x11d97: 84,
+ 0x11ef3: 84,
+ 0x11ef4: 84,
+ 0x11f00: 84,
+ 0x11f01: 84,
+ 0x11f36: 84,
+ 0x11f37: 84,
+ 0x11f38: 84,
+ 0x11f39: 84,
+ 0x11f3a: 84,
+ 0x11f40: 84,
+ 0x11f42: 84,
+ 0x13430: 84,
+ 0x13431: 84,
+ 0x13432: 84,
+ 0x13433: 84,
+ 0x13434: 84,
+ 0x13435: 84,
+ 0x13436: 84,
+ 0x13437: 84,
+ 0x13438: 84,
+ 0x13439: 84,
+ 0x1343a: 84,
+ 0x1343b: 84,
+ 0x1343c: 84,
+ 0x1343d: 84,
+ 0x1343e: 84,
+ 0x1343f: 84,
+ 0x13440: 84,
+ 0x13447: 84,
+ 0x13448: 84,
+ 0x13449: 84,
+ 0x1344a: 84,
+ 0x1344b: 84,
+ 0x1344c: 84,
+ 0x1344d: 84,
+ 0x1344e: 84,
+ 0x1344f: 84,
+ 0x13450: 84,
+ 0x13451: 84,
+ 0x13452: 84,
+ 0x13453: 84,
+ 0x13454: 84,
+ 0x13455: 84,
+ 0x16af0: 84,
+ 0x16af1: 84,
+ 0x16af2: 84,
+ 0x16af3: 84,
+ 0x16af4: 84,
+ 0x16b30: 84,
+ 0x16b31: 84,
+ 0x16b32: 84,
+ 0x16b33: 84,
+ 0x16b34: 84,
+ 0x16b35: 84,
+ 0x16b36: 84,
+ 0x16f4f: 84,
+ 0x16f8f: 84,
+ 0x16f90: 84,
+ 0x16f91: 84,
+ 0x16f92: 84,
+ 0x16fe4: 84,
+ 0x1bc9d: 84,
+ 0x1bc9e: 84,
+ 0x1bca0: 84,
+ 0x1bca1: 84,
+ 0x1bca2: 84,
+ 0x1bca3: 84,
+ 0x1cf00: 84,
+ 0x1cf01: 84,
+ 0x1cf02: 84,
+ 0x1cf03: 84,
+ 0x1cf04: 84,
+ 0x1cf05: 84,
+ 0x1cf06: 84,
+ 0x1cf07: 84,
+ 0x1cf08: 84,
+ 0x1cf09: 84,
+ 0x1cf0a: 84,
+ 0x1cf0b: 84,
+ 0x1cf0c: 84,
+ 0x1cf0d: 84,
+ 0x1cf0e: 84,
+ 0x1cf0f: 84,
+ 0x1cf10: 84,
+ 0x1cf11: 84,
+ 0x1cf12: 84,
+ 0x1cf13: 84,
+ 0x1cf14: 84,
+ 0x1cf15: 84,
+ 0x1cf16: 84,
+ 0x1cf17: 84,
+ 0x1cf18: 84,
+ 0x1cf19: 84,
+ 0x1cf1a: 84,
+ 0x1cf1b: 84,
+ 0x1cf1c: 84,
+ 0x1cf1d: 84,
+ 0x1cf1e: 84,
+ 0x1cf1f: 84,
+ 0x1cf20: 84,
+ 0x1cf21: 84,
+ 0x1cf22: 84,
+ 0x1cf23: 84,
+ 0x1cf24: 84,
+ 0x1cf25: 84,
+ 0x1cf26: 84,
+ 0x1cf27: 84,
+ 0x1cf28: 84,
+ 0x1cf29: 84,
+ 0x1cf2a: 84,
+ 0x1cf2b: 84,
+ 0x1cf2c: 84,
+ 0x1cf2d: 84,
+ 0x1cf30: 84,
+ 0x1cf31: 84,
+ 0x1cf32: 84,
+ 0x1cf33: 84,
+ 0x1cf34: 84,
+ 0x1cf35: 84,
+ 0x1cf36: 84,
+ 0x1cf37: 84,
+ 0x1cf38: 84,
+ 0x1cf39: 84,
+ 0x1cf3a: 84,
+ 0x1cf3b: 84,
+ 0x1cf3c: 84,
+ 0x1cf3d: 84,
+ 0x1cf3e: 84,
+ 0x1cf3f: 84,
+ 0x1cf40: 84,
+ 0x1cf41: 84,
+ 0x1cf42: 84,
+ 0x1cf43: 84,
+ 0x1cf44: 84,
+ 0x1cf45: 84,
+ 0x1cf46: 84,
+ 0x1d167: 84,
+ 0x1d168: 84,
+ 0x1d169: 84,
+ 0x1d173: 84,
+ 0x1d174: 84,
+ 0x1d175: 84,
+ 0x1d176: 84,
+ 0x1d177: 84,
+ 0x1d178: 84,
+ 0x1d179: 84,
+ 0x1d17a: 84,
+ 0x1d17b: 84,
+ 0x1d17c: 84,
+ 0x1d17d: 84,
+ 0x1d17e: 84,
+ 0x1d17f: 84,
+ 0x1d180: 84,
+ 0x1d181: 84,
+ 0x1d182: 84,
+ 0x1d185: 84,
+ 0x1d186: 84,
+ 0x1d187: 84,
+ 0x1d188: 84,
+ 0x1d189: 84,
+ 0x1d18a: 84,
+ 0x1d18b: 84,
+ 0x1d1aa: 84,
+ 0x1d1ab: 84,
+ 0x1d1ac: 84,
+ 0x1d1ad: 84,
+ 0x1d242: 84,
+ 0x1d243: 84,
+ 0x1d244: 84,
+ 0x1da00: 84,
+ 0x1da01: 84,
+ 0x1da02: 84,
+ 0x1da03: 84,
+ 0x1da04: 84,
+ 0x1da05: 84,
+ 0x1da06: 84,
+ 0x1da07: 84,
+ 0x1da08: 84,
+ 0x1da09: 84,
+ 0x1da0a: 84,
+ 0x1da0b: 84,
+ 0x1da0c: 84,
+ 0x1da0d: 84,
+ 0x1da0e: 84,
+ 0x1da0f: 84,
+ 0x1da10: 84,
+ 0x1da11: 84,
+ 0x1da12: 84,
+ 0x1da13: 84,
+ 0x1da14: 84,
+ 0x1da15: 84,
+ 0x1da16: 84,
+ 0x1da17: 84,
+ 0x1da18: 84,
+ 0x1da19: 84,
+ 0x1da1a: 84,
+ 0x1da1b: 84,
+ 0x1da1c: 84,
+ 0x1da1d: 84,
+ 0x1da1e: 84,
+ 0x1da1f: 84,
+ 0x1da20: 84,
+ 0x1da21: 84,
+ 0x1da22: 84,
+ 0x1da23: 84,
+ 0x1da24: 84,
+ 0x1da25: 84,
+ 0x1da26: 84,
+ 0x1da27: 84,
+ 0x1da28: 84,
+ 0x1da29: 84,
+ 0x1da2a: 84,
+ 0x1da2b: 84,
+ 0x1da2c: 84,
+ 0x1da2d: 84,
+ 0x1da2e: 84,
+ 0x1da2f: 84,
+ 0x1da30: 84,
+ 0x1da31: 84,
+ 0x1da32: 84,
+ 0x1da33: 84,
+ 0x1da34: 84,
+ 0x1da35: 84,
+ 0x1da36: 84,
+ 0x1da3b: 84,
+ 0x1da3c: 84,
+ 0x1da3d: 84,
+ 0x1da3e: 84,
+ 0x1da3f: 84,
+ 0x1da40: 84,
+ 0x1da41: 84,
+ 0x1da42: 84,
+ 0x1da43: 84,
+ 0x1da44: 84,
+ 0x1da45: 84,
+ 0x1da46: 84,
+ 0x1da47: 84,
+ 0x1da48: 84,
+ 0x1da49: 84,
+ 0x1da4a: 84,
+ 0x1da4b: 84,
+ 0x1da4c: 84,
+ 0x1da4d: 84,
+ 0x1da4e: 84,
+ 0x1da4f: 84,
+ 0x1da50: 84,
+ 0x1da51: 84,
+ 0x1da52: 84,
+ 0x1da53: 84,
+ 0x1da54: 84,
+ 0x1da55: 84,
+ 0x1da56: 84,
+ 0x1da57: 84,
+ 0x1da58: 84,
+ 0x1da59: 84,
+ 0x1da5a: 84,
+ 0x1da5b: 84,
+ 0x1da5c: 84,
+ 0x1da5d: 84,
+ 0x1da5e: 84,
+ 0x1da5f: 84,
+ 0x1da60: 84,
+ 0x1da61: 84,
+ 0x1da62: 84,
+ 0x1da63: 84,
+ 0x1da64: 84,
+ 0x1da65: 84,
+ 0x1da66: 84,
+ 0x1da67: 84,
+ 0x1da68: 84,
+ 0x1da69: 84,
+ 0x1da6a: 84,
+ 0x1da6b: 84,
+ 0x1da6c: 84,
+ 0x1da75: 84,
+ 0x1da84: 84,
+ 0x1da9b: 84,
+ 0x1da9c: 84,
+ 0x1da9d: 84,
+ 0x1da9e: 84,
+ 0x1da9f: 84,
+ 0x1daa1: 84,
+ 0x1daa2: 84,
+ 0x1daa3: 84,
+ 0x1daa4: 84,
+ 0x1daa5: 84,
+ 0x1daa6: 84,
+ 0x1daa7: 84,
+ 0x1daa8: 84,
+ 0x1daa9: 84,
+ 0x1daaa: 84,
+ 0x1daab: 84,
+ 0x1daac: 84,
+ 0x1daad: 84,
+ 0x1daae: 84,
+ 0x1daaf: 84,
+ 0x1e000: 84,
+ 0x1e001: 84,
+ 0x1e002: 84,
+ 0x1e003: 84,
+ 0x1e004: 84,
+ 0x1e005: 84,
+ 0x1e006: 84,
+ 0x1e008: 84,
+ 0x1e009: 84,
+ 0x1e00a: 84,
+ 0x1e00b: 84,
+ 0x1e00c: 84,
+ 0x1e00d: 84,
+ 0x1e00e: 84,
+ 0x1e00f: 84,
+ 0x1e010: 84,
+ 0x1e011: 84,
+ 0x1e012: 84,
+ 0x1e013: 84,
+ 0x1e014: 84,
+ 0x1e015: 84,
+ 0x1e016: 84,
+ 0x1e017: 84,
+ 0x1e018: 84,
+ 0x1e01b: 84,
+ 0x1e01c: 84,
+ 0x1e01d: 84,
+ 0x1e01e: 84,
+ 0x1e01f: 84,
+ 0x1e020: 84,
+ 0x1e021: 84,
+ 0x1e023: 84,
+ 0x1e024: 84,
+ 0x1e026: 84,
+ 0x1e027: 84,
+ 0x1e028: 84,
+ 0x1e029: 84,
+ 0x1e02a: 84,
+ 0x1e08f: 84,
+ 0x1e130: 84,
+ 0x1e131: 84,
+ 0x1e132: 84,
+ 0x1e133: 84,
+ 0x1e134: 84,
+ 0x1e135: 84,
+ 0x1e136: 84,
+ 0x1e2ae: 84,
+ 0x1e2ec: 84,
+ 0x1e2ed: 84,
+ 0x1e2ee: 84,
+ 0x1e2ef: 84,
+ 0x1e4ec: 84,
+ 0x1e4ed: 84,
+ 0x1e4ee: 84,
+ 0x1e4ef: 84,
+ 0x1e8d0: 84,
+ 0x1e8d1: 84,
+ 0x1e8d2: 84,
+ 0x1e8d3: 84,
+ 0x1e8d4: 84,
+ 0x1e8d5: 84,
+ 0x1e8d6: 84,
0x1e900: 68,
0x1e901: 68,
0x1e902: 68,
@@ -866,7 +2680,351 @@ joining_types = {
0x1e941: 68,
0x1e942: 68,
0x1e943: 68,
+ 0x1e944: 84,
+ 0x1e945: 84,
+ 0x1e946: 84,
+ 0x1e947: 84,
+ 0x1e948: 84,
+ 0x1e949: 84,
+ 0x1e94a: 84,
0x1e94b: 84,
+ 0xe0001: 84,
+ 0xe0020: 84,
+ 0xe0021: 84,
+ 0xe0022: 84,
+ 0xe0023: 84,
+ 0xe0024: 84,
+ 0xe0025: 84,
+ 0xe0026: 84,
+ 0xe0027: 84,
+ 0xe0028: 84,
+ 0xe0029: 84,
+ 0xe002a: 84,
+ 0xe002b: 84,
+ 0xe002c: 84,
+ 0xe002d: 84,
+ 0xe002e: 84,
+ 0xe002f: 84,
+ 0xe0030: 84,
+ 0xe0031: 84,
+ 0xe0032: 84,
+ 0xe0033: 84,
+ 0xe0034: 84,
+ 0xe0035: 84,
+ 0xe0036: 84,
+ 0xe0037: 84,
+ 0xe0038: 84,
+ 0xe0039: 84,
+ 0xe003a: 84,
+ 0xe003b: 84,
+ 0xe003c: 84,
+ 0xe003d: 84,
+ 0xe003e: 84,
+ 0xe003f: 84,
+ 0xe0040: 84,
+ 0xe0041: 84,
+ 0xe0042: 84,
+ 0xe0043: 84,
+ 0xe0044: 84,
+ 0xe0045: 84,
+ 0xe0046: 84,
+ 0xe0047: 84,
+ 0xe0048: 84,
+ 0xe0049: 84,
+ 0xe004a: 84,
+ 0xe004b: 84,
+ 0xe004c: 84,
+ 0xe004d: 84,
+ 0xe004e: 84,
+ 0xe004f: 84,
+ 0xe0050: 84,
+ 0xe0051: 84,
+ 0xe0052: 84,
+ 0xe0053: 84,
+ 0xe0054: 84,
+ 0xe0055: 84,
+ 0xe0056: 84,
+ 0xe0057: 84,
+ 0xe0058: 84,
+ 0xe0059: 84,
+ 0xe005a: 84,
+ 0xe005b: 84,
+ 0xe005c: 84,
+ 0xe005d: 84,
+ 0xe005e: 84,
+ 0xe005f: 84,
+ 0xe0060: 84,
+ 0xe0061: 84,
+ 0xe0062: 84,
+ 0xe0063: 84,
+ 0xe0064: 84,
+ 0xe0065: 84,
+ 0xe0066: 84,
+ 0xe0067: 84,
+ 0xe0068: 84,
+ 0xe0069: 84,
+ 0xe006a: 84,
+ 0xe006b: 84,
+ 0xe006c: 84,
+ 0xe006d: 84,
+ 0xe006e: 84,
+ 0xe006f: 84,
+ 0xe0070: 84,
+ 0xe0071: 84,
+ 0xe0072: 84,
+ 0xe0073: 84,
+ 0xe0074: 84,
+ 0xe0075: 84,
+ 0xe0076: 84,
+ 0xe0077: 84,
+ 0xe0078: 84,
+ 0xe0079: 84,
+ 0xe007a: 84,
+ 0xe007b: 84,
+ 0xe007c: 84,
+ 0xe007d: 84,
+ 0xe007e: 84,
+ 0xe007f: 84,
+ 0xe0100: 84,
+ 0xe0101: 84,
+ 0xe0102: 84,
+ 0xe0103: 84,
+ 0xe0104: 84,
+ 0xe0105: 84,
+ 0xe0106: 84,
+ 0xe0107: 84,
+ 0xe0108: 84,
+ 0xe0109: 84,
+ 0xe010a: 84,
+ 0xe010b: 84,
+ 0xe010c: 84,
+ 0xe010d: 84,
+ 0xe010e: 84,
+ 0xe010f: 84,
+ 0xe0110: 84,
+ 0xe0111: 84,
+ 0xe0112: 84,
+ 0xe0113: 84,
+ 0xe0114: 84,
+ 0xe0115: 84,
+ 0xe0116: 84,
+ 0xe0117: 84,
+ 0xe0118: 84,
+ 0xe0119: 84,
+ 0xe011a: 84,
+ 0xe011b: 84,
+ 0xe011c: 84,
+ 0xe011d: 84,
+ 0xe011e: 84,
+ 0xe011f: 84,
+ 0xe0120: 84,
+ 0xe0121: 84,
+ 0xe0122: 84,
+ 0xe0123: 84,
+ 0xe0124: 84,
+ 0xe0125: 84,
+ 0xe0126: 84,
+ 0xe0127: 84,
+ 0xe0128: 84,
+ 0xe0129: 84,
+ 0xe012a: 84,
+ 0xe012b: 84,
+ 0xe012c: 84,
+ 0xe012d: 84,
+ 0xe012e: 84,
+ 0xe012f: 84,
+ 0xe0130: 84,
+ 0xe0131: 84,
+ 0xe0132: 84,
+ 0xe0133: 84,
+ 0xe0134: 84,
+ 0xe0135: 84,
+ 0xe0136: 84,
+ 0xe0137: 84,
+ 0xe0138: 84,
+ 0xe0139: 84,
+ 0xe013a: 84,
+ 0xe013b: 84,
+ 0xe013c: 84,
+ 0xe013d: 84,
+ 0xe013e: 84,
+ 0xe013f: 84,
+ 0xe0140: 84,
+ 0xe0141: 84,
+ 0xe0142: 84,
+ 0xe0143: 84,
+ 0xe0144: 84,
+ 0xe0145: 84,
+ 0xe0146: 84,
+ 0xe0147: 84,
+ 0xe0148: 84,
+ 0xe0149: 84,
+ 0xe014a: 84,
+ 0xe014b: 84,
+ 0xe014c: 84,
+ 0xe014d: 84,
+ 0xe014e: 84,
+ 0xe014f: 84,
+ 0xe0150: 84,
+ 0xe0151: 84,
+ 0xe0152: 84,
+ 0xe0153: 84,
+ 0xe0154: 84,
+ 0xe0155: 84,
+ 0xe0156: 84,
+ 0xe0157: 84,
+ 0xe0158: 84,
+ 0xe0159: 84,
+ 0xe015a: 84,
+ 0xe015b: 84,
+ 0xe015c: 84,
+ 0xe015d: 84,
+ 0xe015e: 84,
+ 0xe015f: 84,
+ 0xe0160: 84,
+ 0xe0161: 84,
+ 0xe0162: 84,
+ 0xe0163: 84,
+ 0xe0164: 84,
+ 0xe0165: 84,
+ 0xe0166: 84,
+ 0xe0167: 84,
+ 0xe0168: 84,
+ 0xe0169: 84,
+ 0xe016a: 84,
+ 0xe016b: 84,
+ 0xe016c: 84,
+ 0xe016d: 84,
+ 0xe016e: 84,
+ 0xe016f: 84,
+ 0xe0170: 84,
+ 0xe0171: 84,
+ 0xe0172: 84,
+ 0xe0173: 84,
+ 0xe0174: 84,
+ 0xe0175: 84,
+ 0xe0176: 84,
+ 0xe0177: 84,
+ 0xe0178: 84,
+ 0xe0179: 84,
+ 0xe017a: 84,
+ 0xe017b: 84,
+ 0xe017c: 84,
+ 0xe017d: 84,
+ 0xe017e: 84,
+ 0xe017f: 84,
+ 0xe0180: 84,
+ 0xe0181: 84,
+ 0xe0182: 84,
+ 0xe0183: 84,
+ 0xe0184: 84,
+ 0xe0185: 84,
+ 0xe0186: 84,
+ 0xe0187: 84,
+ 0xe0188: 84,
+ 0xe0189: 84,
+ 0xe018a: 84,
+ 0xe018b: 84,
+ 0xe018c: 84,
+ 0xe018d: 84,
+ 0xe018e: 84,
+ 0xe018f: 84,
+ 0xe0190: 84,
+ 0xe0191: 84,
+ 0xe0192: 84,
+ 0xe0193: 84,
+ 0xe0194: 84,
+ 0xe0195: 84,
+ 0xe0196: 84,
+ 0xe0197: 84,
+ 0xe0198: 84,
+ 0xe0199: 84,
+ 0xe019a: 84,
+ 0xe019b: 84,
+ 0xe019c: 84,
+ 0xe019d: 84,
+ 0xe019e: 84,
+ 0xe019f: 84,
+ 0xe01a0: 84,
+ 0xe01a1: 84,
+ 0xe01a2: 84,
+ 0xe01a3: 84,
+ 0xe01a4: 84,
+ 0xe01a5: 84,
+ 0xe01a6: 84,
+ 0xe01a7: 84,
+ 0xe01a8: 84,
+ 0xe01a9: 84,
+ 0xe01aa: 84,
+ 0xe01ab: 84,
+ 0xe01ac: 84,
+ 0xe01ad: 84,
+ 0xe01ae: 84,
+ 0xe01af: 84,
+ 0xe01b0: 84,
+ 0xe01b1: 84,
+ 0xe01b2: 84,
+ 0xe01b3: 84,
+ 0xe01b4: 84,
+ 0xe01b5: 84,
+ 0xe01b6: 84,
+ 0xe01b7: 84,
+ 0xe01b8: 84,
+ 0xe01b9: 84,
+ 0xe01ba: 84,
+ 0xe01bb: 84,
+ 0xe01bc: 84,
+ 0xe01bd: 84,
+ 0xe01be: 84,
+ 0xe01bf: 84,
+ 0xe01c0: 84,
+ 0xe01c1: 84,
+ 0xe01c2: 84,
+ 0xe01c3: 84,
+ 0xe01c4: 84,
+ 0xe01c5: 84,
+ 0xe01c6: 84,
+ 0xe01c7: 84,
+ 0xe01c8: 84,
+ 0xe01c9: 84,
+ 0xe01ca: 84,
+ 0xe01cb: 84,
+ 0xe01cc: 84,
+ 0xe01cd: 84,
+ 0xe01ce: 84,
+ 0xe01cf: 84,
+ 0xe01d0: 84,
+ 0xe01d1: 84,
+ 0xe01d2: 84,
+ 0xe01d3: 84,
+ 0xe01d4: 84,
+ 0xe01d5: 84,
+ 0xe01d6: 84,
+ 0xe01d7: 84,
+ 0xe01d8: 84,
+ 0xe01d9: 84,
+ 0xe01da: 84,
+ 0xe01db: 84,
+ 0xe01dc: 84,
+ 0xe01dd: 84,
+ 0xe01de: 84,
+ 0xe01df: 84,
+ 0xe01e0: 84,
+ 0xe01e1: 84,
+ 0xe01e2: 84,
+ 0xe01e3: 84,
+ 0xe01e4: 84,
+ 0xe01e5: 84,
+ 0xe01e6: 84,
+ 0xe01e7: 84,
+ 0xe01e8: 84,
+ 0xe01e9: 84,
+ 0xe01ea: 84,
+ 0xe01eb: 84,
+ 0xe01ec: 84,
+ 0xe01ed: 84,
+ 0xe01ee: 84,
+ 0xe01ef: 84,
}
codepoint_classes = {
'PVALID': (
@@ -1168,9 +3326,9 @@ codepoint_classes = {
0x8000000082e,
0x8400000085c,
0x8600000086b,
- 0x8a0000008b5,
- 0x8b6000008c8,
- 0x8d3000008e2,
+ 0x87000000888,
+ 0x8890000088f,
+ 0x898000008e2,
0x8e300000958,
0x96000000964,
0x96600000970,
@@ -1252,11 +3410,12 @@ codepoint_classes = {
0xc0e00000c11,
0xc1200000c29,
0xc2a00000c3a,
- 0xc3d00000c45,
+ 0xc3c00000c45,
0xc4600000c49,
0xc4a00000c4e,
0xc5500000c57,
0xc5800000c5b,
+ 0xc5d00000c5e,
0xc6000000c64,
0xc6600000c70,
0xc8000000c84,
@@ -1269,10 +3428,10 @@ codepoint_classes = {
0xcc600000cc9,
0xcca00000cce,
0xcd500000cd7,
- 0xcde00000cdf,
+ 0xcdd00000cdf,
0xce000000ce4,
0xce600000cf0,
- 0xcf100000cf3,
+ 0xcf100000cf4,
0xd0000000d0d,
0xd0e00000d11,
0xd1200000d45,
@@ -1307,7 +3466,7 @@ codepoint_classes = {
0xeb400000ebe,
0xec000000ec5,
0xec600000ec7,
- 0xec800000ece,
+ 0xec800000ecf,
0xed000000eda,
0xede00000ee0,
0xf0000000f01,
@@ -1366,9 +3525,8 @@ codepoint_classes = {
0x16810000169b,
0x16a0000016eb,
0x16f1000016f9,
- 0x17000000170d,
- 0x170e00001715,
- 0x172000001735,
+ 0x170000001716,
+ 0x171f00001735,
0x174000001754,
0x17600000176d,
0x176e00001771,
@@ -1397,8 +3555,8 @@ codepoint_classes = {
0x1a9000001a9a,
0x1aa700001aa8,
0x1ab000001abe,
- 0x1abf00001ac1,
- 0x1b0000001b4c,
+ 0x1abf00001acf,
+ 0x1b0000001b4d,
0x1b5000001b5a,
0x1b6b00001b74,
0x1b8000001bf4,
@@ -1413,8 +3571,7 @@ codepoint_classes = {
0x1d4e00001d4f,
0x1d6b00001d78,
0x1d7900001d9b,
- 0x1dc000001dfa,
- 0x1dfb00001e00,
+ 0x1dc000001e00,
0x1e0100001e02,
0x1e0300001e04,
0x1e0500001e06,
@@ -1563,7 +3720,7 @@ codepoint_classes = {
0x1ff600001ff7,
0x214e0000214f,
0x218400002185,
- 0x2c3000002c5f,
+ 0x2c3000002c60,
0x2c6100002c62,
0x2c6500002c67,
0x2c6800002c69,
@@ -1652,8 +3809,7 @@ codepoint_classes = {
0x31a0000031c0,
0x31f000003200,
0x340000004dc0,
- 0x4e0000009ffd,
- 0xa0000000a48d,
+ 0x4e000000a48d,
0xa4d00000a4fe,
0xa5000000a60d,
0xa6100000a62c,
@@ -1766,9 +3922,15 @@ codepoint_classes = {
0xa7bb0000a7bc,
0xa7bd0000a7be,
0xa7bf0000a7c0,
+ 0xa7c10000a7c2,
0xa7c30000a7c4,
0xa7c80000a7c9,
0xa7ca0000a7cb,
+ 0xa7d10000a7d2,
+ 0xa7d30000a7d4,
+ 0xa7d50000a7d6,
+ 0xa7d70000a7d8,
+ 0xa7d90000a7da,
0xa7f60000a7f8,
0xa7fa0000a828,
0xa82c0000a82d,
@@ -1796,7 +3958,7 @@ codepoint_classes = {
0xab200000ab27,
0xab280000ab2f,
0xab300000ab5b,
- 0xab600000ab6a,
+ 0xab600000ab69,
0xabc00000abeb,
0xabec0000abee,
0xabf00000abfa,
@@ -1834,9 +3996,14 @@ codepoint_classes = {
0x104d8000104fc,
0x1050000010528,
0x1053000010564,
+ 0x10597000105a2,
+ 0x105a3000105b2,
+ 0x105b3000105ba,
+ 0x105bb000105bd,
0x1060000010737,
0x1074000010756,
0x1076000010768,
+ 0x1078000010781,
0x1080000010806,
0x1080800010809,
0x1080a00010836,
@@ -1873,14 +4040,16 @@ codepoint_classes = {
0x10e8000010eaa,
0x10eab00010ead,
0x10eb000010eb2,
- 0x10f0000010f1d,
+ 0x10efd00010f1d,
0x10f2700010f28,
0x10f3000010f51,
+ 0x10f7000010f86,
0x10fb000010fc5,
0x10fe000010ff7,
0x1100000011047,
- 0x1106600011070,
+ 0x1106600011076,
0x1107f000110bb,
+ 0x110c2000110c3,
0x110d0000110e9,
0x110f0000110fa,
0x1110000011135,
@@ -1894,7 +4063,7 @@ codepoint_classes = {
0x111dc000111dd,
0x1120000011212,
0x1121300011238,
- 0x1123e0001123f,
+ 0x1123e00011242,
0x1128000011287,
0x1128800011289,
0x1128a0001128e,
@@ -1934,6 +4103,7 @@ codepoint_classes = {
0x117000001171b,
0x1171d0001172c,
0x117300001173a,
+ 0x1174000011747,
0x118000001183b,
0x118c0000118ea,
0x118ff00011907,
@@ -1952,7 +4122,7 @@ codepoint_classes = {
0x11a4700011a48,
0x11a5000011a9a,
0x11a9d00011a9e,
- 0x11ac000011af9,
+ 0x11ab000011af9,
0x11c0000011c09,
0x11c0a00011c37,
0x11c3800011c41,
@@ -1974,14 +4144,22 @@ codepoint_classes = {
0x11d9300011d99,
0x11da000011daa,
0x11ee000011ef7,
+ 0x11f0000011f11,
+ 0x11f1200011f3b,
+ 0x11f3e00011f43,
+ 0x11f5000011f5a,
0x11fb000011fb1,
0x120000001239a,
0x1248000012544,
- 0x130000001342f,
+ 0x12f9000012ff1,
+ 0x1300000013430,
+ 0x1344000013456,
0x1440000014647,
0x1680000016a39,
0x16a4000016a5f,
0x16a6000016a6a,
+ 0x16a7000016abf,
+ 0x16ac000016aca,
0x16ad000016aee,
0x16af000016af5,
0x16b0000016b37,
@@ -1999,8 +4177,13 @@ codepoint_classes = {
0x17000000187f8,
0x1880000018cd6,
0x18d0000018d09,
- 0x1b0000001b11f,
+ 0x1aff00001aff4,
+ 0x1aff50001affc,
+ 0x1affd0001afff,
+ 0x1b0000001b123,
+ 0x1b1320001b133,
0x1b1500001b153,
+ 0x1b1550001b156,
0x1b1640001b168,
0x1b1700001b2fc,
0x1bc000001bc6b,
@@ -2008,33 +4191,45 @@ codepoint_classes = {
0x1bc800001bc89,
0x1bc900001bc9a,
0x1bc9d0001bc9f,
+ 0x1cf000001cf2e,
+ 0x1cf300001cf47,
0x1da000001da37,
0x1da3b0001da6d,
0x1da750001da76,
0x1da840001da85,
0x1da9b0001daa0,
0x1daa10001dab0,
+ 0x1df000001df1f,
+ 0x1df250001df2b,
0x1e0000001e007,
0x1e0080001e019,
0x1e01b0001e022,
0x1e0230001e025,
0x1e0260001e02b,
+ 0x1e08f0001e090,
0x1e1000001e12d,
0x1e1300001e13e,
0x1e1400001e14a,
0x1e14e0001e14f,
+ 0x1e2900001e2af,
0x1e2c00001e2fa,
+ 0x1e4d00001e4fa,
+ 0x1e7e00001e7e7,
+ 0x1e7e80001e7ec,
+ 0x1e7ed0001e7ef,
+ 0x1e7f00001e7ff,
0x1e8000001e8c5,
0x1e8d00001e8d7,
0x1e9220001e94c,
0x1e9500001e95a,
- 0x1fbf00001fbfa,
- 0x200000002a6de,
- 0x2a7000002b735,
+ 0x200000002a6e0,
+ 0x2a7000002b73a,
0x2b7400002b81e,
0x2b8200002cea2,
0x2ceb00002ebe1,
+ 0x2ebf00002ee5e,
0x300000003134b,
+ 0x31350000323b0,
),
'CONTEXTJ': (
0x200c0000200e,
diff --git a/tools/idna-data b/tools/idna-data
index 8f1695b..5bb8dc7 100755
--- a/tools/idna-data
+++ b/tools/idna-data
@@ -238,11 +238,18 @@ class UnicodeData(object):
def _load_arabicshaping(self):
self.ucd_as = {}
- f_as = self._ucdfile('ArabicShaping.txt')
+ f_as = self._ucdfile('extracted/DerivedJoiningType.txt')
for line in f_as.splitlines():
- result = re.match('^(?P<cp>[0-9A-F]{4,6})\s*;\s*.*?\s*;\s*(?P<jt>\S+)\s*;', line)
+ result = re.match(
+ r'^(?P<start>[0-9A-F]{4,6})(|\.\.(?P<end>[0-9A-F]{4,6}))\s*;\s*(?P<jt>\S+)\s*(|\#.*)$',
+ line)
if result:
- self.ucd_as[int(result.group('cp'), 16)] = result.group('jt')
+ if result.group('end'):
+ for i in hexrange(result.group('start'), result.group('end')):
+ self.ucd_as[i] = result.group('jt')
+ else:
+ i = hexvalue(result.group('start'))
+ self.ucd_as[i] = result.group('jt')
def _load_scripts(self):
--
2.44.0