Update Unicode data to 11.0.0.

Change-Id: I924624f99e1cdea2485be893e657f0ca6a9aa08a
Reviewed-on: https://code-review.googlesource.com/29230
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/doc/syntax.txt b/doc/syntax.txt
index 92e2f2a..c87494e 100644
--- a/doc/syntax.txt
+++ b/doc/syntax.txt
@@ -260,6 +260,7 @@
 Cyrillic
 Deseret
 Devanagari
+Dogra
 Duployan
 Egyptian_Hieroglyphs
 Elbasan
@@ -270,9 +271,11 @@
 Grantha
 Greek
 Gujarati
+Gunjala_Gondi
 Gurmukhi
 Han
 Hangul
+Hanifi_Rohingya
 Hanunoo
 Hatran
 Hebrew
@@ -300,11 +303,13 @@
 Lycian
 Lydian
 Mahajani
+Makasar
 Malayalam
 Mandaic
 Manichaean
 Marchen
 Masaram_Gondi
+Medefaidrin
 Meetei_Mayek
 Mende_Kikakui
 Meroitic_Cursive
@@ -327,6 +332,7 @@
 Old_North_Arabian
 Old_Permic
 Old_Persian
+Old_Sogdian
 Old_South_Arabian
 Old_Turkic
 Oriya
@@ -347,6 +353,7 @@
 Siddham
 SignWriting
 Sinhala
+Sogdian
 Sora_Sompeng
 Soyombo
 Sundanese
diff --git a/re2/unicode.py b/re2/unicode.py
index 2899c87..deff4d8 100644
--- a/re2/unicode.py
+++ b/re2/unicode.py
@@ -9,7 +9,7 @@
 import urllib2
 
 # Directory or URL where Unicode tables reside.
-_UNICODE_DIR = "http://www.unicode.org/Public/10.0.0/ucd"
+_UNICODE_DIR = "https://www.unicode.org/Public/11.0.0/ucd"
 
 # Largest valid Unicode code value.
 _RUNE_MAX = 0x10FFFF
@@ -148,7 +148,7 @@
     raise InputError("invalid number of fields %d" % (nfields,))
 
   if type(filename) == str:
-    if filename.startswith("http://"):
+    if filename.startswith("https://"):
       fil = urllib2.urlopen(filename)
     else:
       fil = open(filename, "r")
