This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regen/regcharclass_multi_char_folds.pl: Use case fold
[perl5.git] / regcharclass.h
1 /* -*- buffer-read-only: t -*-
2  *
3  *    regcharclass.h
4  *
5  *    Copyright (C) 2007, 2011 by Larry Wall and others
6  *
7  *    You may distribute under the terms of either the GNU General Public
8  *    License or the Artistic License, as specified in the README file.
9  *
10  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
11  * This file is built by regen/regcharclass.pl.
12  * Any changes made here will be lost!
13  * WARNING: These macros are for internal Perl core use only, and may be
14  * changed or removed without notice.
15  */
16
17
18 #ifndef PERL_REGCHARCLASS_H_ /* Guard against nested #includes */
19 #define PERL_REGCHARCLASS_H_
20
21 #if 'A' == 65 /* ASCII/Latin1 */
22 /*
23         LNBREAK: Line Break: \R
24
25         "\x0D\x0A"      # CRLF - Network (Windows) line ending
26         \p{VertSpace}
27 */
28 /*** GENERATED CODE ***/
29 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
30 ( ((e)-(s) > 2) ?                                                           \
31     ( ( inRANGE(((const U8*)s)[0], '\n', '\f') ) ? 1                        \
32     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
33         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
34     : ( is_utf8 ) ?                                                         \
35         ( ( 0xC2 == ((const U8*)s)[0] ) ?                                   \
36             ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                       \
37         : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
38     : ( 0x85 == ((const U8*)s)[0] ) )                                       \
39 : ((e)-(s) > 1) ?                                                           \
40     ( ( inRANGE(((const U8*)s)[0], '\n', '\f') ) ? 1                        \
41     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
42         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
43     : ( is_utf8 ) ?                                                         \
44         ( ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
45     : ( 0x85 == ((const U8*)s)[0] ) )                                       \
46 : ((e)-(s) > 0) ?                                                           \
47     ( ( inRANGE(((const U8*)s)[0], '\n', '\r') ) ? 1                        \
48     : ( !( is_utf8 ) ) ?                                                    \
49         ( 0x85 == ((const U8*)s)[0] )                                       \
50     : 0 )                                                                   \
51 : 0 )
52
53 /*** GENERATED CODE ***/
54 #define is_LNBREAK_utf8_safe(s,e)                                           \
55 ( ((e)-(s) > 2) ?                                                           \
56     ( ( inRANGE(((const U8*)s)[0], '\n', '\f') ) ? 1                        \
57     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
58         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
59     : ( 0xC2 == ((const U8*)s)[0] ) ?                                       \
60         ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
61     : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
62 : ((e)-(s) > 1) ?                                                           \
63     ( ( inRANGE(((const U8*)s)[0], '\n', '\f') ) ? 1                        \
64     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
65         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
66     : ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\
67 : ((e)-(s) > 0) ?                                                           \
68     ( inRANGE(((const U8*)s)[0], '\n', '\r') )                              \
69 : 0 )
70
71 /*** GENERATED CODE ***/
72 #define is_LNBREAK_latin1_safe(s,e)                                         \
73 ( ((e)-(s) > 1) ?                                                           \
74     ( ( inRANGE(((const U8*)s)[0], '\n', '\f') || 0x85 == ((const U8*)s)[0] ) ? 1\
75     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
76         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
77     : 0 )                                                                   \
78 : ((e)-(s) > 0) ?                                                           \
79     ( inRANGE(((const U8*)s)[0], '\n', '\r') || 0x85 == ((const U8*)s)[0] ) \
80 : 0 )
81
82 /*
83         HORIZWS: Horizontal Whitespace: \h \H
84
85         \p{HorizSpace}
86 */
87 /*** GENERATED CODE ***/
88 #define is_HORIZWS_high(s)                                                  \
89 ( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
90     ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
91 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
92     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
93         ( ( inRANGE(((const U8*)s)[2], 0x80, 0x8A) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
94     : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
95 : ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )
96
97 /*** GENERATED CODE ***/
98 #define is_HORIZWS_cp_high(cp)                                              \
99 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
100 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
101 ( 0x202F == cp || ( 0x202F < cp &&                                          \
102 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
103
104 /*
105         VERTWS: Vertical Whitespace: \v \V
106
107         \p{VertSpace}
108 */
109 /*** GENERATED CODE ***/
110 #define is_VERTWS_high(s)                                                   \
111 ( ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )
112
113 /*** GENERATED CODE ***/
114 #define is_VERTWS_cp_high(cp)                                               \
115 ( 0x2028 == cp || 0x2029 == cp )
116
117 /*
118         XDIGIT: Hexadecimal digits
119
120         \p{XDigit}
121 */
122 /*** GENERATED CODE ***/
123 #define is_XDIGIT_high(s)                                                   \
124 ( ( 0xEF == ((const U8*)s)[0] ) ?                                           \
125     ( ( 0xBC == ((const U8*)s)[1] ) ?                                       \
126         ( ( inRANGE(((const U8*)s)[2], 0x90, 0x99) || inRANGE(((const U8*)s)[2], 0xA1, 0xA6) ) ? 3 : 0 )\
127     : ( ( 0xBD == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x81, 0x86) ) ) ? 3 : 0 )\
128 : 0 )
129
130 /*** GENERATED CODE ***/
131 #define is_XDIGIT_cp_high(cp)                                               \
132 ( inRANGE(cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&                           \
133 ( inRANGE(cp, 0xFF21, 0xFF26) || inRANGE(cp, 0xFF41, 0xFF46) ) ) )
134
135 /*
136         XPERLSPACE: \p{XPerlSpace}
137
138         \p{XPerlSpace}
139 */
140 /*** GENERATED CODE ***/
141 #define is_XPERLSPACE_high(s)                                               \
142 ( ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
143     ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
144 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
145     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
146         ( ( inRANGE(((const U8*)s)[2], 0x80, 0x8A) || inRANGE(((const U8*)s)[2], 0xA8, 0xA9) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\
147     : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\
148 : ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )
149
150 /*** GENERATED CODE ***/
151 #define is_XPERLSPACE_cp_high(cp)                                           \
152 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
153 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
154 ( 0x2028 == cp || ( 0x2028 < cp &&                                          \
155 ( 0x2029 == cp || ( 0x2029 < cp &&                                          \
156 ( 0x202F == cp || ( 0x202F < cp &&                                          \
157 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) ) ) )
158
159 /*
160         NONCHAR: Non character code points
161
162         \p{_Perl_Nchar}
163 */
164 /*** GENERATED CODE ***/
165 #define is_NONCHAR_utf8_safe(s,e)                                           \
166 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xEF == ((const U8*)s)[0] ) ?\
167             ( ( 0xB7 == ((const U8*)s)[1] ) ?                               \
168                 ( ( inRANGE(((const U8*)s)[2], 0x90, 0xAF) ) ? 3 : 0 )      \
169             : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0xBE, 0xBF) ) ) ? 3 : 0 )\
170         : ( 0xF0 == ((const U8*)s)[0] ) ?                                   \
171             ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
172         : ( inRANGE(((const U8*)s)[0], 0xF1, 0xF3) ) ?                      \
173             ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
174         : ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 ) : 0 )
175
176 /*
177         SURROGATE: Surrogate code points
178
179         \p{_Perl_Surrogate}
180 */
181 /*** GENERATED CODE ***/
182 #define is_SURROGATE_utf8_safe(s,e)                                         \
183 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE(((const U8*)s)[1], 0xA0, 0xBF) ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )
184
185 /*
186         QUOTEMETA: Meta-characters that \Q should quote
187
188         \p{_Perl_Quotemeta}
189 */
190 /*** GENERATED CODE ***/
191 #define is_QUOTEMETA_high(s)                                                \
192 ( ( 0xCD == ((const U8*)s)[0] ) ?                                           \
193     ( ( 0x8F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
194 : ( 0xD8 == ((const U8*)s)[0] ) ?                                           \
195     ( ( 0x9C == ((const U8*)s)[1] ) ? 2 : 0 )                               \
196 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
197     ( ( 0x85 == ((const U8*)s)[1] ) ?                                       \
198         ( ( inRANGE(((const U8*)s)[2], 0x9F, 0xA0) ) ? 3 : 0 )              \
199     : ( 0x9A == ((const U8*)s)[1] ) ?                                       \
200         ( ( 0x80 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
201     : ( 0x9E == ((const U8*)s)[1] ) ?                                       \
202         ( ( inRANGE(((const U8*)s)[2], 0xB4, 0xB5) ) ? 3 : 0 )              \
203     : ( ( 0xA0 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x8B, 0x8E) ) ) ? 3 : 0 )\
204 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
205     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
206         ( ( inRANGE(((const U8*)s)[2], 0x80, 0xBE) ) ? 3 : 0 )              \
207     : ( 0x81 == ((const U8*)s)[1] ) ?                                       \
208         ( ( inRANGE(((const U8*)s)[2], 0x81, 0x93) || inRANGE(((const U8*)s)[2], 0x95, 0xAF) ) ? 3 : 0 )\
209     : ( 0x86 == ((const U8*)s)[1] ) ?                                       \
210         ( ( inRANGE(((const U8*)s)[2], 0x90, 0xBF) ) ? 3 : 0 )              \
211     : ( inRANGE(((const U8*)s)[1], 0x87, 0x90) || inRANGE(((const U8*)s)[1], 0x94, 0x9C) || inRANGE(((const U8*)s)[1], 0x9F, 0xAF) || inRANGE(((const U8*)s)[1], 0xB8, 0xB9) ) ?\
212         3                                                                   \
213     : ( 0x91 == ((const U8*)s)[1] ) ?                                       \
214         ( ( inRANGE(((const U8*)s)[2], 0x80, 0x9F) ) ? 3 : 0 )              \
215     : ( 0x9D == ((const U8*)s)[1] ) ?                                       \
216         ( ( inRANGE(((const U8*)s)[2], 0x80, 0xB5) ) ? 3 : 0 )              \
217     : ( ( 0x9E == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x94, 0xBF) ) ) ? 3 : 0 )\
218 : ( 0xE3 == ((const U8*)s)[0] ) ?                                           \
219     ( ( 0x80 == ((const U8*)s)[1] ) ?                                       \
220         ( ( inRANGE(((const U8*)s)[2], 0x80, 0x83) || inRANGE(((const U8*)s)[2], 0x88, 0xA0) || 0xB0 == ((const U8*)s)[2] ) ? 3 : 0 )\
221     : ( ( 0x85 == ((const U8*)s)[1] ) && ( 0xA4 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
222 : ( 0xEF == ((const U8*)s)[0] ) ?                                           \
223     ( ( 0xB4 == ((const U8*)s)[1] ) ?                                       \
224         ( ( inRANGE(((const U8*)s)[2], 0xBE, 0xBF) ) ? 3 : 0 )              \
225     : ( 0xB8 == ((const U8*)s)[1] ) ?                                       \
226         ( ( inRANGE(((const U8*)s)[2], 0x80, 0x8F) ) ? 3 : 0 )              \
227     : ( 0xB9 == ((const U8*)s)[1] ) ?                                       \
228         ( ( inRANGE(((const U8*)s)[2], 0x85, 0x86) ) ? 3 : 0 )              \
229     : ( 0xBB == ((const U8*)s)[1] ) ?                                       \
230         ( ( 0xBF == ((const U8*)s)[2] ) ? 3 : 0 )                           \
231     : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
232         ( ( 0xA0 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
233     : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0xB0, 0xB8) ) ) ? 3 : 0 )\
234 : ( 0xF0 == ((const U8*)s)[0] ) ?                                           \
235     ( ( 0x9B == ((const U8*)s)[1] ) ?                                       \
236         ( ( ( 0xB2 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0xA0, 0xA3) ) ) ? 4 : 0 )\
237     : ( ( ( 0x9D == ((const U8*)s)[1] ) && ( 0x85 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0xB3, 0xBA) ) ) ? 4 : 0 )\
238 : ( ( 0xF3 == ((const U8*)s)[0] ) && ( 0xA0 == ((const U8*)s)[1] ) ) ? 4 : 0 )
239
240 /*
241         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
242
243         &regcharclass_multi_char_folds::multi_char_folds('u', 'a')
244 */
245 /*** GENERATED CODE ***/
246 #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e)                             \
247 ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                                 \
248             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
249         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )
250
251
252 /*** GENERATED CODE ***/
253 #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
254 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                                 \
255         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
256     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
257         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
258     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
259         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
260     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
261         ( ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ? 2\
262         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
263     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
264         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
265     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
266         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
267     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
268         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
269             ( ( inRANGE(((const U8*)s)[2], 'S', 'T') || inRANGE(((const U8*)s)[2], 's', 't') ) ? 3\
270             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
271         : 0 )                                                               \
272     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
273         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
274     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
275         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
276             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
277         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
278             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
279                 ( ( 0x82 == ((const U8*)s)[3] ) ?                           \
280                     ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
281                 : 0 )                                                       \
282             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
283         : ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
284             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
285                 ( ( 0x88 == ((const U8*)s)[3] ) ?                           \
286                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
287                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
288                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
289                 : 0 )                                                       \
290             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
291         : 0 )                                                               \
292     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
293         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
294             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
295         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
296             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
297                 ( ( 0x88 == ((const U8*)s)[3] ) ?                           \
298                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
299                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
300                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
301                 : ( 0x93 == ((const U8*)s)[3] ) ?                           \
302                     ( ( 0xCC == ((const U8*)s)[4] ) ?                       \
303                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 4 )\
304                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
305                 : 0 )                                                       \
306             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
307         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
308             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
309                 ( ( 0x82 == ((const U8*)s)[3] ) ?                           \
310                     ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
311                 : 0 )                                                       \
312             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
313         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
314     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
315         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
316             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
317         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
318             ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
319         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
320     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
321         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
322             ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
323         : ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
324     : 0 )
325
326
327 /*** GENERATED CODE ***/
328 #define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e)                             \
329 ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                                 \
330         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
331     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
332         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
333             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
334         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
335     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
336         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
337     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
338         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
339     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
340         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
341     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
342         ( ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ? 2\
343         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
344     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
345         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
346     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
347         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
348     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
349         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
350             ( ( inRANGE(((const U8*)s)[2], 'S', 'T') || inRANGE(((const U8*)s)[2], 's', 't') ) ? 3\
351             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
352         : 0 )                                                               \
353     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
354         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
355     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
356         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
357             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
358         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
359             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
360                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
361             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
362         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
363     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
364         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
365             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
366         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
367             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
368                 ( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
369             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
370         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
371             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
372                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
373             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
374         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
375     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
376         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
377             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
378         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
379             ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
380         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
381     : 0 )
382
383
384 /*** GENERATED CODE ***/
385 #define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e)                             \
386 ( ((e)-(s) > 2) ?                                                           \
387     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
388         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
389     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
390         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
391             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
392         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
393     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
394         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
395     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
396         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
397     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
398         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
399     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
400         ( ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ? 2\
401         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
402     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
403         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
404     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
405         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
406     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
407         ( ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 'S', 'T') || inRANGE(((const U8*)s)[2], 's', 't') ) ) ? 3 : 0 )\
408     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
409 : ((e)-(s) > 1) ?                                                           \
410     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
411         ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
412     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
413 : 0 )
414
415
416 /*** GENERATED CODE ***/
417 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
418 ( ((e)-(s) > 5) ?                                                           \
419     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
420         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
421     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\
422 : ((e)-(s) > 4) ?                                                           \
423     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) ?                             \
424         ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\
425     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
426         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
427             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
428         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
429     : ( ( ((const U8*)s)[0] & 0xDF ) == 'H' ) ?                             \
430         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
431     : ( ( ((const U8*)s)[0] & 0xDF ) == 'I' ) ?                             \
432         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
433     : ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) ?                             \
434         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\
435     : ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) ?                             \
436         ( ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ? 2\
437         : ( ( 0xC5 == ((const U8*)s)[1] ) && ( 0xBF == ((const U8*)s)[2] ) ) ? 3 : 0 )\
438     : ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) ?                             \
439         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
440     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'W' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ?\
441         ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
442     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
443         ( ( 0xBF == ((const U8*)s)[1] ) ?                                   \
444             ( ( inRANGE(((const U8*)s)[2], 'S', 'T') || inRANGE(((const U8*)s)[2], 's', 't') ) ? 3\
445             : ( ( 0xC5 == ((const U8*)s)[2] ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\
446         : 0 )                                                               \
447     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
448         ( ( ( 0xBC == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xDF ) == 'N' ) ) ? 3 : 0 )\
449     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
450         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ?                        \
451             ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
452         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
453             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
454                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
455             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
456         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
457     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
458         ( ( 0x81 == ((const U8*)s)[1] ) ?                                   \
459             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
460         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
461             ( ( 0xCC == ((const U8*)s)[2] ) ?                               \
462                 ( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
463             : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
464         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
465             ( ( 0xCD == ((const U8*)s)[2] ) ?                               \
466                 ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
467             : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
468         : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
469     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
470         ( ( 0xA5 == ((const U8*)s)[1] ) ?                                   \
471             ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
472         : ( 0xB4 == ((const U8*)s)[1] ) ?                                   \
473             ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
474         : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
475     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
476         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
477             ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
478         : ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
479     : 0 )                                                                   \
480 : ((e)-(s) > 3) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) )
481
482 /*
483         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
484
485         &regcharclass_multi_char_folds::multi_char_folds('l', 'a')
486 */
487 /*** GENERATED CODE ***/
488 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
489 ( ((e)-(s) > 2) ?                                                           \
490     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
491         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ?                         \
492             ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ? 3 : 2 )\
493         : ( ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
494     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
495 : ((e)-(s) > 1) ?                                                           \
496     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
497         ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[1] & 0xDF ) == 'L' ) ) ? 2 : 0 )\
498     : ( ( ( ((const U8*)s)[0] & 0xDF ) == 'S' ) && ( inRANGE(((const U8*)s)[1], 'S', 'T') || inRANGE(((const U8*)s)[1], 's', 't') ) ) ? 2 : 0 )\
499 : 0 )
500
501 /*
502         THREE_CHAR_FOLD: A three-character multi-char fold
503
504         &regcharclass_multi_char_folds::multi_char_folds('u', '3')
505 */
506 /*** GENERATED CODE ***/
507 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
508 ( ((e)-(s) > 5) ?                                                           \
509     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
510         ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )\
511     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
512         ( ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
513             ( ( ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) && ( 0xCE == ((const U8*)s)[4] ) ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
514         : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCC == ((const U8*)s)[2] ) ) && ( 0x88 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
515                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
516                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
517     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
518         ( ( 0x85 == ((const U8*)s)[1] ) ?                                   \
519             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? ( ( 0xCC == ((const U8*)s)[4] ) ?\
520                         ( ( inRANGE(((const U8*)s)[5], 0x80, 0x81) ) ? 6 : 0 )\
521                     : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
522         : ( ( ( ( ( 0x89 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) && ( 0xCE == ((const U8*)s)[4] ) ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
523     : 0 )                                                                   \
524 : ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ) && ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )
525
526 /*
527         THREE_CHAR_FOLD: A three-character multi-char fold
528
529         &regcharclass_multi_char_folds::multi_char_folds('l', '3')
530 */
531 /*** GENERATED CODE ***/
532 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
533 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ) && ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ) && ( ( ( ((const U8*)s)[2] & 0xDF ) == 'I' ) || ( ( ((const U8*)s)[2] & 0xDF ) == 'L' ) ) ) ? 3 : 0 )
534
535 /*
536         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
537
538         &regcharclass_multi_char_folds::multi_char_folds('u', 'h')
539 */
540 /*** GENERATED CODE ***/
541 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
542 ( ((e)-(s) > 3) ?                                                           \
543     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
544     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
545         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
546     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
547         ( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
548     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
549         ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
550     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
551         ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ? 2                      \
552         : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ?      \
553             ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
554         : ( 0xB9 == ((const U8*)s)[1] ) ?                                   \
555             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
556         : 0 )                                                               \
557     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
558         ( ( 0x81 == ((const U8*)s)[1] || 0x8E == ((const U8*)s)[1] ) ? 2    \
559         : ( 0x85 == ((const U8*)s)[1] ) ?                                   \
560             ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x88 == ((const U8*)s)[3] || 0x93 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
561         : ( 0x89 == ((const U8*)s)[1] ) ?                                   \
562             ( ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
563         : 0 )                                                               \
564     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
565         ( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
566     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
567         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
568             ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
569         : ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
570     : 0 )                                                                   \
571 : ((e)-(s) > 2) ?                                                           \
572     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
573     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
574         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
575     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
576         ( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
577     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
578         ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
579     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
580         ( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
581     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
582         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
583     : ( 0xD5 == ((const U8*)s)[0] ) ?                                       \
584         ( ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ? 2 : 0 )\
585     : ( 0xE1 == ((const U8*)s)[0] ) ?                                       \
586         ( ( 0xBC == ((const U8*)s)[1] ) ?                                   \
587             ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) ? 3 : 0 )            \
588         : ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) ? 3 : 0 )\
589     : 0 )                                                                   \
590 : ((e)-(s) > 1) ?                                                           \
591     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
592     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
593         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
594     : ( 0xC5 == ((const U8*)s)[0] ) ?                                       \
595         ( ( 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )                           \
596     : ( 0xCA == ((const U8*)s)[0] ) ?                                       \
597         ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                           \
598     : ( 0xCE == ((const U8*)s)[0] ) ?                                       \
599         ( ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) || ( ( ((const U8*)s)[1] & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0xB7 ) ? 2 : 0 )\
600     : ( 0xCF == ((const U8*)s)[0] ) ?                                       \
601         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x81 ) || ((const U8*)s)[1] == 0x89 || ((const U8*)s)[1] == 0x8E ) ? 2 : 0 )\
602     : ( ( 0xD5 == ((const U8*)s)[0] ) && ( 0xA5 == ((const U8*)s)[1] || 0xB4 == ((const U8*)s)[1] || 0xBE == ((const U8*)s)[1] ) ) ? 2 : 0 )\
603 : ((e)-(s) > 0) ?                                                           \
604     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) )\
605 : 0 )
606
607 /*
608         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
609
610         &regcharclass_multi_char_folds::multi_char_folds('l', 'h')
611 */
612 /*** GENERATED CODE ***/
613 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
614 ( ((e)-(s) > 1) ?                                                           \
615     ( ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) ) ? 1\
616     : ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) ?                             \
617         ( ( ( ((const U8*)s)[1] & 0xDF ) == 'F' ) ? 2 : 1 )                 \
618     : 0 )                                                                   \
619 : ((e)-(s) > 0) ?                                                           \
620     ( ( ( ((const U8*)s)[0] & 0xDF ) == 'A' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'F' ) || ( ( ((const U8*)s)[0] & 0xDE ) == 'H' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'J' ) || ( ( ((const U8*)s)[0] & 0xDB ) == 'S' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'T' ) || ( ( ((const U8*)s)[0] & 0xDF ) == 'Y' ) )\
621 : 0 )
622
623 /*
624         FOLDS_TO_MULTI: characters that fold to multi-char strings
625
626         \p{_Perl_Folds_To_Multi_Char}
627 */
628 /*** GENERATED CODE ***/
629 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
630 ( ( 0xC3 == ((const U8*)s)[0] ) ?                                           \
631     ( ( 0x9F == ((const U8*)s)[1] ) ? 2 : 0 )                               \
632 : ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ?              \
633     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
634 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
635     ( ( 0x89 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
636 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
637     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x90 ) ? 2 : 0 )                    \
638 : ( 0xD6 == ((const U8*)s)[0] ) ?                                           \
639     ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
640 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
641     ( ( 0xBA == ((const U8*)s)[1] ) ?                                       \
642         ( ( inRANGE(((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ? 3 : 0 )\
643     : ( 0xBD == ((const U8*)s)[1] ) ?                                       \
644         ( ( ( ((const U8*)s)[2] & 0xF9 ) == 0x90 ) ? 3 : 0 )                \
645     : ( 0xBE == ((const U8*)s)[1] ) ?                                       \
646         ( ( inRANGE(((const U8*)s)[2], 0x80, 0xAF) || inRANGE(((const U8*)s)[2], 0xB2, 0xB4) || inRANGE(((const U8*)s)[2], 0xB6, 0xB7) || 0xBC == ((const U8*)s)[2] ) ? 3 : 0 )\
647     : ( ( 0xBF == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xCA ) == 0x82 ) || ( ( ((const U8*)s)[2] & 0xF7 ) == 0x84 ) || ((const U8*)s)[2] == 0xA4 || ( ( ((const U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
648 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0x86) || inRANGE(((const U8*)s)[2], 0x93, 0x97) ) ) ? 3 : 0 )
649
650 /*
651         PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
652
653         \p{_Perl_Problematic_Locale_Folds}
654 */
655 /*** GENERATED CODE ***/
656 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
657 ( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
658 : ( inRANGE(((const U8*)s)[0], 0xC2, 0xC3) ) ?                              \
659     2                                                                       \
660 : ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
661     ( ( inRANGE(((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )                  \
662 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
663     ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
664 : ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
665     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
666 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
667     ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
668 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
669     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
670 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
671     ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
672 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
673     ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
674 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )
675
676 /*** GENERATED CODE ***/
677 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
678 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
679 ( 0x130 == cp || ( 0x130 < cp &&                                            \
680 ( 0x131 == cp || ( 0x131 < cp &&                                            \
681 ( 0x149 == cp || ( 0x149 < cp &&                                            \
682 ( 0x178 == cp || ( 0x178 < cp &&                                            \
683 ( 0x17F == cp || ( 0x17F < cp &&                                            \
684 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
685 ( 0x307 == cp || ( 0x307 < cp &&                                            \
686 ( 0x39C == cp || ( 0x39C < cp &&                                            \
687 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
688 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
689 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
690 ( 0x212A == cp || ( 0x212A < cp &&                                          \
691 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
692
693 /*
694         PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
695
696         \p{_Perl_Problematic_Locale_Foldeds_Start}
697 */
698 /*** GENERATED CODE ***/
699 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
700 ( ( ((const U8*)s)[0] <= 0x7F ) ? 1                                         \
701 : ( inRANGE(((const U8*)s)[0], 0xC2, 0xC3) ) ?                              \
702     2                                                                       \
703 : ( 0xC4 == ((const U8*)s)[0] ) ?                                           \
704     ( ( inRANGE(((const U8*)s)[1], 0xB0, 0xB1) ) ? 2 : 0 )                  \
705 : ( 0xC5 == ((const U8*)s)[0] ) ?                                           \
706     ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\
707 : ( 0xC7 == ((const U8*)s)[0] ) ?                                           \
708     ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
709 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
710     ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 )                               \
711 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
712     ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 )                    \
713 : ( 0xE1 == ((const U8*)s)[0] ) ?                                           \
714     ( ( ( 0xBA == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x96, 0x9A) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\
715 : ( 0xE2 == ((const U8*)s)[0] ) ?                                           \
716     ( ( ( 0x84 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0xAA, 0xAB) ) ) ? 3 : 0 )\
717 : ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0x86) ) ) ? 3 : 0 )
718
719 /*** GENERATED CODE ***/
720 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
721 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
722 ( 0x130 == cp || ( 0x130 < cp &&                                            \
723 ( 0x131 == cp || ( 0x131 < cp &&                                            \
724 ( 0x149 == cp || ( 0x149 < cp &&                                            \
725 ( 0x178 == cp || ( 0x178 < cp &&                                            \
726 ( 0x17F == cp || ( 0x17F < cp &&                                            \
727 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
728 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
729 ( 0x39C == cp || ( 0x39C < cp &&                                            \
730 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
731 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
732 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
733 ( 0x212A == cp || ( 0x212A < cp &&                                          \
734 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
735
736 /*
737         PATWS: pattern white space
738
739         \p{_Perl_PatWS}
740 */
741 /*** GENERATED CODE ***/
742 #define is_PATWS_safe(s,e,is_utf8)                                          \
743 ( ( LIKELY((e) > (s)) ) ?                                                   \
744     ( ( inRANGE(((const U8*)s)[0], '\t', '\r') || ' ' == ((const U8*)s)[0] ) ? 1\
745     : (! is_utf8 ) ?                                                        \
746             ( 0x85 == ((const U8*)s)[0] )                                   \
747         : ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ?                          \
748             ( ( 0xC2 == ((const U8*)s)[0] ) ?                               \
749                 ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 )                   \
750             : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x8E, 0x8F) || inRANGE(((const U8*)s)[2], 0xA8, 0xA9) ) ) ? 3 : 0 )\
751         : 0 )                                                               \
752 : 0 )
753
754 /*** GENERATED CODE ***/
755 #define is_PATWS_cp(cp)                                                     \
756 ( inRANGE(cp, '\t', '\r') || ( '\r' < cp &&                                 \
757 ( ' ' == cp || ( ' ' < cp &&                                                \
758 ( 0x85 == cp || ( 0x85 < cp &&                                              \
759 ( 0x200E == cp || ( 0x200E < cp &&                                          \
760 ( 0x200F == cp || ( 0x200F < cp &&                                          \
761 ( 0x2028 == cp || 0x2029 == cp ) ) ) ) ) ) ) ) ) ) )
762
763 /*
764         HANGUL_ED: Hangul syllables whose first character is \xED
765
766         0xD000 - 0xD7FF
767 */
768 /*** GENERATED CODE ***/
769 #define is_HANGUL_ED_utf8_safe(s,e)                                         \
770 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE(((const U8*)s)[1], 0x80, 0x9F) ) ) && ( inRANGE(((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )
771
772 #endif  /* ASCII/Latin1 */
773
774 #if 'A' == 193 /* EBCDIC 1047 */ \
775      && '\\' == 224 && '[' == 173 && ']' == 189 && '{' == 192 && '}' == 208 \
776      && '^' == 95 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
777      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
778 /*
779         LNBREAK: Line Break: \R
780
781         "\x0D\x0A"      # CRLF - Network (Windows) line ending
782         \p{VertSpace}
783 */
784 /*** GENERATED CODE ***/
785 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
786 ( ((e)-(s) > 2) ?                                                           \
787     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
788     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
789         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
790     : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
791 : ((e)-(s) > 1) ?                                                           \
792     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
793     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
794         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
795     : 0 )                                                                   \
796 : ((e)-(s) > 0) ?                                                           \
797     ( inRANGE(((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
798 : 0 )
799
800 /*** GENERATED CODE ***/
801 #define is_LNBREAK_utf8_safe(s,e)                                           \
802 ( ((e)-(s) > 2) ?                                                           \
803     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
804     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
805         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
806     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
807 : ((e)-(s) > 1) ?                                                           \
808     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
809     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
810         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
811     : 0 )                                                                   \
812 : ((e)-(s) > 0) ?                                                           \
813     ( inRANGE(((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
814 : 0 )
815
816 /*** GENERATED CODE ***/
817 #define is_LNBREAK_latin1_safe(s,e)                                         \
818 ( ((e)-(s) > 1) ?                                                           \
819     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\
820     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
821         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
822     : 0 )                                                                   \
823 : ((e)-(s) > 0) ?                                                           \
824     ( inRANGE(((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\
825 : 0 )
826
827 /*
828         HORIZWS: Horizontal Whitespace: \h \H
829
830         \p{HorizSpace}
831 */
832 /*** GENERATED CODE ***/
833 #define is_HORIZWS_high(s)                                                  \
834 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
835     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
836 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
837     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
838         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
839     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
840         ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
841     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
842 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
843
844 /*** GENERATED CODE ***/
845 #define is_HORIZWS_cp_high(cp)                                              \
846 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
847 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
848 ( 0x202F == cp || ( 0x202F < cp &&                                          \
849 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
850
851 /*
852         VERTWS: Vertical Whitespace: \v \V
853
854         \p{VertSpace}
855 */
856 /*** GENERATED CODE ***/
857 #define is_VERTWS_high(s)                                                   \
858 ( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )
859
860 /*** GENERATED CODE ***/
861 #define is_VERTWS_cp_high(cp)                                               \
862 ( 0x2028 == cp || 0x2029 == cp )
863
864 /*
865         XDIGIT: Hexadecimal digits
866
867         \p{XDigit}
868 */
869 /*** GENERATED CODE ***/
870 #define is_XDIGIT_high(s)                                                   \
871 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] ) ) ? ( ( 0x67 == ((const U8*)s)[2] ) ?\
872             ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x68) ) ? 4 : 0 )\
873         : ( ( inRANGE(((const U8*)s)[2], 0x68, 0x69) ) && ( inRANGE(((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
874
875 /*** GENERATED CODE ***/
876 #define is_XDIGIT_cp_high(cp)                                               \
877 ( inRANGE(cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&                           \
878 ( inRANGE(cp, 0xFF21, 0xFF26) || inRANGE(cp, 0xFF41, 0xFF46) ) ) )
879
880 /*
881         XPERLSPACE: \p{XPerlSpace}
882
883         \p{XPerlSpace}
884 */
885 /*** GENERATED CODE ***/
886 #define is_XPERLSPACE_high(s)                                               \
887 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
888     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
889 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
890     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
891         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
892     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
893         ( ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
894     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
895 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
896
897 /*** GENERATED CODE ***/
898 #define is_XPERLSPACE_cp_high(cp)                                           \
899 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
900 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
901 ( 0x2028 == cp || ( 0x2028 < cp &&                                          \
902 ( 0x2029 == cp || ( 0x2029 < cp &&                                          \
903 ( 0x202F == cp || ( 0x202F < cp &&                                          \
904 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) ) ) )
905
906 /*
907         NONCHAR: Non character code points
908
909         \p{_Perl_Nchar}
910 */
911 /*** GENERATED CODE ***/
912 #define is_NONCHAR_utf8_safe(s,e)                                           \
913 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
914             ( ( 0x73 == ((const U8*)s)[1] ) ?                               \
915                 ( ( 0x55 == ((const U8*)s)[2] ) ?                           \
916                     ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x73) ) ? 4 : 0 )\
917                 : ( 0x56 == ((const U8*)s)[2] ) ?                           \
918                     ( ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
919                 : ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
920             : 0 )                                                           \
921         : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
922             ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
923         : ( 0xED == ((const U8*)s)[0] ) ?                                   \
924             ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x71 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE(((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
925         : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE(((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 ) : 0 )
926
927 /*
928         SURROGATE: Surrogate code points
929
930         \p{_Perl_Surrogate}
931 */
932 /*** GENERATED CODE ***/
933 #define is_SURROGATE_utf8_safe(s,e)                                         \
934 ( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE(((const U8*)s)[1], 0x65, 0x66) ) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x73) ) ) ? 4 : 0 )
935
936 /*
937         QUOTEMETA: Meta-characters that \Q should quote
938
939         \p{_Perl_Quotemeta}
940 */
941 /*** GENERATED CODE ***/
942 #define is_QUOTEMETA_high(s)                                                \
943 ( ( 0xB1 == ((const U8*)s)[0] ) ?                                           \
944     ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
945 : ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
946     ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
947 : ( 0xBB == ((const U8*)s)[0] ) ?                                           \
948     ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
949         ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
950     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
951 : ( 0xBC == ((const U8*)s)[0] ) ?                                           \
952     ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
953         ( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
954     : ( ( 0x71 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x63, 0x64) ) ) ? 3 : 0 )\
955 : ( 0xBE == ((const U8*)s)[0] ) ?                                           \
956     ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x52, 0x55) ) ) ? 3 : 0 )\
957 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
958     ( ( 0x41 == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x54, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x73) ) ?\
959         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
960     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
961         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
962     : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
963         ( ( inRANGE(((const U8*)s)[2], 0x42, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x62 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x64, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
964     : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
965         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x56) ) ? 3 : 0 )\
966     : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x57, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
967 : ( 0xCB == ((const U8*)s)[0] ) ?                                           \
968     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x43) || inRANGE(((const U8*)s)[1], 0x49, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x69) || inRANGE(((const U8*)s)[1], 0x71, 0x73) ) ?\
969         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
970     : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
971         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x64) ) ? 3 : 0 )\
972     : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x63, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
973 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
974     ( ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x73) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
975 : ( 0xCD == ((const U8*)s)[0] ) ?                                           \
976     ( ( ( inRANGE(((const U8*)s)[1], 0x57, 0x59) || 0x62 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
977 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
978     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
979         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x44) || inRANGE(((const U8*)s)[2], 0x49, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
980     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
981         ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
982     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
983 : ( 0xDD == ((const U8*)s)[0] ) ?                                           \
984     ( ( 0x73 == ((const U8*)s)[1] ) ?                                       \
985         ( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
986             ( ( inRANGE(((const U8*)s)[3], 0x72, 0x73) ) ? 4 : 0 )          \
987         : ( 0x57 == ((const U8*)s)[2] ) ?                                   \
988             ( ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
989         : ( 0x59 == ((const U8*)s)[2] ) ?                                   \
990             ( ( inRANGE(((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )          \
991         : ( 0x66 == ((const U8*)s)[2] ) ?                                   \
992             ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
993         : ( 0x71 == ((const U8*)s)[2] ) ?                                   \
994             ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
995         : ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x67) ) ) ? 4 : 0 )\
996     : 0 )                                                                   \
997 : ( 0xDF == ((const U8*)s)[0] ) ?                                           \
998     ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
999         ( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
1000     : ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x62, 0x69) ) ) ? 4 : 0 )\
1001 : ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x44) ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x59) || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x73) ) ) && ( inRANGE(((const U8*)s)[4], 0x41, 0x4A) || inRANGE(((const U8*)s)[4], 0x51, 0x59) || inRANGE(((const U8*)s)[4], 0x62, 0x6A) || inRANGE(((const U8*)s)[4], 0x70, 0x73) ) ) ? 5 : 0 )
1002
1003 /*
1004         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
1005
1006         &regcharclass_multi_char_folds::multi_char_folds('u', 'a')
1007 */
1008 /*** GENERATED CODE ***/
1009 #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e)                             \
1010 ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1011
1012
1013 /*** GENERATED CODE ***/
1014 #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
1015 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                                 \
1016         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1017     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1018         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1019             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1020                 ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1021             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1022         : 0 )                                                               \
1023     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1024         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1025     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1026         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1027             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1028         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1029     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1030         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1031     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1032         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1033     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1034         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1035     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1036         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1037             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1038         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1039             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1040                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1041                     ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1042                 : 0 )                                                       \
1043             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1044         : ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1045             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1046                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1047                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1048                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1049                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1050                 : 0 )                                                       \
1051             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1052         : 0 )                                                               \
1053     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1054         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1055             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1056         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1057             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1058                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1059                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1060                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1061                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1062                 : ( 0x62 == ((const U8*)s)[3] ) ?                           \
1063                     ( ( 0xAF == ((const U8*)s)[4] ) ?                       \
1064                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 4 )\
1065                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1066                 : 0 )                                                       \
1067             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1068         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1069             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1070                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1071                     ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1072                 : 0 )                                                       \
1073             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1074         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1075     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
1076         ( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
1077             ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
1078                 ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1079             : ( 0x63 == ((const U8*)s)[2] ) ?                               \
1080                 ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1081             : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1082         : 0 )                                                               \
1083     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1084         ( ( inRANGE(((const U8*)s)[1], 0x67, 0x68) ) ?                      \
1085             ( ( ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1086         : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1087     : 0 )
1088
1089
1090 /*** GENERATED CODE ***/
1091 #define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e)                             \
1092 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
1093         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1094     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1095         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1096             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1097         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1098     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1099         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1100     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1101         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1102     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1103         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1104             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1105                 ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1106             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1107         : 0 )                                                               \
1108     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1109         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1110     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1111         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1112             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1113         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1114     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1115         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1116     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1117         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1118     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1119         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1120     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1121         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1122             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1123         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1124             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1125                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1126             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1127         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1128     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1129         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1130             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1131         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1132             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1133                 ( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1134             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1135         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1136             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1137                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1138             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1139         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1140     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1141         ( ( inRANGE(((const U8*)s)[1], 0x67, 0x68) ) ?                      \
1142             ( ( ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1143         : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1144     : 0 )
1145
1146
1147 /*** GENERATED CODE ***/
1148 #define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e)                             \
1149 ( ((e)-(s) > 3) ?                                                           \
1150     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1151         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1152     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1153         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1154             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1155         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1156     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1157         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1158     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1159         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1160     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1161         ( ( 0x73 == ((const U8*)s)[1] ) ?                                   \
1162             ( ( 0x8F == ((const U8*)s)[2] ) ?                               \
1163                 ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1164             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1165         : 0 )                                                               \
1166     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1167         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1168     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1169         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1170             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1171         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1172     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1173         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1174     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1175         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1176     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1177         ( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1178     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1179         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1180             ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1181         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1182             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1183                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1184             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1185         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1186     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1187         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1188             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1189         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1190             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1191                 ( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1192             : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1193         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1194             ( ( 0xB1 == ((const U8*)s)[2] ) ?                               \
1195                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1196             : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1197         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1198     : 0 )                                                                   \
1199 : ((e)-(s) > 2) ?                                                           \
1200     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1201         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1202     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1203         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1204             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1205         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1206     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1207         ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1208     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1209         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1210     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1211         ( ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ) ? 3 : 0 )\
1212     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1213         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1214     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1215         ( ( 0x8F == ((const U8*)s)[1] ) ?                                   \
1216             ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1217         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1218     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1219         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1220     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1221         ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1222     : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1223 : ((e)-(s) > 1) ?                                                           \
1224     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1225         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1226     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1227 : 0 )
1228
1229
1230 /*** GENERATED CODE ***/
1231 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
1232 ( ((e)-(s) > 5) ?                                                           \
1233     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1234         ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1235     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1236         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1237             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1238         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1239     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\
1240 : ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) )
1241
1242 /*
1243         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
1244
1245         &regcharclass_multi_char_folds::multi_char_folds('l', 'a')
1246 */
1247 /*** GENERATED CODE ***/
1248 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
1249 ( ((e)-(s) > 2) ?                                                           \
1250     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1251         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1252             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1253         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1254     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1255 : ((e)-(s) > 1) ?                                                           \
1256     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1257         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1258     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1259 : 0 )
1260
1261 /*
1262         THREE_CHAR_FOLD: A three-character multi-char fold
1263
1264         &regcharclass_multi_char_folds::multi_char_folds('u', '3')
1265 */
1266 /*** GENERATED CODE ***/
1267 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
1268 ( ((e)-(s) > 5) ?                                                           \
1269     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1270         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )\
1271     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1272         ( ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1273             ( ( ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB4 == ((const U8*)s)[4] ) ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1274         : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x49 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
1275                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1276                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
1277     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1278         ( ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1279             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? ( ( 0xAF == ((const U8*)s)[4] ) ?\
1280                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1281                     : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
1282         : ( ( ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB4 == ((const U8*)s)[4] ) ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1283     : 0 )                                                                   \
1284 : ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
1285
1286 /*
1287         THREE_CHAR_FOLD: A three-character multi-char fold
1288
1289         &regcharclass_multi_char_folds::multi_char_folds('l', '3')
1290 */
1291 /*** GENERATED CODE ***/
1292 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
1293 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
1294
1295 /*
1296         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
1297
1298         &regcharclass_multi_char_folds::multi_char_folds('u', 'h')
1299 */
1300 /*** GENERATED CODE ***/
1301 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
1302 ( ((e)-(s) > 3) ?                                                           \
1303     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
1304     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1305         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
1306     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1307         ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1308     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1309         ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1310     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1311         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
1312         : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ?      \
1313             ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1314         : ( 0x68 == ((const U8*)s)[1] ) ?                                   \
1315             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1316         : 0 )                                                               \
1317     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1318         ( ( 0x42 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
1319         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1320             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x62 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1321         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1322             ( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
1323         : 0 )                                                               \
1324     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
1325         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1326     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1327         ( ( inRANGE(((const U8*)s)[1], 0x67, 0x68) ) ?                      \
1328             ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )          \
1329         : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1330     : 0 )                                                                   \
1331 : ((e)-(s) > 2) ?                                                           \
1332     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
1333     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1334         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
1335     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1336         ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1337     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1338         ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1339     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1340         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] || 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? 2 : 0 )\
1341     : ( 0xB5 == ((const U8*)s)[0] ) ?                                       \
1342         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
1343     : ( 0xB8 == ((const U8*)s)[0] ) ?                                       \
1344         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1345     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1346         ( ( inRANGE(((const U8*)s)[1], 0x67, 0x68) ) ?                      \
1347             ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )          \
1348         : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1349     : 0 )                                                                   \
1350 : ((e)-(s) > 1) ?                                                           \
1351     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
1352     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1353         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
1354     : ( 0x8F == ((const U8*)s)[0] ) ?                                       \
1355         ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1356     : ( 0xAB == ((const U8*)s)[0] ) ?                                       \
1357         ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
1358     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1359         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] || 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? 2 : 0 )\
1360     : ( ( 0xB5 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
1361 : ((e)-(s) > 0) ?                                                           \
1362     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
1363 : 0 )
1364
1365 /*
1366         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
1367
1368         &regcharclass_multi_char_folds::multi_char_folds('l', 'h')
1369 */
1370 /*** GENERATED CODE ***/
1371 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
1372 ( ((e)-(s) > 1) ?                                                           \
1373     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
1374     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1375         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
1376     : 0 )                                                                   \
1377 : ((e)-(s) > 0) ?                                                           \
1378     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
1379 : 0 )
1380
1381 /*
1382         FOLDS_TO_MULTI: characters that fold to multi-char strings
1383
1384         \p{_Perl_Folds_To_Multi_Char}
1385 */
1386 /*** GENERATED CODE ***/
1387 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
1388 ( ( 0x8A == ((const U8*)s)[0] ) ?                                           \
1389     ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1390 : ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0xB3, 0xB4) ) ?\
1391     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1392 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
1393     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1394 : ( 0xB8 == ((const U8*)s)[0] ) ?                                           \
1395     ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1396 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1397     ( ( 0x63 == ((const U8*)s)[1] ) ?                                       \
1398         ( ( inRANGE(((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )\
1399     : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
1400         ( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x65 == ((const U8*)s)[2] ) ? 3 : 0 )\
1401     : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
1402         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
1403     : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
1404         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x56) || 0x59 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x63) || inRANGE(((const U8*)s)[2], 0x65, 0x66) || 0x70 == ((const U8*)s)[2] ) ? 3 : 0 )\
1405     : ( 0x72 == ((const U8*)s)[1] ) ?                                       \
1406         ( ( inRANGE(((const U8*)s)[2], 0x43, 0x45) || inRANGE(((const U8*)s)[2], 0x47, 0x48) || 0x53 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x65, 0x66) ) ? 3 : 0 )\
1407     : ( ( 0x73 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x43, 0x45) || inRANGE(((const U8*)s)[2], 0x47, 0x48) || 0x59 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x63) || inRANGE(((const U8*)s)[2], 0x65, 0x66) || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1408 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) || inRANGE(((const U8*)s)[3], 0x62, 0x66) ) ) ? 4 : 0 )
1409
1410 /*
1411         PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
1412
1413         \p{_Perl_Problematic_Locale_Folds}
1414 */
1415 /*** GENERATED CODE ***/
1416 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
1417 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE(((const U8*)s)[0], '.', '&') || inRANGE(((const U8*)s)[0], '!', '/') || inRANGE(((const U8*)s)[0], ',', '?') || inRANGE(((const U8*)s)[0], '`', '"') || inRANGE(((const U8*)s)[0], 'a', 'i') || inRANGE(((const U8*)s)[0], 'j', 'r') || inRANGE(((const U8*)s)[0], '~', 'z') || '[' == ((const U8*)s)[0] || ']' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '{', 'I') || inRANGE(((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 'S', 'Z') || inRANGE(((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
1418 : ( 0x80 == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0x8A, 0x8B) ) ? \
1419     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x73) ) ? 2 : 0 )\
1420 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
1421     ( ( inRANGE(((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )                  \
1422 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
1423     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1424 : ( 0x8F == ((const U8*)s)[0] ) ?                                           \
1425     ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
1426 : ( 0x9C == ((const U8*)s)[0] ) ?                                           \
1427     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1428 : ( 0xAF == ((const U8*)s)[0] ) ?                                           \
1429     ( ( 0x48 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1430 : ( inRANGE(((const U8*)s)[0], 0xB3, 0xB4) ) ?                              \
1431     ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1432 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1433     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1434 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1435     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
1436 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
1437
1438 /*** GENERATED CODE ***/
1439 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
1440 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
1441 ( 0x130 == cp || ( 0x130 < cp &&                                            \
1442 ( 0x131 == cp || ( 0x131 < cp &&                                            \
1443 ( 0x149 == cp || ( 0x149 < cp &&                                            \
1444 ( 0x178 == cp || ( 0x178 < cp &&                                            \
1445 ( 0x17F == cp || ( 0x17F < cp &&                                            \
1446 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
1447 ( 0x307 == cp || ( 0x307 < cp &&                                            \
1448 ( 0x39C == cp || ( 0x39C < cp &&                                            \
1449 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
1450 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
1451 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
1452 ( 0x212A == cp || ( 0x212A < cp &&                                          \
1453 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
1454
1455 /*
1456         PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
1457
1458         \p{_Perl_Problematic_Locale_Foldeds_Start}
1459 */
1460 /*** GENERATED CODE ***/
1461 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
1462 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE(((const U8*)s)[0], '.', '&') || inRANGE(((const U8*)s)[0], '!', '/') || inRANGE(((const U8*)s)[0], ',', '?') || inRANGE(((const U8*)s)[0], '`', '"') || inRANGE(((const U8*)s)[0], 'a', 'i') || inRANGE(((const U8*)s)[0], 'j', 'r') || inRANGE(((const U8*)s)[0], '~', 'z') || '[' == ((const U8*)s)[0] || ']' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '{', 'I') || inRANGE(((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 'S', 'Z') || inRANGE(((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
1463 : ( 0x80 == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0x8A, 0x8B) ) ? \
1464     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x73) ) ? 2 : 0 )\
1465 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
1466     ( ( inRANGE(((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )                  \
1467 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
1468     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1469 : ( 0x8F == ((const U8*)s)[0] ) ?                                           \
1470     ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 )  \
1471 : ( 0x9C == ((const U8*)s)[0] ) ?                                           \
1472     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1473 : ( 0xAB == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0xB3, 0xB4) ) ? \
1474     ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1475 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
1476     ( ( ( 0x63 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1477 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1478     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
1479 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
1480
1481 /*** GENERATED CODE ***/
1482 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
1483 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
1484 ( 0x130 == cp || ( 0x130 < cp &&                                            \
1485 ( 0x131 == cp || ( 0x131 < cp &&                                            \
1486 ( 0x149 == cp || ( 0x149 < cp &&                                            \
1487 ( 0x178 == cp || ( 0x178 < cp &&                                            \
1488 ( 0x17F == cp || ( 0x17F < cp &&                                            \
1489 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
1490 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
1491 ( 0x39C == cp || ( 0x39C < cp &&                                            \
1492 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
1493 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
1494 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
1495 ( 0x212A == cp || ( 0x212A < cp &&                                          \
1496 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
1497
1498 /*
1499         PATWS: pattern white space
1500
1501         \p{_Perl_PatWS}
1502 */
1503 /*** GENERATED CODE ***/
1504 #define is_PATWS_safe(s,e,is_utf8)                                          \
1505 ( ( LIKELY((e) > (s)) ) ?                                                   \
1506     ( ( '\t' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '\v', '\r') || '\n' == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] || ' ' == ((const U8*)s)[0] ) ? 1\
1507     : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
1508                     ( ( inRANGE(((const U8*)s)[2], 0x55, 0x56) ) ? 3 : 0 )  \
1509                 : ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
1510 : 0 )
1511
1512 /*** GENERATED CODE ***/
1513 #define is_PATWS_cp(cp)                                                     \
1514 ( '\t' == cp || ( '\t' < cp &&                                              \
1515 ( inRANGE(cp, '\v', '\r') || ( '\r' < cp &&                                 \
1516 ( '\n' == cp || ( '\n' < cp &&                                              \
1517 ( 0x25 == cp || ( 0x25 < cp &&                                              \
1518 ( ' ' == cp || ( ' ' < cp &&                                                \
1519 ( 0x200E == cp || ( 0x200E < cp &&                                          \
1520 ( 0x200F == cp || ( 0x200F < cp &&                                          \
1521 ( 0x2028 == cp || 0x2029 == cp ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
1522
1523 #endif  /* EBCDIC 1047 */
1524
1525 #if 'A' == 193 /* EBCDIC 037 */ \
1526      && '\\' == 224 && '[' == 186 && ']' == 187 && '{' == 192 && '}' == 208 \
1527      && '^' == 176 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
1528      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
1529 /*
1530         LNBREAK: Line Break: \R
1531
1532         "\x0D\x0A"      # CRLF - Network (Windows) line ending
1533         \p{VertSpace}
1534 */
1535 /*** GENERATED CODE ***/
1536 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
1537 ( ((e)-(s) > 2) ?                                                           \
1538     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1539     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1540         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1541     : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
1542 : ((e)-(s) > 1) ?                                                           \
1543     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1544     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1545         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1546     : 0 )                                                                   \
1547 : ((e)-(s) > 0) ?                                                           \
1548     ( inRANGE(((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
1549 : 0 )
1550
1551 /*** GENERATED CODE ***/
1552 #define is_LNBREAK_utf8_safe(s,e)                                           \
1553 ( ((e)-(s) > 2) ?                                                           \
1554     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1555     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1556         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1557     : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )\
1558 : ((e)-(s) > 1) ?                                                           \
1559     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1560     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1561         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1562     : 0 )                                                                   \
1563 : ((e)-(s) > 0) ?                                                           \
1564     ( inRANGE(((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
1565 : 0 )
1566
1567 /*** GENERATED CODE ***/
1568 #define is_LNBREAK_latin1_safe(s,e)                                         \
1569 ( ((e)-(s) > 1) ?                                                           \
1570     ( ( inRANGE(((const U8*)s)[0], '\v', '\f') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] ) ? 1\
1571     : ( '\r' == ((const U8*)s)[0] ) ?                                       \
1572         ( ( '\n' == ((const U8*)s)[1] ) ? 2 : 1 )                           \
1573     : 0 )                                                                   \
1574 : ((e)-(s) > 0) ?                                                           \
1575     ( inRANGE(((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] )\
1576 : 0 )
1577
1578 /*
1579         HORIZWS: Horizontal Whitespace: \h \H
1580
1581         \p{HorizSpace}
1582 */
1583 /*** GENERATED CODE ***/
1584 #define is_HORIZWS_high(s)                                                  \
1585 ( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
1586     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1587 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1588     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1589         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
1590     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1591         ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1592     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1593 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1594
1595 /*** GENERATED CODE ***/
1596 #define is_HORIZWS_cp_high(cp)                                              \
1597 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
1598 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
1599 ( 0x202F == cp || ( 0x202F < cp &&                                          \
1600 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) )
1601
1602 /*
1603         VERTWS: Vertical Whitespace: \v \V
1604
1605         \p{VertSpace}
1606 */
1607 /*** GENERATED CODE ***/
1608 #define is_VERTWS_high(s)                                                   \
1609 ( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 )
1610
1611 /*** GENERATED CODE ***/
1612 #define is_VERTWS_cp_high(cp)                                               \
1613 ( 0x2028 == cp || 0x2029 == cp )
1614
1615 /*
1616         XDIGIT: Hexadecimal digits
1617
1618         \p{XDigit}
1619 */
1620 /*** GENERATED CODE ***/
1621 #define is_XDIGIT_high(s)                                                   \
1622 ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) ? ( ( 0x66 == ((const U8*)s)[2] ) ?\
1623             ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x67) ) ? 4 : 0 )\
1624         : ( ( inRANGE(((const U8*)s)[2], 0x67, 0x68) ) && ( inRANGE(((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
1625
1626 /*** GENERATED CODE ***/
1627 #define is_XDIGIT_cp_high(cp)                                               \
1628 ( inRANGE(cp, 0xFF10, 0xFF19) || ( 0xFF19 < cp &&                           \
1629 ( inRANGE(cp, 0xFF21, 0xFF26) || inRANGE(cp, 0xFF41, 0xFF46) ) ) )
1630
1631 /*
1632         XPERLSPACE: \p{XPerlSpace}
1633
1634         \p{XPerlSpace}
1635 */
1636 /*** GENERATED CODE ***/
1637 #define is_XPERLSPACE_high(s)                                               \
1638 ( ( 0xBD == ((const U8*)s)[0] ) ?                                           \
1639     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1640 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1641     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1642         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
1643     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1644         ( ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
1645     : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1646 : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1647
1648 /*** GENERATED CODE ***/
1649 #define is_XPERLSPACE_cp_high(cp)                                           \
1650 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
1651 ( inRANGE(cp, 0x2000, 0x200A) || ( 0x200A < cp &&                           \
1652 ( 0x2028 == cp || ( 0x2028 < cp &&                                          \
1653 ( 0x2029 == cp || ( 0x2029 < cp &&                                          \
1654 ( 0x202F == cp || ( 0x202F < cp &&                                          \
1655 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) ) ) )
1656
1657 /*
1658         NONCHAR: Non character code points
1659
1660         \p{_Perl_Nchar}
1661 */
1662 /*** GENERATED CODE ***/
1663 #define is_NONCHAR_utf8_safe(s,e)                                           \
1664 ( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
1665             ( ( 0x72 == ((const U8*)s)[1] ) ?                               \
1666                 ( ( 0x55 == ((const U8*)s)[2] ) ?                           \
1667                     ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x72) ) ? 4 : 0 )\
1668                 : ( 0x56 == ((const U8*)s)[2] ) ?                           \
1669                     ( ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
1670                 : ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
1671             : 0 )                                                           \
1672         : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
1673             ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
1674         : ( 0xED == ((const U8*)s)[0] ) ?                                   \
1675             ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x5F || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE(((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
1676         : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE(((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 ) : 0 )
1677
1678 /*
1679         SURROGATE: Surrogate code points
1680
1681         \p{_Perl_Surrogate}
1682 */
1683 /*** GENERATED CODE ***/
1684 #define is_SURROGATE_utf8_safe(s,e)                                         \
1685 ( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE(((const U8*)s)[1], 0x64, 0x65) ) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x72) ) ) ? 4 : 0 )
1686
1687 /*
1688         QUOTEMETA: Meta-characters that \Q should quote
1689
1690         \p{_Perl_Quotemeta}
1691 */
1692 /*** GENERATED CODE ***/
1693 #define is_QUOTEMETA_high_part0(s)                                          \
1694 ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )
1695
1696
1697 /*** GENERATED CODE ***/
1698 #define is_QUOTEMETA_high_part1(s)                                          \
1699 ( ( 0xBC == ((const U8*)s)[0] ) ?                                           \
1700     ( ( 0x51 == ((const U8*)s)[1] ) ?                                       \
1701         ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1702     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1703 : ( 0xBD == ((const U8*)s)[0] ) ?                                           \
1704     ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
1705         ( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 )                           \
1706     : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x62, 0x63) ) ) ? 3 : 0 )\
1707 : ( 0xBE == ((const U8*)s)[0] ) ?                                           \
1708     ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x52, 0x55) ) ) ? 3 : 0 )\
1709 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
1710     ( ( 0x41 == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x54, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) ?\
1711         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
1712     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1713         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x71) ) ? 3 : 0 )\
1714     : ( 0x43 == ((const U8*)s)[1] ) ?                                       \
1715         ( ( inRANGE(((const U8*)s)[2], 0x42, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x63, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
1716     : ( 0x44 == ((const U8*)s)[1] ) ?                                       \
1717         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x56) ) ? 3 : 0 )\
1718     : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x57, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
1719 : ( 0xCB == ((const U8*)s)[0] ) ?                                           \
1720     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x43) || inRANGE(((const U8*)s)[1], 0x49, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x68) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) ?\
1721         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
1722     : ( 0x69 == ((const U8*)s)[1] ) ?                                       \
1723         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x63) ) ? 3 : 0 )\
1724     : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
1725 : ( 0xCC == ((const U8*)s)[0] ) ?                                           \
1726     ( ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
1727 : ( 0xCD == ((const U8*)s)[0] ) ?                                           \
1728     ( ( ( inRANGE(((const U8*)s)[1], 0x57, 0x59) || 0x5F == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
1729 : ( 0xCE == ((const U8*)s)[0] ) ?                                           \
1730     ( ( 0x41 == ((const U8*)s)[1] ) ?                                       \
1731         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x44) || inRANGE(((const U8*)s)[2], 0x49, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
1732     : ( 0x42 == ((const U8*)s)[1] ) ?                                       \
1733         ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
1734     : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1735 : ( 0xDD == ((const U8*)s)[0] ) ?                                           \
1736     ( ( 0x72 == ((const U8*)s)[1] ) ?                                       \
1737         ( ( 0x4A == ((const U8*)s)[2] ) ?                                   \
1738             ( ( inRANGE(((const U8*)s)[3], 0x71, 0x72) ) ? 4 : 0 )          \
1739         : ( 0x57 == ((const U8*)s)[2] ) ?                                   \
1740             ( ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
1741         : ( 0x59 == ((const U8*)s)[2] ) ?                                   \
1742             ( ( inRANGE(((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )          \
1743         : ( 0x65 == ((const U8*)s)[2] ) ?                                   \
1744             ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
1745         : ( 0x70 == ((const U8*)s)[2] ) ?                                   \
1746             ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 )                       \
1747         : ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x66) ) ) ? 4 : 0 )\
1748     : 0 )                                                                   \
1749 : ( 0xDF == ((const U8*)s)[0] ) ?                                           \
1750     ( ( 0x56 == ((const U8*)s)[1] ) ?                                       \
1751         ( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
1752     : ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x68) ) ) ? 4 : 0 )\
1753 : ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x44) ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x4A) || inRANGE(((const U8*)s)[3], 0x51, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x6A) || inRANGE(((const U8*)s)[3], 0x70, 0x72) ) ) && ( inRANGE(((const U8*)s)[4], 0x41, 0x4A) || inRANGE(((const U8*)s)[4], 0x51, 0x59) || 0x5F == ((const U8*)s)[4] || inRANGE(((const U8*)s)[4], 0x62, 0x6A) || inRANGE(((const U8*)s)[4], 0x70, 0x72) ) ) ? 5 : 0 )
1754
1755
1756 /*** GENERATED CODE ***/
1757 #define is_QUOTEMETA_high(s)                                                \
1758 ( ( 0xAF == ((const U8*)s)[0] ) ?                                           \
1759     ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
1760 : ( 0xB7 == ((const U8*)s)[0] ) ? is_QUOTEMETA_high_part0(s) : is_QUOTEMETA_high_part1(s) )
1761
1762 /*
1763         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
1764
1765         &regcharclass_multi_char_folds::multi_char_folds('u', 'a')
1766 */
1767 /*** GENERATED CODE ***/
1768 #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e)                             \
1769 ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )
1770
1771
1772 /*** GENERATED CODE ***/
1773 #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e)                             \
1774 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                                 \
1775         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1776     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
1777         ( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
1778             ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
1779                 ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1780             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1781         : 0 )                                                               \
1782     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1783         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1784     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1785         ( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
1786             ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1787         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1788     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1789         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1790     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1791         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1792     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
1793         ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1794     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
1795         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1796             ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1797         : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
1798             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1799                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1800                     ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1801                 : 0 )                                                       \
1802             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1803         : ( 0x67 == ((const U8*)s)[1] ) ?                                   \
1804             ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
1805                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1806                     ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
1807                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1808                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1809                 : 0 )                                                       \
1810             : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1811         : 0 )                                                               \
1812     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1813         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1814             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1815         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1816             ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
1817                 ( ( 0x49 == ((const U8*)s)[3] ) ?                           \
1818                     ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
1819                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
1820                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1821                 : ( 0x5F == ((const U8*)s)[3] ) ?                           \
1822                     ( ( 0xAD == ((const U8*)s)[4] ) ?                       \
1823                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 4 )\
1824                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1825                 : 0 )                                                       \
1826             : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1827         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1828             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1829                 ( ( 0x43 == ((const U8*)s)[3] ) ?                           \
1830                     ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\
1831                 : 0 )                                                       \
1832             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1833         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1834     : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
1835         ( ( 0x52 == ((const U8*)s)[1] ) ?                                   \
1836             ( ( 0x46 == ((const U8*)s)[2] ) ?                               \
1837                 ( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1838             : ( 0x62 == ((const U8*)s)[2] ) ?                               \
1839                 ( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1840             : ( ( ( ( 0x71 == ((const U8*)s)[2] ) && ( 0xB7 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
1841         : 0 )                                                               \
1842     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1843         ( ( inRANGE(((const U8*)s)[1], 0x66, 0x67) ) ?                      \
1844             ( ( ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1845         : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1846     : 0 )
1847
1848
1849 /*** GENERATED CODE ***/
1850 #define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e)                             \
1851 ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                                 \
1852         ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1853     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1854         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1855             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1856         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1857     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1858         ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1859     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1860         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1861     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
1862         ( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
1863             ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
1864                 ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1865             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1866         : 0 )                                                               \
1867     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1868         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1869     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1870         ( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
1871             ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1872         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1873     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1874         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1875     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1876         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1877     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
1878         ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1879     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
1880         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1881             ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1882         : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
1883             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1884                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1885             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1886         : ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1887     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1888         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1889             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1890         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1891             ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
1892                 ( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1893             : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1894         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1895             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1896                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1897             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1898         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1899     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
1900         ( ( inRANGE(((const U8*)s)[1], 0x66, 0x67) ) ?                      \
1901             ( ( ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1902         : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
1903     : 0 )
1904
1905
1906 /*** GENERATED CODE ***/
1907 #define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e)                             \
1908 ( ((e)-(s) > 3) ?                                                           \
1909     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1910         ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1911     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1912         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1913             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1914         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1915     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1916         ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1917     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1918         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1919     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
1920         ( ( 0x72 == ((const U8*)s)[1] ) ?                                   \
1921             ( ( 0x8E == ((const U8*)s)[2] ) ?                               \
1922                 ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1923             : ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ? 3 : 0 )             \
1924         : 0 )                                                               \
1925     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1926         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1927     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1928         ( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
1929             ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1930         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1931     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1932         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1933     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1934         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1935     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
1936         ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1937     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
1938         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ?      \
1939             ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1940         : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
1941             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1942                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1943             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1944         : ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1945     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
1946         ( ( 0x42 == ((const U8*)s)[1] ) ?                                   \
1947             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1948         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
1949             ( ( 0xAD == ((const U8*)s)[2] ) ?                               \
1950                 ( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1951             : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1952         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
1953             ( ( 0xAF == ((const U8*)s)[2] ) ?                               \
1954                 ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 )                   \
1955             : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1956         : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
1957     : 0 )                                                                   \
1958 : ((e)-(s) > 2) ?                                                           \
1959     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1960         ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1961     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1962         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1963             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1964         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1965     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ?                             \
1966         ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1967     : ( ( ((const U8*)s)[0] & 0xBF ) == 'i' ) ?                             \
1968         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1969     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
1970         ( ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBE ) == 's' ) ) ? 3 : 0 )\
1971     : ( ( ((const U8*)s)[0] & 0xBF ) == 'j' ) ?                             \
1972         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1973     : ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) ?                             \
1974         ( ( 0x8E == ((const U8*)s)[1] ) ?                                   \
1975             ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )                       \
1976         : ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ? 2 : 0 )                 \
1977     : ( ( ((const U8*)s)[0] & 0xBF ) == 't' ) ?                             \
1978         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1979     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ?\
1980         ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1981     : ( ( ( 0xAA == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
1982 : ((e)-(s) > 1) ?                                                           \
1983     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1984         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1985     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
1986 : 0 )
1987
1988
1989 /*** GENERATED CODE ***/
1990 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
1991 ( ((e)-(s) > 5) ?                                                           \
1992     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'a' ) ?                             \
1993         ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
1994     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
1995         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
1996             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
1997         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
1998     : ( ( ((const U8*)s)[0] & 0xBF ) == 'h' ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\
1999 : ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) )
2000
2001 /*
2002         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
2003
2004         &regcharclass_multi_char_folds::multi_char_folds('l', 'a')
2005 */
2006 /*** GENERATED CODE ***/
2007 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
2008 ( ((e)-(s) > 2) ?                                                           \
2009     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2010         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ?                         \
2011             ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ? 3 : 2 )\
2012         : ( ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2013     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
2014 : ((e)-(s) > 1) ?                                                           \
2015     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2016         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[1] & 0xBF ) == 'l' ) ) ? 2 : 0 )\
2017     : ( ( ( ((const U8*)s)[0] & 0xBF ) == 's' ) && ( ( ((const U8*)s)[1] & 0xBE ) == 's' ) ) ? 2 : 0 )\
2018 : 0 )
2019
2020 /*
2021         THREE_CHAR_FOLD: A three-character multi-char fold
2022
2023         &regcharclass_multi_char_folds::multi_char_folds('u', '3')
2024 */
2025 /*** GENERATED CODE ***/
2026 #define is_THREE_CHAR_FOLD_utf8_safe(s,e)                                   \
2027 ( ((e)-(s) > 5) ?                                                           \
2028     ( ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2029         ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )\
2030     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2031         ( ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
2032             ( ( ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB3 == ((const U8*)s)[4] ) ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2033         : ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAD == ((const U8*)s)[2] ) ) && ( 0x49 == ((const U8*)s)[3] ) ) ? ( ( 0xAD == ((const U8*)s)[4] ) ?\
2034                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2035                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
2036     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2037         ( ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2038             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x5F == ((const U8*)s)[3] ) ) ? ( ( 0xAD == ((const U8*)s)[4] ) ?\
2039                         ( ( inRANGE(((const U8*)s)[5], 0x41, 0x42) ) ? 6 : 0 )\
2040                     : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 ) : 0 )\
2041         : ( ( ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) && ( 0xB3 == ((const U8*)s)[4] ) ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
2042     : 0 )                                                                   \
2043 : ( ( ( ((e)-(s) > 2) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
2044
2045 /*
2046         THREE_CHAR_FOLD: A three-character multi-char fold
2047
2048         &regcharclass_multi_char_folds::multi_char_folds('l', '3')
2049 */
2050 /*** GENERATED CODE ***/
2051 #define is_THREE_CHAR_FOLD_latin1_safe(s,e)                                 \
2052 ( ( ( ( ( ((e) - (s)) >= 3 ) && ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ) && ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ) && ( ( ( ((const U8*)s)[2] & 0xBF ) == 'i' ) || ( ( ((const U8*)s)[2] & 0xBF ) == 'l' ) ) ) ? 3 : 0 )
2053
2054 /*
2055         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
2056
2057         &regcharclass_multi_char_folds::multi_char_folds('u', 'h')
2058 */
2059 /*** GENERATED CODE ***/
2060 #define is_THREE_CHAR_FOLD_HEAD_utf8_safe(s,e)                              \
2061 ( ((e)-(s) > 3) ?                                                           \
2062     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2063     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2064         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2065     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
2066         ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2067     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
2068         ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2069     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2070         ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
2071         : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ?      \
2072             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2073         : ( 0x67 == ((const U8*)s)[1] ) ?                                   \
2074             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2075         : 0 )                                                               \
2076     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2077         ( ( 0x42 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2    \
2078         : ( 0x46 == ((const U8*)s)[1] ) ?                                   \
2079             ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x49 == ((const U8*)s)[3] || 0x5F == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2080         : ( 0x4A == ((const U8*)s)[1] ) ?                                   \
2081             ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
2082         : 0 )                                                               \
2083     : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
2084         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2085     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2086         ( ( inRANGE(((const U8*)s)[1], 0x66, 0x67) ) ?                      \
2087             ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )          \
2088         : ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2089     : 0 )                                                                   \
2090 : ((e)-(s) > 2) ?                                                           \
2091     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2092     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2093         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2094     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
2095         ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2096     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
2097         ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2098     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2099         ( ( ((const U8*)s)[1] == 0x53 || ((const U8*)s)[1] == 0x55 || ((const U8*)s)[1] == 0x58 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) ) ? 2 : 0 )\
2100     : ( 0xB4 == ((const U8*)s)[0] ) ?                                       \
2101         ( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
2102     : ( 0xB7 == ((const U8*)s)[0] ) ?                                       \
2103         ( ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x46 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2104     : ( 0xBF == ((const U8*)s)[0] ) ?                                       \
2105         ( ( inRANGE(((const U8*)s)[1], 0x66, 0x67) ) ?                      \
2106             ( ( inRANGE(((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )          \
2107         : ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2108     : 0 )                                                                   \
2109 : ((e)-(s) > 1) ?                                                           \
2110     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2111     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2112         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2113     : ( 0x8E == ((const U8*)s)[0] ) ?                                       \
2114         ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2115     : ( 0xAA == ((const U8*)s)[0] ) ?                                       \
2116         ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                           \
2117     : ( 0xB3 == ((const U8*)s)[0] ) ?                                       \
2118         ( ( ((const U8*)s)[1] == 0x53 || ((const U8*)s)[1] == 0x55 || ((const U8*)s)[1] == 0x58 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) ) ? 2 : 0 )\
2119     : ( ( 0xB4 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
2120 : ((e)-(s) > 0) ?                                                           \
2121     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
2122 : 0 )
2123
2124 /*
2125         THREE_CHAR_FOLD_HEAD: The first two of three-character multi-char folds
2126
2127         &regcharclass_multi_char_folds::multi_char_folds('l', 'h')
2128 */
2129 /*** GENERATED CODE ***/
2130 #define is_THREE_CHAR_FOLD_HEAD_latin1_safe(s,e)                            \
2131 ( ((e)-(s) > 1) ?                                                           \
2132     ( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
2133     : ( ( ((const U8*)s)[0] & 0xBF ) == 'f' ) ?                             \
2134         ( ( ( ((const U8*)s)[1] & 0xBF ) == 'f' ) ? 2 : 1 )                 \
2135     : 0 )                                                                   \
2136 : ((e)-(s) > 0) ?                                                           \
2137     ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
2138 : 0 )
2139
2140 /*
2141         FOLDS_TO_MULTI: characters that fold to multi-char strings
2142
2143         \p{_Perl_Folds_To_Multi_Char}
2144 */
2145 /*** GENERATED CODE ***/
2146 #define is_FOLDS_TO_MULTI_utf8(s)                                           \
2147 ( ( 0x80 == ((const U8*)s)[0] ) ?                                           \
2148     ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2149 : ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0xB2, 0xB3) ) ?\
2150     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2151 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2152     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2153 : ( 0xB7 == ((const U8*)s)[0] ) ?                                           \
2154     ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2155 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2156     ( ( 0x62 == ((const U8*)s)[1] ) ?                                       \
2157         ( ( inRANGE(((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ? 3 : 0 )\
2158     : ( 0x68 == ((const U8*)s)[1] ) ?                                       \
2159         ( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x64 == ((const U8*)s)[2] ) ? 3 : 0 )\
2160     : ( 0x6A == ((const U8*)s)[1] ) ?                                       \
2161         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x62, 0x6A) || inRANGE(((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
2162     : ( 0x70 == ((const U8*)s)[1] ) ?                                       \
2163         ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A) || inRANGE(((const U8*)s)[2], 0x51, 0x56) || 0x59 == ((const U8*)s)[2] || 0x5F == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x64, 0x65) || 0x6A == ((const U8*)s)[2] ) ? 3 : 0 )\
2164     : ( 0x71 == ((const U8*)s)[1] ) ?                                       \
2165         ( ( inRANGE(((const U8*)s)[2], 0x43, 0x45) || inRANGE(((const U8*)s)[2], 0x47, 0x48) || 0x53 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x5F == ((const U8*)s)[2] || inRANGE(((const U8*)s)[2], 0x64, 0x65) ) ? 3 : 0 )\
2166     : ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xDE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x59 || ((const U8*)s)[2] == 0x5F || ( ( ((const U8*)s)[2] & '7' ) == 0x62 ) ) ) ? 3 : 0 )\
2167 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x65) ) ) ? 4 : 0 )
2168
2169 /*
2170         PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
2171
2172         \p{_Perl_Problematic_Locale_Folds}
2173 */
2174 /*** GENERATED CODE ***/
2175 #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s)                                  \
2176 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE(((const U8*)s)[0], '.', '&') || inRANGE(((const U8*)s)[0], '!', ';') || inRANGE(((const U8*)s)[0], '-', '/') || inRANGE(((const U8*)s)[0], ',', '?') || inRANGE(((const U8*)s)[0], '`', '"') || inRANGE(((const U8*)s)[0], 'a', 'i') || inRANGE(((const U8*)s)[0], 'j', 'r') || inRANGE(((const U8*)s)[0], '~', 'z') || '^' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '[', ']') || inRANGE(((const U8*)s)[0], '{', 'I') || inRANGE(((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 'S', 'Z') || inRANGE(((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
2177 : ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\
2178     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) ? 2 : 0 )\
2179 : ( 0x8C == ((const U8*)s)[0] ) ?                                           \
2180     ( ( inRANGE(((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )                  \
2181 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2182     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2183 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2184     ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
2185 : ( 0x9B == ((const U8*)s)[0] ) ?                                           \
2186     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2187 : ( 0xAD == ((const U8*)s)[0] ) ?                                           \
2188     ( ( 0x48 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2189 : ( inRANGE(((const U8*)s)[0], 0xB2, 0xB3) ) ?                              \
2190     ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2191 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2192     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2193 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2194     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
2195 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
2196
2197 /*** GENERATED CODE ***/
2198 #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp)                                   \
2199 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
2200 ( 0x130 == cp || ( 0x130 < cp &&                                            \
2201 ( 0x131 == cp || ( 0x131 < cp &&                                            \
2202 ( 0x149 == cp || ( 0x149 < cp &&                                            \
2203 ( 0x178 == cp || ( 0x178 < cp &&                                            \
2204 ( 0x17F == cp || ( 0x17F < cp &&                                            \
2205 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
2206 ( 0x307 == cp || ( 0x307 < cp &&                                            \
2207 ( 0x39C == cp || ( 0x39C < cp &&                                            \
2208 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
2209 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
2210 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
2211 ( 0x212A == cp || ( 0x212A < cp &&                                          \
2212 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
2213
2214 /*
2215         PROBLEMATIC_LOCALE_FOLDEDS_START: The first folded character of folds which are problematic under locale
2216
2217         \p{_Perl_Problematic_Locale_Foldeds_Start}
2218 */
2219 /*** GENERATED CODE ***/
2220 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s)                         \
2221 ( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE(((const U8*)s)[0], '.', '&') || inRANGE(((const U8*)s)[0], '!', ';') || inRANGE(((const U8*)s)[0], '-', '/') || inRANGE(((const U8*)s)[0], ',', '?') || inRANGE(((const U8*)s)[0], '`', '"') || inRANGE(((const U8*)s)[0], 'a', 'i') || inRANGE(((const U8*)s)[0], 'j', 'r') || inRANGE(((const U8*)s)[0], '~', 'z') || '^' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '[', ']') || inRANGE(((const U8*)s)[0], '{', 'I') || inRANGE(((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 'S', 'Z') || inRANGE(((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
2222 : ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\
2223     ( ( inRANGE(((const U8*)s)[1], 0x41, 0x4A) || inRANGE(((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE(((const U8*)s)[1], 0x62, 0x6A) || inRANGE(((const U8*)s)[1], 0x70, 0x72) ) ? 2 : 0 )\
2224 : ( 0x8C == ((const U8*)s)[0] ) ?                                           \
2225     ( ( inRANGE(((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 )                  \
2226 : ( 0x8D == ((const U8*)s)[0] ) ?                                           \
2227     ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2228 : ( 0x8E == ((const U8*)s)[0] ) ?                                           \
2229     ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 )  \
2230 : ( 0x9B == ((const U8*)s)[0] ) ?                                           \
2231     ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2232 : ( 0xAA == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], 0xB2, 0xB3) ) ? \
2233     ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 )                               \
2234 : ( 0xBF == ((const U8*)s)[0] ) ?                                           \
2235     ( ( ( 0x62 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
2236 : ( 0xCA == ((const U8*)s)[0] ) ?                                           \
2237     ( ( ( 0x4A == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x51, 0x52) ) ) ? 3 : 0 )\
2238 : ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE(((const U8*)s)[3], 0x41, 0x47) ) ) ? 4 : 0 )
2239
2240 /*** GENERATED CODE ***/
2241 #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp)                          \
2242 ( cp <= 0xFF || ( 0xFF < cp &&                                              \
2243 ( 0x130 == cp || ( 0x130 < cp &&                                            \
2244 ( 0x131 == cp || ( 0x131 < cp &&                                            \
2245 ( 0x149 == cp || ( 0x149 < cp &&                                            \
2246 ( 0x178 == cp || ( 0x178 < cp &&                                            \
2247 ( 0x17F == cp || ( 0x17F < cp &&                                            \
2248 ( 0x1F0 == cp || ( 0x1F0 < cp &&                                            \
2249 ( 0x2BC == cp || ( 0x2BC < cp &&                                            \
2250 ( 0x39C == cp || ( 0x39C < cp &&                                            \
2251 ( 0x3BC == cp || ( 0x3BC < cp &&                                            \
2252 ( inRANGE(cp, 0x1E96, 0x1E9A) || ( 0x1E9A < cp &&                           \
2253 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
2254 ( 0x212A == cp || ( 0x212A < cp &&                                          \
2255 ( 0x212B == cp || inRANGE(cp, 0xFB00, 0xFB06) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
2256
2257 /*
2258         PATWS: pattern white space
2259
2260         \p{_Perl_PatWS}
2261 */
2262 /*** GENERATED CODE ***/
2263 #define is_PATWS_safe(s,e,is_utf8)                                          \
2264 ( ( LIKELY((e) > (s)) ) ?                                                   \
2265     ( ( '\t' == ((const U8*)s)[0] || inRANGE(((const U8*)s)[0], '\v', '\r') || 0x15 == ((const U8*)s)[0] || '\n' == ((const U8*)s)[0] || ' ' == ((const U8*)s)[0] ) ? 1\
2266     : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\
2267                     ( ( inRANGE(((const U8*)s)[2], 0x55, 0x56) ) ? 3 : 0 )  \
2268                 : ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
2269 : 0 )
2270
2271 /*** GENERATED CODE ***/
2272 #define is_PATWS_cp(cp)                                                     \
2273 ( '\t' == cp || ( '\t' < cp &&                                              \
2274 ( inRANGE(cp, '\v', '\r') || ( '\r' < cp &&                                 \
2275 ( 0x15 == cp || ( 0x15 < cp &&                                              \
2276 ( '\n' == cp || ( '\n' < cp &&                                              \
2277 ( ' ' == cp || ( ' ' < cp &&                                                \
2278 ( 0x200E == cp || ( 0x200E < cp &&                                          \
2279 ( 0x200F == cp || ( 0x200F < cp &&                                          \
2280 ( 0x2028 == cp || 0x2029 == cp ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
2281
2282 #endif  /* EBCDIC 037 */
2283
2284 #endif /* PERL_REGCHARCLASS_H_ */
2285
2286 /* Generated from:
2287  * d60b1a3dffe16c4aaaf3f00d21993bb320d05e9828b106182214764d4c69935c lib/Unicode/UCD.pm
2288  * ce96627d4fc91b4fd886c409caeb9b76cf7bd345e12f05c6701add7f233f6437 lib/unicore/ArabicShaping.txt
2289  * 0e69eef3da722cc104522d8372e86d5b86bb7afcc761b0c991e39e832294946d lib/unicore/BidiBrackets.txt
2290  * a00d9d21585106a52113fb7b1d3d0373a5835be72e76862fb559ebddd474d70e lib/unicore/BidiMirroring.txt
2291  * 81a82b6a9fcf1a9c12f588d7a1decd73a9afdc4cac95b0eb7e576e7942d6c19f lib/unicore/Blocks.txt
2292  * 99d231d7c91688bbe8ca8ccebcc2f46b5b222f844babe4827295bae11e2abe5f lib/unicore/CaseFolding.txt
2293  * 38badafd818d8405324fe298c0676be0c95186368c84b5368375fd871a645144 lib/unicore/CompositionExclusions.txt
2294  * e779a443d3aa2a3166a15becaa2b737c922480e32c0453d5956093633555078f lib/unicore/DAge.txt
2295  * a5d45f59b39deaab3c72ce8c1a2e212a5e086dff11b1f9d5bb0e352642e82248 lib/unicore/DCoreProperties.txt
2296  * 3ac44e11c84bdaf6b207d2c2c20eed857ae17052393fc7f71b0fe951186ba906 lib/unicore/DNormalizationProps.txt
2297  * 4f822ec7a9ebbb3138ad29bade8b9688d25b39c7a3c0b7431f01e7229e4fcb6e lib/unicore/EastAsianWidth.txt
2298  * fc535aa1047a70105ab9a22c2b4c3f363a2ff02fe48ebbc5eeb9873b2752ff0b lib/unicore/EquivalentUnifiedIdeograph.txt
2299  * b9c5158ce944d2fec57e0e4ecb716bdabfc3bdde73525f1772fe03f61a30d473 lib/unicore/HangulSyllableType.txt
2300  * 36c1b2a626ff1fb23b8b21e6ea8712698f8ce668dded1cb48b8ddf6a6a1b04e9 lib/unicore/IdStatus.txt
2301  * 4857c4ffa3898e6128b2d46b0a02e499a663fb91464a69ef3611096f01293acc lib/unicore/IdType.txt
2302  * 69197b019fa5f2fb0d8c6ed1ed8acb9f2e8b5b8f45a947953ffa652f3bf54983 lib/unicore/IndicPositionalCategory.txt
2303  * 6604e2f0fde7428675364aa0006bc686b79488dcc60ae8cb29800af2be3352e8 lib/unicore/IndicSyllabicCategory.txt
2304  * 84ead63924aaa74b988b2eaf254a8733276ed108633ce2ef77a9ee1de7818162 lib/unicore/Jamo.txt
2305  * d5abcd8f54c8a2aa912924c485ccf7f968ad98feaa303d8e9a29ad89172f1faf lib/unicore/LineBreak.txt
2306  * 985128e8c8b2540233331d9b27d897d2c23bd5bcf1d05da960befce6efc59542 lib/unicore/NameAliases.txt
2307  * 27282b8aa01d4d0c44aef436cb74195ae8639ffa187aeee4e6247af76febea76 lib/unicore/NamedSequences.txt
2308  * 485b5a3ed25dbf1f94dfa5a9b69d8b4550ffd0c33045ccc55ccfd7c80b2a40cf lib/unicore/PropList.txt
2309  * 6b3902e9268cd843fe65cbdea992108c9528343ec0679f800b96f356bb553e5a lib/unicore/PropValueAliases.txt
2310  * 2bd5777847e3d6add3c7e5c0d1393ddcab89e5a0ac3ff498cb0c53041f0b86e4 lib/unicore/PropertyAliases.txt
2311  * 03a61dc89422e44cc2b73e8e893321007880ab69e2a4d281c0f1bc29c602b9d0 lib/unicore/ScriptExtensions.txt
2312  * 9a5ed1ec9b5f0d7147e9371ad792ab39203611af7637cff2aa4a5c663b172cde lib/unicore/Scripts.txt
2313  * 6424312f1dc39b22e0ff9c0ffb13dfad424d9b03e6a6dc6bca941f6bf5ef1ffd lib/unicore/SpecialCasing.txt
2314  * bdbffbbfc8ad4d3a6d01b5891510458f3d36f7170422af4ea2bed3211a73e8bb lib/unicore/UnicodeData.txt
2315  * 160f41816234addb511901d5f21febd69574578dd93de6ef8153e35693325575 lib/unicore/VerticalOrientation.txt
2316  * 32dfb37d21db530529a6ec3dc13d96f21f8e7c7faf7ff3db8a9760cd76cec81d lib/unicore/auxiliary/GCBTest.txt
2317  * 2bd3c5e2d62701ff81fb3ec318e179a4618cabb1493b1e0dd2b4e7e56c5437c4 lib/unicore/auxiliary/GraphemeBreakProperty.txt
2318  * c51fbebfa82a0f36473b44bfd71d5ef6cb6a1f81fb313375dc9a1910d79bb2b6 lib/unicore/auxiliary/LBTest.txt
2319  * 80b0107750818d8f370bd120b6fe56b6855b60581f72affe8b60409a469b4b65 lib/unicore/auxiliary/SBTest.txt
2320  * 09e3166ebab166ac630a227f77f4e794ebd433271abd5588f5a67e7f199c71ee lib/unicore/auxiliary/SentenceBreakProperty.txt
2321  * bf5373ce28a5df06796c93dc159dd15a997bb2950c92704b40ae8190cfc3716d lib/unicore/auxiliary/WBTest.txt
2322  * a2b7373cf2fe3fa3b26dbb53405ca849985f771ff47f1c61743978003ff80499 lib/unicore/auxiliary/WordBreakProperty.txt
2323  * d2686f400a638c80775d7c662556fb8fa8dd3bbe4aa548d9d31624264c6e1bb1 lib/unicore/emoji/emoji.txt
2324  * b827ae5da8c2b08947cc9a120a7b7fd2f1676fb160b508df78075381635b127c lib/unicore/extracted/DBidiClass.txt
2325  * 6fdc5b5ef40444a8f0c772e6b67c00498d4216fe0c0fdf76744ce338f2ad3810 lib/unicore/extracted/DBinaryProperties.txt
2326  * e14928a5bf6ad5958a80332bd42e96e14420080a95c660e5da29384e496755d0 lib/unicore/extracted/DCombiningClass.txt
2327  * 579a03281fbe87b78d5d9a8523de4d255edd7e4ca6eab0e4c7729de97e9b89b1 lib/unicore/extracted/DDecompositionType.txt
2328  * ad83c59b257e9d480ffd3001d4ac240c5fed7cb1919453e1c4e8877035256bcd lib/unicore/extracted/DEastAsianWidth.txt
2329  * 4502f0969e4e6558c4b4c6ca4c23dad70b863d61dd3d5eed1a62a6c3c99fd570 lib/unicore/extracted/DGeneralCategory.txt
2330  * 00bb88b89e2adb646f3177f9444e2d3192386b81a5de9556104b338274b253e1 lib/unicore/extracted/DJoinGroup.txt
2331  * ac835b6e11a60c9820d3cf2d1cb0558dd68efb8f53f404a51632e4726690a6d7 lib/unicore/extracted/DJoinType.txt
2332  * baba9dfc133e3cb770a89aaf0973b1341fa61c2da6c176baf6428898b3b568d8 lib/unicore/extracted/DLineBreak.txt
2333  * 6d4a8c945dd7db83ed617cbb7d937de7f4ecf016ff22970d846e996a7c9a2a5d lib/unicore/extracted/DNumType.txt
2334  * 5b7c14380d5cceeaffcfbc18db1ed936391d2af2d51f5a41f1a17b692c77e59b lib/unicore/extracted/DNumValues.txt
2335  * ee0dd174fd5b158d82dfea95d7d822ca0bfcd490182669353dca3ab39a8ee807 lib/unicore/mktables
2336  * 50b85a67451145545a65cea370dab8d3444fbfe07e9c34cef560c5b7da9d3eef lib/unicore/version
2337  * 2680b9254eb236c5c090f11b149605043e8c8433661b96efc4a42fb4709342a5 regen/charset_translations.pl
2338  * e44d836c4a344d535e81585842da1e85bbc24f2f67f4f3e7e3ec32b16262f856 regen/regcharclass.pl
2339  * c0a5e4cb2b9ffad78691938e122c1310bbc98aca2364af243e5c6b2ec0f59dc3 regen/regcharclass_multi_char_folds.pl
2340  * ex: set ro: */