1 // Copyright 2012 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // 5 // This file was generated at 2014-10-08 15:25:47.940335 6 7 #include "src/unicode.h" 8 #include "src/unicode-inl.h" 9 #include <stdio.h> 10 #include <stdlib.h> 11 12 namespace unibrow { 13 14 static const int kStartBit = (1 << 30); 15 static const int kChunkBits = (1 << 13); 16 static const uchar kSentinel = static_cast<uchar>(-1); 17 18 /** 19 * \file 20 * Implementations of functions for working with unicode. 21 */ 22 23 typedef signed short int16_t; // NOLINT 24 typedef unsigned short uint16_t; // NOLINT 25 typedef int int32_t; // NOLINT 26 27 28 // All access to the character table should go through this function. 29 template <int D> 30 static inline uchar TableGet(const int32_t* table, int index) { 31 return table[D * index]; 32 } 33 34 35 static inline uchar GetEntry(int32_t entry) { 36 return entry & (kStartBit - 1); 37 } 38 39 40 static inline bool IsStart(int32_t entry) { 41 return (entry & kStartBit) != 0; 42 } 43 44 45 /** 46 * Look up a character in the unicode table using a mix of binary and 47 * interpolation search. For a uniformly distributed array 48 * interpolation search beats binary search by a wide margin. However, 49 * in this case interpolation search degenerates because of some very 50 * high values in the lower end of the table so this function uses a 51 * combination. The average number of steps to look up the information 52 * about a character is around 10, slightly higher if there is no 53 * information available about the character. 54 */ 55 static bool LookupPredicate(const int32_t* table, uint16_t size, uchar chr) { 56 static const int kEntryDist = 1; 57 uint16_t value = chr & (kChunkBits - 1); 58 unsigned int low = 0; 59 unsigned int high = size - 1; 60 while (high != low) { 61 unsigned int mid = low + ((high - low) >> 1); 62 uchar current_value = GetEntry(TableGet<kEntryDist>(table, mid)); 63 // If we've found an entry less than or equal to this one, and the 64 // next one is not also less than this one, we've arrived. 65 if ((current_value <= value) && 66 (mid + 1 == size || 67 GetEntry(TableGet<kEntryDist>(table, mid + 1)) > value)) { 68 low = mid; 69 break; 70 } else if (current_value < value) { 71 low = mid + 1; 72 } else if (current_value > value) { 73 // If we've just checked the bottom-most value and it's not 74 // the one we're looking for, we're done. 75 if (mid == 0) break; 76 high = mid - 1; 77 } 78 } 79 int32_t field = TableGet<kEntryDist>(table, low); 80 uchar entry = GetEntry(field); 81 bool is_start = IsStart(field); 82 return (entry == value) || (entry < value && is_start); 83 } 84 85 template <int kW> 86 struct MultiCharacterSpecialCase { 87 static const uchar kEndOfEncoding = kSentinel; 88 uchar chars[kW]; 89 }; 90 91 92 // Look up the mapping for the given character in the specified table, 93 // which is of the specified length and uses the specified special case 94 // mapping for multi-char mappings. The next parameter is the character 95 // following the one to map. The result will be written in to the result 96 // buffer and the number of characters written will be returned. Finally, 97 // if the allow_caching_ptr is non-null then false will be stored in 98 // it if the result contains multiple characters or depends on the 99 // context. 100 // If ranges are linear, a match between a start and end point is 101 // offset by the distance between the match and the start. Otherwise 102 // the result is the same as for the start point on the entire range. 103 template <bool ranges_are_linear, int kW> 104 static int LookupMapping(const int32_t* table, 105 uint16_t size, 106 const MultiCharacterSpecialCase<kW>* multi_chars, 107 uchar chr, 108 uchar next, 109 uchar* result, 110 bool* allow_caching_ptr) { 111 static const int kEntryDist = 2; 112 uint16_t key = chr & (kChunkBits - 1); 113 uint16_t chunk_start = chr - key; 114 unsigned int low = 0; 115 unsigned int high = size - 1; 116 while (high != low) { 117 unsigned int mid = low + ((high - low) >> 1); 118 uchar current_value = GetEntry(TableGet<kEntryDist>(table, mid)); 119 // If we've found an entry less than or equal to this one, and the next one 120 // is not also less than this one, we've arrived. 121 if ((current_value <= key) && 122 (mid + 1 == size || 123 GetEntry(TableGet<kEntryDist>(table, mid + 1)) > key)) { 124 low = mid; 125 break; 126 } else if (current_value < key) { 127 low = mid + 1; 128 } else if (current_value > key) { 129 // If we've just checked the bottom-most value and it's not 130 // the one we're looking for, we're done. 131 if (mid == 0) break; 132 high = mid - 1; 133 } 134 } 135 int32_t field = TableGet<kEntryDist>(table, low); 136 uchar entry = GetEntry(field); 137 bool is_start = IsStart(field); 138 bool found = (entry == key) || (entry < key && is_start); 139 if (found) { 140 int32_t value = table[2 * low + 1]; 141 if (value == 0) { 142 // 0 means not present 143 return 0; 144 } else if ((value & 3) == 0) { 145 // Low bits 0 means a constant offset from the given character. 146 if (ranges_are_linear) { 147 result[0] = chr + (value >> 2); 148 } else { 149 result[0] = entry + chunk_start + (value >> 2); 150 } 151 return 1; 152 } else if ((value & 3) == 1) { 153 // Low bits 1 means a special case mapping 154 if (allow_caching_ptr) *allow_caching_ptr = false; 155 const MultiCharacterSpecialCase<kW>& mapping = multi_chars[value >> 2]; 156 int length = 0; 157 for (length = 0; length < kW; length++) { 158 uchar mapped = mapping.chars[length]; 159 if (mapped == MultiCharacterSpecialCase<kW>::kEndOfEncoding) break; 160 if (ranges_are_linear) { 161 result[length] = mapped + (key - entry); 162 } else { 163 result[length] = mapped; 164 } 165 } 166 return length; 167 } else { 168 // Low bits 2 means a really really special case 169 if (allow_caching_ptr) *allow_caching_ptr = false; 170 // The cases of this switch are defined in unicode.py in the 171 // really_special_cases mapping. 172 switch (value >> 2) { 173 case 1: 174 // Really special case 1: upper case sigma. This letter 175 // converts to two different lower case sigmas depending on 176 // whether or not it occurs at the end of a word. 177 if (next != 0 && Letter::Is(next)) { 178 result[0] = 0x03C3; 179 } else { 180 result[0] = 0x03C2; 181 } 182 return 1; 183 default: 184 return 0; 185 } 186 return -1; 187 } 188 } else { 189 return 0; 190 } 191 } 192 193 static inline uint8_t NonASCIISequenceLength(byte first) { 194 // clang-format off 195 static const uint8_t lengths[256] = { 196 // The first 128 entries correspond to ASCII characters. 197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205 // The following 64 entries correspond to continuation bytes. 206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210 // The next are two invalid overlong encodings and 30 two-byte sequences. 211 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 212 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 213 // 16 three-byte sequences. 214 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 215 // 5 four-byte sequences, followed by sequences that could only encode 216 // code points outside of the unicode range. 217 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 218 // clang-format on 219 return lengths[first]; 220 } 221 222 223 static inline bool IsContinuationCharacter(byte chr) { 224 return chr >= 0x80 && chr <= 0xBF; 225 } 226 227 228 // This method decodes an UTF-8 value according to RFC 3629. 229 uchar Utf8::CalculateValue(const byte* str, size_t max_length, size_t* cursor) { 230 size_t length = NonASCIISequenceLength(str[0]); 231 232 // Check continuation characters. 233 size_t max_count = std::min(length, max_length); 234 size_t count = 1; 235 while (count < max_count && IsContinuationCharacter(str[count])) { 236 count++; 237 } 238 *cursor += count; 239 240 // There must be enough continuation characters. 241 if (count != length) return kBadChar; 242 243 // Check overly long sequences & other conditions. 244 if (length == 3) { 245 if (str[0] == 0xE0 && (str[1] < 0xA0 || str[1] > 0xBF)) { 246 // Overlong three-byte sequence? 247 return kBadChar; 248 } else if (str[0] == 0xED && (str[1] < 0x80 || str[1] > 0x9F)) { 249 // High and low surrogate halves? 250 return kBadChar; 251 } 252 } else if (length == 4) { 253 if (str[0] == 0xF0 && (str[1] < 0x90 || str[1] > 0xBF)) { 254 // Overlong four-byte sequence. 255 return kBadChar; 256 } else if (str[0] == 0xF4 && (str[1] < 0x80 || str[1] > 0x8F)) { 257 // Code points outside of the unicode range. 258 return kBadChar; 259 } 260 } 261 262 // All errors have been handled, so we only have to assemble the result. 263 switch (length) { 264 case 1: 265 return str[0]; 266 case 2: 267 return ((str[0] << 6) + str[1]) - 0x00003080; 268 case 3: 269 return ((str[0] << 12) + (str[1] << 6) + str[2]) - 0x000E2080; 270 case 4: 271 return ((str[0] << 18) + (str[1] << 12) + (str[2] << 6) + str[3]) - 272 0x03C82080; 273 } 274 275 UNREACHABLE(); 276 return kBadChar; 277 } 278 279 uchar Utf8::ValueOfIncremental(byte next, Utf8IncrementalBuffer* buffer) { 280 DCHECK_NOT_NULL(buffer); 281 282 // The common case: 1-byte Utf8 (and no incomplete char in the buffer) 283 if (V8_LIKELY(next <= kMaxOneByteChar && *buffer == 0)) { 284 return static_cast<uchar>(next); 285 } 286 287 if (*buffer == 0) { 288 // We're at the start of a new character. 289 uint32_t kind = NonASCIISequenceLength(next); 290 if (kind >= 2 && kind <= 4) { 291 // Start of 2..4 byte character, and no buffer. 292 293 // The mask for the lower bits depends on the kind, and is 294 // 0x1F, 0x0F, 0x07 for kinds 2, 3, 4 respectively. We can get that 295 // with one shift. 296 uint8_t mask = 0x7f >> kind; 297 298 // Store the kind in the top nibble, and kind - 1 (i.e., remaining bytes) 299 // in 2nd nibble, and the value in the bottom three. The 2nd nibble is 300 // intended as a counter about how many bytes are still needed. 301 *buffer = kind << 28 | (kind - 1) << 24 | (next & mask); 302 return kIncomplete; 303 } else { 304 // No buffer, and not the start of a 1-byte char (handled at the 305 // beginning), and not the start of a 2..4 byte char? Bad char. 306 *buffer = 0; 307 return kBadChar; 308 } 309 } else if (*buffer <= 0xff) { 310 // We have one unprocessed byte left (from the last else case in this if 311 // statement). 312 uchar previous = *buffer; 313 *buffer = 0; 314 uchar t = ValueOfIncremental(previous, buffer); 315 if (t == kIncomplete) { 316 // If we have an incomplete character, process both the previous and the 317 // next byte at once. 318 return ValueOfIncremental(next, buffer); 319 } else { 320 // Otherwise, process the previous byte and save the next byte for next 321 // time. 322 DCHECK_EQ(0u, *buffer); 323 *buffer = next; 324 return t; 325 } 326 } else if (IsContinuationCharacter(next)) { 327 // We're inside of a character, as described by buffer. 328 329 // How many bytes (excluding this one) do we still expect? 330 uint8_t bytes_expected = *buffer >> 28; 331 uint8_t bytes_left = (*buffer >> 24) & 0x0f; 332 bytes_left--; 333 // Update the value. 334 uint32_t value = ((*buffer & 0xffffff) << 6) | (next & 0x3F); 335 if (bytes_left) { 336 *buffer = (bytes_expected << 28 | bytes_left << 24 | value); 337 return kIncomplete; 338 } else { 339 *buffer = 0; 340 bool sequence_was_too_long = (bytes_expected == 2 && value < 0x80) || 341 (bytes_expected == 3 && value < 0x800); 342 return sequence_was_too_long ? kBadChar : value; 343 } 344 } else { 345 // Within a character, but not a continuation character? Then the 346 // previous char was a bad char. But we need to save the current 347 // one. 348 *buffer = next; 349 return kBadChar; 350 } 351 } 352 353 uchar Utf8::ValueOfIncrementalFinish(Utf8IncrementalBuffer* buffer) { 354 DCHECK_NOT_NULL(buffer); 355 if (*buffer == 0) { 356 return kBufferEmpty; 357 } else { 358 // Process left-over chars. An incomplete char at the end maps to kBadChar. 359 uchar t = ValueOfIncremental(0, buffer); 360 return (t == kIncomplete) ? kBadChar : t; 361 } 362 } 363 364 bool Utf8::Validate(const byte* bytes, size_t length) { 365 size_t cursor = 0; 366 367 // Performance optimization: Skip over single-byte values first. 368 while (cursor < length && bytes[cursor] <= kMaxOneByteChar) { 369 ++cursor; 370 } 371 372 while (cursor < length) { 373 uchar c = ValueOf(bytes + cursor, length - cursor, &cursor); 374 if (!IsValidCharacter(c)) return false; 375 } 376 return true; 377 } 378 379 // Uppercase: point.category == 'Lu' 380 381 static const uint16_t kUppercaseTable0Size = 455; 382 static const int32_t kUppercaseTable0[455] = { 383 1073741889, 90, 1073742016, 214, 384 1073742040, 222, 256, 258, // NOLINT 385 260, 262, 264, 266, 386 268, 270, 272, 274, // NOLINT 387 276, 278, 280, 282, 388 284, 286, 288, 290, // NOLINT 389 292, 294, 296, 298, 390 300, 302, 304, 306, // NOLINT 391 308, 310, 313, 315, 392 317, 319, 321, 323, // NOLINT 393 325, 327, 330, 332, 394 334, 336, 338, 340, // NOLINT 395 342, 344, 346, 348, 396 350, 352, 354, 356, // NOLINT 397 358, 360, 362, 364, 398 366, 368, 370, 372, // NOLINT 399 374, 1073742200, 377, 379, 400 381, 1073742209, 386, 388, // NOLINT 401 1073742214, 391, 1073742217, 395, 402 1073742222, 401, 1073742227, 404, // NOLINT 403 1073742230, 408, 1073742236, 413, 404 1073742239, 416, 418, 420, // NOLINT 405 1073742246, 423, 425, 428, 406 1073742254, 431, 1073742257, 435, // NOLINT 407 437, 1073742263, 440, 444, 408 452, 455, 458, 461, // NOLINT 409 463, 465, 467, 469, 410 471, 473, 475, 478, // NOLINT 411 480, 482, 484, 486, 412 488, 490, 492, 494, // NOLINT 413 497, 500, 1073742326, 504, 414 506, 508, 510, 512, // NOLINT 415 514, 516, 518, 520, 416 522, 524, 526, 528, // NOLINT 417 530, 532, 534, 536, 418 538, 540, 542, 544, // NOLINT 419 546, 548, 550, 552, 420 554, 556, 558, 560, // NOLINT 421 562, 1073742394, 571, 1073742397, 422 574, 577, 1073742403, 582, // NOLINT 423 584, 586, 588, 590, 424 880, 882, 886, 895, // NOLINT 425 902, 1073742728, 906, 908, 426 1073742734, 911, 1073742737, 929, // NOLINT 427 1073742755, 939, 975, 1073742802, 428 980, 984, 986, 988, // NOLINT 429 990, 992, 994, 996, 430 998, 1000, 1002, 1004, // NOLINT 431 1006, 1012, 1015, 1073742841, 432 1018, 1073742845, 1071, 1120, // NOLINT 433 1122, 1124, 1126, 1128, 434 1130, 1132, 1134, 1136, // NOLINT 435 1138, 1140, 1142, 1144, 436 1146, 1148, 1150, 1152, // NOLINT 437 1162, 1164, 1166, 1168, 438 1170, 1172, 1174, 1176, // NOLINT 439 1178, 1180, 1182, 1184, 440 1186, 1188, 1190, 1192, // NOLINT 441 1194, 1196, 1198, 1200, 442 1202, 1204, 1206, 1208, // NOLINT 443 1210, 1212, 1214, 1073743040, 444 1217, 1219, 1221, 1223, // NOLINT 445 1225, 1227, 1229, 1232, 446 1234, 1236, 1238, 1240, // NOLINT 447 1242, 1244, 1246, 1248, 448 1250, 1252, 1254, 1256, // NOLINT 449 1258, 1260, 1262, 1264, 450 1266, 1268, 1270, 1272, // NOLINT 451 1274, 1276, 1278, 1280, 452 1282, 1284, 1286, 1288, // NOLINT 453 1290, 1292, 1294, 1296, 454 1298, 1300, 1302, 1304, // NOLINT 455 1306, 1308, 1310, 1312, 456 1314, 1316, 1318, 1320, // NOLINT 457 1322, 1324, 1326, 1073743153, 458 1366, 1073746080, 4293, 4295, // NOLINT 459 4301, 7680, 7682, 7684, 460 7686, 7688, 7690, 7692, // NOLINT 461 7694, 7696, 7698, 7700, 462 7702, 7704, 7706, 7708, // NOLINT 463 7710, 7712, 7714, 7716, 464 7718, 7720, 7722, 7724, // NOLINT 465 7726, 7728, 7730, 7732, 466 7734, 7736, 7738, 7740, // NOLINT 467 7742, 7744, 7746, 7748, 468 7750, 7752, 7754, 7756, // NOLINT 469 7758, 7760, 7762, 7764, 470 7766, 7768, 7770, 7772, // NOLINT 471 7774, 7776, 7778, 7780, 472 7782, 7784, 7786, 7788, // NOLINT 473 7790, 7792, 7794, 7796, 474 7798, 7800, 7802, 7804, // NOLINT 475 7806, 7808, 7810, 7812, 476 7814, 7816, 7818, 7820, // NOLINT 477 7822, 7824, 7826, 7828, 478 7838, 7840, 7842, 7844, // NOLINT 479 7846, 7848, 7850, 7852, 480 7854, 7856, 7858, 7860, // NOLINT 481 7862, 7864, 7866, 7868, 482 7870, 7872, 7874, 7876, // NOLINT 483 7878, 7880, 7882, 7884, 484 7886, 7888, 7890, 7892, // NOLINT 485 7894, 7896, 7898, 7900, 486 7902, 7904, 7906, 7908, // NOLINT 487 7910, 7912, 7914, 7916, 488 7918, 7920, 7922, 7924, // NOLINT 489 7926, 7928, 7930, 7932, 490 7934, 1073749768, 7951, 1073749784, // NOLINT 491 7965, 1073749800, 7983, 1073749816, 492 7999, 1073749832, 8013, 8025, // NOLINT 493 8027, 8029, 8031, 1073749864, 494 8047, 1073749944, 8123, 1073749960, // NOLINT 495 8139, 1073749976, 8155, 1073749992, 496 8172, 1073750008, 8187}; // NOLINT 497 static const uint16_t kUppercaseTable1Size = 86; 498 static const int32_t kUppercaseTable1[86] = { 499 258, 263, 1073742091, 269, 1073742096, 274, 277, 1073742105, // NOLINT 500 285, 292, 294, 296, 1073742122, 301, 1073742128, 307, // NOLINT 501 1073742142, 319, 325, 387, 1073744896, 3118, 3168, 1073744994, // NOLINT 502 3172, 3175, 3177, 3179, 1073745005, 3184, 3186, 3189, // NOLINT 503 1073745022, 3200, 3202, 3204, 3206, 3208, 3210, 3212, // NOLINT 504 3214, 3216, 3218, 3220, 3222, 3224, 3226, 3228, // NOLINT 505 3230, 3232, 3234, 3236, 3238, 3240, 3242, 3244, // NOLINT 506 3246, 3248, 3250, 3252, 3254, 3256, 3258, 3260, // NOLINT 507 3262, 3264, 3266, 3268, 3270, 3272, 3274, 3276, // NOLINT 508 3278, 3280, 3282, 3284, 3286, 3288, 3290, 3292, // NOLINT 509 3294, 3296, 3298, 3307, 3309, 3314 }; // NOLINT 510 static const uint16_t kUppercaseTable5Size = 101; 511 static const int32_t kUppercaseTable5[101] = { 512 1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614, // NOLINT 513 1616, 1618, 1620, 1622, 1624, 1626, 1628, 1630, // NOLINT 514 1632, 1634, 1636, 1638, 1640, 1642, 1644, 1664, // NOLINT 515 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, // NOLINT 516 1682, 1684, 1686, 1688, 1690, 1826, 1828, 1830, // NOLINT 517 1832, 1834, 1836, 1838, 1842, 1844, 1846, 1848, // NOLINT 518 1850, 1852, 1854, 1856, 1858, 1860, 1862, 1864, // NOLINT 519 1866, 1868, 1870, 1872, 1874, 1876, 1878, 1880, // NOLINT 520 1882, 1884, 1886, 1888, 1890, 1892, 1894, 1896, // NOLINT 521 1898, 1900, 1902, 1913, 1915, 1073743741, 1918, 1920, // NOLINT 522 1922, 1924, 1926, 1931, 1933, 1936, 1938, 1942, // NOLINT 523 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, // NOLINT 524 1960, 1073743786, 1965, 1073743792, 1969}; // NOLINT 525 static const uint16_t kUppercaseTable7Size = 2; 526 static const int32_t kUppercaseTable7[2] = { 527 1073749793, 7994 }; // NOLINT 528 bool Uppercase::Is(uchar c) { 529 int chunk_index = c >> 13; 530 switch (chunk_index) { 531 case 0: return LookupPredicate(kUppercaseTable0, 532 kUppercaseTable0Size, 533 c); 534 case 1: return LookupPredicate(kUppercaseTable1, 535 kUppercaseTable1Size, 536 c); 537 case 5: return LookupPredicate(kUppercaseTable5, 538 kUppercaseTable5Size, 539 c); 540 case 7: return LookupPredicate(kUppercaseTable7, 541 kUppercaseTable7Size, 542 c); 543 default: return false; 544 } 545 } 546 547 548 // Lowercase: point.category == 'Ll' 549 550 static const uint16_t kLowercaseTable0Size = 467; 551 static const int32_t kLowercaseTable0[467] = { 552 1073741921, 122, 181, 1073742047, 553 246, 1073742072, 255, 257, // NOLINT 554 259, 261, 263, 265, 555 267, 269, 271, 273, // NOLINT 556 275, 277, 279, 281, 557 283, 285, 287, 289, // NOLINT 558 291, 293, 295, 297, 559 299, 301, 303, 305, // NOLINT 560 307, 309, 1073742135, 312, 561 314, 316, 318, 320, // NOLINT 562 322, 324, 326, 1073742152, 563 329, 331, 333, 335, // NOLINT 564 337, 339, 341, 343, 565 345, 347, 349, 351, // NOLINT 566 353, 355, 357, 359, 567 361, 363, 365, 367, // NOLINT 568 369, 371, 373, 375, 569 378, 380, 1073742206, 384, // NOLINT 570 387, 389, 392, 1073742220, 571 397, 402, 405, 1073742233, // NOLINT 572 411, 414, 417, 419, 573 421, 424, 1073742250, 427, // NOLINT 574 429, 432, 436, 438, 575 1073742265, 442, 1073742269, 447, // NOLINT 576 454, 457, 460, 462, 577 464, 466, 468, 470, // NOLINT 578 472, 474, 1073742300, 477, 579 479, 481, 483, 485, // NOLINT 580 487, 489, 491, 493, 581 1073742319, 496, 499, 501, // NOLINT 582 505, 507, 509, 511, 583 513, 515, 517, 519, // NOLINT 584 521, 523, 525, 527, 585 529, 531, 533, 535, // NOLINT 586 537, 539, 541, 543, 587 545, 547, 549, 551, // NOLINT 588 553, 555, 557, 559, 589 561, 1073742387, 569, 572, // NOLINT 590 1073742399, 576, 578, 583, 591 585, 587, 589, 1073742415, // NOLINT 592 659, 1073742485, 687, 881, 593 883, 887, 1073742715, 893, // NOLINT 594 912, 1073742764, 974, 1073742800, 595 977, 1073742805, 983, 985, // NOLINT 596 987, 989, 991, 993, 597 995, 997, 999, 1001, // NOLINT 598 1003, 1005, 1073742831, 1011, 599 1013, 1016, 1073742843, 1020, // NOLINT 600 1073742896, 1119, 1121, 1123, 601 1125, 1127, 1129, 1131, // NOLINT 602 1133, 1135, 1137, 1139, 603 1141, 1143, 1145, 1147, // NOLINT 604 1149, 1151, 1153, 1163, 605 1165, 1167, 1169, 1171, // NOLINT 606 1173, 1175, 1177, 1179, 607 1181, 1183, 1185, 1187, // NOLINT 608 1189, 1191, 1193, 1195, 609 1197, 1199, 1201, 1203, // NOLINT 610 1205, 1207, 1209, 1211, 611 1213, 1215, 1218, 1220, // NOLINT 612 1222, 1224, 1226, 1228, 613 1073743054, 1231, 1233, 1235, // NOLINT 614 1237, 1239, 1241, 1243, 615 1245, 1247, 1249, 1251, // NOLINT 616 1253, 1255, 1257, 1259, 617 1261, 1263, 1265, 1267, // NOLINT 618 1269, 1271, 1273, 1275, 619 1277, 1279, 1281, 1283, // NOLINT 620 1285, 1287, 1289, 1291, 621 1293, 1295, 1297, 1299, // NOLINT 622 1301, 1303, 1305, 1307, 623 1309, 1311, 1313, 1315, // NOLINT 624 1317, 1319, 1321, 1323, 625 1325, 1327, 1073743201, 1415, // NOLINT 626 1073749248, 7467, 1073749355, 7543, 627 1073749369, 7578, 7681, 7683, // NOLINT 628 7685, 7687, 7689, 7691, 629 7693, 7695, 7697, 7699, // NOLINT 630 7701, 7703, 7705, 7707, 631 7709, 7711, 7713, 7715, // NOLINT 632 7717, 7719, 7721, 7723, 633 7725, 7727, 7729, 7731, // NOLINT 634 7733, 7735, 7737, 7739, 635 7741, 7743, 7745, 7747, // NOLINT 636 7749, 7751, 7753, 7755, 637 7757, 7759, 7761, 7763, // NOLINT 638 7765, 7767, 7769, 7771, 639 7773, 7775, 7777, 7779, // NOLINT 640 7781, 7783, 7785, 7787, 641 7789, 7791, 7793, 7795, // NOLINT 642 7797, 7799, 7801, 7803, 643 7805, 7807, 7809, 7811, // NOLINT 644 7813, 7815, 7817, 7819, 645 7821, 7823, 7825, 7827, // NOLINT 646 1073749653, 7837, 7839, 7841, 647 7843, 7845, 7847, 7849, // NOLINT 648 7851, 7853, 7855, 7857, 649 7859, 7861, 7863, 7865, // NOLINT 650 7867, 7869, 7871, 7873, 651 7875, 7877, 7879, 7881, // NOLINT 652 7883, 7885, 7887, 7889, 653 7891, 7893, 7895, 7897, // NOLINT 654 7899, 7901, 7903, 7905, 655 7907, 7909, 7911, 7913, // NOLINT 656 7915, 7917, 7919, 7921, 657 7923, 7925, 7927, 7929, // NOLINT 658 7931, 7933, 1073749759, 7943, 659 1073749776, 7957, 1073749792, 7975, // NOLINT 660 1073749808, 7991, 1073749824, 8005, 661 1073749840, 8023, 1073749856, 8039, // NOLINT 662 1073749872, 8061, 1073749888, 8071, 663 1073749904, 8087, 1073749920, 8103, // NOLINT 664 1073749936, 8116, 1073749942, 8119, 665 8126, 1073749954, 8132, 1073749958, // NOLINT 666 8135, 1073749968, 8147, 1073749974, 667 8151, 1073749984, 8167, 1073750002, // NOLINT 668 8180, 1073750006, 8183}; // NOLINT 669 static const uint16_t kLowercaseTable1Size = 84; 670 static const int32_t kLowercaseTable1[84] = { 671 266, 1073742094, 271, 275, 303, 308, 313, 1073742140, // NOLINT 672 317, 1073742150, 329, 334, 388, 1073744944, 3166, 3169, // NOLINT 673 1073744997, 3174, 3176, 3178, 3180, 3185, 1073745011, 3188, // NOLINT 674 1073745014, 3195, 3201, 3203, 3205, 3207, 3209, 3211, // NOLINT 675 3213, 3215, 3217, 3219, 3221, 3223, 3225, 3227, // NOLINT 676 3229, 3231, 3233, 3235, 3237, 3239, 3241, 3243, // NOLINT 677 3245, 3247, 3249, 3251, 3253, 3255, 3257, 3259, // NOLINT 678 3261, 3263, 3265, 3267, 3269, 3271, 3273, 3275, // NOLINT 679 3277, 3279, 3281, 3283, 3285, 3287, 3289, 3291, // NOLINT 680 3293, 3295, 3297, 1073745123, 3300, 3308, 3310, 3315, // NOLINT 681 1073745152, 3365, 3367, 3373 }; // NOLINT 682 static const uint16_t kLowercaseTable5Size = 105; 683 static const int32_t kLowercaseTable5[105] = { 684 1601, 1603, 1605, 1607, 685 1609, 1611, 1613, 1615, // NOLINT 686 1617, 1619, 1621, 1623, 687 1625, 1627, 1629, 1631, // NOLINT 688 1633, 1635, 1637, 1639, 689 1641, 1643, 1645, 1665, // NOLINT 690 1667, 1669, 1671, 1673, 691 1675, 1677, 1679, 1681, // NOLINT 692 1683, 1685, 1687, 1689, 693 1691, 1827, 1829, 1831, // NOLINT 694 1833, 1835, 1837, 1073743663, 695 1841, 1843, 1845, 1847, // NOLINT 696 1849, 1851, 1853, 1855, 697 1857, 1859, 1861, 1863, // NOLINT 698 1865, 1867, 1869, 1871, 699 1873, 1875, 1877, 1879, // NOLINT 700 1881, 1883, 1885, 1887, 701 1889, 1891, 1893, 1895, // NOLINT 702 1897, 1899, 1901, 1903, 703 1073743729, 1912, 1914, 1916, // NOLINT 704 1919, 1921, 1923, 1925, 705 1927, 1932, 1934, 1937, // NOLINT 706 1073743763, 1941, 1943, 1945, 707 1947, 1949, 1951, 1953, // NOLINT 708 1955, 1957, 1959, 1961, 709 2042, 1073744688, 2906, 1073744740, // NOLINT 710 2917}; // NOLINT 711 static const uint16_t kLowercaseTable7Size = 6; 712 static const int32_t kLowercaseTable7[6] = { 713 1073748736, 6918, 1073748755, 6935, 1073749825, 8026 }; // NOLINT 714 bool Lowercase::Is(uchar c) { 715 int chunk_index = c >> 13; 716 switch (chunk_index) { 717 case 0: return LookupPredicate(kLowercaseTable0, 718 kLowercaseTable0Size, 719 c); 720 case 1: return LookupPredicate(kLowercaseTable1, 721 kLowercaseTable1Size, 722 c); 723 case 5: return LookupPredicate(kLowercaseTable5, 724 kLowercaseTable5Size, 725 c); 726 case 7: return LookupPredicate(kLowercaseTable7, 727 kLowercaseTable7Size, 728 c); 729 default: return false; 730 } 731 } 732 733 734 // Letter: point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl'] 735 736 static const uint16_t kLetterTable0Size = 431; 737 static const int32_t kLetterTable0[431] = { 738 1073741889, 90, 1073741921, 122, 739 170, 181, 186, 1073742016, // NOLINT 740 214, 1073742040, 246, 1073742072, 741 705, 1073742534, 721, 1073742560, // NOLINT 742 740, 748, 750, 1073742704, 743 884, 1073742710, 887, 1073742714, // NOLINT 744 893, 895, 902, 1073742728, 745 906, 908, 1073742734, 929, // NOLINT 746 1073742755, 1013, 1073742839, 1153, 747 1073742986, 1327, 1073743153, 1366, // NOLINT 748 1369, 1073743201, 1415, 1073743312, 749 1514, 1073743344, 1522, 1073743392, // NOLINT 750 1610, 1073743470, 1647, 1073743473, 751 1747, 1749, 1073743589, 1766, // NOLINT 752 1073743598, 1775, 1073743610, 1788, 753 1791, 1808, 1073743634, 1839, // NOLINT 754 1073743693, 1957, 1969, 1073743818, 755 2026, 1073743860, 2037, 2042, // NOLINT 756 1073743872, 2069, 2074, 2084, 757 2088, 1073743936, 2136, 1073744032, // NOLINT 758 2226, 1073744132, 2361, 2365, 759 2384, 1073744216, 2401, 1073744241, // NOLINT 760 2432, 1073744261, 2444, 1073744271, 761 2448, 1073744275, 2472, 1073744298, // NOLINT 762 2480, 2482, 1073744310, 2489, 763 2493, 2510, 1073744348, 2525, // NOLINT 764 1073744351, 2529, 1073744368, 2545, 765 1073744389, 2570, 1073744399, 2576, // NOLINT 766 1073744403, 2600, 1073744426, 2608, 767 1073744434, 2611, 1073744437, 2614, // NOLINT 768 1073744440, 2617, 1073744473, 2652, 769 2654, 1073744498, 2676, 1073744517, // NOLINT 770 2701, 1073744527, 2705, 1073744531, 771 2728, 1073744554, 2736, 1073744562, // NOLINT 772 2739, 1073744565, 2745, 2749, 773 2768, 1073744608, 2785, 1073744645, // NOLINT 774 2828, 1073744655, 2832, 1073744659, 775 2856, 1073744682, 2864, 1073744690, // NOLINT 776 2867, 1073744693, 2873, 2877, 777 1073744732, 2909, 1073744735, 2913, // NOLINT 778 2929, 2947, 1073744773, 2954, 779 1073744782, 2960, 1073744786, 2965, // NOLINT 780 1073744793, 2970, 2972, 1073744798, 781 2975, 1073744803, 2980, 1073744808, // NOLINT 782 2986, 1073744814, 3001, 3024, 783 1073744901, 3084, 1073744910, 3088, // NOLINT 784 1073744914, 3112, 1073744938, 3129, 785 3133, 1073744984, 3161, 1073744992, // NOLINT 786 3169, 1073745029, 3212, 1073745038, 787 3216, 1073745042, 3240, 1073745066, // NOLINT 788 3251, 1073745077, 3257, 3261, 789 3294, 1073745120, 3297, 1073745137, // NOLINT 790 3314, 1073745157, 3340, 1073745166, 791 3344, 1073745170, 3386, 3389, // NOLINT 792 3406, 1073745248, 3425, 1073745274, 793 3455, 1073745285, 3478, 1073745306, // NOLINT 794 3505, 1073745331, 3515, 3517, 795 1073745344, 3526, 1073745409, 3632, // NOLINT 796 1073745458, 3635, 1073745472, 3654, 797 1073745537, 3714, 3716, 1073745543, // NOLINT 798 3720, 3722, 3725, 1073745556, 799 3735, 1073745561, 3743, 1073745569, // NOLINT 800 3747, 3749, 3751, 1073745578, 801 3755, 1073745581, 3760, 1073745586, // NOLINT 802 3763, 3773, 1073745600, 3780, 803 3782, 1073745628, 3807, 3840, // NOLINT 804 1073745728, 3911, 1073745737, 3948, 805 1073745800, 3980, 1073745920, 4138, // NOLINT 806 4159, 1073746000, 4181, 1073746010, 807 4189, 4193, 1073746021, 4198, // NOLINT 808 1073746030, 4208, 1073746037, 4225, 809 4238, 1073746080, 4293, 4295, // NOLINT 810 4301, 1073746128, 4346, 1073746172, 811 4680, 1073746506, 4685, 1073746512, // NOLINT 812 4694, 4696, 1073746522, 4701, 813 1073746528, 4744, 1073746570, 4749, // NOLINT 814 1073746576, 4784, 1073746610, 4789, 815 1073746616, 4798, 4800, 1073746626, // NOLINT 816 4805, 1073746632, 4822, 1073746648, 817 4880, 1073746706, 4885, 1073746712, // NOLINT 818 4954, 1073746816, 5007, 1073746848, 819 5108, 1073746945, 5740, 1073747567, // NOLINT 820 5759, 1073747585, 5786, 1073747616, 821 5866, 1073747694, 5880, 1073747712, // NOLINT 822 5900, 1073747726, 5905, 1073747744, 823 5937, 1073747776, 5969, 1073747808, // NOLINT 824 5996, 1073747822, 6000, 1073747840, 825 6067, 6103, 6108, 1073748000, // NOLINT 826 6263, 1073748096, 6312, 6314, 827 1073748144, 6389, 1073748224, 6430, // NOLINT 828 1073748304, 6509, 1073748336, 6516, 829 1073748352, 6571, 1073748417, 6599, // NOLINT 830 1073748480, 6678, 1073748512, 6740, 831 6823, 1073748741, 6963, 1073748805, // NOLINT 832 6987, 1073748867, 7072, 1073748910, 833 7087, 1073748922, 7141, 1073748992, // NOLINT 834 7203, 1073749069, 7247, 1073749082, 835 7293, 1073749225, 7404, 1073749230, // NOLINT 836 7409, 1073749237, 7414, 1073749248, 837 7615, 1073749504, 7957, 1073749784, // NOLINT 838 7965, 1073749792, 8005, 1073749832, 839 8013, 1073749840, 8023, 8025, // NOLINT 840 8027, 8029, 1073749855, 8061, 841 1073749888, 8116, 1073749942, 8124, // NOLINT 842 8126, 1073749954, 8132, 1073749958, 843 8140, 1073749968, 8147, 1073749974, // NOLINT 844 8155, 1073749984, 8172, 1073750002, 845 8180, 1073750006, 8188}; // NOLINT 846 static const uint16_t kLetterTable1Size = 87; 847 static const int32_t kLetterTable1[87] = { 848 113, 127, 1073741968, 156, 258, 263, 1073742090, 275, // NOLINT 849 277, 1073742105, 285, 292, 294, 296, 1073742122, 301, // NOLINT 850 1073742127, 313, 1073742140, 319, 1073742149, 329, 334, 1073742176, // NOLINT 851 392, 1073744896, 3118, 1073744944, 3166, 1073744992, 3300, 1073745131, // NOLINT 852 3310, 1073745138, 3315, 1073745152, 3365, 3367, 3373, 1073745200, // NOLINT 853 3431, 3439, 1073745280, 3478, 1073745312, 3494, 1073745320, 3502, // NOLINT 854 1073745328, 3510, 1073745336, 3518, 1073745344, 3526, 1073745352, 3534, // NOLINT 855 1073745360, 3542, 1073745368, 3550, 3631, 1073745925, 4103, 1073745953, // NOLINT 856 4137, 1073745969, 4149, 1073745976, 4156, 1073745985, 4246, 1073746077, // NOLINT 857 4255, 1073746081, 4346, 1073746172, 4351, 1073746181, 4397, 1073746225, // NOLINT 858 4494, 1073746336, 4538, 1073746416, 4607, 1073746944, 8191 }; // NOLINT 859 static const uint16_t kLetterTable2Size = 4; 860 static const int32_t kLetterTable2[4] = { 861 1073741824, 3509, 1073745408, 8191 }; // NOLINT 862 static const uint16_t kLetterTable3Size = 2; 863 static const int32_t kLetterTable3[2] = { 864 1073741824, 8191 }; // NOLINT 865 static const uint16_t kLetterTable4Size = 2; 866 static const int32_t kLetterTable4[2] = { 867 1073741824, 8140 }; // NOLINT 868 static const uint16_t kLetterTable5Size = 100; 869 static const int32_t kLetterTable5[100] = { 870 1073741824, 1164, 1073743056, 1277, 871 1073743104, 1548, 1073743376, 1567, // NOLINT 872 1073743402, 1579, 1073743424, 1646, 873 1073743487, 1693, 1073743520, 1775, // NOLINT 874 1073743639, 1823, 1073743650, 1928, 875 1073743755, 1934, 1073743760, 1965, // NOLINT 876 1073743792, 1969, 1073743863, 2049, 877 1073743875, 2053, 1073743879, 2058, // NOLINT 878 1073743884, 2082, 1073743936, 2163, 879 1073744002, 2227, 1073744114, 2295, // NOLINT 880 2299, 1073744138, 2341, 1073744176, 881 2374, 1073744224, 2428, 1073744260, // NOLINT 882 2482, 2511, 1073744352, 2532, 883 1073744358, 2543, 1073744378, 2558, // NOLINT 884 1073744384, 2600, 1073744448, 2626, 885 1073744452, 2635, 1073744480, 2678, // NOLINT 886 2682, 1073744510, 2735, 2737, 887 1073744565, 2742, 1073744569, 2749, // NOLINT 888 2752, 2754, 1073744603, 2781, 889 1073744608, 2794, 1073744626, 2804, // NOLINT 890 1073744641, 2822, 1073744649, 2830, 891 1073744657, 2838, 1073744672, 2854, // NOLINT 892 1073744680, 2862, 1073744688, 2906, 893 1073744732, 2911, 1073744740, 2917, // NOLINT 894 1073744832, 3042, 1073744896, 8191}; // NOLINT 895 static const uint16_t kLetterTable6Size = 6; 896 static const int32_t kLetterTable6[6] = { 897 1073741824, 6051, 1073747888, 6086, 1073747915, 6139 }; // NOLINT 898 static const uint16_t kLetterTable7Size = 48; 899 static const int32_t kLetterTable7[48] = { 900 1073748224, 6765, 1073748592, 6873, 1073748736, 6918, 1073748755, 6935, // NOLINT 901 6941, 1073748767, 6952, 1073748778, 6966, 1073748792, 6972, 6974, // NOLINT 902 1073748800, 6977, 1073748803, 6980, 1073748806, 7089, 1073748947, 7485, // NOLINT 903 1073749328, 7567, 1073749394, 7623, 1073749488, 7675, 1073749616, 7796, // NOLINT 904 1073749622, 7932, 1073749793, 7994, 1073749825, 8026, 1073749862, 8126, // NOLINT 905 1073749954, 8135, 1073749962, 8143, 1073749970, 8151, 1073749978, 8156 }; // NOLINT 906 bool Letter::Is(uchar c) { 907 int chunk_index = c >> 13; 908 switch (chunk_index) { 909 case 0: return LookupPredicate(kLetterTable0, 910 kLetterTable0Size, 911 c); 912 case 1: return LookupPredicate(kLetterTable1, 913 kLetterTable1Size, 914 c); 915 case 2: return LookupPredicate(kLetterTable2, 916 kLetterTable2Size, 917 c); 918 case 3: return LookupPredicate(kLetterTable3, 919 kLetterTable3Size, 920 c); 921 case 4: return LookupPredicate(kLetterTable4, 922 kLetterTable4Size, 923 c); 924 case 5: return LookupPredicate(kLetterTable5, 925 kLetterTable5Size, 926 c); 927 case 6: return LookupPredicate(kLetterTable6, 928 kLetterTable6Size, 929 c); 930 case 7: return LookupPredicate(kLetterTable7, 931 kLetterTable7Size, 932 c); 933 default: return false; 934 } 935 } 936 937 938 // ID_Start: ((point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo', 939 // 'Nl'] or 'Other_ID_Start' in point.properties) and ('Pattern_Syntax' not in 940 // point.properties) and ('Pattern_White_Space' not in point.properties)) or 941 // ('JS_ID_Start' in point.properties) 942 943 static const uint16_t kID_StartTable0Size = 434; 944 static const int32_t kID_StartTable0[434] = { 945 36, 1073741889, 90, 92, 946 95, 1073741921, 122, 170, // NOLINT 947 181, 186, 1073742016, 214, 948 1073742040, 246, 1073742072, 705, // NOLINT 949 1073742534, 721, 1073742560, 740, 950 748, 750, 1073742704, 884, // NOLINT 951 1073742710, 887, 1073742714, 893, 952 895, 902, 1073742728, 906, // NOLINT 953 908, 1073742734, 929, 1073742755, 954 1013, 1073742839, 1153, 1073742986, // NOLINT 955 1327, 1073743153, 1366, 1369, 956 1073743201, 1415, 1073743312, 1514, // NOLINT 957 1073743344, 1522, 1073743392, 1610, 958 1073743470, 1647, 1073743473, 1747, // NOLINT 959 1749, 1073743589, 1766, 1073743598, 960 1775, 1073743610, 1788, 1791, // NOLINT 961 1808, 1073743634, 1839, 1073743693, 962 1957, 1969, 1073743818, 2026, // NOLINT 963 1073743860, 2037, 2042, 1073743872, 964 2069, 2074, 2084, 2088, // NOLINT 965 1073743936, 2136, 1073744032, 2226, 966 1073744132, 2361, 2365, 2384, // NOLINT 967 1073744216, 2401, 1073744241, 2432, 968 1073744261, 2444, 1073744271, 2448, // NOLINT 969 1073744275, 2472, 1073744298, 2480, 970 2482, 1073744310, 2489, 2493, // NOLINT 971 2510, 1073744348, 2525, 1073744351, 972 2529, 1073744368, 2545, 1073744389, // NOLINT 973 2570, 1073744399, 2576, 1073744403, 974 2600, 1073744426, 2608, 1073744434, // NOLINT 975 2611, 1073744437, 2614, 1073744440, 976 2617, 1073744473, 2652, 2654, // NOLINT 977 1073744498, 2676, 1073744517, 2701, 978 1073744527, 2705, 1073744531, 2728, // NOLINT 979 1073744554, 2736, 1073744562, 2739, 980 1073744565, 2745, 2749, 2768, // NOLINT 981 1073744608, 2785, 1073744645, 2828, 982 1073744655, 2832, 1073744659, 2856, // NOLINT 983 1073744682, 2864, 1073744690, 2867, 984 1073744693, 2873, 2877, 1073744732, // NOLINT 985 2909, 1073744735, 2913, 2929, 986 2947, 1073744773, 2954, 1073744782, // NOLINT 987 2960, 1073744786, 2965, 1073744793, 988 2970, 2972, 1073744798, 2975, // NOLINT 989 1073744803, 2980, 1073744808, 2986, 990 1073744814, 3001, 3024, 1073744901, // NOLINT 991 3084, 1073744910, 3088, 1073744914, 992 3112, 1073744938, 3129, 3133, // NOLINT 993 1073744984, 3161, 1073744992, 3169, 994 1073745029, 3212, 1073745038, 3216, // NOLINT 995 1073745042, 3240, 1073745066, 3251, 996 1073745077, 3257, 3261, 3294, // NOLINT 997 1073745120, 3297, 1073745137, 3314, 998 1073745157, 3340, 1073745166, 3344, // NOLINT 999 1073745170, 3386, 3389, 3406, 1000 1073745248, 3425, 1073745274, 3455, // NOLINT 1001 1073745285, 3478, 1073745306, 3505, 1002 1073745331, 3515, 3517, 1073745344, // NOLINT 1003 3526, 1073745409, 3632, 1073745458, 1004 3635, 1073745472, 3654, 1073745537, // NOLINT 1005 3714, 3716, 1073745543, 3720, 1006 3722, 3725, 1073745556, 3735, // NOLINT 1007 1073745561, 3743, 1073745569, 3747, 1008 3749, 3751, 1073745578, 3755, // NOLINT 1009 1073745581, 3760, 1073745586, 3763, 1010 3773, 1073745600, 3780, 3782, // NOLINT 1011 1073745628, 3807, 3840, 1073745728, 1012 3911, 1073745737, 3948, 1073745800, // NOLINT 1013 3980, 1073745920, 4138, 4159, 1014 1073746000, 4181, 1073746010, 4189, // NOLINT 1015 4193, 1073746021, 4198, 1073746030, 1016 4208, 1073746037, 4225, 4238, // NOLINT 1017 1073746080, 4293, 4295, 4301, 1018 1073746128, 4346, 1073746172, 4680, // NOLINT 1019 1073746506, 4685, 1073746512, 4694, 1020 4696, 1073746522, 4701, 1073746528, // NOLINT 1021 4744, 1073746570, 4749, 1073746576, 1022 4784, 1073746610, 4789, 1073746616, // NOLINT 1023 4798, 4800, 1073746626, 4805, 1024 1073746632, 4822, 1073746648, 4880, // NOLINT 1025 1073746706, 4885, 1073746712, 4954, 1026 1073746816, 5007, 1073746848, 5108, // NOLINT 1027 1073746945, 5740, 1073747567, 5759, 1028 1073747585, 5786, 1073747616, 5866, // NOLINT 1029 1073747694, 5880, 1073747712, 5900, 1030 1073747726, 5905, 1073747744, 5937, // NOLINT 1031 1073747776, 5969, 1073747808, 5996, 1032 1073747822, 6000, 1073747840, 6067, // NOLINT 1033 6103, 6108, 1073748000, 6263, 1034 1073748096, 6312, 6314, 1073748144, // NOLINT 1035 6389, 1073748224, 6430, 1073748304, 1036 6509, 1073748336, 6516, 1073748352, // NOLINT 1037 6571, 1073748417, 6599, 1073748480, 1038 6678, 1073748512, 6740, 6823, // NOLINT 1039 1073748741, 6963, 1073748805, 6987, 1040 1073748867, 7072, 1073748910, 7087, // NOLINT 1041 1073748922, 7141, 1073748992, 7203, 1042 1073749069, 7247, 1073749082, 7293, // NOLINT 1043 1073749225, 7404, 1073749230, 7409, 1044 1073749237, 7414, 1073749248, 7615, // NOLINT 1045 1073749504, 7957, 1073749784, 7965, 1046 1073749792, 8005, 1073749832, 8013, // NOLINT 1047 1073749840, 8023, 8025, 8027, 1048 8029, 1073749855, 8061, 1073749888, // NOLINT 1049 8116, 1073749942, 8124, 8126, 1050 1073749954, 8132, 1073749958, 8140, // NOLINT 1051 1073749968, 8147, 1073749974, 8155, 1052 1073749984, 8172, 1073750002, 8180, // NOLINT 1053 1073750006, 8188}; // NOLINT 1054 static const uint16_t kID_StartTable1Size = 84; 1055 static const int32_t kID_StartTable1[84] = { 1056 113, 127, 1073741968, 156, 1057 258, 263, 1073742090, 275, // NOLINT 1058 277, 1073742104, 285, 292, 1059 294, 296, 1073742122, 313, // NOLINT 1060 1073742140, 319, 1073742149, 329, 1061 334, 1073742176, 392, 1073744896, // NOLINT 1062 3118, 1073744944, 3166, 1073744992, 1063 3300, 1073745131, 3310, 1073745138, // NOLINT 1064 3315, 1073745152, 3365, 3367, 1065 3373, 1073745200, 3431, 3439, // NOLINT 1066 1073745280, 3478, 1073745312, 3494, 1067 1073745320, 3502, 1073745328, 3510, // NOLINT 1068 1073745336, 3518, 1073745344, 3526, 1069 1073745352, 3534, 1073745360, 3542, // NOLINT 1070 1073745368, 3550, 1073745925, 4103, 1071 1073745953, 4137, 1073745969, 4149, // NOLINT 1072 1073745976, 4156, 1073745985, 4246, 1073 1073746075, 4255, 1073746081, 4346, // NOLINT 1074 1073746172, 4351, 1073746181, 4397, 1075 1073746225, 4494, 1073746336, 4538, // NOLINT 1076 1073746416, 4607, 1073746944, 8191}; // NOLINT 1077 static const uint16_t kID_StartTable2Size = 4; 1078 static const int32_t kID_StartTable2[4] = {1073741824, 3509, 1073745408, 1079 8191}; // NOLINT 1080 static const uint16_t kID_StartTable3Size = 2; 1081 static const int32_t kID_StartTable3[2] = {1073741824, 8191}; // NOLINT 1082 static const uint16_t kID_StartTable4Size = 2; 1083 static const int32_t kID_StartTable4[2] = {1073741824, 8140}; // NOLINT 1084 static const uint16_t kID_StartTable5Size = 100; 1085 static const int32_t kID_StartTable5[100] = { 1086 1073741824, 1164, 1073743056, 1277, 1087 1073743104, 1548, 1073743376, 1567, // NOLINT 1088 1073743402, 1579, 1073743424, 1646, 1089 1073743487, 1693, 1073743520, 1775, // NOLINT 1090 1073743639, 1823, 1073743650, 1928, 1091 1073743755, 1934, 1073743760, 1965, // NOLINT 1092 1073743792, 1969, 1073743863, 2049, 1093 1073743875, 2053, 1073743879, 2058, // NOLINT 1094 1073743884, 2082, 1073743936, 2163, 1095 1073744002, 2227, 1073744114, 2295, // NOLINT 1096 2299, 1073744138, 2341, 1073744176, 1097 2374, 1073744224, 2428, 1073744260, // NOLINT 1098 2482, 2511, 1073744352, 2532, 1099 1073744358, 2543, 1073744378, 2558, // NOLINT 1100 1073744384, 2600, 1073744448, 2626, 1101 1073744452, 2635, 1073744480, 2678, // NOLINT 1102 2682, 1073744510, 2735, 2737, 1103 1073744565, 2742, 1073744569, 2749, // NOLINT 1104 2752, 2754, 1073744603, 2781, 1105 1073744608, 2794, 1073744626, 2804, // NOLINT 1106 1073744641, 2822, 1073744649, 2830, 1107 1073744657, 2838, 1073744672, 2854, // NOLINT 1108 1073744680, 2862, 1073744688, 2906, 1109 1073744732, 2911, 1073744740, 2917, // NOLINT 1110 1073744832, 3042, 1073744896, 8191}; // NOLINT 1111 static const uint16_t kID_StartTable6Size = 6; 1112 static const int32_t kID_StartTable6[6] = {1073741824, 6051, 1073747888, 6086, 1113 1073747915, 6139}; // NOLINT 1114 static const uint16_t kID_StartTable7Size = 48; 1115 static const int32_t kID_StartTable7[48] = { 1116 1073748224, 6765, 1073748592, 6873, 1117 1073748736, 6918, 1073748755, 6935, // NOLINT 1118 6941, 1073748767, 6952, 1073748778, 1119 6966, 1073748792, 6972, 6974, // NOLINT 1120 1073748800, 6977, 1073748803, 6980, 1121 1073748806, 7089, 1073748947, 7485, // NOLINT 1122 1073749328, 7567, 1073749394, 7623, 1123 1073749488, 7675, 1073749616, 7796, // NOLINT 1124 1073749622, 7932, 1073749793, 7994, 1125 1073749825, 8026, 1073749862, 8126, // NOLINT 1126 1073749954, 8135, 1073749962, 8143, 1127 1073749970, 8151, 1073749978, 8156}; // NOLINT 1128 bool ID_Start::Is(uchar c) { 1129 int chunk_index = c >> 13; 1130 switch (chunk_index) { 1131 case 0: 1132 return LookupPredicate(kID_StartTable0, kID_StartTable0Size, c); 1133 case 1: 1134 return LookupPredicate(kID_StartTable1, kID_StartTable1Size, c); 1135 case 2: 1136 return LookupPredicate(kID_StartTable2, kID_StartTable2Size, c); 1137 case 3: 1138 return LookupPredicate(kID_StartTable3, kID_StartTable3Size, c); 1139 case 4: 1140 return LookupPredicate(kID_StartTable4, kID_StartTable4Size, c); 1141 case 5: 1142 return LookupPredicate(kID_StartTable5, kID_StartTable5Size, c); 1143 case 6: 1144 return LookupPredicate(kID_StartTable6, kID_StartTable6Size, c); 1145 case 7: 1146 return LookupPredicate(kID_StartTable7, kID_StartTable7Size, c); 1147 default: 1148 return false; 1149 } 1150 } 1151 1152 1153 // ID_Continue: point.category in ['Nd', 'Mn', 'Mc', 'Pc'] or 1154 // 'Other_ID_Continue' in point.properties or 'JS_ID_Continue' in 1155 // point.properties 1156 1157 static const uint16_t kID_ContinueTable0Size = 315; 1158 static const int32_t kID_ContinueTable0[315] = { 1159 1073741872, 57, 95, 183, 1160 1073742592, 879, 903, 1073742979, // NOLINT 1161 1159, 1073743249, 1469, 1471, 1162 1073743297, 1474, 1073743300, 1477, // NOLINT 1163 1479, 1073743376, 1562, 1073743435, 1164 1641, 1648, 1073743574, 1756, // NOLINT 1165 1073743583, 1764, 1073743591, 1768, 1166 1073743594, 1773, 1073743600, 1785, // NOLINT 1167 1809, 1073743664, 1866, 1073743782, 1168 1968, 1073743808, 1993, 1073743851, // NOLINT 1169 2035, 1073743894, 2073, 1073743899, 1170 2083, 1073743909, 2087, 1073743913, // NOLINT 1171 2093, 1073743961, 2139, 1073744100, 1172 2307, 1073744186, 2364, 1073744190, // NOLINT 1173 2383, 1073744209, 2391, 1073744226, 1174 2403, 1073744230, 2415, 1073744257, // NOLINT 1175 2435, 2492, 1073744318, 2500, 1176 1073744327, 2504, 1073744331, 2509, // NOLINT 1177 2519, 1073744354, 2531, 1073744358, 1178 2543, 1073744385, 2563, 2620, // NOLINT 1179 1073744446, 2626, 1073744455, 2632, 1180 1073744459, 2637, 2641, 1073744486, // NOLINT 1181 2673, 2677, 1073744513, 2691, 1182 2748, 1073744574, 2757, 1073744583, // NOLINT 1183 2761, 1073744587, 2765, 1073744610, 1184 2787, 1073744614, 2799, 1073744641, // NOLINT 1185 2819, 2876, 1073744702, 2884, 1186 1073744711, 2888, 1073744715, 2893, // NOLINT 1187 1073744726, 2903, 1073744738, 2915, 1188 1073744742, 2927, 2946, 1073744830, // NOLINT 1189 3010, 1073744838, 3016, 1073744842, 1190 3021, 3031, 1073744870, 3055, // NOLINT 1191 1073744896, 3075, 1073744958, 3140, 1192 1073744966, 3144, 1073744970, 3149, // NOLINT 1193 1073744981, 3158, 1073744994, 3171, 1194 1073744998, 3183, 1073745025, 3203, // NOLINT 1195 3260, 1073745086, 3268, 1073745094, 1196 3272, 1073745098, 3277, 1073745109, // NOLINT 1197 3286, 1073745122, 3299, 1073745126, 1198 3311, 1073745153, 3331, 1073745214, // NOLINT 1199 3396, 1073745222, 3400, 1073745226, 1200 3405, 3415, 1073745250, 3427, // NOLINT 1201 1073745254, 3439, 1073745282, 3459, 1202 3530, 1073745359, 3540, 3542, // NOLINT 1203 1073745368, 3551, 1073745382, 3567, 1204 1073745394, 3571, 3633, 1073745460, // NOLINT 1205 3642, 1073745479, 3662, 1073745488, 1206 3673, 3761, 1073745588, 3769, // NOLINT 1207 1073745595, 3772, 1073745608, 3789, 1208 1073745616, 3801, 1073745688, 3865, // NOLINT 1209 1073745696, 3881, 3893, 3895, 1210 3897, 1073745726, 3903, 1073745777, // NOLINT 1211 3972, 1073745798, 3975, 1073745805, 1212 3991, 1073745817, 4028, 4038, // NOLINT 1213 1073745963, 4158, 1073745984, 4169, 1214 1073746006, 4185, 1073746014, 4192, // NOLINT 1215 1073746018, 4196, 1073746023, 4205, 1216 1073746033, 4212, 1073746050, 4237, // NOLINT 1217 1073746063, 4253, 1073746781, 4959, 1218 1073746793, 4977, 1073747730, 5908, // NOLINT 1219 1073747762, 5940, 1073747794, 5971, 1220 1073747826, 6003, 1073747892, 6099, // NOLINT 1221 6109, 1073747936, 6121, 1073747979, 1222 6157, 1073747984, 6169, 6313, // NOLINT 1223 1073748256, 6443, 1073748272, 6459, 1224 1073748294, 6479, 1073748400, 6592, // NOLINT 1225 1073748424, 6601, 1073748432, 6618, 1226 1073748503, 6683, 1073748565, 6750, // NOLINT 1227 1073748576, 6780, 1073748607, 6793, 1228 1073748624, 6809, 1073748656, 6845, // NOLINT 1229 1073748736, 6916, 1073748788, 6980, 1230 1073748816, 7001, 1073748843, 7027, // NOLINT 1231 1073748864, 7042, 1073748897, 7085, 1232 1073748912, 7097, 1073748966, 7155, // NOLINT 1233 1073749028, 7223, 1073749056, 7241, 1234 1073749072, 7257, 1073749200, 7378, // NOLINT 1235 1073749204, 7400, 7405, 1073749234, 1236 7412, 1073749240, 7417, 1073749440, // NOLINT 1237 7669, 1073749500, 7679}; // NOLINT 1238 static const uint16_t kID_ContinueTable1Size = 19; 1239 static const int32_t kID_ContinueTable1[19] = { 1240 1073741836, 13, 1073741887, 64, 1241 84, 1073742032, 220, 225, // NOLINT 1242 1073742053, 240, 1073745135, 3313, 1243 3455, 1073745376, 3583, 1073745962, // NOLINT 1244 4143, 1073746073, 4250}; // NOLINT 1245 static const uint16_t kID_ContinueTable5Size = 63; 1246 static const int32_t kID_ContinueTable5[63] = { 1247 1073743392, 1577, 1647, 1073743476, 1248 1661, 1695, 1073743600, 1777, // NOLINT 1249 2050, 2054, 2059, 1073743907, 1250 2087, 1073744000, 2177, 1073744052, // NOLINT 1251 2244, 1073744080, 2265, 1073744096, 1252 2289, 1073744128, 2313, 1073744166, // NOLINT 1253 2349, 1073744199, 2387, 1073744256, 1254 2435, 1073744307, 2496, 1073744336, // NOLINT 1255 2521, 2533, 1073744368, 2553, 1256 1073744425, 2614, 2627, 1073744460, // NOLINT 1257 2637, 1073744464, 2649, 1073744507, 1258 2685, 2736, 1073744562, 2740, // NOLINT 1259 1073744567, 2744, 1073744574, 2751, 1260 2753, 1073744619, 2799, 1073744629, // NOLINT 1261 2806, 1073744867, 3050, 1073744876, 1262 3053, 1073744880, 3065}; // NOLINT 1263 static const uint16_t kID_ContinueTable7Size = 12; 1264 static const int32_t kID_ContinueTable7[12] = { 1265 6942, 1073749504, 7695, 1073749536, 1266 7725, 1073749555, 7732, 1073749581, // NOLINT 1267 7759, 1073749776, 7961, 7999}; // NOLINT 1268 bool ID_Continue::Is(uchar c) { 1269 int chunk_index = c >> 13; 1270 switch (chunk_index) { 1271 case 0: 1272 return LookupPredicate(kID_ContinueTable0, kID_ContinueTable0Size, c); 1273 case 1: 1274 return LookupPredicate(kID_ContinueTable1, kID_ContinueTable1Size, c); 1275 case 5: 1276 return LookupPredicate(kID_ContinueTable5, kID_ContinueTable5Size, c); 1277 case 7: 1278 return LookupPredicate(kID_ContinueTable7, kID_ContinueTable7Size, c); 1279 default: return false; 1280 } 1281 } 1282 1283 1284 // WhiteSpace: (point.category == 'Zs') or ('JS_White_Space' in 1285 // point.properties) 1286 1287 static const uint16_t kWhiteSpaceTable0Size = 7; 1288 static const int32_t kWhiteSpaceTable0[7] = {9, 1073741835, 12, 32, 1289 160, 5760, 6158}; // NOLINT 1290 static const uint16_t kWhiteSpaceTable1Size = 5; 1291 static const int32_t kWhiteSpaceTable1[5] = { 1292 1073741824, 10, 47, 95, 4096 }; // NOLINT 1293 static const uint16_t kWhiteSpaceTable7Size = 1; 1294 static const int32_t kWhiteSpaceTable7[1] = {7935}; // NOLINT 1295 bool WhiteSpace::Is(uchar c) { 1296 int chunk_index = c >> 13; 1297 switch (chunk_index) { 1298 case 0: return LookupPredicate(kWhiteSpaceTable0, 1299 kWhiteSpaceTable0Size, 1300 c); 1301 case 1: return LookupPredicate(kWhiteSpaceTable1, 1302 kWhiteSpaceTable1Size, 1303 c); 1304 case 7: 1305 return LookupPredicate(kWhiteSpaceTable7, kWhiteSpaceTable7Size, c); 1306 default: return false; 1307 } 1308 } 1309 1310 1311 // LineTerminator: 'JS_Line_Terminator' in point.properties 1312 1313 static const uint16_t kLineTerminatorTable0Size = 2; 1314 static const int32_t kLineTerminatorTable0[2] = { 1315 10, 13 }; // NOLINT 1316 static const uint16_t kLineTerminatorTable1Size = 2; 1317 static const int32_t kLineTerminatorTable1[2] = { 1318 1073741864, 41 }; // NOLINT 1319 bool LineTerminator::Is(uchar c) { 1320 int chunk_index = c >> 13; 1321 switch (chunk_index) { 1322 case 0: return LookupPredicate(kLineTerminatorTable0, 1323 kLineTerminatorTable0Size, 1324 c); 1325 case 1: return LookupPredicate(kLineTerminatorTable1, 1326 kLineTerminatorTable1Size, 1327 c); 1328 default: return false; 1329 } 1330 } 1331 1332 static const MultiCharacterSpecialCase<2> kToLowercaseMultiStrings0[2] = { // NOLINT 1333 {{105, 775}}, {{kSentinel}} }; // NOLINT 1334 static const uint16_t kToLowercaseTable0Size = 488; // NOLINT 1335 static const int32_t kToLowercaseTable0[976] = { 1336 1073741889, 128, 90, 128, 1073742016, 128, 1337 214, 128, 1073742040, 128, 222, 128, 1338 256, 4, 258, 4, // NOLINT 1339 260, 4, 262, 4, 264, 4, 1340 266, 4, 268, 4, 270, 4, 1341 272, 4, 274, 4, // NOLINT 1342 276, 4, 278, 4, 280, 4, 1343 282, 4, 284, 4, 286, 4, 1344 288, 4, 290, 4, // NOLINT 1345 292, 4, 294, 4, 296, 4, 1346 298, 4, 300, 4, 302, 4, 1347 304, 1, 306, 4, // NOLINT 1348 308, 4, 310, 4, 313, 4, 1349 315, 4, 317, 4, 319, 4, 1350 321, 4, 323, 4, // NOLINT 1351 325, 4, 327, 4, 330, 4, 1352 332, 4, 334, 4, 336, 4, 1353 338, 4, 340, 4, // NOLINT 1354 342, 4, 344, 4, 346, 4, 1355 348, 4, 350, 4, 352, 4, 1356 354, 4, 356, 4, // NOLINT 1357 358, 4, 360, 4, 362, 4, 1358 364, 4, 366, 4, 368, 4, 1359 370, 4, 372, 4, // NOLINT 1360 374, 4, 376, -484, 377, 4, 1361 379, 4, 381, 4, 385, 840, 1362 386, 4, 388, 4, // NOLINT 1363 390, 824, 391, 4, 1073742217, 820, 1364 394, 820, 395, 4, 398, 316, 1365 399, 808, 400, 812, // NOLINT 1366 401, 4, 403, 820, 404, 828, 1367 406, 844, 407, 836, 408, 4, 1368 412, 844, 413, 852, // NOLINT 1369 415, 856, 416, 4, 418, 4, 1370 420, 4, 422, 872, 423, 4, 1371 425, 872, 428, 4, // NOLINT 1372 430, 872, 431, 4, 1073742257, 868, 1373 434, 868, 435, 4, 437, 4, 1374 439, 876, 440, 4, // NOLINT 1375 444, 4, 452, 8, 453, 4, 1376 455, 8, 456, 4, 458, 8, 1377 459, 4, 461, 4, // NOLINT 1378 463, 4, 465, 4, 467, 4, 1379 469, 4, 471, 4, 473, 4, 1380 475, 4, 478, 4, // NOLINT 1381 480, 4, 482, 4, 484, 4, 1382 486, 4, 488, 4, 490, 4, 1383 492, 4, 494, 4, // NOLINT 1384 497, 8, 498, 4, 500, 4, 1385 502, -388, 503, -224, 504, 4, 1386 506, 4, 508, 4, // NOLINT 1387 510, 4, 512, 4, 514, 4, 1388 516, 4, 518, 4, 520, 4, 1389 522, 4, 524, 4, // NOLINT 1390 526, 4, 528, 4, 530, 4, 1391 532, 4, 534, 4, 536, 4, 1392 538, 4, 540, 4, // NOLINT 1393 542, 4, 544, -520, 546, 4, 1394 548, 4, 550, 4, 552, 4, 1395 554, 4, 556, 4, // NOLINT 1396 558, 4, 560, 4, 562, 4, 1397 570, 43180, 571, 4, 573, -652, 1398 574, 43168, 577, 4, // NOLINT 1399 579, -780, 580, 276, 581, 284, 1400 582, 4, 584, 4, 586, 4, 1401 588, 4, 590, 4, // NOLINT 1402 880, 4, 882, 4, 886, 4, 1403 895, 464, 902, 152, 1073742728, 148, 1404 906, 148, 908, 256, // NOLINT 1405 1073742734, 252, 911, 252, 1073742737, 128, 1406 929, 128, 931, 6, 1073742756, 128, 1407 939, 128, 975, 32, // NOLINT 1408 984, 4, 986, 4, 988, 4, 1409 990, 4, 992, 4, 994, 4, 1410 996, 4, 998, 4, // NOLINT 1411 1000, 4, 1002, 4, 1004, 4, 1412 1006, 4, 1012, -240, 1015, 4, 1413 1017, -28, 1018, 4, // NOLINT 1414 1073742845, -520, 1023, -520, 1073742848, 320, 1415 1039, 320, 1073742864, 128, 1071, 128, 1416 1120, 4, 1122, 4, // NOLINT 1417 1124, 4, 1126, 4, 1128, 4, 1418 1130, 4, 1132, 4, 1134, 4, 1419 1136, 4, 1138, 4, // NOLINT 1420 1140, 4, 1142, 4, 1144, 4, 1421 1146, 4, 1148, 4, 1150, 4, 1422 1152, 4, 1162, 4, // NOLINT 1423 1164, 4, 1166, 4, 1168, 4, 1424 1170, 4, 1172, 4, 1174, 4, 1425 1176, 4, 1178, 4, // NOLINT 1426 1180, 4, 1182, 4, 1184, 4, 1427 1186, 4, 1188, 4, 1190, 4, 1428 1192, 4, 1194, 4, // NOLINT 1429 1196, 4, 1198, 4, 1200, 4, 1430 1202, 4, 1204, 4, 1206, 4, 1431 1208, 4, 1210, 4, // NOLINT 1432 1212, 4, 1214, 4, 1216, 60, 1433 1217, 4, 1219, 4, 1221, 4, 1434 1223, 4, 1225, 4, // NOLINT 1435 1227, 4, 1229, 4, 1232, 4, 1436 1234, 4, 1236, 4, 1238, 4, 1437 1240, 4, 1242, 4, // NOLINT 1438 1244, 4, 1246, 4, 1248, 4, 1439 1250, 4, 1252, 4, 1254, 4, 1440 1256, 4, 1258, 4, // NOLINT 1441 1260, 4, 1262, 4, 1264, 4, 1442 1266, 4, 1268, 4, 1270, 4, 1443 1272, 4, 1274, 4, // NOLINT 1444 1276, 4, 1278, 4, 1280, 4, 1445 1282, 4, 1284, 4, 1286, 4, 1446 1288, 4, 1290, 4, // NOLINT 1447 1292, 4, 1294, 4, 1296, 4, 1448 1298, 4, 1300, 4, 1302, 4, 1449 1304, 4, 1306, 4, // NOLINT 1450 1308, 4, 1310, 4, 1312, 4, 1451 1314, 4, 1316, 4, 1318, 4, 1452 1320, 4, 1322, 4, // NOLINT 1453 1324, 4, 1326, 4, 1073743153, 192, 1454 1366, 192, 1073746080, 29056, 4293, 29056, 1455 4295, 29056, 4301, 29056, // NOLINT 1456 7680, 4, 7682, 4, 7684, 4, 1457 7686, 4, 7688, 4, 7690, 4, 1458 7692, 4, 7694, 4, // NOLINT 1459 7696, 4, 7698, 4, 7700, 4, 1460 7702, 4, 7704, 4, 7706, 4, 1461 7708, 4, 7710, 4, // NOLINT 1462 7712, 4, 7714, 4, 7716, 4, 1463 7718, 4, 7720, 4, 7722, 4, 1464 7724, 4, 7726, 4, // NOLINT 1465 7728, 4, 7730, 4, 7732, 4, 1466 7734, 4, 7736, 4, 7738, 4, 1467 7740, 4, 7742, 4, // NOLINT 1468 7744, 4, 7746, 4, 7748, 4, 1469 7750, 4, 7752, 4, 7754, 4, 1470 7756, 4, 7758, 4, // NOLINT 1471 7760, 4, 7762, 4, 7764, 4, 1472 7766, 4, 7768, 4, 7770, 4, 1473 7772, 4, 7774, 4, // NOLINT 1474 7776, 4, 7778, 4, 7780, 4, 1475 7782, 4, 7784, 4, 7786, 4, 1476 7788, 4, 7790, 4, // NOLINT 1477 7792, 4, 7794, 4, 7796, 4, 1478 7798, 4, 7800, 4, 7802, 4, 1479 7804, 4, 7806, 4, // NOLINT 1480 7808, 4, 7810, 4, 7812, 4, 1481 7814, 4, 7816, 4, 7818, 4, 1482 7820, 4, 7822, 4, // NOLINT 1483 7824, 4, 7826, 4, 7828, 4, 1484 7838, -30460, 7840, 4, 7842, 4, 1485 7844, 4, 7846, 4, // NOLINT 1486 7848, 4, 7850, 4, 7852, 4, 1487 7854, 4, 7856, 4, 7858, 4, 1488 7860, 4, 7862, 4, // NOLINT 1489 7864, 4, 7866, 4, 7868, 4, 1490 7870, 4, 7872, 4, 7874, 4, 1491 7876, 4, 7878, 4, // NOLINT 1492 7880, 4, 7882, 4, 7884, 4, 1493 7886, 4, 7888, 4, 7890, 4, 1494 7892, 4, 7894, 4, // NOLINT 1495 7896, 4, 7898, 4, 7900, 4, 1496 7902, 4, 7904, 4, 7906, 4, 1497 7908, 4, 7910, 4, // NOLINT 1498 7912, 4, 7914, 4, 7916, 4, 1499 7918, 4, 7920, 4, 7922, 4, 1500 7924, 4, 7926, 4, // NOLINT 1501 7928, 4, 7930, 4, 7932, 4, 1502 7934, 4, 1073749768, -32, 7951, -32, 1503 1073749784, -32, 7965, -32, // NOLINT 1504 1073749800, -32, 7983, -32, 1073749816, -32, 1505 7999, -32, 1073749832, -32, 8013, -32, 1506 8025, -32, 8027, -32, // NOLINT 1507 8029, -32, 8031, -32, 1073749864, -32, 1508 8047, -32, 1073749896, -32, 8079, -32, 1509 1073749912, -32, 8095, -32, // NOLINT 1510 1073749928, -32, 8111, -32, 1073749944, -32, 1511 8121, -32, 1073749946, -296, 8123, -296, 1512 8124, -36, 1073749960, -344, // NOLINT 1513 8139, -344, 8140, -36, 1073749976, -32, 1514 8153, -32, 1073749978, -400, 8155, -400, 1515 1073749992, -32, 8169, -32, // NOLINT 1516 1073749994, -448, 8171, -448, 8172, -28, 1517 1073750008, -512, 8185, -512, 1073750010, -504, 1518 8187, -504, 8188, -36}; // NOLINT 1519 static const uint16_t kToLowercaseMultiStrings0Size = 2; // NOLINT 1520 static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings1[1] = { // NOLINT 1521 {{kSentinel}} }; // NOLINT 1522 static const uint16_t kToLowercaseTable1Size = 79; // NOLINT 1523 static const int32_t kToLowercaseTable1[158] = { 1524 294, -30068, 298, -33532, 299, -33048, 306, 112, 1073742176, 64, 367, 64, 387, 4, 1073743030, 104, // NOLINT 1525 1231, 104, 1073744896, 192, 3118, 192, 3168, 4, 3170, -42972, 3171, -15256, 3172, -42908, 3175, 4, // NOLINT 1526 3177, 4, 3179, 4, 3181, -43120, 3182, -42996, 3183, -43132, 3184, -43128, 3186, 4, 3189, 4, // NOLINT 1527 1073745022, -43260, 3199, -43260, 3200, 4, 3202, 4, 3204, 4, 3206, 4, 3208, 4, 3210, 4, // NOLINT 1528 3212, 4, 3214, 4, 3216, 4, 3218, 4, 3220, 4, 3222, 4, 3224, 4, 3226, 4, // NOLINT 1529 3228, 4, 3230, 4, 3232, 4, 3234, 4, 3236, 4, 3238, 4, 3240, 4, 3242, 4, // NOLINT 1530 3244, 4, 3246, 4, 3248, 4, 3250, 4, 3252, 4, 3254, 4, 3256, 4, 3258, 4, // NOLINT 1531 3260, 4, 3262, 4, 3264, 4, 3266, 4, 3268, 4, 3270, 4, 3272, 4, 3274, 4, // NOLINT 1532 3276, 4, 3278, 4, 3280, 4, 3282, 4, 3284, 4, 3286, 4, 3288, 4, 3290, 4, // NOLINT 1533 3292, 4, 3294, 4, 3296, 4, 3298, 4, 3307, 4, 3309, 4, 3314, 4 }; // NOLINT 1534 static const uint16_t kToLowercaseMultiStrings1Size = 1; // NOLINT 1535 static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings5[1] = { // NOLINT 1536 {{kSentinel}} }; // NOLINT 1537 static const uint16_t kToLowercaseTable5Size = 103; // NOLINT 1538 static const int32_t kToLowercaseTable5[206] = { 1539 1600, 4, 1602, 4, 1604, 4, 1606, 4, 1540 1608, 4, 1610, 4, 1612, 4, 1614, 4, // NOLINT 1541 1616, 4, 1618, 4, 1620, 4, 1622, 4, 1542 1624, 4, 1626, 4, 1628, 4, 1630, 4, // NOLINT 1543 1632, 4, 1634, 4, 1636, 4, 1638, 4, 1544 1640, 4, 1642, 4, 1644, 4, 1664, 4, // NOLINT 1545 1666, 4, 1668, 4, 1670, 4, 1672, 4, 1546 1674, 4, 1676, 4, 1678, 4, 1680, 4, // NOLINT 1547 1682, 4, 1684, 4, 1686, 4, 1688, 4, 1548 1690, 4, 1826, 4, 1828, 4, 1830, 4, // NOLINT 1549 1832, 4, 1834, 4, 1836, 4, 1838, 4, 1550 1842, 4, 1844, 4, 1846, 4, 1848, 4, // NOLINT 1551 1850, 4, 1852, 4, 1854, 4, 1856, 4, 1552 1858, 4, 1860, 4, 1862, 4, 1864, 4, // NOLINT 1553 1866, 4, 1868, 4, 1870, 4, 1872, 4, 1554 1874, 4, 1876, 4, 1878, 4, 1880, 4, // NOLINT 1555 1882, 4, 1884, 4, 1886, 4, 1888, 4, 1556 1890, 4, 1892, 4, 1894, 4, 1896, 4, // NOLINT 1557 1898, 4, 1900, 4, 1902, 4, 1913, 4, 1558 1915, 4, 1917, -141328, 1918, 4, 1920, 4, // NOLINT 1559 1922, 4, 1924, 4, 1926, 4, 1931, 4, 1560 1933, -169120, 1936, 4, 1938, 4, 1942, 4, // NOLINT 1561 1944, 4, 1946, 4, 1948, 4, 1950, 4, 1562 1952, 4, 1954, 4, 1956, 4, 1958, 4, // NOLINT 1563 1960, 4, 1962, -169232, 1963, -169276, 1964, -169260, 1564 1965, -169220, 1968, -169032, 1969, -169128}; // NOLINT 1565 static const uint16_t kToLowercaseMultiStrings5Size = 1; // NOLINT 1566 static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings7[1] = { // NOLINT 1567 {{kSentinel}} }; // NOLINT 1568 static const uint16_t kToLowercaseTable7Size = 2; // NOLINT 1569 static const int32_t kToLowercaseTable7[4] = { 1570 1073749793, 128, 7994, 128 }; // NOLINT 1571 static const uint16_t kToLowercaseMultiStrings7Size = 1; // NOLINT 1572 int ToLowercase::Convert(uchar c, 1573 uchar n, 1574 uchar* result, 1575 bool* allow_caching_ptr) { 1576 int chunk_index = c >> 13; 1577 switch (chunk_index) { 1578 case 0: return LookupMapping<true>(kToLowercaseTable0, 1579 kToLowercaseTable0Size, 1580 kToLowercaseMultiStrings0, 1581 c, 1582 n, 1583 result, 1584 allow_caching_ptr); 1585 case 1: return LookupMapping<true>(kToLowercaseTable1, 1586 kToLowercaseTable1Size, 1587 kToLowercaseMultiStrings1, 1588 c, 1589 n, 1590 result, 1591 allow_caching_ptr); 1592 case 5: return LookupMapping<true>(kToLowercaseTable5, 1593 kToLowercaseTable5Size, 1594 kToLowercaseMultiStrings5, 1595 c, 1596 n, 1597 result, 1598 allow_caching_ptr); 1599 case 7: return LookupMapping<true>(kToLowercaseTable7, 1600 kToLowercaseTable7Size, 1601 kToLowercaseMultiStrings7, 1602 c, 1603 n, 1604 result, 1605 allow_caching_ptr); 1606 default: return 0; 1607 } 1608 } 1609 1610 static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings0[62] = { // NOLINT 1611 {{83, 83, kSentinel}}, {{700, 78, kSentinel}}, {{74, 780, kSentinel}}, {{921, 776, 769}}, // NOLINT 1612 {{933, 776, 769}}, {{1333, 1362, kSentinel}}, {{72, 817, kSentinel}}, {{84, 776, kSentinel}}, // NOLINT 1613 {{87, 778, kSentinel}}, {{89, 778, kSentinel}}, {{65, 702, kSentinel}}, {{933, 787, kSentinel}}, // NOLINT 1614 {{933, 787, 768}}, {{933, 787, 769}}, {{933, 787, 834}}, {{7944, 921, kSentinel}}, // NOLINT 1615 {{7945, 921, kSentinel}}, {{7946, 921, kSentinel}}, {{7947, 921, kSentinel}}, {{7948, 921, kSentinel}}, // NOLINT 1616 {{7949, 921, kSentinel}}, {{7950, 921, kSentinel}}, {{7951, 921, kSentinel}}, {{7976, 921, kSentinel}}, // NOLINT 1617 {{7977, 921, kSentinel}}, {{7978, 921, kSentinel}}, {{7979, 921, kSentinel}}, {{7980, 921, kSentinel}}, // NOLINT 1618 {{7981, 921, kSentinel}}, {{7982, 921, kSentinel}}, {{7983, 921, kSentinel}}, {{8040, 921, kSentinel}}, // NOLINT 1619 {{8041, 921, kSentinel}}, {{8042, 921, kSentinel}}, {{8043, 921, kSentinel}}, {{8044, 921, kSentinel}}, // NOLINT 1620 {{8045, 921, kSentinel}}, {{8046, 921, kSentinel}}, {{8047, 921, kSentinel}}, {{8122, 921, kSentinel}}, // NOLINT 1621 {{913, 921, kSentinel}}, {{902, 921, kSentinel}}, {{913, 834, kSentinel}}, {{913, 834, 921}}, // NOLINT 1622 {{8138, 921, kSentinel}}, {{919, 921, kSentinel}}, {{905, 921, kSentinel}}, {{919, 834, kSentinel}}, // NOLINT 1623 {{919, 834, 921}}, {{921, 776, 768}}, {{921, 834, kSentinel}}, {{921, 776, 834}}, // NOLINT 1624 {{933, 776, 768}}, {{929, 787, kSentinel}}, {{933, 834, kSentinel}}, {{933, 776, 834}}, // NOLINT 1625 {{8186, 921, kSentinel}}, {{937, 921, kSentinel}}, {{911, 921, kSentinel}}, {{937, 834, kSentinel}}, // NOLINT 1626 {{937, 834, 921}}, {{kSentinel}} }; // NOLINT 1627 static const uint16_t kToUppercaseTable0Size = 590; // NOLINT 1628 static const int32_t kToUppercaseTable0[1180] = { 1629 1073741921, -128, 122, -128, 181, 2972, 1630 223, 1, 1073742048, -128, 246, -128, 1631 1073742072, -128, 254, -128, // NOLINT 1632 255, 484, 257, -4, 259, -4, 1633 261, -4, 263, -4, 265, -4, 1634 267, -4, 269, -4, // NOLINT 1635 271, -4, 273, -4, 275, -4, 1636 277, -4, 279, -4, 281, -4, 1637 283, -4, 285, -4, // NOLINT 1638 287, -4, 289, -4, 291, -4, 1639 293, -4, 295, -4, 297, -4, 1640 299, -4, 301, -4, // NOLINT 1641 303, -4, 305, -928, 307, -4, 1642 309, -4, 311, -4, 314, -4, 1643 316, -4, 318, -4, // NOLINT 1644 320, -4, 322, -4, 324, -4, 1645 326, -4, 328, -4, 329, 5, 1646 331, -4, 333, -4, // NOLINT 1647 335, -4, 337, -4, 339, -4, 1648 341, -4, 343, -4, 345, -4, 1649 347, -4, 349, -4, // NOLINT 1650 351, -4, 353, -4, 355, -4, 1651 357, -4, 359, -4, 361, -4, 1652 363, -4, 365, -4, // NOLINT 1653 367, -4, 369, -4, 371, -4, 1654 373, -4, 375, -4, 378, -4, 1655 380, -4, 382, -4, // NOLINT 1656 383, -1200, 384, 780, 387, -4, 1657 389, -4, 392, -4, 396, -4, 1658 402, -4, 405, 388, // NOLINT 1659 409, -4, 410, 652, 414, 520, 1660 417, -4, 419, -4, 421, -4, 1661 424, -4, 429, -4, // NOLINT 1662 432, -4, 436, -4, 438, -4, 1663 441, -4, 445, -4, 447, 224, 1664 453, -4, 454, -8, // NOLINT 1665 456, -4, 457, -8, 459, -4, 1666 460, -8, 462, -4, 464, -4, 1667 466, -4, 468, -4, // NOLINT 1668 470, -4, 472, -4, 474, -4, 1669 476, -4, 477, -316, 479, -4, 1670 481, -4, 483, -4, // NOLINT 1671 485, -4, 487, -4, 489, -4, 1672 491, -4, 493, -4, 495, -4, 1673 496, 9, 498, -4, // NOLINT 1674 499, -8, 501, -4, 505, -4, 1675 507, -4, 509, -4, 511, -4, 1676 513, -4, 515, -4, // NOLINT 1677 517, -4, 519, -4, 521, -4, 1678 523, -4, 525, -4, 527, -4, 1679 529, -4, 531, -4, // NOLINT 1680 533, -4, 535, -4, 537, -4, 1681 539, -4, 541, -4, 543, -4, 1682 547, -4, 549, -4, // NOLINT 1683 551, -4, 553, -4, 555, -4, 1684 557, -4, 559, -4, 561, -4, 1685 563, -4, 572, -4, // NOLINT 1686 1073742399, 43260, 576, 43260, 578, -4, 1687 583, -4, 585, -4, 587, -4, 1688 589, -4, 591, -4, // NOLINT 1689 592, 43132, 593, 43120, 594, 43128, 1690 595, -840, 596, -824, 1073742422, -820, 1691 599, -820, 601, -808, // NOLINT 1692 603, -812, 604, 169276, 608, -820, 1693 609, 169260, 611, -828, 613, 169120, 1694 614, 169232, 616, -836, // NOLINT 1695 617, -844, 619, 42972, 620, 169220, 1696 623, -844, 625, 42996, 626, -852, 1697 629, -856, 637, 42908, // NOLINT 1698 640, -872, 643, -872, 647, 169128, 1699 648, -872, 649, -276, 1073742474, -868, 1700 651, -868, 652, -284, // NOLINT 1701 658, -876, 670, 169032, 837, 336, 1702 881, -4, 883, -4, 887, -4, 1703 1073742715, 520, 893, 520, // NOLINT 1704 912, 13, 940, -152, 1073742765, -148, 1705 943, -148, 944, 17, 1073742769, -128, 1706 961, -128, 962, -124, // NOLINT 1707 1073742787, -128, 971, -128, 972, -256, 1708 1073742797, -252, 974, -252, 976, -248, 1709 977, -228, 981, -188, // NOLINT 1710 982, -216, 983, -32, 985, -4, 1711 987, -4, 989, -4, 991, -4, 1712 993, -4, 995, -4, // NOLINT 1713 997, -4, 999, -4, 1001, -4, 1714 1003, -4, 1005, -4, 1007, -4, 1715 1008, -344, 1009, -320, // NOLINT 1716 1010, 28, 1011, -464, 1013, -384, 1717 1016, -4, 1019, -4, 1073742896, -128, 1718 1103, -128, 1073742928, -320, // NOLINT 1719 1119, -320, 1121, -4, 1123, -4, 1720 1125, -4, 1127, -4, 1129, -4, 1721 1131, -4, 1133, -4, // NOLINT 1722 1135, -4, 1137, -4, 1139, -4, 1723 1141, -4, 1143, -4, 1145, -4, 1724 1147, -4, 1149, -4, // NOLINT 1725 1151, -4, 1153, -4, 1163, -4, 1726 1165, -4, 1167, -4, 1169, -4, 1727 1171, -4, 1173, -4, // NOLINT 1728 1175, -4, 1177, -4, 1179, -4, 1729 1181, -4, 1183, -4, 1185, -4, 1730 1187, -4, 1189, -4, // NOLINT 1731 1191, -4, 1193, -4, 1195, -4, 1732 1197, -4, 1199, -4, 1201, -4, 1733 1203, -4, 1205, -4, // NOLINT 1734 1207, -4, 1209, -4, 1211, -4, 1735 1213, -4, 1215, -4, 1218, -4, 1736 1220, -4, 1222, -4, // NOLINT 1737 1224, -4, 1226, -4, 1228, -4, 1738 1230, -4, 1231, -60, 1233, -4, 1739 1235, -4, 1237, -4, // NOLINT 1740 1239, -4, 1241, -4, 1243, -4, 1741 1245, -4, 1247, -4, 1249, -4, 1742 1251, -4, 1253, -4, // NOLINT 1743 1255, -4, 1257, -4, 1259, -4, 1744 1261, -4, 1263, -4, 1265, -4, 1745 1267, -4, 1269, -4, // NOLINT 1746 1271, -4, 1273, -4, 1275, -4, 1747 1277, -4, 1279, -4, 1281, -4, 1748 1283, -4, 1285, -4, // NOLINT 1749 1287, -4, 1289, -4, 1291, -4, 1750 1293, -4, 1295, -4, 1297, -4, 1751 1299, -4, 1301, -4, // NOLINT 1752 1303, -4, 1305, -4, 1307, -4, 1753 1309, -4, 1311, -4, 1313, -4, 1754 1315, -4, 1317, -4, // NOLINT 1755 1319, -4, 1321, -4, 1323, -4, 1756 1325, -4, 1327, -4, 1073743201, -192, 1757 1414, -192, 1415, 21, // NOLINT 1758 7545, 141328, 7549, 15256, 7681, -4, 1759 7683, -4, 7685, -4, 7687, -4, 1760 7689, -4, 7691, -4, // NOLINT 1761 7693, -4, 7695, -4, 7697, -4, 1762 7699, -4, 7701, -4, 7703, -4, 1763 7705, -4, 7707, -4, // NOLINT 1764 7709, -4, 7711, -4, 7713, -4, 1765 7715, -4, 7717, -4, 7719, -4, 1766 7721, -4, 7723, -4, // NOLINT 1767 7725, -4, 7727, -4, 7729, -4, 1768 7731, -4, 7733, -4, 7735, -4, 1769 7737, -4, 7739, -4, // NOLINT 1770 7741, -4, 7743, -4, 7745, -4, 1771 7747, -4, 7749, -4, 7751, -4, 1772 7753, -4, 7755, -4, // NOLINT 1773 7757, -4, 7759, -4, 7761, -4, 1774 7763, -4, 7765, -4, 7767, -4, 1775 7769, -4, 7771, -4, // NOLINT 1776 7773, -4, 7775, -4, 7777, -4, 1777 7779, -4, 7781, -4, 7783, -4, 1778 7785, -4, 7787, -4, // NOLINT 1779 7789, -4, 7791, -4, 7793, -4, 1780 7795, -4, 7797, -4, 7799, -4, 1781 7801, -4, 7803, -4, // NOLINT 1782 7805, -4, 7807, -4, 7809, -4, 1783 7811, -4, 7813, -4, 7815, -4, 1784 7817, -4, 7819, -4, // NOLINT 1785 7821, -4, 7823, -4, 7825, -4, 1786 7827, -4, 7829, -4, 7830, 25, 1787 7831, 29, 7832, 33, // NOLINT 1788 7833, 37, 7834, 41, 7835, -236, 1789 7841, -4, 7843, -4, 7845, -4, 1790 7847, -4, 7849, -4, // NOLINT 1791 7851, -4, 7853, -4, 7855, -4, 1792 7857, -4, 7859, -4, 7861, -4, 1793 7863, -4, 7865, -4, // NOLINT 1794 7867, -4, 7869, -4, 7871, -4, 1795 7873, -4, 7875, -4, 7877, -4, 1796 7879, -4, 7881, -4, // NOLINT 1797 7883, -4, 7885, -4, 7887, -4, 1798 7889, -4, 7891, -4, 7893, -4, 1799 7895, -4, 7897, -4, // NOLINT 1800 7899, -4, 7901, -4, 7903, -4, 1801 7905, -4, 7907, -4, 7909, -4, 1802 7911, -4, 7913, -4, // NOLINT 1803 7915, -4, 7917, -4, 7919, -4, 1804 7921, -4, 7923, -4, 7925, -4, 1805 7927, -4, 7929, -4, // NOLINT 1806 7931, -4, 7933, -4, 7935, -4, 1807 1073749760, 32, 7943, 32, 1073749776, 32, 1808 7957, 32, 1073749792, 32, // NOLINT 1809 7975, 32, 1073749808, 32, 7991, 32, 1810 1073749824, 32, 8005, 32, 8016, 45, 1811 8017, 32, 8018, 49, // NOLINT 1812 8019, 32, 8020, 53, 8021, 32, 1813 8022, 57, 8023, 32, 1073749856, 32, 1814 8039, 32, 1073749872, 296, // NOLINT 1815 8049, 296, 1073749874, 344, 8053, 344, 1816 1073749878, 400, 8055, 400, 1073749880, 512, 1817 8057, 512, 1073749882, 448, // NOLINT 1818 8059, 448, 1073749884, 504, 8061, 504, 1819 8064, 61, 8065, 65, 8066, 69, 1820 8067, 73, 8068, 77, // NOLINT 1821 8069, 81, 8070, 85, 8071, 89, 1822 8072, 61, 8073, 65, 8074, 69, 1823 8075, 73, 8076, 77, // NOLINT 1824 8077, 81, 8078, 85, 8079, 89, 1825 8080, 93, 8081, 97, 8082, 101, 1826 8083, 105, 8084, 109, // NOLINT 1827 8085, 113, 8086, 117, 8087, 121, 1828 8088, 93, 8089, 97, 8090, 101, 1829 8091, 105, 8092, 109, // NOLINT 1830 8093, 113, 8094, 117, 8095, 121, 1831 8096, 125, 8097, 129, 8098, 133, 1832 8099, 137, 8100, 141, // NOLINT 1833 8101, 145, 8102, 149, 8103, 153, 1834 8104, 125, 8105, 129, 8106, 133, 1835 8107, 137, 8108, 141, // NOLINT 1836 8109, 145, 8110, 149, 8111, 153, 1837 1073749936, 32, 8113, 32, 8114, 157, 1838 8115, 161, 8116, 165, // NOLINT 1839 8118, 169, 8119, 173, 8124, 161, 1840 8126, -28820, 8130, 177, 8131, 181, 1841 8132, 185, 8134, 189, // NOLINT 1842 8135, 193, 8140, 181, 1073749968, 32, 1843 8145, 32, 8146, 197, 8147, 13, 1844 8150, 201, 8151, 205, // NOLINT 1845 1073749984, 32, 8161, 32, 8162, 209, 1846 8163, 17, 8164, 213, 8165, 28, 1847 8166, 217, 8167, 221, // NOLINT 1848 8178, 225, 8179, 229, 8180, 233, 1849 8182, 237, 8183, 241, 8188, 229}; // NOLINT 1850 static const uint16_t kToUppercaseMultiStrings0Size = 62; // NOLINT 1851 static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings1[1] = { // NOLINT 1852 {{kSentinel}} }; // NOLINT 1853 static const uint16_t kToUppercaseTable1Size = 73; // NOLINT 1854 static const int32_t kToUppercaseTable1[146] = { 1855 334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104, 1257, -104, 1073744944, -192, 3166, -192, // NOLINT 1856 3169, -4, 3173, -43180, 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4, 3190, -4, // NOLINT 1857 3201, -4, 3203, -4, 3205, -4, 3207, -4, 3209, -4, 3211, -4, 3213, -4, 3215, -4, // NOLINT 1858 3217, -4, 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4, 3229, -4, 3231, -4, // NOLINT 1859 3233, -4, 3235, -4, 3237, -4, 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4, // NOLINT 1860 3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4, 3259, -4, 3261, -4, 3263, -4, // NOLINT 1861 3265, -4, 3267, -4, 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4, 3279, -4, // NOLINT 1862 3281, -4, 3283, -4, 3285, -4, 3287, -4, 3289, -4, 3291, -4, 3293, -4, 3295, -4, // NOLINT 1863 3297, -4, 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056, 3365, -29056, 3367, -29056, // NOLINT 1864 3373, -29056 }; // NOLINT 1865 static const uint16_t kToUppercaseMultiStrings1Size = 1; // NOLINT 1866 static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings5[1] = { // NOLINT 1867 {{kSentinel}} }; // NOLINT 1868 static const uint16_t kToUppercaseTable5Size = 95; // NOLINT 1869 static const int32_t 1870 kToUppercaseTable5[190] = {1601, -4, 1603, -4, 1605, -4, 1607, -4, 1609, -4, 1871 1611, -4, 1613, -4, 1615, -4, // NOLINT 1872 1617, -4, 1619, -4, 1621, -4, 1623, -4, 1625, -4, 1873 1627, -4, 1629, -4, 1631, -4, // NOLINT 1874 1633, -4, 1635, -4, 1637, -4, 1639, -4, 1641, -4, 1875 1643, -4, 1645, -4, 1665, -4, // NOLINT 1876 1667, -4, 1669, -4, 1671, -4, 1673, -4, 1675, -4, 1877 1677, -4, 1679, -4, 1681, -4, // NOLINT 1878 1683, -4, 1685, -4, 1687, -4, 1689, -4, 1691, -4, 1879 1827, -4, 1829, -4, 1831, -4, // NOLINT 1880 1833, -4, 1835, -4, 1837, -4, 1839, -4, 1843, -4, 1881 1845, -4, 1847, -4, 1849, -4, // NOLINT 1882 1851, -4, 1853, -4, 1855, -4, 1857, -4, 1859, -4, 1883 1861, -4, 1863, -4, 1865, -4, // NOLINT 1884 1867, -4, 1869, -4, 1871, -4, 1873, -4, 1875, -4, 1885 1877, -4, 1879, -4, 1881, -4, // NOLINT 1886 1883, -4, 1885, -4, 1887, -4, 1889, -4, 1891, -4, 1887 1893, -4, 1895, -4, 1897, -4, // NOLINT 1888 1899, -4, 1901, -4, 1903, -4, 1914, -4, 1916, -4, 1889 1919, -4, 1921, -4, 1923, -4, // NOLINT 1890 1925, -4, 1927, -4, 1932, -4, 1937, -4, 1939, -4, 1891 1943, -4, 1945, -4, 1947, -4, // NOLINT 1892 1949, -4, 1951, -4, 1953, -4, 1955, -4, 1957, -4, 1893 1959, -4, 1961, -4}; // NOLINT 1894 static const uint16_t kToUppercaseMultiStrings5Size = 1; // NOLINT 1895 static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings7[12] = { // NOLINT 1896 {{70, 70, kSentinel}}, {{70, 73, kSentinel}}, {{70, 76, kSentinel}}, {{70, 70, 73}}, // NOLINT 1897 {{70, 70, 76}}, {{83, 84, kSentinel}}, {{1348, 1350, kSentinel}}, {{1348, 1333, kSentinel}}, // NOLINT 1898 {{1348, 1339, kSentinel}}, {{1358, 1350, kSentinel}}, {{1348, 1341, kSentinel}}, {{kSentinel}} }; // NOLINT 1899 static const uint16_t kToUppercaseTable7Size = 14; // NOLINT 1900 static const int32_t kToUppercaseTable7[28] = { 1901 6912, 1, 6913, 5, 6914, 9, 6915, 13, 6916, 17, 6917, 21, 6918, 21, 6931, 25, // NOLINT 1902 6932, 29, 6933, 33, 6934, 37, 6935, 41, 1073749825, -128, 8026, -128 }; // NOLINT 1903 static const uint16_t kToUppercaseMultiStrings7Size = 12; // NOLINT 1904 int ToUppercase::Convert(uchar c, 1905 uchar n, 1906 uchar* result, 1907 bool* allow_caching_ptr) { 1908 int chunk_index = c >> 13; 1909 switch (chunk_index) { 1910 case 0: return LookupMapping<true>(kToUppercaseTable0, 1911 kToUppercaseTable0Size, 1912 kToUppercaseMultiStrings0, 1913 c, 1914 n, 1915 result, 1916 allow_caching_ptr); 1917 case 1: return LookupMapping<true>(kToUppercaseTable1, 1918 kToUppercaseTable1Size, 1919 kToUppercaseMultiStrings1, 1920 c, 1921 n, 1922 result, 1923 allow_caching_ptr); 1924 case 5: return LookupMapping<true>(kToUppercaseTable5, 1925 kToUppercaseTable5Size, 1926 kToUppercaseMultiStrings5, 1927 c, 1928 n, 1929 result, 1930 allow_caching_ptr); 1931 case 7: return LookupMapping<true>(kToUppercaseTable7, 1932 kToUppercaseTable7Size, 1933 kToUppercaseMultiStrings7, 1934 c, 1935 n, 1936 result, 1937 allow_caching_ptr); 1938 default: return 0; 1939 } 1940 } 1941 1942 static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings0[1] = { // NOLINT 1943 {{kSentinel}} }; // NOLINT 1944 static const uint16_t kEcma262CanonicalizeTable0Size = 498; // NOLINT 1945 static const int32_t kEcma262CanonicalizeTable0[996] = { 1946 1073741921, -128, 122, -128, 181, 2972, 1947 1073742048, -128, 246, -128, 1073742072, -128, 1948 254, -128, 255, 484, // NOLINT 1949 257, -4, 259, -4, 261, -4, 1950 263, -4, 265, -4, 267, -4, 1951 269, -4, 271, -4, // NOLINT 1952 273, -4, 275, -4, 277, -4, 1953 279, -4, 281, -4, 283, -4, 1954 285, -4, 287, -4, // NOLINT 1955 289, -4, 291, -4, 293, -4, 1956 295, -4, 297, -4, 299, -4, 1957 301, -4, 303, -4, // NOLINT 1958 307, -4, 309, -4, 311, -4, 1959 314, -4, 316, -4, 318, -4, 1960 320, -4, 322, -4, // NOLINT 1961 324, -4, 326, -4, 328, -4, 1962 331, -4, 333, -4, 335, -4, 1963 337, -4, 339, -4, // NOLINT 1964 341, -4, 343, -4, 345, -4, 1965 347, -4, 349, -4, 351, -4, 1966 353, -4, 355, -4, // NOLINT 1967 357, -4, 359, -4, 361, -4, 1968 363, -4, 365, -4, 367, -4, 1969 369, -4, 371, -4, // NOLINT 1970 373, -4, 375, -4, 378, -4, 1971 380, -4, 382, -4, 384, 780, 1972 387, -4, 389, -4, // NOLINT 1973 392, -4, 396, -4, 402, -4, 1974 405, 388, 409, -4, 410, 652, 1975 414, 520, 417, -4, // NOLINT 1976 419, -4, 421, -4, 424, -4, 1977 429, -4, 432, -4, 436, -4, 1978 438, -4, 441, -4, // NOLINT 1979 445, -4, 447, 224, 453, -4, 1980 454, -8, 456, -4, 457, -8, 1981 459, -4, 460, -8, // NOLINT 1982 462, -4, 464, -4, 466, -4, 1983 468, -4, 470, -4, 472, -4, 1984 474, -4, 476, -4, // NOLINT 1985 477, -316, 479, -4, 481, -4, 1986 483, -4, 485, -4, 487, -4, 1987 489, -4, 491, -4, // NOLINT 1988 493, -4, 495, -4, 498, -4, 1989 499, -8, 501, -4, 505, -4, 1990 507, -4, 509, -4, // NOLINT 1991 511, -4, 513, -4, 515, -4, 1992 517, -4, 519, -4, 521, -4, 1993 523, -4, 525, -4, // NOLINT 1994 527, -4, 529, -4, 531, -4, 1995 533, -4, 535, -4, 537, -4, 1996 539, -4, 541, -4, // NOLINT 1997 543, -4, 547, -4, 549, -4, 1998 551, -4, 553, -4, 555, -4, 1999 557, -4, 559, -4, // NOLINT 2000 561, -4, 563, -4, 572, -4, 2001 1073742399, 43260, 576, 43260, 578, -4, 2002 583, -4, 585, -4, // NOLINT 2003 587, -4, 589, -4, 591, -4, 2004 592, 43132, 593, 43120, 594, 43128, 2005 595, -840, 596, -824, // NOLINT 2006 1073742422, -820, 599, -820, 601, -808, 2007 603, -812, 604, 169276, 608, -820, 2008 609, 169260, 611, -828, // NOLINT 2009 613, 169120, 614, 169232, 616, -836, 2010 617, -844, 619, 42972, 620, 169220, 2011 623, -844, 625, 42996, // NOLINT 2012 626, -852, 629, -856, 637, 42908, 2013 640, -872, 643, -872, 647, 169128, 2014 648, -872, 649, -276, // NOLINT 2015 1073742474, -868, 651, -868, 652, -284, 2016 658, -876, 670, 169032, 837, 336, 2017 881, -4, 883, -4, // NOLINT 2018 887, -4, 1073742715, 520, 893, 520, 2019 940, -152, 1073742765, -148, 943, -148, 2020 1073742769, -128, 961, -128, // NOLINT 2021 962, -124, 1073742787, -128, 971, -128, 2022 972, -256, 1073742797, -252, 974, -252, 2023 976, -248, 977, -228, // NOLINT 2024 981, -188, 982, -216, 983, -32, 2025 985, -4, 987, -4, 989, -4, 2026 991, -4, 993, -4, // NOLINT 2027 995, -4, 997, -4, 999, -4, 2028 1001, -4, 1003, -4, 1005, -4, 2029 1007, -4, 1008, -344, // NOLINT 2030 1009, -320, 1010, 28, 1011, -464, 2031 1013, -384, 1016, -4, 1019, -4, 2032 1073742896, -128, 1103, -128, // NOLINT 2033 1073742928, -320, 1119, -320, 1121, -4, 2034 1123, -4, 1125, -4, 1127, -4, 2035 1129, -4, 1131, -4, // NOLINT 2036 1133, -4, 1135, -4, 1137, -4, 2037 1139, -4, 1141, -4, 1143, -4, 2038 1145, -4, 1147, -4, // NOLINT 2039 1149, -4, 1151, -4, 1153, -4, 2040 1163, -4, 1165, -4, 1167, -4, 2041 1169, -4, 1171, -4, // NOLINT 2042 1173, -4, 1175, -4, 1177, -4, 2043 1179, -4, 1181, -4, 1183, -4, 2044 1185, -4, 1187, -4, // NOLINT 2045 1189, -4, 1191, -4, 1193, -4, 2046 1195, -4, 1197, -4, 1199, -4, 2047 1201, -4, 1203, -4, // NOLINT 2048 1205, -4, 1207, -4, 1209, -4, 2049 1211, -4, 1213, -4, 1215, -4, 2050 1218, -4, 1220, -4, // NOLINT 2051 1222, -4, 1224, -4, 1226, -4, 2052 1228, -4, 1230, -4, 1231, -60, 2053 1233, -4, 1235, -4, // NOLINT 2054 1237, -4, 1239, -4, 1241, -4, 2055 1243, -4, 1245, -4, 1247, -4, 2056 1249, -4, 1251, -4, // NOLINT 2057 1253, -4, 1255, -4, 1257, -4, 2058 1259, -4, 1261, -4, 1263, -4, 2059 1265, -4, 1267, -4, // NOLINT 2060 1269, -4, 1271, -4, 1273, -4, 2061 1275, -4, 1277, -4, 1279, -4, 2062 1281, -4, 1283, -4, // NOLINT 2063 1285, -4, 1287, -4, 1289, -4, 2064 1291, -4, 1293, -4, 1295, -4, 2065 1297, -4, 1299, -4, // NOLINT 2066 1301, -4, 1303, -4, 1305, -4, 2067 1307, -4, 1309, -4, 1311, -4, 2068 1313, -4, 1315, -4, // NOLINT 2069 1317, -4, 1319, -4, 1321, -4, 2070 1323, -4, 1325, -4, 1327, -4, 2071 1073743201, -192, 1414, -192, // NOLINT 2072 7545, 141328, 7549, 15256, 7681, -4, 2073 7683, -4, 7685, -4, 7687, -4, 2074 7689, -4, 7691, -4, // NOLINT 2075 7693, -4, 7695, -4, 7697, -4, 2076 7699, -4, 7701, -4, 7703, -4, 2077 7705, -4, 7707, -4, // NOLINT 2078 7709, -4, 7711, -4, 7713, -4, 2079 7715, -4, 7717, -4, 7719, -4, 2080 7721, -4, 7723, -4, // NOLINT 2081 7725, -4, 7727, -4, 7729, -4, 2082 7731, -4, 7733, -4, 7735, -4, 2083 7737, -4, 7739, -4, // NOLINT 2084 7741, -4, 7743, -4, 7745, -4, 2085 7747, -4, 7749, -4, 7751, -4, 2086 7753, -4, 7755, -4, // NOLINT 2087 7757, -4, 7759, -4, 7761, -4, 2088 7763, -4, 7765, -4, 7767, -4, 2089 7769, -4, 7771, -4, // NOLINT 2090 7773, -4, 7775, -4, 7777, -4, 2091 7779, -4, 7781, -4, 7783, -4, 2092 7785, -4, 7787, -4, // NOLINT 2093 7789, -4, 7791, -4, 7793, -4, 2094 7795, -4, 7797, -4, 7799, -4, 2095 7801, -4, 7803, -4, // NOLINT 2096 7805, -4, 7807, -4, 7809, -4, 2097 7811, -4, 7813, -4, 7815, -4, 2098 7817, -4, 7819, -4, // NOLINT 2099 7821, -4, 7823, -4, 7825, -4, 2100 7827, -4, 7829, -4, 7835, -236, 2101 7841, -4, 7843, -4, // NOLINT 2102 7845, -4, 7847, -4, 7849, -4, 2103 7851, -4, 7853, -4, 7855, -4, 2104 7857, -4, 7859, -4, // NOLINT 2105 7861, -4, 7863, -4, 7865, -4, 2106 7867, -4, 7869, -4, 7871, -4, 2107 7873, -4, 7875, -4, // NOLINT 2108 7877, -4, 7879, -4, 7881, -4, 2109 7883, -4, 7885, -4, 7887, -4, 2110 7889, -4, 7891, -4, // NOLINT 2111 7893, -4, 7895, -4, 7897, -4, 2112 7899, -4, 7901, -4, 7903, -4, 2113 7905, -4, 7907, -4, // NOLINT 2114 7909, -4, 7911, -4, 7913, -4, 2115 7915, -4, 7917, -4, 7919, -4, 2116 7921, -4, 7923, -4, // NOLINT 2117 7925, -4, 7927, -4, 7929, -4, 2118 7931, -4, 7933, -4, 7935, -4, 2119 1073749760, 32, 7943, 32, // NOLINT 2120 1073749776, 32, 7957, 32, 1073749792, 32, 2121 7975, 32, 1073749808, 32, 7991, 32, 2122 1073749824, 32, 8005, 32, // NOLINT 2123 8017, 32, 8019, 32, 8021, 32, 2124 8023, 32, 1073749856, 32, 8039, 32, 2125 1073749872, 296, 8049, 296, // NOLINT 2126 1073749874, 344, 8053, 344, 1073749878, 400, 2127 8055, 400, 1073749880, 512, 8057, 512, 2128 1073749882, 448, 8059, 448, // NOLINT 2129 1073749884, 504, 8061, 504, 1073749936, 32, 2130 8113, 32, 8126, -28820, 1073749968, 32, 2131 8145, 32, 1073749984, 32, // NOLINT 2132 8161, 32, 8165, 28}; // NOLINT 2133 static const uint16_t kEcma262CanonicalizeMultiStrings0Size = 1; // NOLINT 2134 static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings1[1] = { // NOLINT 2135 {{kSentinel}} }; // NOLINT 2136 static const uint16_t kEcma262CanonicalizeTable1Size = 73; // NOLINT 2137 static const int32_t kEcma262CanonicalizeTable1[146] = { 2138 334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104, 1257, -104, 1073744944, -192, 3166, -192, // NOLINT 2139 3169, -4, 3173, -43180, 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4, 3190, -4, // NOLINT 2140 3201, -4, 3203, -4, 3205, -4, 3207, -4, 3209, -4, 3211, -4, 3213, -4, 3215, -4, // NOLINT 2141 3217, -4, 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4, 3229, -4, 3231, -4, // NOLINT 2142 3233, -4, 3235, -4, 3237, -4, 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4, // NOLINT 2143 3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4, 3259, -4, 3261, -4, 3263, -4, // NOLINT 2144 3265, -4, 3267, -4, 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4, 3279, -4, // NOLINT 2145 3281, -4, 3283, -4, 3285, -4, 3287, -4, 3289, -4, 3291, -4, 3293, -4, 3295, -4, // NOLINT 2146 3297, -4, 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056, 3365, -29056, 3367, -29056, // NOLINT 2147 3373, -29056 }; // NOLINT 2148 static const uint16_t kEcma262CanonicalizeMultiStrings1Size = 1; // NOLINT 2149 static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings5[1] = { // NOLINT 2150 {{kSentinel}} }; // NOLINT 2151 static const uint16_t kEcma262CanonicalizeTable5Size = 95; // NOLINT 2152 static const int32_t kEcma262CanonicalizeTable5 2153 [190] = {1601, -4, 1603, -4, 1605, -4, 1607, -4, 2154 1609, -4, 1611, -4, 1613, -4, 1615, -4, // NOLINT 2155 1617, -4, 1619, -4, 1621, -4, 1623, -4, 2156 1625, -4, 1627, -4, 1629, -4, 1631, -4, // NOLINT 2157 1633, -4, 1635, -4, 1637, -4, 1639, -4, 2158 1641, -4, 1643, -4, 1645, -4, 1665, -4, // NOLINT 2159 1667, -4, 1669, -4, 1671, -4, 1673, -4, 2160 1675, -4, 1677, -4, 1679, -4, 1681, -4, // NOLINT 2161 1683, -4, 1685, -4, 1687, -4, 1689, -4, 2162 1691, -4, 1827, -4, 1829, -4, 1831, -4, // NOLINT 2163 1833, -4, 1835, -4, 1837, -4, 1839, -4, 2164 1843, -4, 1845, -4, 1847, -4, 1849, -4, // NOLINT 2165 1851, -4, 1853, -4, 1855, -4, 1857, -4, 2166 1859, -4, 1861, -4, 1863, -4, 1865, -4, // NOLINT 2167 1867, -4, 1869, -4, 1871, -4, 1873, -4, 2168 1875, -4, 1877, -4, 1879, -4, 1881, -4, // NOLINT 2169 1883, -4, 1885, -4, 1887, -4, 1889, -4, 2170 1891, -4, 1893, -4, 1895, -4, 1897, -4, // NOLINT 2171 1899, -4, 1901, -4, 1903, -4, 1914, -4, 2172 1916, -4, 1919, -4, 1921, -4, 1923, -4, // NOLINT 2173 1925, -4, 1927, -4, 1932, -4, 1937, -4, 2174 1939, -4, 1943, -4, 1945, -4, 1947, -4, // NOLINT 2175 1949, -4, 1951, -4, 1953, -4, 1955, -4, 2176 1957, -4, 1959, -4, 1961, -4}; // NOLINT 2177 static const uint16_t kEcma262CanonicalizeMultiStrings5Size = 1; // NOLINT 2178 static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings7[1] = { // NOLINT 2179 {{kSentinel}} }; // NOLINT 2180 static const uint16_t kEcma262CanonicalizeTable7Size = 2; // NOLINT 2181 static const int32_t kEcma262CanonicalizeTable7[4] = { 2182 1073749825, -128, 8026, -128 }; // NOLINT 2183 static const uint16_t kEcma262CanonicalizeMultiStrings7Size = 1; // NOLINT 2184 int Ecma262Canonicalize::Convert(uchar c, 2185 uchar n, 2186 uchar* result, 2187 bool* allow_caching_ptr) { 2188 int chunk_index = c >> 13; 2189 switch (chunk_index) { 2190 case 0: return LookupMapping<true>(kEcma262CanonicalizeTable0, 2191 kEcma262CanonicalizeTable0Size, 2192 kEcma262CanonicalizeMultiStrings0, 2193 c, 2194 n, 2195 result, 2196 allow_caching_ptr); 2197 case 1: return LookupMapping<true>(kEcma262CanonicalizeTable1, 2198 kEcma262CanonicalizeTable1Size, 2199 kEcma262CanonicalizeMultiStrings1, 2200 c, 2201 n, 2202 result, 2203 allow_caching_ptr); 2204 case 5: return LookupMapping<true>(kEcma262CanonicalizeTable5, 2205 kEcma262CanonicalizeTable5Size, 2206 kEcma262CanonicalizeMultiStrings5, 2207 c, 2208 n, 2209 result, 2210 allow_caching_ptr); 2211 case 7: return LookupMapping<true>(kEcma262CanonicalizeTable7, 2212 kEcma262CanonicalizeTable7Size, 2213 kEcma262CanonicalizeMultiStrings7, 2214 c, 2215 n, 2216 result, 2217 allow_caching_ptr); 2218 default: return 0; 2219 } 2220 } 2221 2222 static const MultiCharacterSpecialCase<4> 2223 kEcma262UnCanonicalizeMultiStrings0[507] = { // NOLINT 2224 {{65, 97, kSentinel}}, 2225 {{90, 122, kSentinel}}, 2226 {{181, 924, 956, kSentinel}}, 2227 {{192, 224, kSentinel}}, // NOLINT 2228 {{214, 246, kSentinel}}, 2229 {{216, 248, kSentinel}}, 2230 {{222, 254, kSentinel}}, 2231 {{255, 376, kSentinel}}, // NOLINT 2232 {{256, 257, kSentinel}}, 2233 {{258, 259, kSentinel}}, 2234 {{260, 261, kSentinel}}, 2235 {{262, 263, kSentinel}}, // NOLINT 2236 {{264, 265, kSentinel}}, 2237 {{266, 267, kSentinel}}, 2238 {{268, 269, kSentinel}}, 2239 {{270, 271, kSentinel}}, // NOLINT 2240 {{272, 273, kSentinel}}, 2241 {{274, 275, kSentinel}}, 2242 {{276, 277, kSentinel}}, 2243 {{278, 279, kSentinel}}, // NOLINT 2244 {{280, 281, kSentinel}}, 2245 {{282, 283, kSentinel}}, 2246 {{284, 285, kSentinel}}, 2247 {{286, 287, kSentinel}}, // NOLINT 2248 {{288, 289, kSentinel}}, 2249 {{290, 291, kSentinel}}, 2250 {{292, 293, kSentinel}}, 2251 {{294, 295, kSentinel}}, // NOLINT 2252 {{296, 297, kSentinel}}, 2253 {{298, 299, kSentinel}}, 2254 {{300, 301, kSentinel}}, 2255 {{302, 303, kSentinel}}, // NOLINT 2256 {{306, 307, kSentinel}}, 2257 {{308, 309, kSentinel}}, 2258 {{310, 311, kSentinel}}, 2259 {{313, 314, kSentinel}}, // NOLINT 2260 {{315, 316, kSentinel}}, 2261 {{317, 318, kSentinel}}, 2262 {{319, 320, kSentinel}}, 2263 {{321, 322, kSentinel}}, // NOLINT 2264 {{323, 324, kSentinel}}, 2265 {{325, 326, kSentinel}}, 2266 {{327, 328, kSentinel}}, 2267 {{330, 331, kSentinel}}, // NOLINT 2268 {{332, 333, kSentinel}}, 2269 {{334, 335, kSentinel}}, 2270 {{336, 337, kSentinel}}, 2271 {{338, 339, kSentinel}}, // NOLINT 2272 {{340, 341, kSentinel}}, 2273 {{342, 343, kSentinel}}, 2274 {{344, 345, kSentinel}}, 2275 {{346, 347, kSentinel}}, // NOLINT 2276 {{348, 349, kSentinel}}, 2277 {{350, 351, kSentinel}}, 2278 {{352, 353, kSentinel}}, 2279 {{354, 355, kSentinel}}, // NOLINT 2280 {{356, 357, kSentinel}}, 2281 {{358, 359, kSentinel}}, 2282 {{360, 361, kSentinel}}, 2283 {{362, 363, kSentinel}}, // NOLINT 2284 {{364, 365, kSentinel}}, 2285 {{366, 367, kSentinel}}, 2286 {{368, 369, kSentinel}}, 2287 {{370, 371, kSentinel}}, // NOLINT 2288 {{372, 373, kSentinel}}, 2289 {{374, 375, kSentinel}}, 2290 {{377, 378, kSentinel}}, 2291 {{379, 380, kSentinel}}, // NOLINT 2292 {{381, 382, kSentinel}}, 2293 {{384, 579, kSentinel}}, 2294 {{385, 595, kSentinel}}, 2295 {{386, 387, kSentinel}}, // NOLINT 2296 {{388, 389, kSentinel}}, 2297 {{390, 596, kSentinel}}, 2298 {{391, 392, kSentinel}}, 2299 {{393, 598, kSentinel}}, // NOLINT 2300 {{394, 599, kSentinel}}, 2301 {{395, 396, kSentinel}}, 2302 {{398, 477, kSentinel}}, 2303 {{399, 601, kSentinel}}, // NOLINT 2304 {{400, 603, kSentinel}}, 2305 {{401, 402, kSentinel}}, 2306 {{403, 608, kSentinel}}, 2307 {{404, 611, kSentinel}}, // NOLINT 2308 {{405, 502, kSentinel}}, 2309 {{406, 617, kSentinel}}, 2310 {{407, 616, kSentinel}}, 2311 {{408, 409, kSentinel}}, // NOLINT 2312 {{410, 573, kSentinel}}, 2313 {{412, 623, kSentinel}}, 2314 {{413, 626, kSentinel}}, 2315 {{414, 544, kSentinel}}, // NOLINT 2316 {{415, 629, kSentinel}}, 2317 {{416, 417, kSentinel}}, 2318 {{418, 419, kSentinel}}, 2319 {{420, 421, kSentinel}}, // NOLINT 2320 {{422, 640, kSentinel}}, 2321 {{423, 424, kSentinel}}, 2322 {{425, 643, kSentinel}}, 2323 {{428, 429, kSentinel}}, // NOLINT 2324 {{430, 648, kSentinel}}, 2325 {{431, 432, kSentinel}}, 2326 {{433, 650, kSentinel}}, 2327 {{434, 651, kSentinel}}, // NOLINT 2328 {{435, 436, kSentinel}}, 2329 {{437, 438, kSentinel}}, 2330 {{439, 658, kSentinel}}, 2331 {{440, 441, kSentinel}}, // NOLINT 2332 {{444, 445, kSentinel}}, 2333 {{447, 503, kSentinel}}, 2334 {{452, 453, 454, kSentinel}}, 2335 {{455, 456, 457, kSentinel}}, // NOLINT 2336 {{458, 459, 460, kSentinel}}, 2337 {{461, 462, kSentinel}}, 2338 {{463, 464, kSentinel}}, 2339 {{465, 466, kSentinel}}, // NOLINT 2340 {{467, 468, kSentinel}}, 2341 {{469, 470, kSentinel}}, 2342 {{471, 472, kSentinel}}, 2343 {{473, 474, kSentinel}}, // NOLINT 2344 {{475, 476, kSentinel}}, 2345 {{478, 479, kSentinel}}, 2346 {{480, 481, kSentinel}}, 2347 {{482, 483, kSentinel}}, // NOLINT 2348 {{484, 485, kSentinel}}, 2349 {{486, 487, kSentinel}}, 2350 {{488, 489, kSentinel}}, 2351 {{490, 491, kSentinel}}, // NOLINT 2352 {{492, 493, kSentinel}}, 2353 {{494, 495, kSentinel}}, 2354 {{497, 498, 499, kSentinel}}, 2355 {{500, 501, kSentinel}}, // NOLINT 2356 {{504, 505, kSentinel}}, 2357 {{506, 507, kSentinel}}, 2358 {{508, 509, kSentinel}}, 2359 {{510, 511, kSentinel}}, // NOLINT 2360 {{512, 513, kSentinel}}, 2361 {{514, 515, kSentinel}}, 2362 {{516, 517, kSentinel}}, 2363 {{518, 519, kSentinel}}, // NOLINT 2364 {{520, 521, kSentinel}}, 2365 {{522, 523, kSentinel}}, 2366 {{524, 525, kSentinel}}, 2367 {{526, 527, kSentinel}}, // NOLINT 2368 {{528, 529, kSentinel}}, 2369 {{530, 531, kSentinel}}, 2370 {{532, 533, kSentinel}}, 2371 {{534, 535, kSentinel}}, // NOLINT 2372 {{536, 537, kSentinel}}, 2373 {{538, 539, kSentinel}}, 2374 {{540, 541, kSentinel}}, 2375 {{542, 543, kSentinel}}, // NOLINT 2376 {{546, 547, kSentinel}}, 2377 {{548, 549, kSentinel}}, 2378 {{550, 551, kSentinel}}, 2379 {{552, 553, kSentinel}}, // NOLINT 2380 {{554, 555, kSentinel}}, 2381 {{556, 557, kSentinel}}, 2382 {{558, 559, kSentinel}}, 2383 {{560, 561, kSentinel}}, // NOLINT 2384 {{562, 563, kSentinel}}, 2385 {{570, 11365, kSentinel}}, 2386 {{571, 572, kSentinel}}, 2387 {{574, 11366, kSentinel}}, // NOLINT 2388 {{575, 11390, kSentinel}}, 2389 {{576, 11391, kSentinel}}, 2390 {{577, 578, kSentinel}}, 2391 {{580, 649, kSentinel}}, // NOLINT 2392 {{581, 652, kSentinel}}, 2393 {{582, 583, kSentinel}}, 2394 {{584, 585, kSentinel}}, 2395 {{586, 587, kSentinel}}, // NOLINT 2396 {{588, 589, kSentinel}}, 2397 {{590, 591, kSentinel}}, 2398 {{592, 11375, kSentinel}}, 2399 {{593, 11373, kSentinel}}, // NOLINT 2400 {{594, 11376, kSentinel}}, 2401 {{604, 42923, kSentinel}}, 2402 {{609, 42924, kSentinel}}, 2403 {{613, 42893, kSentinel}}, // NOLINT 2404 {{614, 42922, kSentinel}}, 2405 {{619, 11362, kSentinel}}, 2406 {{620, 42925, kSentinel}}, 2407 {{625, 11374, kSentinel}}, // NOLINT 2408 {{637, 11364, kSentinel}}, 2409 {{647, 42929, kSentinel}}, 2410 {{670, 42928, kSentinel}}, 2411 {{837, 921, 953, 8126}}, // NOLINT 2412 {{880, 881, kSentinel}}, 2413 {{882, 883, kSentinel}}, 2414 {{886, 887, kSentinel}}, 2415 {{891, 1021, kSentinel}}, // NOLINT 2416 {{893, 1023, kSentinel}}, 2417 {{895, 1011, kSentinel}}, 2418 {{902, 940, kSentinel}}, 2419 {{904, 941, kSentinel}}, // NOLINT 2420 {{906, 943, kSentinel}}, 2421 {{908, 972, kSentinel}}, 2422 {{910, 973, kSentinel}}, 2423 {{911, 974, kSentinel}}, // NOLINT 2424 {{913, 945, kSentinel}}, 2425 {{914, 946, 976, kSentinel}}, 2426 {{915, 947, kSentinel}}, 2427 {{916, 948, kSentinel}}, // NOLINT 2428 {{917, 949, 1013, kSentinel}}, 2429 {{918, 950, kSentinel}}, 2430 {{919, 951, kSentinel}}, 2431 {{920, 952, 977, kSentinel}}, // NOLINT 2432 {{922, 954, 1008, kSentinel}}, 2433 {{923, 955, kSentinel}}, 2434 {{925, 957, kSentinel}}, 2435 {{927, 959, kSentinel}}, // NOLINT 2436 {{928, 960, 982, kSentinel}}, 2437 {{929, 961, 1009, kSentinel}}, 2438 {{931, 962, 963, kSentinel}}, 2439 {{932, 964, kSentinel}}, // NOLINT 2440 {{933, 965, kSentinel}}, 2441 {{934, 966, 981, kSentinel}}, 2442 {{935, 967, kSentinel}}, 2443 {{939, 971, kSentinel}}, // NOLINT 2444 {{975, 983, kSentinel}}, 2445 {{984, 985, kSentinel}}, 2446 {{986, 987, kSentinel}}, 2447 {{988, 989, kSentinel}}, // NOLINT 2448 {{990, 991, kSentinel}}, 2449 {{992, 993, kSentinel}}, 2450 {{994, 995, kSentinel}}, 2451 {{996, 997, kSentinel}}, // NOLINT 2452 {{998, 999, kSentinel}}, 2453 {{1000, 1001, kSentinel}}, 2454 {{1002, 1003, kSentinel}}, 2455 {{1004, 1005, kSentinel}}, // NOLINT 2456 {{1006, 1007, kSentinel}}, 2457 {{1010, 1017, kSentinel}}, 2458 {{1015, 1016, kSentinel}}, 2459 {{1018, 1019, kSentinel}}, // NOLINT 2460 {{1024, 1104, kSentinel}}, 2461 {{1039, 1119, kSentinel}}, 2462 {{1040, 1072, kSentinel}}, 2463 {{1071, 1103, kSentinel}}, // NOLINT 2464 {{1120, 1121, kSentinel}}, 2465 {{1122, 1123, kSentinel}}, 2466 {{1124, 1125, kSentinel}}, 2467 {{1126, 1127, kSentinel}}, // NOLINT 2468 {{1128, 1129, kSentinel}}, 2469 {{1130, 1131, kSentinel}}, 2470 {{1132, 1133, kSentinel}}, 2471 {{1134, 1135, kSentinel}}, // NOLINT 2472 {{1136, 1137, kSentinel}}, 2473 {{1138, 1139, kSentinel}}, 2474 {{1140, 1141, kSentinel}}, 2475 {{1142, 1143, kSentinel}}, // NOLINT 2476 {{1144, 1145, kSentinel}}, 2477 {{1146, 1147, kSentinel}}, 2478 {{1148, 1149, kSentinel}}, 2479 {{1150, 1151, kSentinel}}, // NOLINT 2480 {{1152, 1153, kSentinel}}, 2481 {{1162, 1163, kSentinel}}, 2482 {{1164, 1165, kSentinel}}, 2483 {{1166, 1167, kSentinel}}, // NOLINT 2484 {{1168, 1169, kSentinel}}, 2485 {{1170, 1171, kSentinel}}, 2486 {{1172, 1173, kSentinel}}, 2487 {{1174, 1175, kSentinel}}, // NOLINT 2488 {{1176, 1177, kSentinel}}, 2489 {{1178, 1179, kSentinel}}, 2490 {{1180, 1181, kSentinel}}, 2491 {{1182, 1183, kSentinel}}, // NOLINT 2492 {{1184, 1185, kSentinel}}, 2493 {{1186, 1187, kSentinel}}, 2494 {{1188, 1189, kSentinel}}, 2495 {{1190, 1191, kSentinel}}, // NOLINT 2496 {{1192, 1193, kSentinel}}, 2497 {{1194, 1195, kSentinel}}, 2498 {{1196, 1197, kSentinel}}, 2499 {{1198, 1199, kSentinel}}, // NOLINT 2500 {{1200, 1201, kSentinel}}, 2501 {{1202, 1203, kSentinel}}, 2502 {{1204, 1205, kSentinel}}, 2503 {{1206, 1207, kSentinel}}, // NOLINT 2504 {{1208, 1209, kSentinel}}, 2505 {{1210, 1211, kSentinel}}, 2506 {{1212, 1213, kSentinel}}, 2507 {{1214, 1215, kSentinel}}, // NOLINT 2508 {{1216, 1231, kSentinel}}, 2509 {{1217, 1218, kSentinel}}, 2510 {{1219, 1220, kSentinel}}, 2511 {{1221, 1222, kSentinel}}, // NOLINT 2512 {{1223, 1224, kSentinel}}, 2513 {{1225, 1226, kSentinel}}, 2514 {{1227, 1228, kSentinel}}, 2515 {{1229, 1230, kSentinel}}, // NOLINT 2516 {{1232, 1233, kSentinel}}, 2517 {{1234, 1235, kSentinel}}, 2518 {{1236, 1237, kSentinel}}, 2519 {{1238, 1239, kSentinel}}, // NOLINT 2520 {{1240, 1241, kSentinel}}, 2521 {{1242, 1243, kSentinel}}, 2522 {{1244, 1245, kSentinel}}, 2523 {{1246, 1247, kSentinel}}, // NOLINT 2524 {{1248, 1249, kSentinel}}, 2525 {{1250, 1251, kSentinel}}, 2526 {{1252, 1253, kSentinel}}, 2527 {{1254, 1255, kSentinel}}, // NOLINT 2528 {{1256, 1257, kSentinel}}, 2529 {{1258, 1259, kSentinel}}, 2530 {{1260, 1261, kSentinel}}, 2531 {{1262, 1263, kSentinel}}, // NOLINT 2532 {{1264, 1265, kSentinel}}, 2533 {{1266, 1267, kSentinel}}, 2534 {{1268, 1269, kSentinel}}, 2535 {{1270, 1271, kSentinel}}, // NOLINT 2536 {{1272, 1273, kSentinel}}, 2537 {{1274, 1275, kSentinel}}, 2538 {{1276, 1277, kSentinel}}, 2539 {{1278, 1279, kSentinel}}, // NOLINT 2540 {{1280, 1281, kSentinel}}, 2541 {{1282, 1283, kSentinel}}, 2542 {{1284, 1285, kSentinel}}, 2543 {{1286, 1287, kSentinel}}, // NOLINT 2544 {{1288, 1289, kSentinel}}, 2545 {{1290, 1291, kSentinel}}, 2546 {{1292, 1293, kSentinel}}, 2547 {{1294, 1295, kSentinel}}, // NOLINT 2548 {{1296, 1297, kSentinel}}, 2549 {{1298, 1299, kSentinel}}, 2550 {{1300, 1301, kSentinel}}, 2551 {{1302, 1303, kSentinel}}, // NOLINT 2552 {{1304, 1305, kSentinel}}, 2553 {{1306, 1307, kSentinel}}, 2554 {{1308, 1309, kSentinel}}, 2555 {{1310, 1311, kSentinel}}, // NOLINT 2556 {{1312, 1313, kSentinel}}, 2557 {{1314, 1315, kSentinel}}, 2558 {{1316, 1317, kSentinel}}, 2559 {{1318, 1319, kSentinel}}, // NOLINT 2560 {{1320, 1321, kSentinel}}, 2561 {{1322, 1323, kSentinel}}, 2562 {{1324, 1325, kSentinel}}, 2563 {{1326, 1327, kSentinel}}, // NOLINT 2564 {{1329, 1377, kSentinel}}, 2565 {{1366, 1414, kSentinel}}, 2566 {{4256, 11520, kSentinel}}, 2567 {{4293, 11557, kSentinel}}, // NOLINT 2568 {{4295, 11559, kSentinel}}, 2569 {{4301, 11565, kSentinel}}, 2570 {{7545, 42877, kSentinel}}, 2571 {{7549, 11363, kSentinel}}, // NOLINT 2572 {{7680, 7681, kSentinel}}, 2573 {{7682, 7683, kSentinel}}, 2574 {{7684, 7685, kSentinel}}, 2575 {{7686, 7687, kSentinel}}, // NOLINT 2576 {{7688, 7689, kSentinel}}, 2577 {{7690, 7691, kSentinel}}, 2578 {{7692, 7693, kSentinel}}, 2579 {{7694, 7695, kSentinel}}, // NOLINT 2580 {{7696, 7697, kSentinel}}, 2581 {{7698, 7699, kSentinel}}, 2582 {{7700, 7701, kSentinel}}, 2583 {{7702, 7703, kSentinel}}, // NOLINT 2584 {{7704, 7705, kSentinel}}, 2585 {{7706, 7707, kSentinel}}, 2586 {{7708, 7709, kSentinel}}, 2587 {{7710, 7711, kSentinel}}, // NOLINT 2588 {{7712, 7713, kSentinel}}, 2589 {{7714, 7715, kSentinel}}, 2590 {{7716, 7717, kSentinel}}, 2591 {{7718, 7719, kSentinel}}, // NOLINT 2592 {{7720, 7721, kSentinel}}, 2593 {{7722, 7723, kSentinel}}, 2594 {{7724, 7725, kSentinel}}, 2595 {{7726, 7727, kSentinel}}, // NOLINT 2596 {{7728, 7729, kSentinel}}, 2597 {{7730, 7731, kSentinel}}, 2598 {{7732, 7733, kSentinel}}, 2599 {{7734, 7735, kSentinel}}, // NOLINT 2600 {{7736, 7737, kSentinel}}, 2601 {{7738, 7739, kSentinel}}, 2602 {{7740, 7741, kSentinel}}, 2603 {{7742, 7743, kSentinel}}, // NOLINT 2604 {{7744, 7745, kSentinel}}, 2605 {{7746, 7747, kSentinel}}, 2606 {{7748, 7749, kSentinel}}, 2607 {{7750, 7751, kSentinel}}, // NOLINT 2608 {{7752, 7753, kSentinel}}, 2609 {{7754, 7755, kSentinel}}, 2610 {{7756, 7757, kSentinel}}, 2611 {{7758, 7759, kSentinel}}, // NOLINT 2612 {{7760, 7761, kSentinel}}, 2613 {{7762, 7763, kSentinel}}, 2614 {{7764, 7765, kSentinel}}, 2615 {{7766, 7767, kSentinel}}, // NOLINT 2616 {{7768, 7769, kSentinel}}, 2617 {{7770, 7771, kSentinel}}, 2618 {{7772, 7773, kSentinel}}, 2619 {{7774, 7775, kSentinel}}, // NOLINT 2620 {{7776, 7777, 7835, kSentinel}}, 2621 {{7778, 7779, kSentinel}}, 2622 {{7780, 7781, kSentinel}}, 2623 {{7782, 7783, kSentinel}}, // NOLINT 2624 {{7784, 7785, kSentinel}}, 2625 {{7786, 7787, kSentinel}}, 2626 {{7788, 7789, kSentinel}}, 2627 {{7790, 7791, kSentinel}}, // NOLINT 2628 {{7792, 7793, kSentinel}}, 2629 {{7794, 7795, kSentinel}}, 2630 {{7796, 7797, kSentinel}}, 2631 {{7798, 7799, kSentinel}}, // NOLINT 2632 {{7800, 7801, kSentinel}}, 2633 {{7802, 7803, kSentinel}}, 2634 {{7804, 7805, kSentinel}}, 2635 {{7806, 7807, kSentinel}}, // NOLINT 2636 {{7808, 7809, kSentinel}}, 2637 {{7810, 7811, kSentinel}}, 2638 {{7812, 7813, kSentinel}}, 2639 {{7814, 7815, kSentinel}}, // NOLINT 2640 {{7816, 7817, kSentinel}}, 2641 {{7818, 7819, kSentinel}}, 2642 {{7820, 7821, kSentinel}}, 2643 {{7822, 7823, kSentinel}}, // NOLINT 2644 {{7824, 7825, kSentinel}}, 2645 {{7826, 7827, kSentinel}}, 2646 {{7828, 7829, kSentinel}}, 2647 {{7840, 7841, kSentinel}}, // NOLINT 2648 {{7842, 7843, kSentinel}}, 2649 {{7844, 7845, kSentinel}}, 2650 {{7846, 7847, kSentinel}}, 2651 {{7848, 7849, kSentinel}}, // NOLINT 2652 {{7850, 7851, kSentinel}}, 2653 {{7852, 7853, kSentinel}}, 2654 {{7854, 7855, kSentinel}}, 2655 {{7856, 7857, kSentinel}}, // NOLINT 2656 {{7858, 7859, kSentinel}}, 2657 {{7860, 7861, kSentinel}}, 2658 {{7862, 7863, kSentinel}}, 2659 {{7864, 7865, kSentinel}}, // NOLINT 2660 {{7866, 7867, kSentinel}}, 2661 {{7868, 7869, kSentinel}}, 2662 {{7870, 7871, kSentinel}}, 2663 {{7872, 7873, kSentinel}}, // NOLINT 2664 {{7874, 7875, kSentinel}}, 2665 {{7876, 7877, kSentinel}}, 2666 {{7878, 7879, kSentinel}}, 2667 {{7880, 7881, kSentinel}}, // NOLINT 2668 {{7882, 7883, kSentinel}}, 2669 {{7884, 7885, kSentinel}}, 2670 {{7886, 7887, kSentinel}}, 2671 {{7888, 7889, kSentinel}}, // NOLINT 2672 {{7890, 7891, kSentinel}}, 2673 {{7892, 7893, kSentinel}}, 2674 {{7894, 7895, kSentinel}}, 2675 {{7896, 7897, kSentinel}}, // NOLINT 2676 {{7898, 7899, kSentinel}}, 2677 {{7900, 7901, kSentinel}}, 2678 {{7902, 7903, kSentinel}}, 2679 {{7904, 7905, kSentinel}}, // NOLINT 2680 {{7906, 7907, kSentinel}}, 2681 {{7908, 7909, kSentinel}}, 2682 {{7910, 7911, kSentinel}}, 2683 {{7912, 7913, kSentinel}}, // NOLINT 2684 {{7914, 7915, kSentinel}}, 2685 {{7916, 7917, kSentinel}}, 2686 {{7918, 7919, kSentinel}}, 2687 {{7920, 7921, kSentinel}}, // NOLINT 2688 {{7922, 7923, kSentinel}}, 2689 {{7924, 7925, kSentinel}}, 2690 {{7926, 7927, kSentinel}}, 2691 {{7928, 7929, kSentinel}}, // NOLINT 2692 {{7930, 7931, kSentinel}}, 2693 {{7932, 7933, kSentinel}}, 2694 {{7934, 7935, kSentinel}}, 2695 {{7936, 7944, kSentinel}}, // NOLINT 2696 {{7943, 7951, kSentinel}}, 2697 {{7952, 7960, kSentinel}}, 2698 {{7957, 7965, kSentinel}}, 2699 {{7968, 7976, kSentinel}}, // NOLINT 2700 {{7975, 7983, kSentinel}}, 2701 {{7984, 7992, kSentinel}}, 2702 {{7991, 7999, kSentinel}}, 2703 {{8000, 8008, kSentinel}}, // NOLINT 2704 {{8005, 8013, kSentinel}}, 2705 {{8017, 8025, kSentinel}}, 2706 {{8019, 8027, kSentinel}}, 2707 {{8021, 8029, kSentinel}}, // NOLINT 2708 {{8023, 8031, kSentinel}}, 2709 {{8032, 8040, kSentinel}}, 2710 {{8039, 8047, kSentinel}}, 2711 {{8048, 8122, kSentinel}}, // NOLINT 2712 {{8049, 8123, kSentinel}}, 2713 {{8050, 8136, kSentinel}}, 2714 {{8053, 8139, kSentinel}}, 2715 {{8054, 8154, kSentinel}}, // NOLINT 2716 {{8055, 8155, kSentinel}}, 2717 {{8056, 8184, kSentinel}}, 2718 {{8057, 8185, kSentinel}}, 2719 {{8058, 8170, kSentinel}}, // NOLINT 2720 {{8059, 8171, kSentinel}}, 2721 {{8060, 8186, kSentinel}}, 2722 {{8061, 8187, kSentinel}}, 2723 {{8112, 8120, kSentinel}}, // NOLINT 2724 {{8113, 8121, kSentinel}}, 2725 {{8144, 8152, kSentinel}}, 2726 {{8145, 8153, kSentinel}}, 2727 {{8160, 8168, kSentinel}}, // NOLINT 2728 {{8161, 8169, kSentinel}}, 2729 {{8165, 8172, kSentinel}}, 2730 {{kSentinel}}}; // NOLINT 2731 static const uint16_t kEcma262UnCanonicalizeTable0Size = 1005; // NOLINT 2732 static const int32_t kEcma262UnCanonicalizeTable0[2010] = { 2733 1073741889, 1, 90, 5, 1073741921, 1, 2734 122, 5, 181, 9, 1073742016, 13, 2735 214, 17, 1073742040, 21, // NOLINT 2736 222, 25, 1073742048, 13, 246, 17, 2737 1073742072, 21, 254, 25, 255, 29, 2738 256, 33, 257, 33, // NOLINT 2739 258, 37, 259, 37, 260, 41, 2740 261, 41, 262, 45, 263, 45, 2741 264, 49, 265, 49, // NOLINT 2742 266, 53, 267, 53, 268, 57, 2743 269, 57, 270, 61, 271, 61, 2744 272, 65, 273, 65, // NOLINT 2745 274, 69, 275, 69, 276, 73, 2746 277, 73, 278, 77, 279, 77, 2747 280, 81, 281, 81, // NOLINT 2748 282, 85, 283, 85, 284, 89, 2749 285, 89, 286, 93, 287, 93, 2750 288, 97, 289, 97, // NOLINT 2751 290, 101, 291, 101, 292, 105, 2752 293, 105, 294, 109, 295, 109, 2753 296, 113, 297, 113, // NOLINT 2754 298, 117, 299, 117, 300, 121, 2755 301, 121, 302, 125, 303, 125, 2756 306, 129, 307, 129, // NOLINT 2757 308, 133, 309, 133, 310, 137, 2758 311, 137, 313, 141, 314, 141, 2759 315, 145, 316, 145, // NOLINT 2760 317, 149, 318, 149, 319, 153, 2761 320, 153, 321, 157, 322, 157, 2762 323, 161, 324, 161, // NOLINT 2763 325, 165, 326, 165, 327, 169, 2764 328, 169, 330, 173, 331, 173, 2765 332, 177, 333, 177, // NOLINT 2766 334, 181, 335, 181, 336, 185, 2767 337, 185, 338, 189, 339, 189, 2768 340, 193, 341, 193, // NOLINT 2769 342, 197, 343, 197, 344, 201, 2770 345, 201, 346, 205, 347, 205, 2771 348, 209, 349, 209, // NOLINT 2772 350, 213, 351, 213, 352, 217, 2773 353, 217, 354, 221, 355, 221, 2774 356, 225, 357, 225, // NOLINT 2775 358, 229, 359, 229, 360, 233, 2776 361, 233, 362, 237, 363, 237, 2777 364, 241, 365, 241, // NOLINT 2778 366, 245, 367, 245, 368, 249, 2779 369, 249, 370, 253, 371, 253, 2780 372, 257, 373, 257, // NOLINT 2781 374, 261, 375, 261, 376, 29, 2782 377, 265, 378, 265, 379, 269, 2783 380, 269, 381, 273, // NOLINT 2784 382, 273, 384, 277, 385, 281, 2785 386, 285, 387, 285, 388, 289, 2786 389, 289, 390, 293, // NOLINT 2787 391, 297, 392, 297, 1073742217, 301, 2788 394, 305, 395, 309, 396, 309, 2789 398, 313, 399, 317, // NOLINT 2790 400, 321, 401, 325, 402, 325, 2791 403, 329, 404, 333, 405, 337, 2792 406, 341, 407, 345, // NOLINT 2793 408, 349, 409, 349, 410, 353, 2794 412, 357, 413, 361, 414, 365, 2795 415, 369, 416, 373, // NOLINT 2796 417, 373, 418, 377, 419, 377, 2797 420, 381, 421, 381, 422, 385, 2798 423, 389, 424, 389, // NOLINT 2799 425, 393, 428, 397, 429, 397, 2800 430, 401, 431, 405, 432, 405, 2801 1073742257, 409, 434, 413, // NOLINT 2802 435, 417, 436, 417, 437, 421, 2803 438, 421, 439, 425, 440, 429, 2804 441, 429, 444, 433, // NOLINT 2805 445, 433, 447, 437, 452, 441, 2806 453, 441, 454, 441, 455, 445, 2807 456, 445, 457, 445, // NOLINT 2808 458, 449, 459, 449, 460, 449, 2809 461, 453, 462, 453, 463, 457, 2810 464, 457, 465, 461, // NOLINT 2811 466, 461, 467, 465, 468, 465, 2812 469, 469, 470, 469, 471, 473, 2813 472, 473, 473, 477, // NOLINT 2814 474, 477, 475, 481, 476, 481, 2815 477, 313, 478, 485, 479, 485, 2816 480, 489, 481, 489, // NOLINT 2817 482, 493, 483, 493, 484, 497, 2818 485, 497, 486, 501, 487, 501, 2819 488, 505, 489, 505, // NOLINT 2820 490, 509, 491, 509, 492, 513, 2821 493, 513, 494, 517, 495, 517, 2822 497, 521, 498, 521, // NOLINT 2823 499, 521, 500, 525, 501, 525, 2824 502, 337, 503, 437, 504, 529, 2825 505, 529, 506, 533, // NOLINT 2826 507, 533, 508, 537, 509, 537, 2827 510, 541, 511, 541, 512, 545, 2828 513, 545, 514, 549, // NOLINT 2829 515, 549, 516, 553, 517, 553, 2830 518, 557, 519, 557, 520, 561, 2831 521, 561, 522, 565, // NOLINT 2832 523, 565, 524, 569, 525, 569, 2833 526, 573, 527, 573, 528, 577, 2834 529, 577, 530, 581, // NOLINT 2835 531, 581, 532, 585, 533, 585, 2836 534, 589, 535, 589, 536, 593, 2837 537, 593, 538, 597, // NOLINT 2838 539, 597, 540, 601, 541, 601, 2839 542, 605, 543, 605, 544, 365, 2840 546, 609, 547, 609, // NOLINT 2841 548, 613, 549, 613, 550, 617, 2842 551, 617, 552, 621, 553, 621, 2843 554, 625, 555, 625, // NOLINT 2844 556, 629, 557, 629, 558, 633, 2845 559, 633, 560, 637, 561, 637, 2846 562, 641, 563, 641, // NOLINT 2847 570, 645, 571, 649, 572, 649, 2848 573, 353, 574, 653, 1073742399, 657, 2849 576, 661, 577, 665, // NOLINT 2850 578, 665, 579, 277, 580, 669, 2851 581, 673, 582, 677, 583, 677, 2852 584, 681, 585, 681, // NOLINT 2853 586, 685, 587, 685, 588, 689, 2854 589, 689, 590, 693, 591, 693, 2855 592, 697, 593, 701, // NOLINT 2856 594, 705, 595, 281, 596, 293, 2857 1073742422, 301, 599, 305, 601, 317, 2858 603, 321, 604, 709, // NOLINT 2859 608, 329, 609, 713, 611, 333, 2860 613, 717, 614, 721, 616, 345, 2861 617, 341, 619, 725, // NOLINT 2862 620, 729, 623, 357, 625, 733, 2863 626, 361, 629, 369, 637, 737, 2864 640, 385, 643, 393, // NOLINT 2865 647, 741, 648, 401, 649, 669, 2866 1073742474, 409, 651, 413, 652, 673, 2867 658, 425, 670, 745, // NOLINT 2868 837, 749, 880, 753, 881, 753, 2869 882, 757, 883, 757, 886, 761, 2870 887, 761, 1073742715, 765, // NOLINT 2871 893, 769, 895, 773, 902, 777, 2872 1073742728, 781, 906, 785, 908, 789, 2873 1073742734, 793, 911, 797, // NOLINT 2874 913, 801, 914, 805, 1073742739, 809, 2875 916, 813, 917, 817, 1073742742, 821, 2876 919, 825, 920, 829, // NOLINT 2877 921, 749, 922, 833, 923, 837, 2878 924, 9, 1073742749, 841, 927, 845, 2879 928, 849, 929, 853, // NOLINT 2880 931, 857, 1073742756, 861, 933, 865, 2881 934, 869, 1073742759, 873, 939, 877, 2882 940, 777, 1073742765, 781, // NOLINT 2883 943, 785, 945, 801, 946, 805, 2884 1073742771, 809, 948, 813, 949, 817, 2885 1073742774, 821, 951, 825, // NOLINT 2886 952, 829, 953, 749, 954, 833, 2887 955, 837, 956, 9, 1073742781, 841, 2888 959, 845, 960, 849, // NOLINT 2889 961, 853, 962, 857, 963, 857, 2890 1073742788, 861, 965, 865, 966, 869, 2891 1073742791, 873, 971, 877, // NOLINT 2892 972, 789, 1073742797, 793, 974, 797, 2893 975, 881, 976, 805, 977, 829, 2894 981, 869, 982, 849, // NOLINT 2895 983, 881, 984, 885, 985, 885, 2896 986, 889, 987, 889, 988, 893, 2897 989, 893, 990, 897, // NOLINT 2898 991, 897, 992, 901, 993, 901, 2899 994, 905, 995, 905, 996, 909, 2900 997, 909, 998, 913, // NOLINT 2901 999, 913, 1000, 917, 1001, 917, 2902 1002, 921, 1003, 921, 1004, 925, 2903 1005, 925, 1006, 929, // NOLINT 2904 1007, 929, 1008, 833, 1009, 853, 2905 1010, 933, 1011, 773, 1013, 817, 2906 1015, 937, 1016, 937, // NOLINT 2907 1017, 933, 1018, 941, 1019, 941, 2908 1073742845, 765, 1023, 769, 1073742848, 945, 2909 1039, 949, 1073742864, 953, // NOLINT 2910 1071, 957, 1073742896, 953, 1103, 957, 2911 1073742928, 945, 1119, 949, 1120, 961, 2912 1121, 961, 1122, 965, // NOLINT 2913 1123, 965, 1124, 969, 1125, 969, 2914 1126, 973, 1127, 973, 1128, 977, 2915 1129, 977, 1130, 981, // NOLINT 2916 1131, 981, 1132, 985, 1133, 985, 2917 1134, 989, 1135, 989, 1136, 993, 2918 1137, 993, 1138, 997, // NOLINT 2919 1139, 997, 1140, 1001, 1141, 1001, 2920 1142, 1005, 1143, 1005, 1144, 1009, 2921 1145, 1009, 1146, 1013, // NOLINT 2922 1147, 1013, 1148, 1017, 1149, 1017, 2923 1150, 1021, 1151, 1021, 1152, 1025, 2924 1153, 1025, 1162, 1029, // NOLINT 2925 1163, 1029, 1164, 1033, 1165, 1033, 2926 1166, 1037, 1167, 1037, 1168, 1041, 2927 1169, 1041, 1170, 1045, // NOLINT 2928 1171, 1045, 1172, 1049, 1173, 1049, 2929 1174, 1053, 1175, 1053, 1176, 1057, 2930 1177, 1057, 1178, 1061, // NOLINT 2931 1179, 1061, 1180, 1065, 1181, 1065, 2932 1182, 1069, 1183, 1069, 1184, 1073, 2933 1185, 1073, 1186, 1077, // NOLINT 2934 1187, 1077, 1188, 1081, 1189, 1081, 2935 1190, 1085, 1191, 1085, 1192, 1089, 2936 1193, 1089, 1194, 1093, // NOLINT 2937 1195, 1093, 1196, 1097, 1197, 1097, 2938 1198, 1101, 1199, 1101, 1200, 1105, 2939 1201, 1105, 1202, 1109, // NOLINT 2940 1203, 1109, 1204, 1113, 1205, 1113, 2941 1206, 1117, 1207, 1117, 1208, 1121, 2942 1209, 1121, 1210, 1125, // NOLINT 2943 1211, 1125, 1212, 1129, 1213, 1129, 2944 1214, 1133, 1215, 1133, 1216, 1137, 2945 1217, 1141, 1218, 1141, // NOLINT 2946 1219, 1145, 1220, 1145, 1221, 1149, 2947 1222, 1149, 1223, 1153, 1224, 1153, 2948 1225, 1157, 1226, 1157, // NOLINT 2949 1227, 1161, 1228, 1161, 1229, 1165, 2950 1230, 1165, 1231, 1137, 1232, 1169, 2951 1233, 1169, 1234, 1173, // NOLINT 2952 1235, 1173, 1236, 1177, 1237, 1177, 2953 1238, 1181, 1239, 1181, 1240, 1185, 2954 1241, 1185, 1242, 1189, // NOLINT 2955 1243, 1189, 1244, 1193, 1245, 1193, 2956 1246, 1197, 1247, 1197, 1248, 1201, 2957 1249, 1201, 1250, 1205, // NOLINT 2958 1251, 1205, 1252, 1209, 1253, 1209, 2959 1254, 1213, 1255, 1213, 1256, 1217, 2960 1257, 1217, 1258, 1221, // NOLINT 2961 1259, 1221, 1260, 1225, 1261, 1225, 2962 1262, 1229, 1263, 1229, 1264, 1233, 2963 1265, 1233, 1266, 1237, // NOLINT 2964 1267, 1237, 1268, 1241, 1269, 1241, 2965 1270, 1245, 1271, 1245, 1272, 1249, 2966 1273, 1249, 1274, 1253, // NOLINT 2967 1275, 1253, 1276, 1257, 1277, 1257, 2968 1278, 1261, 1279, 1261, 1280, 1265, 2969 1281, 1265, 1282, 1269, // NOLINT 2970 1283, 1269, 1284, 1273, 1285, 1273, 2971 1286, 1277, 1287, 1277, 1288, 1281, 2972 1289, 1281, 1290, 1285, // NOLINT 2973 1291, 1285, 1292, 1289, 1293, 1289, 2974 1294, 1293, 1295, 1293, 1296, 1297, 2975 1297, 1297, 1298, 1301, // NOLINT 2976 1299, 1301, 1300, 1305, 1301, 1305, 2977 1302, 1309, 1303, 1309, 1304, 1313, 2978 1305, 1313, 1306, 1317, // NOLINT 2979 1307, 1317, 1308, 1321, 1309, 1321, 2980 1310, 1325, 1311, 1325, 1312, 1329, 2981 1313, 1329, 1314, 1333, // NOLINT 2982 1315, 1333, 1316, 1337, 1317, 1337, 2983 1318, 1341, 1319, 1341, 1320, 1345, 2984 1321, 1345, 1322, 1349, // NOLINT 2985 1323, 1349, 1324, 1353, 1325, 1353, 2986 1326, 1357, 1327, 1357, 1073743153, 1361, 2987 1366, 1365, 1073743201, 1361, // NOLINT 2988 1414, 1365, 1073746080, 1369, 4293, 1373, 2989 4295, 1377, 4301, 1381, 7545, 1385, 2990 7549, 1389, 7680, 1393, // NOLINT 2991 7681, 1393, 7682, 1397, 7683, 1397, 2992 7684, 1401, 7685, 1401, 7686, 1405, 2993 7687, 1405, 7688, 1409, // NOLINT 2994 7689, 1409, 7690, 1413, 7691, 1413, 2995 7692, 1417, 7693, 1417, 7694, 1421, 2996 7695, 1421, 7696, 1425, // NOLINT 2997 7697, 1425, 7698, 1429, 7699, 1429, 2998 7700, 1433, 7701, 1433, 7702, 1437, 2999 7703, 1437, 7704, 1441, // NOLINT 3000 7705, 1441, 7706, 1445, 7707, 1445, 3001 7708, 1449, 7709, 1449, 7710, 1453, 3002 7711, 1453, 7712, 1457, // NOLINT 3003 7713, 1457, 7714, 1461, 7715, 1461, 3004 7716, 1465, 7717, 1465, 7718, 1469, 3005 7719, 1469, 7720, 1473, // NOLINT 3006 7721, 1473, 7722, 1477, 7723, 1477, 3007 7724, 1481, 7725, 1481, 7726, 1485, 3008 7727, 1485, 7728, 1489, // NOLINT 3009 7729, 1489, 7730, 1493, 7731, 1493, 3010 7732, 1497, 7733, 1497, 7734, 1501, 3011 7735, 1501, 7736, 1505, // NOLINT 3012 7737, 1505, 7738, 1509, 7739, 1509, 3013 7740, 1513, 7741, 1513, 7742, 1517, 3014 7743, 1517, 7744, 1521, // NOLINT 3015 7745, 1521, 7746, 1525, 7747, 1525, 3016 7748, 1529, 7749, 1529, 7750, 1533, 3017 7751, 1533, 7752, 1537, // NOLINT 3018 7753, 1537, 7754, 1541, 7755, 1541, 3019 7756, 1545, 7757, 1545, 7758, 1549, 3020 7759, 1549, 7760, 1553, // NOLINT 3021 7761, 1553, 7762, 1557, 7763, 1557, 3022 7764, 1561, 7765, 1561, 7766, 1565, 3023 7767, 1565, 7768, 1569, // NOLINT 3024 7769, 1569, 7770, 1573, 7771, 1573, 3025 7772, 1577, 7773, 1577, 7774, 1581, 3026 7775, 1581, 7776, 1585, // NOLINT 3027 7777, 1585, 7778, 1589, 7779, 1589, 3028 7780, 1593, 7781, 1593, 7782, 1597, 3029 7783, 1597, 7784, 1601, // NOLINT 3030 7785, 1601, 7786, 1605, 7787, 1605, 3031 7788, 1609, 7789, 1609, 7790, 1613, 3032 7791, 1613, 7792, 1617, // NOLINT 3033 7793, 1617, 7794, 1621, 7795, 1621, 3034 7796, 1625, 7797, 1625, 7798, 1629, 3035 7799, 1629, 7800, 1633, // NOLINT 3036 7801, 1633, 7802, 1637, 7803, 1637, 3037 7804, 1641, 7805, 1641, 7806, 1645, 3038 7807, 1645, 7808, 1649, // NOLINT 3039 7809, 1649, 7810, 1653, 7811, 1653, 3040 7812, 1657, 7813, 1657, 7814, 1661, 3041 7815, 1661, 7816, 1665, // NOLINT 3042 7817, 1665, 7818, 1669, 7819, 1669, 3043 7820, 1673, 7821, 1673, 7822, 1677, 3044 7823, 1677, 7824, 1681, // NOLINT 3045 7825, 1681, 7826, 1685, 7827, 1685, 3046 7828, 1689, 7829, 1689, 7835, 1585, 3047 7840, 1693, 7841, 1693, // NOLINT 3048 7842, 1697, 7843, 1697, 7844, 1701, 3049 7845, 1701, 7846, 1705, 7847, 1705, 3050 7848, 1709, 7849, 1709, // NOLINT 3051 7850, 1713, 7851, 1713, 7852, 1717, 3052 7853, 1717, 7854, 1721, 7855, 1721, 3053 7856, 1725, 7857, 1725, // NOLINT 3054 7858, 1729, 7859, 1729, 7860, 1733, 3055 7861, 1733, 7862, 1737, 7863, 1737, 3056 7864, 1741, 7865, 1741, // NOLINT 3057 7866, 1745, 7867, 1745, 7868, 1749, 3058 7869, 1749, 7870, 1753, 7871, 1753, 3059 7872, 1757, 7873, 1757, // NOLINT 3060 7874, 1761, 7875, 1761, 7876, 1765, 3061 7877, 1765, 7878, 1769, 7879, 1769, 3062 7880, 1773, 7881, 1773, // NOLINT 3063 7882, 1777, 7883, 1777, 7884, 1781, 3064 7885, 1781, 7886, 1785, 7887, 1785, 3065 7888, 1789, 7889, 1789, // NOLINT 3066 7890, 1793, 7891, 1793, 7892, 1797, 3067 7893, 1797, 7894, 1801, 7895, 1801, 3068 7896, 1805, 7897, 1805, // NOLINT 3069 7898, 1809, 7899, 1809, 7900, 1813, 3070 7901, 1813, 7902, 1817, 7903, 1817, 3071 7904, 1821, 7905, 1821, // NOLINT 3072 7906, 1825, 7907, 1825, 7908, 1829, 3073 7909, 1829, 7910, 1833, 7911, 1833, 3074 7912, 1837, 7913, 1837, // NOLINT 3075 7914, 1841, 7915, 1841, 7916, 1845, 3076 7917, 1845, 7918, 1849, 7919, 1849, 3077 7920, 1853, 7921, 1853, // NOLINT 3078 7922, 1857, 7923, 1857, 7924, 1861, 3079 7925, 1861, 7926, 1865, 7927, 1865, 3080 7928, 1869, 7929, 1869, // NOLINT 3081 7930, 1873, 7931, 1873, 7932, 1877, 3082 7933, 1877, 7934, 1881, 7935, 1881, 3083 1073749760, 1885, 7943, 1889, // NOLINT 3084 1073749768, 1885, 7951, 1889, 1073749776, 1893, 3085 7957, 1897, 1073749784, 1893, 7965, 1897, 3086 1073749792, 1901, 7975, 1905, // NOLINT 3087 1073749800, 1901, 7983, 1905, 1073749808, 1909, 3088 7991, 1913, 1073749816, 1909, 7999, 1913, 3089 1073749824, 1917, 8005, 1921, // NOLINT 3090 1073749832, 1917, 8013, 1921, 8017, 1925, 3091 8019, 1929, 8021, 1933, 8023, 1937, 3092 8025, 1925, 8027, 1929, // NOLINT 3093 8029, 1933, 8031, 1937, 1073749856, 1941, 3094 8039, 1945, 1073749864, 1941, 8047, 1945, 3095 1073749872, 1949, 8049, 1953, // NOLINT 3096 1073749874, 1957, 8053, 1961, 1073749878, 1965, 3097 8055, 1969, 1073749880, 1973, 8057, 1977, 3098 1073749882, 1981, 8059, 1985, // NOLINT 3099 1073749884, 1989, 8061, 1993, 1073749936, 1997, 3100 8113, 2001, 1073749944, 1997, 8121, 2001, 3101 1073749946, 1949, 8123, 1953, // NOLINT 3102 8126, 749, 1073749960, 1957, 8139, 1961, 3103 1073749968, 2005, 8145, 2009, 1073749976, 2005, 3104 8153, 2009, 1073749978, 1965, // NOLINT 3105 8155, 1969, 1073749984, 2013, 8161, 2017, 3106 8165, 2021, 1073749992, 2013, 8169, 2017, 3107 1073749994, 1981, 8171, 1985, // NOLINT 3108 8172, 2021, 1073750008, 1973, 8185, 1977, 3109 1073750010, 1989, 8187, 1993}; // NOLINT 3110 static const uint16_t kEcma262UnCanonicalizeMultiStrings0Size = 507; // NOLINT 3111 static const MultiCharacterSpecialCase<2> kEcma262UnCanonicalizeMultiStrings1[83] = { // NOLINT 3112 {{8498, 8526}}, {{8544, 8560}}, {{8559, 8575}}, {{8579, 8580}}, // NOLINT 3113 {{9398, 9424}}, {{9423, 9449}}, {{11264, 11312}}, {{11310, 11358}}, // NOLINT 3114 {{11360, 11361}}, {{619, 11362}}, {{7549, 11363}}, {{637, 11364}}, // NOLINT 3115 {{570, 11365}}, {{574, 11366}}, {{11367, 11368}}, {{11369, 11370}}, // NOLINT 3116 {{11371, 11372}}, {{593, 11373}}, {{625, 11374}}, {{592, 11375}}, // NOLINT 3117 {{594, 11376}}, {{11378, 11379}}, {{11381, 11382}}, {{575, 11390}}, // NOLINT 3118 {{576, 11391}}, {{11392, 11393}}, {{11394, 11395}}, {{11396, 11397}}, // NOLINT 3119 {{11398, 11399}}, {{11400, 11401}}, {{11402, 11403}}, {{11404, 11405}}, // NOLINT 3120 {{11406, 11407}}, {{11408, 11409}}, {{11410, 11411}}, {{11412, 11413}}, // NOLINT 3121 {{11414, 11415}}, {{11416, 11417}}, {{11418, 11419}}, {{11420, 11421}}, // NOLINT 3122 {{11422, 11423}}, {{11424, 11425}}, {{11426, 11427}}, {{11428, 11429}}, // NOLINT 3123 {{11430, 11431}}, {{11432, 11433}}, {{11434, 11435}}, {{11436, 11437}}, // NOLINT 3124 {{11438, 11439}}, {{11440, 11441}}, {{11442, 11443}}, {{11444, 11445}}, // NOLINT 3125 {{11446, 11447}}, {{11448, 11449}}, {{11450, 11451}}, {{11452, 11453}}, // NOLINT 3126 {{11454, 11455}}, {{11456, 11457}}, {{11458, 11459}}, {{11460, 11461}}, // NOLINT 3127 {{11462, 11463}}, {{11464, 11465}}, {{11466, 11467}}, {{11468, 11469}}, // NOLINT 3128 {{11470, 11471}}, {{11472, 11473}}, {{11474, 11475}}, {{11476, 11477}}, // NOLINT 3129 {{11478, 11479}}, {{11480, 11481}}, {{11482, 11483}}, {{11484, 11485}}, // NOLINT 3130 {{11486, 11487}}, {{11488, 11489}}, {{11490, 11491}}, {{11499, 11500}}, // NOLINT 3131 {{11501, 11502}}, {{11506, 11507}}, {{4256, 11520}}, {{4293, 11557}}, // NOLINT 3132 {{4295, 11559}}, {{4301, 11565}}, {{kSentinel}} }; // NOLINT 3133 static const uint16_t kEcma262UnCanonicalizeTable1Size = 149; // NOLINT 3134 static const int32_t kEcma262UnCanonicalizeTable1[298] = { 3135 306, 1, 334, 1, 1073742176, 5, 367, 9, 1073742192, 5, 383, 9, 387, 13, 388, 13, // NOLINT 3136 1073743030, 17, 1231, 21, 1073743056, 17, 1257, 21, 1073744896, 25, 3118, 29, 1073744944, 25, 3166, 29, // NOLINT 3137 3168, 33, 3169, 33, 3170, 37, 3171, 41, 3172, 45, 3173, 49, 3174, 53, 3175, 57, // NOLINT 3138 3176, 57, 3177, 61, 3178, 61, 3179, 65, 3180, 65, 3181, 69, 3182, 73, 3183, 77, // NOLINT 3139 3184, 81, 3186, 85, 3187, 85, 3189, 89, 3190, 89, 1073745022, 93, 3199, 97, 3200, 101, // NOLINT 3140 3201, 101, 3202, 105, 3203, 105, 3204, 109, 3205, 109, 3206, 113, 3207, 113, 3208, 117, // NOLINT 3141 3209, 117, 3210, 121, 3211, 121, 3212, 125, 3213, 125, 3214, 129, 3215, 129, 3216, 133, // NOLINT 3142 3217, 133, 3218, 137, 3219, 137, 3220, 141, 3221, 141, 3222, 145, 3223, 145, 3224, 149, // NOLINT 3143 3225, 149, 3226, 153, 3227, 153, 3228, 157, 3229, 157, 3230, 161, 3231, 161, 3232, 165, // NOLINT 3144 3233, 165, 3234, 169, 3235, 169, 3236, 173, 3237, 173, 3238, 177, 3239, 177, 3240, 181, // NOLINT 3145 3241, 181, 3242, 185, 3243, 185, 3244, 189, 3245, 189, 3246, 193, 3247, 193, 3248, 197, // NOLINT 3146 3249, 197, 3250, 201, 3251, 201, 3252, 205, 3253, 205, 3254, 209, 3255, 209, 3256, 213, // NOLINT 3147 3257, 213, 3258, 217, 3259, 217, 3260, 221, 3261, 221, 3262, 225, 3263, 225, 3264, 229, // NOLINT 3148 3265, 229, 3266, 233, 3267, 233, 3268, 237, 3269, 237, 3270, 241, 3271, 241, 3272, 245, // NOLINT 3149 3273, 245, 3274, 249, 3275, 249, 3276, 253, 3277, 253, 3278, 257, 3279, 257, 3280, 261, // NOLINT 3150 3281, 261, 3282, 265, 3283, 265, 3284, 269, 3285, 269, 3286, 273, 3287, 273, 3288, 277, // NOLINT 3151 3289, 277, 3290, 281, 3291, 281, 3292, 285, 3293, 285, 3294, 289, 3295, 289, 3296, 293, // NOLINT 3152 3297, 293, 3298, 297, 3299, 297, 3307, 301, 3308, 301, 3309, 305, 3310, 305, 3314, 309, // NOLINT 3153 3315, 309, 1073745152, 313, 3365, 317, 3367, 321, 3373, 325 }; // NOLINT 3154 static const uint16_t kEcma262UnCanonicalizeMultiStrings1Size = 83; // NOLINT 3155 static const MultiCharacterSpecialCase<2> 3156 kEcma262UnCanonicalizeMultiStrings5[104] = { // NOLINT 3157 {{42560, 42561}}, 3158 {{42562, 42563}}, 3159 {{42564, 42565}}, 3160 {{42566, 42567}}, // NOLINT 3161 {{42568, 42569}}, 3162 {{42570, 42571}}, 3163 {{42572, 42573}}, 3164 {{42574, 42575}}, // NOLINT 3165 {{42576, 42577}}, 3166 {{42578, 42579}}, 3167 {{42580, 42581}}, 3168 {{42582, 42583}}, // NOLINT 3169 {{42584, 42585}}, 3170 {{42586, 42587}}, 3171 {{42588, 42589}}, 3172 {{42590, 42591}}, // NOLINT 3173 {{42592, 42593}}, 3174 {{42594, 42595}}, 3175 {{42596, 42597}}, 3176 {{42598, 42599}}, // NOLINT 3177 {{42600, 42601}}, 3178 {{42602, 42603}}, 3179 {{42604, 42605}}, 3180 {{42624, 42625}}, // NOLINT 3181 {{42626, 42627}}, 3182 {{42628, 42629}}, 3183 {{42630, 42631}}, 3184 {{42632, 42633}}, // NOLINT 3185 {{42634, 42635}}, 3186 {{42636, 42637}}, 3187 {{42638, 42639}}, 3188 {{42640, 42641}}, // NOLINT 3189 {{42642, 42643}}, 3190 {{42644, 42645}}, 3191 {{42646, 42647}}, 3192 {{42648, 42649}}, // NOLINT 3193 {{42650, 42651}}, 3194 {{42786, 42787}}, 3195 {{42788, 42789}}, 3196 {{42790, 42791}}, // NOLINT 3197 {{42792, 42793}}, 3198 {{42794, 42795}}, 3199 {{42796, 42797}}, 3200 {{42798, 42799}}, // NOLINT 3201 {{42802, 42803}}, 3202 {{42804, 42805}}, 3203 {{42806, 42807}}, 3204 {{42808, 42809}}, // NOLINT 3205 {{42810, 42811}}, 3206 {{42812, 42813}}, 3207 {{42814, 42815}}, 3208 {{42816, 42817}}, // NOLINT 3209 {{42818, 42819}}, 3210 {{42820, 42821}}, 3211 {{42822, 42823}}, 3212 {{42824, 42825}}, // NOLINT 3213 {{42826, 42827}}, 3214 {{42828, 42829}}, 3215 {{42830, 42831}}, 3216 {{42832, 42833}}, // NOLINT 3217 {{42834, 42835}}, 3218 {{42836, 42837}}, 3219 {{42838, 42839}}, 3220 {{42840, 42841}}, // NOLINT 3221 {{42842, 42843}}, 3222 {{42844, 42845}}, 3223 {{42846, 42847}}, 3224 {{42848, 42849}}, // NOLINT 3225 {{42850, 42851}}, 3226 {{42852, 42853}}, 3227 {{42854, 42855}}, 3228 {{42856, 42857}}, // NOLINT 3229 {{42858, 42859}}, 3230 {{42860, 42861}}, 3231 {{42862, 42863}}, 3232 {{42873, 42874}}, // NOLINT 3233 {{42875, 42876}}, 3234 {{7545, 42877}}, 3235 {{42878, 42879}}, 3236 {{42880, 42881}}, // NOLINT 3237 {{42882, 42883}}, 3238 {{42884, 42885}}, 3239 {{42886, 42887}}, 3240 {{42891, 42892}}, // NOLINT 3241 {{613, 42893}}, 3242 {{42896, 42897}}, 3243 {{42898, 42899}}, 3244 {{42902, 42903}}, // NOLINT 3245 {{42904, 42905}}, 3246 {{42906, 42907}}, 3247 {{42908, 42909}}, 3248 {{42910, 42911}}, // NOLINT 3249 {{42912, 42913}}, 3250 {{42914, 42915}}, 3251 {{42916, 42917}}, 3252 {{42918, 42919}}, // NOLINT 3253 {{42920, 42921}}, 3254 {{614, 42922}}, 3255 {{604, 42923}}, 3256 {{609, 42924}}, // NOLINT 3257 {{620, 42925}}, 3258 {{670, 42928}}, 3259 {{647, 42929}}, 3260 {{kSentinel}}}; // NOLINT 3261 static const uint16_t kEcma262UnCanonicalizeTable5Size = 198; // NOLINT 3262 static const int32_t kEcma262UnCanonicalizeTable5 3263 [396] = {1600, 1, 1601, 1, 1602, 5, 1603, 5, 3264 1604, 9, 1605, 9, 1606, 13, 1607, 13, // NOLINT 3265 1608, 17, 1609, 17, 1610, 21, 1611, 21, 3266 1612, 25, 1613, 25, 1614, 29, 1615, 29, // NOLINT 3267 1616, 33, 1617, 33, 1618, 37, 1619, 37, 3268 1620, 41, 1621, 41, 1622, 45, 1623, 45, // NOLINT 3269 1624, 49, 1625, 49, 1626, 53, 1627, 53, 3270 1628, 57, 1629, 57, 1630, 61, 1631, 61, // NOLINT 3271 1632, 65, 1633, 65, 1634, 69, 1635, 69, 3272 1636, 73, 1637, 73, 1638, 77, 1639, 77, // NOLINT 3273 1640, 81, 1641, 81, 1642, 85, 1643, 85, 3274 1644, 89, 1645, 89, 1664, 93, 1665, 93, // NOLINT 3275 1666, 97, 1667, 97, 1668, 101, 1669, 101, 3276 1670, 105, 1671, 105, 1672, 109, 1673, 109, // NOLINT 3277 1674, 113, 1675, 113, 1676, 117, 1677, 117, 3278 1678, 121, 1679, 121, 1680, 125, 1681, 125, // NOLINT 3279 1682, 129, 1683, 129, 1684, 133, 1685, 133, 3280 1686, 137, 1687, 137, 1688, 141, 1689, 141, // NOLINT 3281 1690, 145, 1691, 145, 1826, 149, 1827, 149, 3282 1828, 153, 1829, 153, 1830, 157, 1831, 157, // NOLINT 3283 1832, 161, 1833, 161, 1834, 165, 1835, 165, 3284 1836, 169, 1837, 169, 1838, 173, 1839, 173, // NOLINT 3285 1842, 177, 1843, 177, 1844, 181, 1845, 181, 3286 1846, 185, 1847, 185, 1848, 189, 1849, 189, // NOLINT 3287 1850, 193, 1851, 193, 1852, 197, 1853, 197, 3288 1854, 201, 1855, 201, 1856, 205, 1857, 205, // NOLINT 3289 1858, 209, 1859, 209, 1860, 213, 1861, 213, 3290 1862, 217, 1863, 217, 1864, 221, 1865, 221, // NOLINT 3291 1866, 225, 1867, 225, 1868, 229, 1869, 229, 3292 1870, 233, 1871, 233, 1872, 237, 1873, 237, // NOLINT 3293 1874, 241, 1875, 241, 1876, 245, 1877, 245, 3294 1878, 249, 1879, 249, 1880, 253, 1881, 253, // NOLINT 3295 1882, 257, 1883, 257, 1884, 261, 1885, 261, 3296 1886, 265, 1887, 265, 1888, 269, 1889, 269, // NOLINT 3297 1890, 273, 1891, 273, 1892, 277, 1893, 277, 3298 1894, 281, 1895, 281, 1896, 285, 1897, 285, // NOLINT 3299 1898, 289, 1899, 289, 1900, 293, 1901, 293, 3300 1902, 297, 1903, 297, 1913, 301, 1914, 301, // NOLINT 3301 1915, 305, 1916, 305, 1917, 309, 1918, 313, 3302 1919, 313, 1920, 317, 1921, 317, 1922, 321, // NOLINT 3303 1923, 321, 1924, 325, 1925, 325, 1926, 329, 3304 1927, 329, 1931, 333, 1932, 333, 1933, 337, // NOLINT 3305 1936, 341, 1937, 341, 1938, 345, 1939, 345, 3306 1942, 349, 1943, 349, 1944, 353, 1945, 353, // NOLINT 3307 1946, 357, 1947, 357, 1948, 361, 1949, 361, 3308 1950, 365, 1951, 365, 1952, 369, 1953, 369, // NOLINT 3309 1954, 373, 1955, 373, 1956, 377, 1957, 377, 3310 1958, 381, 1959, 381, 1960, 385, 1961, 385, // NOLINT 3311 1962, 389, 1963, 393, 1964, 397, 1965, 401, 3312 1968, 405, 1969, 409}; // NOLINT 3313 static const uint16_t kEcma262UnCanonicalizeMultiStrings5Size = 104; // NOLINT 3314 static const MultiCharacterSpecialCase<2> kEcma262UnCanonicalizeMultiStrings7[3] = { // NOLINT 3315 {{65313, 65345}}, {{65338, 65370}}, {{kSentinel}} }; // NOLINT 3316 static const uint16_t kEcma262UnCanonicalizeTable7Size = 4; // NOLINT 3317 static const int32_t kEcma262UnCanonicalizeTable7[8] = { 3318 1073749793, 1, 7994, 5, 1073749825, 1, 8026, 5 }; // NOLINT 3319 static const uint16_t kEcma262UnCanonicalizeMultiStrings7Size = 3; // NOLINT 3320 int Ecma262UnCanonicalize::Convert(uchar c, 3321 uchar n, 3322 uchar* result, 3323 bool* allow_caching_ptr) { 3324 int chunk_index = c >> 13; 3325 switch (chunk_index) { 3326 case 0: return LookupMapping<true>(kEcma262UnCanonicalizeTable0, 3327 kEcma262UnCanonicalizeTable0Size, 3328 kEcma262UnCanonicalizeMultiStrings0, 3329 c, 3330 n, 3331 result, 3332 allow_caching_ptr); 3333 case 1: return LookupMapping<true>(kEcma262UnCanonicalizeTable1, 3334 kEcma262UnCanonicalizeTable1Size, 3335 kEcma262UnCanonicalizeMultiStrings1, 3336 c, 3337 n, 3338 result, 3339 allow_caching_ptr); 3340 case 5: return LookupMapping<true>(kEcma262UnCanonicalizeTable5, 3341 kEcma262UnCanonicalizeTable5Size, 3342 kEcma262UnCanonicalizeMultiStrings5, 3343 c, 3344 n, 3345 result, 3346 allow_caching_ptr); 3347 case 7: return LookupMapping<true>(kEcma262UnCanonicalizeTable7, 3348 kEcma262UnCanonicalizeTable7Size, 3349 kEcma262UnCanonicalizeMultiStrings7, 3350 c, 3351 n, 3352 result, 3353 allow_caching_ptr); 3354 default: return 0; 3355 } 3356 } 3357 3358 static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings0[1] = { // NOLINT 3359 {{kSentinel}} }; // NOLINT 3360 static const uint16_t kCanonicalizationRangeTable0Size = 70; // NOLINT 3361 static const int32_t kCanonicalizationRangeTable0[140] = { 3362 1073741889, 100, 90, 0, 1073741921, 100, 122, 0, 1073742016, 88, 214, 0, 1073742040, 24, 222, 0, // NOLINT 3363 1073742048, 88, 246, 0, 1073742072, 24, 254, 0, 1073742715, 8, 893, 0, 1073742728, 8, 906, 0, // NOLINT 3364 1073742749, 8, 927, 0, 1073742759, 16, 939, 0, 1073742765, 8, 943, 0, 1073742781, 8, 959, 0, // NOLINT 3365 1073742791, 16, 971, 0, 1073742845, 8, 1023, 0, 1073742848, 60, 1039, 0, 1073742864, 124, 1071, 0, // NOLINT 3366 1073742896, 124, 1103, 0, 1073742928, 60, 1119, 0, 1073743153, 148, 1366, 0, 1073743201, 148, 1414, 0, // NOLINT 3367 1073746080, 148, 4293, 0, 1073749760, 28, 7943, 0, 1073749768, 28, 7951, 0, 1073749776, 20, 7957, 0, // NOLINT 3368 1073749784, 20, 7965, 0, 1073749792, 28, 7975, 0, 1073749800, 28, 7983, 0, 1073749808, 28, 7991, 0, // NOLINT 3369 1073749816, 28, 7999, 0, 1073749824, 20, 8005, 0, 1073749832, 20, 8013, 0, 1073749856, 28, 8039, 0, // NOLINT 3370 1073749864, 28, 8047, 0, 1073749874, 12, 8053, 0, 1073749960, 12, 8139, 0 }; // NOLINT 3371 static const uint16_t kCanonicalizationRangeMultiStrings0Size = 1; // NOLINT 3372 static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings1[1] = { // NOLINT 3373 {{kSentinel}} }; // NOLINT 3374 static const uint16_t kCanonicalizationRangeTable1Size = 14; // NOLINT 3375 static const int32_t kCanonicalizationRangeTable1[28] = { 3376 1073742176, 60, 367, 0, 1073742192, 60, 383, 0, 1073743030, 100, 1231, 0, 1073743056, 100, 1257, 0, // NOLINT 3377 1073744896, 184, 3118, 0, 1073744944, 184, 3166, 0, 1073745152, 148, 3365, 0 }; // NOLINT 3378 static const uint16_t kCanonicalizationRangeMultiStrings1Size = 1; // NOLINT 3379 static const MultiCharacterSpecialCase<1> kCanonicalizationRangeMultiStrings7[1] = { // NOLINT 3380 {{kSentinel}} }; // NOLINT 3381 static const uint16_t kCanonicalizationRangeTable7Size = 4; // NOLINT 3382 static const int32_t kCanonicalizationRangeTable7[8] = { 3383 1073749793, 100, 7994, 0, 1073749825, 100, 8026, 0 }; // NOLINT 3384 static const uint16_t kCanonicalizationRangeMultiStrings7Size = 1; // NOLINT 3385 int CanonicalizationRange::Convert(uchar c, 3386 uchar n, 3387 uchar* result, 3388 bool* allow_caching_ptr) { 3389 int chunk_index = c >> 13; 3390 switch (chunk_index) { 3391 case 0: return LookupMapping<false>(kCanonicalizationRangeTable0, 3392 kCanonicalizationRangeTable0Size, 3393 kCanonicalizationRangeMultiStrings0, 3394 c, 3395 n, 3396 result, 3397 allow_caching_ptr); 3398 case 1: return LookupMapping<false>(kCanonicalizationRangeTable1, 3399 kCanonicalizationRangeTable1Size, 3400 kCanonicalizationRangeMultiStrings1, 3401 c, 3402 n, 3403 result, 3404 allow_caching_ptr); 3405 case 7: return LookupMapping<false>(kCanonicalizationRangeTable7, 3406 kCanonicalizationRangeTable7Size, 3407 kCanonicalizationRangeMultiStrings7, 3408 c, 3409 n, 3410 result, 3411 allow_caching_ptr); 3412 default: return 0; 3413 } 3414 } 3415 3416 3417 const uchar UnicodeData::kMaxCodePoint = 65533; 3418 3419 int UnicodeData::GetByteCount() { 3420 return kUppercaseTable0Size * sizeof(int32_t) // NOLINT 3421 + kUppercaseTable1Size * sizeof(int32_t) // NOLINT 3422 + kUppercaseTable5Size * sizeof(int32_t) // NOLINT 3423 + kUppercaseTable7Size * sizeof(int32_t) // NOLINT 3424 + kLowercaseTable0Size * sizeof(int32_t) // NOLINT 3425 + kLowercaseTable1Size * sizeof(int32_t) // NOLINT 3426 + kLowercaseTable5Size * sizeof(int32_t) // NOLINT 3427 + kLowercaseTable7Size * sizeof(int32_t) // NOLINT 3428 + kLetterTable0Size * sizeof(int32_t) // NOLINT 3429 + kLetterTable1Size * sizeof(int32_t) // NOLINT 3430 + kLetterTable2Size * sizeof(int32_t) // NOLINT 3431 + kLetterTable3Size * sizeof(int32_t) // NOLINT 3432 + kLetterTable4Size * sizeof(int32_t) // NOLINT 3433 + kLetterTable5Size * sizeof(int32_t) // NOLINT 3434 + kLetterTable6Size * sizeof(int32_t) // NOLINT 3435 + kLetterTable7Size * sizeof(int32_t) // NOLINT 3436 + kID_StartTable0Size * sizeof(int32_t) // NOLINT 3437 + kID_StartTable1Size * sizeof(int32_t) // NOLINT 3438 + kID_StartTable2Size * sizeof(int32_t) // NOLINT 3439 + kID_StartTable3Size * sizeof(int32_t) // NOLINT 3440 + kID_StartTable4Size * sizeof(int32_t) // NOLINT 3441 + kID_StartTable5Size * sizeof(int32_t) // NOLINT 3442 + kID_StartTable6Size * sizeof(int32_t) // NOLINT 3443 + kID_StartTable7Size * sizeof(int32_t) // NOLINT 3444 + kID_ContinueTable0Size * sizeof(int32_t) // NOLINT 3445 + kID_ContinueTable1Size * sizeof(int32_t) // NOLINT 3446 + kID_ContinueTable5Size * sizeof(int32_t) // NOLINT 3447 + kID_ContinueTable7Size * sizeof(int32_t) // NOLINT 3448 + kWhiteSpaceTable0Size * sizeof(int32_t) // NOLINT 3449 + kWhiteSpaceTable1Size * sizeof(int32_t) // NOLINT 3450 + kWhiteSpaceTable7Size * sizeof(int32_t) // NOLINT 3451 + kLineTerminatorTable0Size * sizeof(int32_t) // NOLINT 3452 + kLineTerminatorTable1Size * sizeof(int32_t) // NOLINT 3453 + 3454 kToLowercaseMultiStrings0Size * 3455 sizeof(MultiCharacterSpecialCase<2>) // NOLINT 3456 + 3457 kToLowercaseMultiStrings1Size * 3458 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3459 + 3460 kToLowercaseMultiStrings5Size * 3461 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3462 + 3463 kToLowercaseMultiStrings7Size * 3464 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3465 + 3466 kToUppercaseMultiStrings0Size * 3467 sizeof(MultiCharacterSpecialCase<3>) // NOLINT 3468 + 3469 kToUppercaseMultiStrings1Size * 3470 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3471 + 3472 kToUppercaseMultiStrings5Size * 3473 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3474 + 3475 kToUppercaseMultiStrings7Size * 3476 sizeof(MultiCharacterSpecialCase<3>) // NOLINT 3477 + 3478 kEcma262CanonicalizeMultiStrings0Size * 3479 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3480 + 3481 kEcma262CanonicalizeMultiStrings1Size * 3482 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3483 + 3484 kEcma262CanonicalizeMultiStrings5Size * 3485 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3486 + 3487 kEcma262CanonicalizeMultiStrings7Size * 3488 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3489 + 3490 kEcma262UnCanonicalizeMultiStrings0Size * 3491 sizeof(MultiCharacterSpecialCase<4>) // NOLINT 3492 + 3493 kEcma262UnCanonicalizeMultiStrings1Size * 3494 sizeof(MultiCharacterSpecialCase<2>) // NOLINT 3495 + 3496 kEcma262UnCanonicalizeMultiStrings5Size * 3497 sizeof(MultiCharacterSpecialCase<2>) // NOLINT 3498 + 3499 kEcma262UnCanonicalizeMultiStrings7Size * 3500 sizeof(MultiCharacterSpecialCase<2>) // NOLINT 3501 + 3502 kCanonicalizationRangeMultiStrings0Size * 3503 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3504 + 3505 kCanonicalizationRangeMultiStrings1Size * 3506 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3507 + 3508 kCanonicalizationRangeMultiStrings7Size * 3509 sizeof(MultiCharacterSpecialCase<1>); // NOLINT 3510 } 3511 3512 } // namespace unibrow 3513