diff --git a/re2/unicode_casefold.cc b/re2/unicode_casefold.cc
index 1686943..b4da09d 100644
--- a/re2/unicode_casefold.cc
+++ b/re2/unicode_casefold.cc
@@ -7,7 +7,7 @@
 namespace re2 {
 
 
-// 1295 groups, 2620 pairs, 343 ranges
+// 1374 groups, 2778 pairs, 349 ranges
 const CaseFold unicode_casefold[] = {
 	{ 65, 90, 32 },
 	{ 97, 106, -32 },
@@ -210,6 +210,8 @@
 	{ 4256, 4293, 7264 },
 	{ 4295, 4295, 7264 },
 	{ 4301, 4301, 7264 },
+	{ 4304, 4346, 3008 },
+	{ 4349, 4351, 3008 },
 	{ 5024, 5103, 38864 },
 	{ 5104, 5109, 8 },
 	{ 5112, 5117, -8 },
@@ -222,6 +224,8 @@
 	{ 7302, 7302, -6236 },
 	{ 7303, 7303, -6181 },
 	{ 7304, 7304, 35266 },
+	{ 7312, 7354, -3008 },
+	{ 7357, 7359, -3008 },
 	{ 7545, 7545, 35332 },
 	{ 7549, 7549, 3814 },
 	{ 7680, 7776, EvenOdd },
@@ -337,7 +341,7 @@
 	{ 42929, 42929, -42282 },
 	{ 42930, 42930, -42261 },
 	{ 42931, 42931, 928 },
-	{ 42932, 42935, EvenOdd },
+	{ 42932, 42937, EvenOdd },
 	{ 43859, 43859, -928 },
 	{ 43888, 43967, -38864 },
 	{ 65313, 65338, 32 },
@@ -350,12 +354,14 @@
 	{ 68800, 68850, -64 },
 	{ 71840, 71871, 32 },
 	{ 71872, 71903, -32 },
+	{ 93760, 93791, 32 },
+	{ 93792, 93823, -32 },
 	{ 125184, 125217, 34 },
 	{ 125218, 125251, -34 },
 };
-const int num_unicode_casefold = 343;
+const int num_unicode_casefold = 349;
 
-// 1295 groups, 1325 pairs, 191 ranges
+// 1374 groups, 1404 pairs, 194 ranges
 const CaseFold unicode_tolower[] = {
 	{ 65, 90, 32 },
 	{ 181, 181, 775 },
@@ -466,6 +472,8 @@
 	{ 7302, 7302, -6204 },
 	{ 7303, 7303, -6180 },
 	{ 7304, 7304, 35267 },
+	{ 7312, 7354, -3008 },
+	{ 7357, 7359, -3008 },
 	{ 7680, 7828, EvenOddSkip },
 	{ 7835, 7835, -58 },
 	{ 7838, 7838, -7615 },
@@ -540,16 +548,17 @@
 	{ 42929, 42929, -42282 },
 	{ 42930, 42930, -42261 },
 	{ 42931, 42931, 928 },
-	{ 42932, 42934, EvenOddSkip },
+	{ 42932, 42936, EvenOddSkip },
 	{ 43888, 43967, -38864 },
 	{ 65313, 65338, 32 },
 	{ 66560, 66599, 40 },
 	{ 66736, 66771, 40 },
 	{ 68736, 68786, 64 },
 	{ 71840, 71871, 32 },
+	{ 93760, 93791, 32 },
 	{ 125184, 125217, 34 },
 };
-const int num_unicode_tolower = 191;
+const int num_unicode_tolower = 194;
 
 
 
diff --git a/re2/unicode_groups.cc b/re2/unicode_groups.cc
index ba104d2..8052827 100644
--- a/re2/unicode_groups.cc
+++ b/re2/unicode_groups.cc
@@ -145,7 +145,7 @@
 	{ 68028, 68029 },
 	{ 68032, 68047 },
 	{ 68050, 68095 },
-	{ 68160, 68167 },
+	{ 68160, 68168 },
 	{ 68221, 68222 },
 	{ 68253, 68255 },
 	{ 68331, 68335 },
@@ -154,14 +154,21 @@
 	{ 68521, 68527 },
 	{ 68858, 68863 },
 	{ 69216, 69246 },
+	{ 69405, 69414 },
+	{ 69457, 69460 },
 	{ 69714, 69733 },
 	{ 70113, 70132 },
 	{ 71482, 71483 },
 	{ 71914, 71922 },
 	{ 72794, 72812 },
 	{ 93019, 93025 },
-	{ 119648, 119665 },
+	{ 93824, 93846 },
+	{ 119520, 119539 },
+	{ 119648, 119672 },
 	{ 125127, 125135 },
+	{ 126065, 126123 },
+	{ 126125, 126127 },
+	{ 126129, 126132 },
 	{ 127232, 127244 },
 };
 static const URange16 Lo_range16[] = {
@@ -171,7 +178,7 @@
 	{ 448, 451 },
 	{ 660, 660 },
 	{ 1488, 1514 },
-	{ 1520, 1522 },
+	{ 1519, 1522 },
 	{ 1568, 1599 },
 	{ 1601, 1610 },
 	{ 1646, 1647 },
@@ -310,8 +317,7 @@
 	{ 4206, 4208 },
 	{ 4213, 4225 },
 	{ 4238, 4238 },
-	{ 4304, 4346 },
-	{ 4349, 4680 },
+	{ 4352, 4680 },
 	{ 4682, 4685 },
 	{ 4688, 4694 },
 	{ 4696, 4696 },
@@ -342,7 +348,7 @@
 	{ 6016, 6067 },
 	{ 6108, 6108 },
 	{ 6176, 6210 },
-	{ 6212, 6263 },
+	{ 6212, 6264 },
 	{ 6272, 6276 },
 	{ 6279, 6312 },
 	{ 6314, 6314 },
@@ -382,12 +388,12 @@
 	{ 12447, 12447 },
 	{ 12449, 12538 },
 	{ 12543, 12543 },
-	{ 12549, 12590 },
+	{ 12549, 12591 },
 	{ 12593, 12686 },
 	{ 12704, 12730 },
 	{ 12784, 12799 },
 	{ 13312, 19893 },
-	{ 19968, 40938 },
+	{ 19968, 40943 },
 	{ 40960, 40980 },
 	{ 40982, 42124 },
 	{ 42192, 42231 },
@@ -406,7 +412,7 @@
 	{ 43138, 43187 },
 	{ 43250, 43255 },
 	{ 43259, 43259 },
-	{ 43261, 43261 },
+	{ 43261, 43262 },
 	{ 43274, 43301 },
 	{ 43312, 43334 },
 	{ 43360, 43388 },
@@ -502,7 +508,7 @@
 	{ 68096, 68096 },
 	{ 68112, 68115 },
 	{ 68117, 68119 },
-	{ 68121, 68147 },
+	{ 68121, 68149 },
 	{ 68192, 68220 },
 	{ 68224, 68252 },
 	{ 68288, 68295 },
@@ -512,10 +518,15 @@
 	{ 68448, 68466 },
 	{ 68480, 68497 },
 	{ 68608, 68680 },
+	{ 68864, 68899 },
+	{ 69376, 69404 },
+	{ 69415, 69415 },
+	{ 69424, 69445 },
 	{ 69635, 69687 },
 	{ 69763, 69807 },
 	{ 69840, 69864 },
 	{ 69891, 69926 },
+	{ 69956, 69956 },
 	{ 69968, 70002 },
 	{ 70006, 70006 },
 	{ 70019, 70066 },
@@ -549,7 +560,8 @@
 	{ 71168, 71215 },
 	{ 71236, 71236 },
 	{ 71296, 71338 },
-	{ 71424, 71449 },
+	{ 71424, 71450 },
+	{ 71680, 71723 },
 	{ 71935, 71935 },
 	{ 72192, 72192 },
 	{ 72203, 72242 },
@@ -557,6 +569,7 @@
 	{ 72272, 72272 },
 	{ 72284, 72323 },
 	{ 72326, 72329 },
+	{ 72349, 72349 },
 	{ 72384, 72440 },
 	{ 72704, 72712 },
 	{ 72714, 72750 },
@@ -566,6 +579,11 @@
 	{ 72968, 72969 },
 	{ 72971, 73008 },
 	{ 73030, 73030 },
+	{ 73056, 73061 },
+	{ 73063, 73064 },
+	{ 73066, 73097 },
+	{ 73112, 73112 },
+	{ 73440, 73458 },
 	{ 73728, 74649 },
 	{ 74880, 75075 },
 	{ 77824, 78894 },
@@ -578,7 +596,7 @@
 	{ 93053, 93071 },
 	{ 93952, 94020 },
 	{ 94032, 94032 },
-	{ 94208, 100332 },
+	{ 94208, 100337 },
 	{ 100352, 101106 },
 	{ 110592, 110878 },
 	{ 110960, 111355 },
@@ -897,7 +915,9 @@
 	{ 1323, 1323 },
 	{ 1325, 1325 },
 	{ 1327, 1327 },
-	{ 1377, 1415 },
+	{ 1376, 1416 },
+	{ 4304, 4346 },
+	{ 4349, 4351 },
 	{ 5112, 5117 },
 	{ 7296, 7304 },
 	{ 7424, 7467 },
@@ -1219,8 +1239,10 @@
 	{ 42917, 42917 },
 	{ 42919, 42919 },
 	{ 42921, 42921 },
+	{ 42927, 42927 },
 	{ 42933, 42933 },
 	{ 42935, 42935 },
+	{ 42937, 42937 },
 	{ 43002, 43002 },
 	{ 43824, 43866 },
 	{ 43872, 43877 },
@@ -1234,6 +1256,7 @@
 	{ 66776, 66811 },
 	{ 68800, 68850 },
 	{ 71872, 71903 },
+	{ 93792, 93823 },
 	{ 119834, 119859 },
 	{ 119886, 119892 },
 	{ 119894, 119911 },
@@ -1366,6 +1389,7 @@
 };
 static const URange32 Nd_range32[] = {
 	{ 66720, 66729 },
+	{ 68912, 68921 },
 	{ 69734, 69743 },
 	{ 69872, 69881 },
 	{ 69942, 69951 },
@@ -1379,6 +1403,7 @@
 	{ 71904, 71913 },
 	{ 72784, 72793 },
 	{ 73040, 73049 },
+	{ 73120, 73129 },
 	{ 92768, 92777 },
 	{ 93008, 93017 },
 	{ 120782, 120831 },
@@ -1681,6 +1706,8 @@
 	{ 4295, 4295 },
 	{ 4301, 4301 },
 	{ 5024, 5109 },
+	{ 7312, 7354 },
+	{ 7357, 7359 },
 	{ 7680, 7680 },
 	{ 7682, 7682 },
 	{ 7684, 7684 },
@@ -1995,6 +2022,7 @@
 	{ 42922, 42926 },
 	{ 42928, 42932 },
 	{ 42934, 42934 },
+	{ 42936, 42936 },
 	{ 65313, 65338 },
 };
 static const URange32 Lu_range32[] = {
@@ -2002,6 +2030,7 @@
 	{ 66736, 66771 },
 	{ 68736, 68786 },
 	{ 71840, 71871 },
+	{ 93760, 93791 },
 	{ 119808, 119833 },
 	{ 119860, 119885 },
 	{ 119912, 119937 },
@@ -2187,7 +2216,9 @@
 	{ 2404, 2405 },
 	{ 2416, 2416 },
 	{ 2557, 2557 },
+	{ 2678, 2678 },
 	{ 2800, 2800 },
+	{ 3204, 3204 },
 	{ 3572, 3572 },
 	{ 3663, 3663 },
 	{ 3674, 3675 },
@@ -2238,7 +2269,7 @@
 	{ 11824, 11833 },
 	{ 11836, 11839 },
 	{ 11841, 11841 },
-	{ 11843, 11849 },
+	{ 11843, 11854 },
 	{ 12289, 12291 },
 	{ 12349, 12349 },
 	{ 12539, 12539 },
@@ -2293,12 +2324,13 @@
 	{ 68336, 68342 },
 	{ 68409, 68415 },
 	{ 68505, 68508 },
+	{ 69461, 69465 },
 	{ 69703, 69709 },
 	{ 69819, 69820 },
 	{ 69822, 69825 },
 	{ 69952, 69955 },
 	{ 70004, 70005 },
-	{ 70085, 70089 },
+	{ 70085, 70088 },
 	{ 70093, 70093 },
 	{ 70107, 70107 },
 	{ 70109, 70111 },
@@ -2312,16 +2344,19 @@
 	{ 71233, 71235 },
 	{ 71264, 71276 },
 	{ 71484, 71486 },
+	{ 71739, 71739 },
 	{ 72255, 72262 },
 	{ 72346, 72348 },
 	{ 72350, 72354 },
 	{ 72769, 72773 },
 	{ 72816, 72817 },
+	{ 73463, 73464 },
 	{ 74864, 74868 },
 	{ 92782, 92783 },
 	{ 92917, 92917 },
 	{ 92983, 92987 },
 	{ 92996, 92996 },
+	{ 93847, 93850 },
 	{ 113823, 113823 },
 	{ 121479, 121483 },
 	{ 125278, 125279 },
@@ -2353,6 +2388,7 @@
 };
 static const URange32 C_range32[] = {
 	{ 69821, 69821 },
+	{ 69837, 69837 },
 	{ 113824, 113827 },
 	{ 119155, 119162 },
 	{ 917505, 917505 },
@@ -2479,6 +2515,7 @@
 	{ 69808, 69810 },
 	{ 69815, 69816 },
 	{ 69932, 69932 },
+	{ 69957, 69958 },
 	{ 70018, 70018 },
 	{ 70067, 70069 },
 	{ 70079, 70080 },
@@ -2511,7 +2548,8 @@
 	{ 71350, 71350 },
 	{ 71456, 71457 },
 	{ 71462, 71462 },
-	{ 72199, 72200 },
+	{ 71724, 71726 },
+	{ 71736, 71736 },
 	{ 72249, 72249 },
 	{ 72279, 72280 },
 	{ 72343, 72343 },
@@ -2520,6 +2558,10 @@
 	{ 72873, 72873 },
 	{ 72881, 72881 },
 	{ 72884, 72884 },
+	{ 73098, 73102 },
+	{ 73107, 73108 },
+	{ 73110, 73110 },
+	{ 73461, 73462 },
 	{ 94033, 94078 },
 	{ 119141, 119142 },
 	{ 119149, 119154 },
@@ -2543,12 +2585,13 @@
 	{ 1840, 1866 },
 	{ 1958, 1968 },
 	{ 2027, 2035 },
+	{ 2045, 2045 },
 	{ 2070, 2073 },
 	{ 2075, 2083 },
 	{ 2085, 2087 },
 	{ 2089, 2093 },
 	{ 2137, 2139 },
-	{ 2260, 2273 },
+	{ 2259, 2273 },
 	{ 2275, 2306 },
 	{ 2362, 2362 },
 	{ 2364, 2364 },
@@ -2561,6 +2604,7 @@
 	{ 2497, 2500 },
 	{ 2509, 2509 },
 	{ 2530, 2531 },
+	{ 2558, 2558 },
 	{ 2561, 2562 },
 	{ 2620, 2620 },
 	{ 2625, 2626 },
@@ -2587,6 +2631,7 @@
 	{ 3008, 3008 },
 	{ 3021, 3021 },
 	{ 3072, 3072 },
+	{ 3076, 3076 },
 	{ 3134, 3136 },
 	{ 3142, 3144 },
 	{ 3146, 3149 },
@@ -2703,6 +2748,7 @@
 	{ 43045, 43046 },
 	{ 43204, 43205 },
 	{ 43232, 43249 },
+	{ 43263, 43263 },
 	{ 43302, 43309 },
 	{ 43335, 43345 },
 	{ 43392, 43394 },
@@ -2740,6 +2786,8 @@
 	{ 68152, 68154 },
 	{ 68159, 68159 },
 	{ 68325, 68326 },
+	{ 68900, 68903 },
+	{ 69446, 69456 },
 	{ 69633, 69633 },
 	{ 69688, 69702 },
 	{ 69759, 69761 },
@@ -2751,7 +2799,7 @@
 	{ 70003, 70003 },
 	{ 70016, 70017 },
 	{ 70070, 70078 },
-	{ 70090, 70092 },
+	{ 70089, 70092 },
 	{ 70191, 70193 },
 	{ 70196, 70196 },
 	{ 70198, 70199 },
@@ -2759,13 +2807,14 @@
 	{ 70367, 70367 },
 	{ 70371, 70378 },
 	{ 70400, 70401 },
-	{ 70460, 70460 },
+	{ 70459, 70460 },
 	{ 70464, 70464 },
 	{ 70502, 70508 },
 	{ 70512, 70516 },
 	{ 70712, 70719 },
 	{ 70722, 70724 },
 	{ 70726, 70726 },
+	{ 70750, 70750 },
 	{ 70835, 70840 },
 	{ 70842, 70842 },
 	{ 70847, 70848 },
@@ -2784,8 +2833,9 @@
 	{ 71453, 71455 },
 	{ 71458, 71461 },
 	{ 71463, 71467 },
-	{ 72193, 72198 },
-	{ 72201, 72202 },
+	{ 71727, 71735 },
+	{ 71737, 71738 },
+	{ 72193, 72202 },
 	{ 72243, 72248 },
 	{ 72251, 72254 },
 	{ 72263, 72263 },
@@ -2805,6 +2855,10 @@
 	{ 73020, 73021 },
 	{ 73023, 73029 },
 	{ 73031, 73031 },
+	{ 73104, 73105 },
+	{ 73109, 73109 },
+	{ 73111, 73111 },
+	{ 73459, 73460 },
 	{ 92912, 92916 },
 	{ 92976, 92982 },
 	{ 94095, 94098 },
@@ -2848,12 +2902,13 @@
 	{ 1840, 1866 },
 	{ 1958, 1968 },
 	{ 2027, 2035 },
+	{ 2045, 2045 },
 	{ 2070, 2073 },
 	{ 2075, 2083 },
 	{ 2085, 2087 },
 	{ 2089, 2093 },
 	{ 2137, 2139 },
-	{ 2260, 2273 },
+	{ 2259, 2273 },
 	{ 2275, 2307 },
 	{ 2362, 2364 },
 	{ 2366, 2383 },
@@ -2866,6 +2921,7 @@
 	{ 2507, 2509 },
 	{ 2519, 2519 },
 	{ 2530, 2531 },
+	{ 2558, 2558 },
 	{ 2561, 2563 },
 	{ 2620, 2620 },
 	{ 2622, 2626 },
@@ -2893,7 +2949,7 @@
 	{ 3014, 3016 },
 	{ 3018, 3021 },
 	{ 3031, 3031 },
-	{ 3072, 3075 },
+	{ 3072, 3076 },
 	{ 3134, 3140 },
 	{ 3142, 3144 },
 	{ 3146, 3149 },
@@ -2993,6 +3049,7 @@
 	{ 43136, 43137 },
 	{ 43188, 43205 },
 	{ 43232, 43249 },
+	{ 43263, 43263 },
 	{ 43302, 43309 },
 	{ 43335, 43347 },
 	{ 43392, 43395 },
@@ -3025,21 +3082,24 @@
 	{ 68152, 68154 },
 	{ 68159, 68159 },
 	{ 68325, 68326 },
+	{ 68900, 68903 },
+	{ 69446, 69456 },
 	{ 69632, 69634 },
 	{ 69688, 69702 },
 	{ 69759, 69762 },
 	{ 69808, 69818 },
 	{ 69888, 69890 },
 	{ 69927, 69940 },
+	{ 69957, 69958 },
 	{ 70003, 70003 },
 	{ 70016, 70018 },
 	{ 70067, 70080 },
-	{ 70090, 70092 },
+	{ 70089, 70092 },
 	{ 70188, 70199 },
 	{ 70206, 70206 },
 	{ 70367, 70378 },
 	{ 70400, 70403 },
-	{ 70460, 70460 },
+	{ 70459, 70460 },
 	{ 70462, 70468 },
 	{ 70471, 70472 },
 	{ 70475, 70477 },
@@ -3048,6 +3108,7 @@
 	{ 70502, 70508 },
 	{ 70512, 70516 },
 	{ 70709, 70726 },
+	{ 70750, 70750 },
 	{ 70832, 70851 },
 	{ 71087, 71093 },
 	{ 71096, 71104 },
@@ -3055,6 +3116,7 @@
 	{ 71216, 71232 },
 	{ 71339, 71351 },
 	{ 71453, 71467 },
+	{ 71724, 71738 },
 	{ 72193, 72202 },
 	{ 72243, 72249 },
 	{ 72251, 72254 },
@@ -3070,6 +3132,10 @@
 	{ 73020, 73021 },
 	{ 73023, 73029 },
 	{ 73031, 73031 },
+	{ 73098, 73102 },
+	{ 73104, 73105 },
+	{ 73107, 73111 },
+	{ 73459, 73462 },
 	{ 92912, 92916 },
 	{ 92976, 92982 },
 	{ 94033, 94078 },
@@ -3122,9 +3188,9 @@
 	{ 1162, 1327 },
 	{ 1329, 1366 },
 	{ 1369, 1369 },
-	{ 1377, 1415 },
+	{ 1376, 1416 },
 	{ 1488, 1514 },
-	{ 1520, 1522 },
+	{ 1519, 1522 },
 	{ 1568, 1610 },
 	{ 1646, 1647 },
 	{ 1649, 1747 },
@@ -3306,7 +3372,7 @@
 	{ 6016, 6067 },
 	{ 6103, 6103 },
 	{ 6108, 6108 },
-	{ 6176, 6263 },
+	{ 6176, 6264 },
 	{ 6272, 6276 },
 	{ 6279, 6312 },
 	{ 6314, 6314 },
@@ -3328,6 +3394,8 @@
 	{ 7245, 7247 },
 	{ 7258, 7293 },
 	{ 7296, 7304 },
+	{ 7312, 7354 },
+	{ 7357, 7359 },
 	{ 7401, 7404 },
 	{ 7406, 7409 },
 	{ 7413, 7414 },
@@ -3395,12 +3463,12 @@
 	{ 12445, 12447 },
 	{ 12449, 12538 },
 	{ 12540, 12543 },
-	{ 12549, 12590 },
+	{ 12549, 12591 },
 	{ 12593, 12686 },
 	{ 12704, 12730 },
 	{ 12784, 12799 },
 	{ 13312, 19893 },
-	{ 19968, 40938 },
+	{ 19968, 40943 },
 	{ 40960, 42124 },
 	{ 42192, 42237 },
 	{ 42240, 42508 },
@@ -3411,8 +3479,7 @@
 	{ 42656, 42725 },
 	{ 42775, 42783 },
 	{ 42786, 42888 },
-	{ 42891, 42926 },
-	{ 42928, 42935 },
+	{ 42891, 42937 },
 	{ 42999, 43009 },
 	{ 43011, 43013 },
 	{ 43015, 43018 },
@@ -3421,7 +3488,7 @@
 	{ 43138, 43187 },
 	{ 43250, 43255 },
 	{ 43259, 43259 },
-	{ 43261, 43261 },
+	{ 43261, 43262 },
 	{ 43274, 43301 },
 	{ 43312, 43334 },
 	{ 43360, 43388 },
@@ -3523,7 +3590,7 @@
 	{ 68096, 68096 },
 	{ 68112, 68115 },
 	{ 68117, 68119 },
-	{ 68121, 68147 },
+	{ 68121, 68149 },
 	{ 68192, 68220 },
 	{ 68224, 68252 },
 	{ 68288, 68295 },
@@ -3535,10 +3602,15 @@
 	{ 68608, 68680 },
 	{ 68736, 68786 },
 	{ 68800, 68850 },
+	{ 68864, 68899 },
+	{ 69376, 69404 },
+	{ 69415, 69415 },
+	{ 69424, 69445 },
 	{ 69635, 69687 },
 	{ 69763, 69807 },
 	{ 69840, 69864 },
 	{ 69891, 69926 },
+	{ 69956, 69956 },
 	{ 69968, 70002 },
 	{ 70006, 70006 },
 	{ 70019, 70066 },
@@ -3572,7 +3644,8 @@
 	{ 71168, 71215 },
 	{ 71236, 71236 },
 	{ 71296, 71338 },
-	{ 71424, 71449 },
+	{ 71424, 71450 },
+	{ 71680, 71723 },
 	{ 71840, 71903 },
 	{ 71935, 71935 },
 	{ 72192, 72192 },
@@ -3581,6 +3654,7 @@
 	{ 72272, 72272 },
 	{ 72284, 72323 },
 	{ 72326, 72329 },
+	{ 72349, 72349 },
 	{ 72384, 72440 },
 	{ 72704, 72712 },
 	{ 72714, 72750 },
@@ -3590,6 +3664,11 @@
 	{ 72968, 72969 },
 	{ 72971, 73008 },
 	{ 73030, 73030 },
+	{ 73056, 73061 },
+	{ 73063, 73064 },
+	{ 73066, 73097 },
+	{ 73112, 73112 },
+	{ 73440, 73458 },
 	{ 73728, 74649 },
 	{ 74880, 75075 },
 	{ 77824, 78894 },
@@ -3601,11 +3680,12 @@
 	{ 92992, 92995 },
 	{ 93027, 93047 },
 	{ 93053, 93071 },
+	{ 93760, 93823 },
 	{ 93952, 94020 },
 	{ 94032, 94032 },
 	{ 94099, 94111 },
 	{ 94176, 94177 },
-	{ 94208, 100332 },
+	{ 94208, 100337 },
 	{ 100352, 101106 },
 	{ 110592, 110878 },
 	{ 110960, 111355 },
@@ -3772,7 +3852,7 @@
 	{ 68028, 68029 },
 	{ 68032, 68047 },
 	{ 68050, 68095 },
-	{ 68160, 68167 },
+	{ 68160, 68168 },
 	{ 68221, 68222 },
 	{ 68253, 68255 },
 	{ 68331, 68335 },
@@ -3780,7 +3860,10 @@
 	{ 68472, 68479 },
 	{ 68521, 68527 },
 	{ 68858, 68863 },
+	{ 68912, 68921 },
 	{ 69216, 69246 },
+	{ 69405, 69414 },
+	{ 69457, 69460 },
 	{ 69714, 69743 },
 	{ 69872, 69881 },
 	{ 69942, 69951 },
@@ -3795,14 +3878,20 @@
 	{ 71904, 71922 },
 	{ 72784, 72812 },
 	{ 73040, 73049 },
+	{ 73120, 73129 },
 	{ 74752, 74862 },
 	{ 92768, 92777 },
 	{ 93008, 93017 },
 	{ 93019, 93025 },
-	{ 119648, 119665 },
+	{ 93824, 93846 },
+	{ 119520, 119539 },
+	{ 119648, 119672 },
 	{ 120782, 120831 },
 	{ 125127, 125135 },
 	{ 125264, 125273 },
+	{ 126065, 126123 },
+	{ 126125, 126127 },
+	{ 126129, 126132 },
 	{ 127232, 127244 },
 };
 static const URange16 Sk_range16[] = {
@@ -3876,7 +3965,9 @@
 	{ 2404, 2405 },
 	{ 2416, 2416 },
 	{ 2557, 2557 },
+	{ 2678, 2678 },
 	{ 2800, 2800 },
+	{ 3204, 3204 },
 	{ 3572, 3572 },
 	{ 3663, 3663 },
 	{ 3674, 3675 },
@@ -3925,7 +4016,7 @@
 	{ 11518, 11519 },
 	{ 11632, 11632 },
 	{ 11776, 11822 },
-	{ 11824, 11849 },
+	{ 11824, 11854 },
 	{ 12289, 12291 },
 	{ 12296, 12305 },
 	{ 12308, 12319 },
@@ -3981,12 +4072,13 @@
 	{ 68336, 68342 },
 	{ 68409, 68415 },
 	{ 68505, 68508 },
+	{ 69461, 69465 },
 	{ 69703, 69709 },
 	{ 69819, 69820 },
 	{ 69822, 69825 },
 	{ 69952, 69955 },
 	{ 70004, 70005 },
-	{ 70085, 70089 },
+	{ 70085, 70088 },
 	{ 70093, 70093 },
 	{ 70107, 70107 },
 	{ 70109, 70111 },
@@ -4000,16 +4092,19 @@
 	{ 71233, 71235 },
 	{ 71264, 71276 },
 	{ 71484, 71486 },
+	{ 71739, 71739 },
 	{ 72255, 72262 },
 	{ 72346, 72348 },
 	{ 72350, 72354 },
 	{ 72769, 72773 },
 	{ 72816, 72817 },
+	{ 73463, 73464 },
 	{ 74864, 74868 },
 	{ 92782, 92783 },
 	{ 92917, 92917 },
 	{ 92983, 92987 },
 	{ 92996, 92996 },
+	{ 93847, 93850 },
 	{ 113823, 113823 },
 	{ 121479, 121483 },
 	{ 125278, 125279 },
@@ -4047,6 +4142,7 @@
 	{ 1769, 1769 },
 	{ 1789, 1790 },
 	{ 2038, 2038 },
+	{ 2046, 2047 },
 	{ 2546, 2547 },
 	{ 2554, 2555 },
 	{ 2801, 2801 },
@@ -4113,10 +4209,8 @@
 	{ 10716, 10747 },
 	{ 10750, 11123 },
 	{ 11126, 11157 },
-	{ 11160, 11193 },
-	{ 11197, 11208 },
-	{ 11210, 11218 },
-	{ 11244, 11247 },
+	{ 11160, 11208 },
+	{ 11210, 11262 },
 	{ 11493, 11498 },
 	{ 11904, 11929 },
 	{ 11931, 12019 },
@@ -4202,6 +4296,8 @@
 	{ 121453, 121460 },
 	{ 121462, 121475 },
 	{ 121477, 121478 },
+	{ 126124, 126124 },
+	{ 126128, 126128 },
 	{ 126704, 126705 },
 	{ 126976, 127019 },
 	{ 127024, 127123 },
@@ -4209,8 +4305,7 @@
 	{ 127153, 127167 },
 	{ 127169, 127183 },
 	{ 127185, 127221 },
-	{ 127248, 127278 },
-	{ 127280, 127339 },
+	{ 127248, 127339 },
 	{ 127344, 127404 },
 	{ 127462, 127490 },
 	{ 127504, 127547 },
@@ -4219,9 +4314,9 @@
 	{ 127584, 127589 },
 	{ 127744, 128724 },
 	{ 128736, 128748 },
-	{ 128752, 128760 },
+	{ 128752, 128761 },
 	{ 128768, 128883 },
-	{ 128896, 128980 },
+	{ 128896, 128984 },
 	{ 129024, 129035 },
 	{ 129040, 129095 },
 	{ 129104, 129113 },
@@ -4229,11 +4324,14 @@
 	{ 129168, 129197 },
 	{ 129280, 129291 },
 	{ 129296, 129342 },
-	{ 129344, 129356 },
-	{ 129360, 129387 },
-	{ 129408, 129431 },
-	{ 129472, 129472 },
-	{ 129488, 129510 },
+	{ 129344, 129392 },
+	{ 129395, 129398 },
+	{ 129402, 129402 },
+	{ 129404, 129442 },
+	{ 129456, 129465 },
+	{ 129472, 129474 },
+	{ 129488, 129535 },
+	{ 129632, 129645 },
 };
 static const URange16 So_range16[] = {
 	{ 166, 166 },
@@ -4315,10 +4413,8 @@
 	{ 11077, 11078 },
 	{ 11085, 11123 },
 	{ 11126, 11157 },
-	{ 11160, 11193 },
-	{ 11197, 11208 },
-	{ 11210, 11218 },
-	{ 11244, 11247 },
+	{ 11160, 11208 },
+	{ 11210, 11262 },
 	{ 11493, 11498 },
 	{ 11904, 11929 },
 	{ 11931, 12019 },
@@ -4379,14 +4475,14 @@
 	{ 121453, 121460 },
 	{ 121462, 121475 },
 	{ 121477, 121478 },
+	{ 126124, 126124 },
 	{ 126976, 127019 },
 	{ 127024, 127123 },
 	{ 127136, 127150 },
 	{ 127153, 127167 },
 	{ 127169, 127183 },
 	{ 127185, 127221 },
-	{ 127248, 127278 },
-	{ 127280, 127339 },
+	{ 127248, 127339 },
 	{ 127344, 127404 },
 	{ 127462, 127490 },
 	{ 127504, 127547 },
@@ -4396,9 +4492,9 @@
 	{ 127744, 127994 },
 	{ 128000, 128724 },
 	{ 128736, 128748 },
-	{ 128752, 128760 },
+	{ 128752, 128761 },
 	{ 128768, 128883 },
-	{ 128896, 128980 },
+	{ 128896, 128984 },
 	{ 129024, 129035 },
 	{ 129040, 129095 },
 	{ 129104, 129113 },
@@ -4406,11 +4502,14 @@
 	{ 129168, 129197 },
 	{ 129280, 129291 },
 	{ 129296, 129342 },
-	{ 129344, 129356 },
-	{ 129360, 129387 },
-	{ 129408, 129431 },
-	{ 129472, 129472 },
-	{ 129488, 129510 },
+	{ 129344, 129392 },
+	{ 129395, 129398 },
+	{ 129402, 129402 },
+	{ 129404, 129442 },
+	{ 129456, 129465 },
+	{ 129472, 129474 },
+	{ 129488, 129535 },
+	{ 129632, 129645 },
 };
 static const URange16 Sm_range16[] = {
 	{ 43, 43 },
@@ -4485,6 +4584,7 @@
 	{ 162, 165 },
 	{ 1423, 1423 },
 	{ 1547, 1547 },
+	{ 2046, 2047 },
 	{ 2546, 2547 },
 	{ 2555, 2555 },
 	{ 2801, 2801 },
@@ -4499,6 +4599,9 @@
 	{ 65504, 65505 },
 	{ 65509, 65510 },
 };
