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