+static const URange32 Sc_range32[] = {
+	{ 126128, 126128 },
+};
 static const URange16 Z_range16[] = {
 	{ 32, 32 },
 	{ 160, 160 },
@@ -4540,6 +4643,7 @@
 };
 static const URange32 Cf_range32[] = {
 	{ 69821, 69821 },
+	{ 69837, 69837 },
 	{ 113824, 113827 },
 	{ 119155, 119162 },
 	{ 917505, 917505 },
@@ -4562,7 +4666,7 @@
 };
 static const URange32 Tangut_range32[] = {
 	{ 94176, 94176 },
-	{ 94208, 100332 },
+	{ 94208, 100337 },
 	{ 100352, 101106 },
 };
 static const URange16 Thaana_range16[] = {
@@ -4574,8 +4678,7 @@
 	{ 125278, 125279 },
 };
 static const URange16 Telugu_range16[] = {
-	{ 3072, 3075 },
-	{ 3077, 3084 },
+	{ 3072, 3084 },
 	{ 3086, 3088 },
 	{ 3090, 3112 },
 	{ 3114, 3129 },
@@ -4679,6 +4782,7 @@
 static const URange32 Inherited_range32[] = {
 	{ 66045, 66045 },
 	{ 66272, 66272 },
+	{ 70459, 70459 },
 	{ 119143, 119145 },
 	{ 119163, 119170 },
 	{ 119173, 119179 },
@@ -4697,7 +4801,7 @@
 	{ 72784, 72812 },
 };
 static const URange32 Ahom_range32[] = {
-	{ 71424, 71449 },
+	{ 71424, 71450 },
 	{ 71453, 71467 },
 	{ 71472, 71487 },
 };
@@ -4710,7 +4814,7 @@
 	{ 12321, 12329 },
 	{ 12344, 12347 },
 	{ 13312, 19893 },
-	{ 19968, 40938 },
+	{ 19968, 40943 },
 	{ 63744, 64109 },
 	{ 64112, 64217 },
 };
@@ -4727,8 +4831,7 @@
 };
 static const URange16 Armenian_range16[] = {
 	{ 1329, 1366 },
-	{ 1369, 1375 },
-	{ 1377, 1415 },
+	{ 1369, 1416 },
 	{ 1418, 1418 },
 	{ 1421, 1423 },
 	{ 64275, 64279 },
@@ -4753,7 +4856,7 @@
 };
 static const URange16 Bopomofo_range16[] = {
 	{ 746, 747 },
-	{ 12549, 12590 },
+	{ 12549, 12591 },
 	{ 12704, 12730 },
 };
 static const URange32 Bassa_Vah_range32[] = {
@@ -4768,6 +4871,9 @@
 	{ 66736, 66771 },
 	{ 66776, 66811 },
 };
+static const URange32 Old_Sogdian_range32[] = {
+	{ 69376, 69415 },
+};
 static const URange16 Tagalog_range16[] = {
 	{ 5888, 5900 },
 	{ 5902, 5908 },
@@ -4808,6 +4914,10 @@
 	{ 43968, 44013 },
 	{ 44016, 44025 },
 };
+static const URange32 Hanifi_Rohingya_range32[] = {
+	{ 68864, 68903 },
+	{ 68912, 68921 },
+};
 static const URange32 Pahawh_Hmong_range32[] = {
 	{ 92928, 92997 },
 	{ 93008, 93017 },
@@ -4832,9 +4942,9 @@
 	{ 68101, 68102 },
 	{ 68108, 68115 },
 	{ 68117, 68119 },
-	{ 68121, 68147 },
+	{ 68121, 68149 },
 	{ 68152, 68154 },
-	{ 68159, 68167 },
+	{ 68159, 68168 },
 	{ 68176, 68184 },
 };
 static const URange16 Tai_Tham_range16[] = {
@@ -4880,8 +4990,7 @@
 	{ 8544, 8584 },
 	{ 11360, 11391 },
 	{ 42786, 42887 },
-	{ 42891, 42926 },
-	{ 42928, 42935 },
+	{ 42891, 42937 },
 	{ 42999, 43007 },
 	{ 43824, 43866 },
 	{ 43868, 43876 },
@@ -4902,6 +5011,8 @@
 	{ 4301, 4301 },
 	{ 4304, 4346 },
 	{ 4348, 4351 },
+	{ 7312, 7354 },
+	{ 7357, 7359 },
 	{ 11520, 11557 },
 	{ 11559, 11559 },
 	{ 11565, 11565 },
@@ -4938,7 +5049,7 @@
 	{ 2304, 2384 },
 	{ 2387, 2403 },
 	{ 2406, 2431 },
-	{ 43232, 43261 },
+	{ 43232, 43263 },
 };
 static const URange16 Thai_range16[] = {
 	{ 3585, 3642 },
@@ -5079,7 +5190,7 @@
 static const URange32 Newa_range32[] = {
 	{ 70656, 70745 },
 	{ 70747, 70747 },
-	{ 70749, 70749 },
+	{ 70749, 70750 },
 };
 static const URange16 Limbu_range16[] = {
 	{ 6400, 6430 },
@@ -5117,6 +5228,9 @@
 	{ 2911, 2915 },
 	{ 2918, 2935 },
 };
+static const URange32 Medefaidrin_range32[] = {
+	{ 93760, 93850 },
+};
 static const URange32 Sharada_range32[] = {
 	{ 70016, 70093 },
 	{ 70096, 70111 },
@@ -5145,6 +5259,14 @@
 	{ 71168, 71236 },
 	{ 71248, 71257 },
 };
+static const URange32 Gunjala_Gondi_range32[] = {
+	{ 73056, 73061 },
+	{ 73063, 73064 },
+	{ 73066, 73102 },
+	{ 73104, 73105 },
+	{ 73107, 73112 },
+	{ 73120, 73129 },
+};
 static const URange32 Inscriptional_Pahlavi_range32[] = {
 	{ 68448, 68466 },
 	{ 68472, 68479 },
@@ -5183,6 +5305,7 @@
 };
 static const URange16 Nko_range16[] = {
 	{ 1984, 2042 },
+	{ 2045, 2047 },
 };
 static const URange16 Canadian_Aboriginal_range16[] = {
 	{ 5120, 5759 },
@@ -5213,10 +5336,11 @@
 	{ 2519, 2519 },
 	{ 2524, 2525 },
 	{ 2527, 2531 },
-	{ 2534, 2557 },
+	{ 2534, 2558 },
 };
 static const URange32 Kaithi_range32[] = {
 	{ 69760, 69825 },
+	{ 69837, 69837 },
 };
 static const URange16 Glagolitic_range16[] = {
 	{ 11264, 11310 },
@@ -5253,7 +5377,7 @@
 	{ 2641, 2641 },
 	{ 2649, 2652 },
 	{ 2654, 2654 },
-	{ 2662, 2677 },
+	{ 2662, 2678 },
 };
 static const URange16 Javanese_range16[] = {
 	{ 43392, 43469 },
@@ -5275,8 +5399,7 @@
 	{ 67647, 67647 },
 };
 static const URange16 Kannada_range16[] = {
-	{ 3200, 3203 },
-	{ 3205, 3212 },
+	{ 3200, 3212 },
 	{ 3214, 3216 },
 	{ 3218, 3240 },
 	{ 3242, 3251 },
@@ -5299,7 +5422,7 @@
 	{ 6148, 6148 },
 	{ 6150, 6158 },
 	{ 6160, 6169 },
-	{ 6176, 6263 },
+	{ 6176, 6264 },
 	{ 6272, 6314 },
 };
 static const URange32 Mongolian_range32[] = {
@@ -5403,6 +5526,9 @@
 	{ 67392, 67413 },
 	{ 67424, 67431 },
 };
+static const URange32 Dogra_range32[] = {
+	{ 71680, 71739 },
+};
 static const URange32 Old_Turkic_range32[] = {
 	{ 68608, 68680 },
 };
@@ -5418,10 +5544,16 @@
 static const URange32 Egyptian_Hieroglyphs_range32[] = {
 	{ 77824, 78894 },
 };
+static const URange32 Sogdian_range32[] = {
+	{ 69424, 69465 },
+};
 static const URange32 Caucasian_Albanian_range32[] = {
 	{ 66864, 66915 },
 	{ 66927, 66927 },
 };
+static const URange32 Makasar_range32[] = {
+	{ 73440, 73464 },
+};
 static const URange32 Old_Hungarian_range32[] = {
 	{ 68736, 68786 },
 	{ 68800, 68850 },
@@ -5502,11 +5634,9 @@
 	{ 9312, 10239 },
 	{ 10496, 11123 },
 	{ 11126, 11157 },
-	{ 11160, 11193 },
-	{ 11197, 11208 },
-	{ 11210, 11218 },
-	{ 11244, 11247 },
-	{ 11776, 11849 },
+	{ 11160, 11208 },
+	{ 11210, 11262 },
+	{ 11776, 11854 },
 	{ 12272, 12283 },
 	{ 12288, 12292 },
 	{ 12294, 12294 },
@@ -5558,8 +5688,9 @@
 	{ 119171, 119172 },
 	{ 119180, 119209 },
 	{ 119214, 119272 },
+	{ 119520, 119539 },
 	{ 119552, 119638 },
-	{ 119648, 119665 },
+	{ 119648, 119672 },
 	{ 119808, 119892 },
 	{ 119894, 119964 },
 	{ 119966, 119967 },
@@ -5581,6 +5712,7 @@
 	{ 120146, 120485 },
 	{ 120488, 120779 },
 	{ 120782, 120831 },
+	{ 126065, 126132 },
 	{ 126976, 127019 },
 	{ 127024, 127123 },
 	{ 127136, 127150 },
@@ -5588,8 +5720,7 @@
 	{ 127169, 127183 },
 	{ 127185, 127221 },
 	{ 127232, 127244 },
-	{ 127248, 127278 },
-	{ 127280, 127339 },
+	{ 127248, 127339 },
 	{ 127344, 127404 },
 	{ 127462, 127487 },
 	{ 127489, 127490 },
@@ -5599,9 +5730,9 @@
 	{ 127584, 127589 },
 	{ 127744, 128724 },
 	{ 128736, 128748 },
-	{ 128752, 128760 },
+	{ 128752, 128761 },
 	{ 128768, 128883 },
-	{ 128896, 128980 },
+	{ 128896, 128984 },
 	{ 129024, 129035 },
 	{ 129040, 129095 },
 	{ 129104, 129113 },
@@ -5609,11 +5740,14 @@
 	{ 129168, 129197 },
 	{ 129280, 129291 },
 	{ 129296, 129342 },
-	{ 129344, 129356 },
-	{ 129360, 129387 },
-	{ 129408, 129431 },
-	{ 129472, 129472 },
-	{ 129488, 129510 },
+	{ 129344, 129392 },
+	{ 129395, 129398 },
+	{ 129402, 129402 },
+	{ 129404, 129442 },
+	{ 129456, 129465 },
+	{ 129472, 129474 },
+	{ 129488, 129535 },
+	{ 129632, 129645 },
 	{ 917505, 917505 },
 	{ 917536, 917631 },
 };
@@ -5624,7 +5758,7 @@
 };
 static const URange32 Chakma_range32[] = {
 	{ 69888, 69940 },
-	{ 69942, 69955 },
+	{ 69942, 69958 },
 };
 static const URange16 Arabic_range16[] = {
 	{ 1536, 1540 },
@@ -5640,7 +5774,7 @@
 	{ 1872, 1919 },
 	{ 2208, 2228 },
 	{ 2230, 2237 },
-	{ 2260, 2273 },
+	{ 2259, 2273 },
 	{ 2275, 2303 },
 	{ 64336, 64449 },
 	{ 64467, 64829 },
@@ -5704,8 +5838,7 @@
 };
 static const URange32 Soyombo_range32[] = {
 	{ 72272, 72323 },
-	{ 72326, 72348 },
-	{ 72350, 72354 },
+	{ 72326, 72354 },
 };
 static const URange32 Avestan_range32[] = {
 	{ 68352, 68405 },
@@ -5714,7 +5847,7 @@
 static const URange16 Hebrew_range16[] = {
 	{ 1425, 1479 },
 	{ 1488, 1514 },
-	{ 1520, 1524 },
+	{ 1519, 1524 },
 	{ 64285, 64310 },
 	{ 64312, 64316 },
 	{ 64318, 64318 },
@@ -5731,13 +5864,13 @@
 	{ 71296, 71351 },
 	{ 71360, 71369 },
 };
-// 3981 16-bit ranges, 1325 32-bit ranges
+// 3994 16-bit ranges, 1429 32-bit ranges
 const UGroup unicode_groups[] = {
 	{ "Adlam", +1, 0, 0, Adlam_range32, 3 },
 	{ "Ahom", +1, 0, 0, Ahom_range32, 3 },
 	{ "Anatolian_Hieroglyphs", +1, 0, 0, Anatolian_Hieroglyphs_range32, 1 },
 	{ "Arabic", +1, Arabic_range16, 22, Arabic_range32, 35 },
-	{ "Armenian", +1, Armenian_range16, 6, 0, 0 },
+	{ "Armenian", +1, Armenian_range16, 5, 0, 0 },
 	{ "Avestan", +1, 0, 0, Avestan_range32, 2 },
 	{ "Balinese", +1, Balinese_range16, 2, 0, 0 },
 	{ "Bamum", +1, Bamum_range16, 1, Bamum_range32, 1 },
@@ -5750,17 +5883,17 @@
 	{ "Braille", +1, Braille_range16, 1, 0, 0 },
 	{ "Buginese", +1, Buginese_range16, 2, 0, 0 },
 	{ "Buhid", +1, Buhid_range16, 1, 0, 0 },
-	{ "C", +1, C_range16, 16, C_range32, 7 },
+	{ "C", +1, C_range16, 16, C_range32, 8 },
 	{ "Canadian_Aboriginal", +1, Canadian_Aboriginal_range16, 2, 0, 0 },
 	{ "Carian", +1, 0, 0, Carian_range32, 1 },
 	{ "Caucasian_Albanian", +1, 0, 0, Caucasian_Albanian_range32, 2 },
 	{ "Cc", +1, Cc_range16, 2, 0, 0 },
-	{ "Cf", +1, Cf_range16, 13, Cf_range32, 5 },
+	{ "Cf", +1, Cf_range16, 13, Cf_range32, 6 },
 	{ "Chakma", +1, 0, 0, Chakma_range32, 2 },
 	{ "Cham", +1, Cham_range16, 4, 0, 0 },
 	{ "Cherokee", +1, Cherokee_range16, 3, 0, 0 },
 	{ "Co", +1, Co_range16, 1, Co_range32, 2 },
-	{ "Common", +1, Common_range16, 92, Common_range32, 72 },
+	{ "Common", +1, Common_range16, 90, Common_range32, 76 },
 	{ "Coptic", +1, Coptic_range16, 3, 0, 0 },
 	{ "Cs", +1, Cs_range16, 1, 0, 0 },
 	{ "Cuneiform", +1, 0, 0, Cuneiform_range32, 4 },
@@ -5768,79 +5901,84 @@
 	{ "Cyrillic", +1, Cyrillic_range16, 8, 0, 0 },
 	{ "Deseret", +1, 0, 0, Deseret_range32, 1 },
 	{ "Devanagari", +1, Devanagari_range16, 4, 0, 0 },
+	{ "Dogra", +1, 0, 0, Dogra_range32, 1 },
 	{ "Duployan", +1, 0, 0, Duployan_range32, 5 },
 	{ "Egyptian_Hieroglyphs", +1, 0, 0, Egyptian_Hieroglyphs_range32, 1 },
 	{ "Elbasan", +1, 0, 0, Elbasan_range32, 1 },
 	{ "Ethiopic", +1, Ethiopic_range16, 32, 0, 0 },
-	{ "Georgian", +1, Georgian_range16, 8, 0, 0 },
+	{ "Georgian", +1, Georgian_range16, 10, 0, 0 },
 	{ "Glagolitic", +1, Glagolitic_range16, 2, Glagolitic_range32, 5 },
 	{ "Gothic", +1, 0, 0, Gothic_range32, 1 },
 	{ "Grantha", +1, 0, 0, Grantha_range32, 15 },
 	{ "Greek", +1, Greek_range16, 33, Greek_range32, 3 },
 	{ "Gujarati", +1, Gujarati_range16, 14, 0, 0 },
+	{ "Gunjala_Gondi", +1, 0, 0, Gunjala_Gondi_range32, 6 },
 	{ "Gurmukhi", +1, Gurmukhi_range16, 16, 0, 0 },
 	{ "Han", +1, Han_range16, 11, Han_range32, 6 },
 	{ "Hangul", +1, Hangul_range16, 14, 0, 0 },
+	{ "Hanifi_Rohingya", +1, 0, 0, Hanifi_Rohingya_range32, 2 },
 	{ "Hanunoo", +1, Hanunoo_range16, 1, 0, 0 },
 	{ "Hatran", +1, 0, 0, Hatran_range32, 3 },
 	{ "Hebrew", +1, Hebrew_range16, 9, 0, 0 },
 	{ "Hiragana", +1, Hiragana_range16, 2, Hiragana_range32, 2 },
 	{ "Imperial_Aramaic", +1, 0, 0, Imperial_Aramaic_range32, 2 },
-	{ "Inherited", +1, Inherited_range16, 20, Inherited_range32, 7 },
+	{ "Inherited", +1, Inherited_range16, 20, Inherited_range32, 8 },
 	{ "Inscriptional_Pahlavi", +1, 0, 0, Inscriptional_Pahlavi_range32, 2 },
 	{ "Inscriptional_Parthian", +1, 0, 0, Inscriptional_Parthian_range32, 2 },
 	{ "Javanese", +1, Javanese_range16, 3, 0, 0 },
-	{ "Kaithi", +1, 0, 0, Kaithi_range32, 1 },
-	{ "Kannada", +1, Kannada_range16, 14, 0, 0 },
+	{ "Kaithi", +1, 0, 0, Kaithi_range32, 2 },
+	{ "Kannada", +1, Kannada_range16, 13, 0, 0 },
 	{ "Katakana", +1, Katakana_range16, 7, Katakana_range32, 1 },
 	{ "Kayah_Li", +1, Kayah_Li_range16, 2, 0, 0 },
 	{ "Kharoshthi", +1, 0, 0, Kharoshthi_range32, 8 },
 	{ "Khmer", +1, Khmer_range16, 4, 0, 0 },
 	{ "Khojki", +1, 0, 0, Khojki_range32, 2 },
 	{ "Khudawadi", +1, 0, 0, Khudawadi_range32, 2 },
-	{ "L", +1, L_range16, 383, L_range32, 202 },
+	{ "L", +1, L_range16, 384, L_range32, 215 },
 	{ "Lao", +1, Lao_range16, 18, 0, 0 },
-	{ "Latin", +1, Latin_range16, 31, 0, 0 },
+	{ "Latin", +1, Latin_range16, 30, 0, 0 },
 	{ "Lepcha", +1, Lepcha_range16, 3, 0, 0 },
 	{ "Limbu", +1, Limbu_range16, 5, 0, 0 },
 	{ "Linear_A", +1, 0, 0, Linear_A_range32, 3 },
 	{ "Linear_B", +1, 0, 0, Linear_B_range32, 7 },
 	{ "Lisu", +1, Lisu_range16, 1, 0, 0 },
-	{ "Ll", +1, Ll_range16, 600, Ll_range32, 33 },
+	{ "Ll", +1, Ll_range16, 604, Ll_range32, 34 },
 	{ "Lm", +1, Lm_range16, 54, Lm_range32, 3 },
-	{ "Lo", +1, Lo_range16, 296, Lo_range32, 163 },
+	{ "Lo", +1, Lo_range16, 295, Lo_range32, 175 },
 	{ "Lt", +1, Lt_range16, 10, 0, 0 },
-	{ "Lu", +1, Lu_range16, 591, Lu_range32, 36 },
+	{ "Lu", +1, Lu_range16, 594, Lu_range32, 37 },
 	{ "Lycian", +1, 0, 0, Lycian_range32, 1 },
 	{ "Lydian", +1, 0, 0, Lydian_range32, 2 },
-	{ "M", +1, M_range16, 184, M_range32, 79 },
+	{ "M", +1, M_range16, 187, M_range32, 88 },
 	{ "Mahajani", +1, 0, 0, Mahajani_range32, 1 },
+	{ "Makasar", +1, 0, 0, Makasar_range32, 1 },
 	{ "Malayalam", +1, Malayalam_range16, 8, 0, 0 },
 	{ "Mandaic", +1, Mandaic_range16, 2, 0, 0 },
 	{ "Manichaean", +1, 0, 0, Manichaean_range32, 2 },
 	{ "Marchen", +1, 0, 0, Marchen_range32, 3 },
 	{ "Masaram_Gondi", +1, 0, 0, Masaram_Gondi_range32, 7 },
-	{ "Mc", +1, Mc_range16, 110, Mc_range32, 50 },
+	{ "Mc", +1, Mc_range16, 110, Mc_range32, 56 },
 	{ "Me", +1, Me_range16, 5, 0, 0 },
+	{ "Medefaidrin", +1, 0, 0, Medefaidrin_range32, 1 },
 	{ "Meetei_Mayek", +1, Meetei_Mayek_range16, 3, 0, 0 },
 	{ "Mende_Kikakui", +1, 0, 0, Mende_Kikakui_range32, 2 },
 	{ "Meroitic_Cursive", +1, 0, 0, Meroitic_Cursive_range32, 3 },
 	{ "Meroitic_Hieroglyphs", +1, 0, 0, Meroitic_Hieroglyphs_range32, 1 },
 	{ "Miao", +1, 0, 0, Miao_range32, 3 },
-	{ "Mn", +1, Mn_range16, 204, Mn_range32, 97 },
+	{ "Mn", +1, Mn_range16, 208, Mn_range32, 105 },
 	{ "Modi", +1, 0, 0, Modi_range32, 2 },
 	{ "Mongolian", +1, Mongolian_range16, 6, Mongolian_range32, 1 },
 	{ "Mro", +1, 0, 0, Mro_range32, 3 },
 	{ "Multani", +1, 0, 0, Multani_range32, 5 },
 	{ "Myanmar", +1, Myanmar_range16, 3, 0, 0 },
-	{ "N", +1, N_range16, 67, N_range32, 49 },
+	{ "N", +1, N_range16, 67, N_range32, 58 },
 	{ "Nabataean", +1, 0, 0, Nabataean_range32, 2 },
-	{ "Nd", +1, Nd_range16, 37, Nd_range32, 18 },
+	{ "Nd", +1, Nd_range16, 37, Nd_range32, 20 },
 	{ "New_Tai_Lue", +1, New_Tai_Lue_range16, 4, 0, 0 },
 	{ "Newa", +1, 0, 0, Newa_range32, 3 },
-	{ "Nko", +1, Nko_range16, 1, 0, 0 },
+	{ "Nko", +1, Nko_range16, 2, 0, 0 },
 	{ "Nl", +1, Nl_range16, 7, Nl_range32, 5 },
-	{ "No", +1, No_range16, 29, No_range32, 31 },
+	{ "No", +1, No_range16, 29, No_range32, 38 },
 	{ "Nushu", +1, 0, 0, Nushu_range32, 2 },
 	{ "Ogham", +1, Ogham_range16, 1, 0, 0 },
 	{ "Ol_Chiki", +1, Ol_Chiki_range16, 1, 0, 0 },
@@ -5849,12 +5987,13 @@
 	{ "Old_North_Arabian", +1, 0, 0, Old_North_Arabian_range32, 1 },
 	{ "Old_Permic", +1, 0, 0, Old_Permic_range32, 1 },
 	{ "Old_Persian", +1, 0, 0, Old_Persian_range32, 2 },
+	{ "Old_Sogdian", +1, 0, 0, Old_Sogdian_range32, 1 },
 	{ "Old_South_Arabian", +1, 0, 0, Old_South_Arabian_range32, 1 },
 	{ "Old_Turkic", +1, 0, 0, Old_Turkic_range32, 1 },
 	{ "Oriya", +1, Oriya_range16, 14, 0, 0 },
 	{ "Osage", +1, 0, 0, Osage_range32, 2 },
 	{ "Osmanya", +1, 0, 0, Osmanya_range32, 2 },
-	{ "P", +1, P_range16, 128, P_range32, 44 },
+	{ "P", +1, P_range16, 130, P_range32, 48 },
 	{ "Pahawh_Hmong", +1, 0, 0, Pahawh_Hmong_range32, 5 },
 	{ "Palmyrene", +1, 0, 0, Palmyrene_range32, 1 },
 	{ "Pau_Cin_Hau", +1, 0, 0, Pau_Cin_Hau_range32, 1 },
@@ -5865,15 +6004,15 @@
 	{ "Phags_Pa", +1, Phags_Pa_range16, 1, 0, 0 },
 	{ "Phoenician", +1, 0, 0, Phoenician_range32, 2 },
 	{ "Pi", +1, Pi_range16, 11, 0, 0 },
-	{ "Po", +1, Po_range16, 125, Po_range32, 44 },
+	{ "Po", +1, Po_range16, 127, Po_range32, 48 },
 	{ "Ps", +1, Ps_range16, 75, 0, 0 },
 	{ "Psalter_Pahlavi", +1, 0, 0, Psalter_Pahlavi_range32, 3 },
 	{ "Rejang", +1, Rejang_range16, 2, 0, 0 },
 	{ "Runic", +1, Runic_range16, 2, 0, 0 },
-	{ "S", +1, S_range16, 148, S_range32, 69 },
+	{ "S", +1, S_range16, 147, S_range32, 73 },
 	{ "Samaritan", +1, Samaritan_range16, 2, 0, 0 },
 	{ "Saurashtra", +1, Saurashtra_range16, 2, 0, 0 },
-	{ "Sc", +1, Sc_range16, 17, 0, 0 },
+	{ "Sc", +1, Sc_range16, 18, Sc_range32, 1 },
 	{ "Sharada", +1, 0, 0, Sharada_range32, 2 },
 	{ "Shavian", +1, 0, 0, Shavian_range32, 1 },
 	{ "Siddham", +1, 0, 0, Siddham_range32, 2 },
@@ -5881,9 +6020,10 @@
 	{ "Sinhala", +1, Sinhala_range16, 12, Sinhala_range32, 1 },
 	{ "Sk", +1, Sk_range16, 28, Sk_range32, 1 },
 	{ "Sm", +1, Sm_range16, 53, Sm_range32, 11 },
-	{ "So", +1, So_range16, 114, So_range32, 59 },
+	{ "So", +1, So_range16, 112, So_range32, 62 },
+	{ "Sogdian", +1, 0, 0, Sogdian_range32, 1 },
 	{ "Sora_Sompeng", +1, 0, 0, Sora_Sompeng_range32, 2 },
-	{ "Soyombo", +1, 0, 0, Soyombo_range32, 3 },
+	{ "Soyombo", +1, 0, 0, Soyombo_range32, 2 },
 	{ "Sundanese", +1, Sundanese_range16, 2, 0, 0 },
 	{ "Syloti_Nagri", +1, Syloti_Nagri_range16, 1, 0, 0 },
 	{ "Syriac", +1, Syriac_range16, 4, 0, 0 },
@@ -5895,7 +6035,7 @@
 	{ "Takri", +1, 0, 0, Takri_range32, 2 },
 	{ "Tamil", +1, Tamil_range16, 16, 0, 0 },
 	{ "Tangut", +1, 0, 0, Tangut_range32, 3 },
-	{ "Telugu", +1, Telugu_range16, 13, 0, 0 },
+	{ "Telugu", +1, Telugu_range16, 12, 0, 0 },
 	{ "Thaana", +1, Thaana_range16, 1, 0, 0 },
 	{ "Thai", +1, Thai_range16, 2, 0, 0 },
 	{ "Tibetan", +1, Tibetan_range16, 7, 0, 0 },
@@ -5911,7 +6051,7 @@
 	{ "Zp", +1, Zp_range16, 1, 0, 0 },
 	{ "Zs", +1, Zs_range16, 7, 0, 0 },
 };
-const int num_unicode_groups = 177;
+const int num_unicode_groups = 184;
 
 
 }  // namespace re2