xref: /openbsd/gnu/usr.bin/perl/ebcdic_tables.h (revision e0680481)
1*e0680481Safresh1 /* -*- mode: C; buffer-read-only: t -*-
2b8851fccSafresh1  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
3b8851fccSafresh1  * This file is built by regen/ebcdic.pl.
4b8851fccSafresh1  * Any changes made here will be lost!
5b8851fccSafresh1  */
6b8851fccSafresh1 
7b8851fccSafresh1 
85759b3d2Safresh1 #ifndef PERL_EBCDIC_TABLES_H_   /* Guard against nested #includes */
95759b3d2Safresh1 #define PERL_EBCDIC_TABLES_H_   1
10b8851fccSafresh1 
11b8851fccSafresh1 /* This file contains definitions for various tables used in EBCDIC handling.
12b46d8ef2Safresh1  * More info is in utfebcdic.h
13b46d8ef2Safresh1  *
14b46d8ef2Safresh1  * Some of the tables are adapted from
1556d68f1eSafresh1  *      https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
16b46d8ef2Safresh1  * which requires this copyright notice:
17b46d8ef2Safresh1 
18b46d8ef2Safresh1 Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
19b46d8ef2Safresh1 
20b46d8ef2Safresh1 Permission is hereby granted, free of charge, to any person obtaining a copy of
21b46d8ef2Safresh1 this software and associated documentation files (the "Software"), to deal in
22b46d8ef2Safresh1 the Software without restriction, including without limitation the rights to
23b46d8ef2Safresh1 use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
24b46d8ef2Safresh1 of the Software, and to permit persons to whom the Software is furnished to do
25b46d8ef2Safresh1 so, subject to the following conditions:
26b46d8ef2Safresh1 
27b46d8ef2Safresh1 The above copyright notice and this permission notice shall be included in all
28b46d8ef2Safresh1 copies or substantial portions of the Software.
29b46d8ef2Safresh1 
30b46d8ef2Safresh1 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31b46d8ef2Safresh1 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32b46d8ef2Safresh1 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
33b46d8ef2Safresh1 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34b46d8ef2Safresh1 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
35b46d8ef2Safresh1 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
36b46d8ef2Safresh1 SOFTWARE.
37b46d8ef2Safresh1 
38b46d8ef2Safresh1 */
39b8851fccSafresh1 
40b8851fccSafresh1 #if 'A' == 193 /* EBCDIC 1047 */ \
41b8851fccSafresh1      && '\\' == 224 && '[' == 173 && ']' == 189 && '{' == 192 && '}' == 208 \
42b8851fccSafresh1      && '^' == 95 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
43b46d8ef2Safresh1      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
44b8851fccSafresh1 
45b8851fccSafresh1 /* Index is ASCII platform code point; value is EBCDIC 1047 equivalent */
46b46d8ef2Safresh1 #  ifndef DOINIT
47eac174f2Safresh1     EXTCONST U8 PL_a2e[256];
48b46d8ef2Safresh1 #  else
49eac174f2Safresh1     EXTCONST U8 PL_a2e[256] = {
50b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
51b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x15,0x0B,0x0C,0x0D,0x0E,0x0F,
52b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F,
53b46d8ef2Safresh1 /*2_*/0x40,0x5A,0x7F,0x7B,0x5B,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61,
54b46d8ef2Safresh1 /*3_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F,
55b46d8ef2Safresh1 /*4_*/0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,
56b46d8ef2Safresh1 /*5_*/0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAD,0xE0,0xBD,0x5F,0x6D,
57b46d8ef2Safresh1 /*6_*/0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,
58b46d8ef2Safresh1 /*7_*/0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xC0,0x4F,0xD0,0xA1,0x07,
59b46d8ef2Safresh1 /*8_*/0x20,0x21,0x22,0x23,0x24,0x25,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,
60b46d8ef2Safresh1 /*9_*/0x30,0x31,0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,
61b46d8ef2Safresh1 /*A_*/0x41,0xAA,0x4A,0xB1,0x9F,0xB2,0x6A,0xB5,0xBB,0xB4,0x9A,0x8A,0xB0,0xCA,0xAF,0xBC,
62b46d8ef2Safresh1 /*B_*/0x90,0x8F,0xEA,0xFA,0xBE,0xA0,0xB6,0xB3,0x9D,0xDA,0x9B,0x8B,0xB7,0xB8,0xB9,0xAB,
63b46d8ef2Safresh1 /*C_*/0x64,0x65,0x62,0x66,0x63,0x67,0x9E,0x68,0x74,0x71,0x72,0x73,0x78,0x75,0x76,0x77,
64b46d8ef2Safresh1 /*D_*/0xAC,0x69,0xED,0xEE,0xEB,0xEF,0xEC,0xBF,0x80,0xFD,0xFE,0xFB,0xFC,0xBA,0xAE,0x59,
65b46d8ef2Safresh1 /*E_*/0x44,0x45,0x42,0x46,0x43,0x47,0x9C,0x48,0x54,0x51,0x52,0x53,0x58,0x55,0x56,0x57,
66b46d8ef2Safresh1 /*F_*/0x8C,0x49,0xCD,0xCE,0xCB,0xCF,0xCC,0xE1,0x70,0xDD,0xDE,0xDB,0xDC,0x8D,0x8E,0xDF
67b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
68b8851fccSafresh1 };
69b46d8ef2Safresh1 #  endif
70b8851fccSafresh1 
71b8851fccSafresh1 /* Index is EBCDIC 1047 code point; value is ASCII platform equivalent */
72b46d8ef2Safresh1 #  ifndef DOINIT
73eac174f2Safresh1     EXTCONST U8 PL_e2a[256];
74b46d8ef2Safresh1 #  else
75eac174f2Safresh1     EXTCONST U8 PL_e2a[256] = {
76b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
77b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F,
78b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x9D,0x0A,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F,
79b46d8ef2Safresh1 /*2_*/0x80,0x81,0x82,0x83,0x84,0x85,0x17,0x1B,0x88,0x89,0x8A,0x8B,0x8C,0x05,0x06,0x07,
80b46d8ef2Safresh1 /*3_*/0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9A,0x9B,0x14,0x15,0x9E,0x1A,
81b46d8ef2Safresh1 /*4_*/0x20,0xA0,0xE2,0xE4,0xE0,0xE1,0xE3,0xE5,0xE7,0xF1,0xA2,0x2E,0x3C,0x28,0x2B,0x7C,
82b46d8ef2Safresh1 /*5_*/0x26,0xE9,0xEA,0xEB,0xE8,0xED,0xEE,0xEF,0xEC,0xDF,0x21,0x24,0x2A,0x29,0x3B,0x5E,
83b46d8ef2Safresh1 /*6_*/0x2D,0x2F,0xC2,0xC4,0xC0,0xC1,0xC3,0xC5,0xC7,0xD1,0xA6,0x2C,0x25,0x5F,0x3E,0x3F,
84b46d8ef2Safresh1 /*7_*/0xF8,0xC9,0xCA,0xCB,0xC8,0xCD,0xCE,0xCF,0xCC,0x60,0x3A,0x23,0x40,0x27,0x3D,0x22,
85b46d8ef2Safresh1 /*8_*/0xD8,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xAB,0xBB,0xF0,0xFD,0xFE,0xB1,
86b46d8ef2Safresh1 /*9_*/0xB0,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0xAA,0xBA,0xE6,0xB8,0xC6,0xA4,
87b46d8ef2Safresh1 /*A_*/0xB5,0x7E,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0xA1,0xBF,0xD0,0x5B,0xDE,0xAE,
88b46d8ef2Safresh1 /*B_*/0xAC,0xA3,0xA5,0xB7,0xA9,0xA7,0xB6,0xBC,0xBD,0xBE,0xDD,0xA8,0xAF,0x5D,0xB4,0xD7,
89b46d8ef2Safresh1 /*C_*/0x7B,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xAD,0xF4,0xF6,0xF2,0xF3,0xF5,
90b46d8ef2Safresh1 /*D_*/0x7D,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0xB9,0xFB,0xFC,0xF9,0xFA,0xFF,
91b46d8ef2Safresh1 /*E_*/0x5C,0xF7,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0xB2,0xD4,0xD6,0xD2,0xD3,0xD5,
92b46d8ef2Safresh1 /*F_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xB3,0xDB,0xDC,0xD9,0xDA,0x9F
93b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
94b8851fccSafresh1 };
95b46d8ef2Safresh1 #  endif
96b8851fccSafresh1 
97b8851fccSafresh1 /* (Confusingly named) Index is EBCDIC 1047 I8 byte; value is
98b8851fccSafresh1  * EBCDIC 1047 UTF-EBCDIC equivalent */
99b46d8ef2Safresh1 #  ifndef DOINIT
100eac174f2Safresh1     EXTCONST U8 PL_utf2e[256];
101b46d8ef2Safresh1 #  else
102eac174f2Safresh1     EXTCONST U8 PL_utf2e[256] = {
103b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
104b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x15,0x0B,0x0C,0x0D,0x0E,0x0F,
105b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F,
106b46d8ef2Safresh1 /*2_*/0x40,0x5A,0x7F,0x7B,0x5B,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61,
107b46d8ef2Safresh1 /*3_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F,
108b46d8ef2Safresh1 /*4_*/0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,
109b46d8ef2Safresh1 /*5_*/0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAD,0xE0,0xBD,0x5F,0x6D,
110b46d8ef2Safresh1 /*6_*/0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,
111b46d8ef2Safresh1 /*7_*/0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xC0,0x4F,0xD0,0xA1,0x07,
112b46d8ef2Safresh1 /*8_*/0x20,0x21,0x22,0x23,0x24,0x25,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,
113b46d8ef2Safresh1 /*9_*/0x30,0x31,0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,
114b46d8ef2Safresh1 /*A_*/0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x51,0x52,0x53,0x54,0x55,0x56,
115b46d8ef2Safresh1 /*B_*/0x57,0x58,0x59,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x70,0x71,0x72,0x73,
116b46d8ef2Safresh1 /*C_*/0x74,0x75,0x76,0x77,0x78,0x80,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x9A,0x9B,0x9C,
117b46d8ef2Safresh1 /*D_*/0x9D,0x9E,0x9F,0xA0,0xAA,0xAB,0xAC,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,
118b46d8ef2Safresh1 /*E_*/0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBE,0xBF,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xDA,0xDB,
119b46d8ef2Safresh1 /*F_*/0xDC,0xDD,0xDE,0xDF,0xE1,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xFA,0xFB,0xFC,0xFD,0xFE
120b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
121b8851fccSafresh1 };
122b46d8ef2Safresh1 #  endif
123b8851fccSafresh1 
124b8851fccSafresh1 /* (Confusingly named) Index is EBCDIC 1047 UTF-EBCDIC byte; value is
125b8851fccSafresh1  * EBCDIC 1047 I8 equivalent */
126b46d8ef2Safresh1 #  ifndef DOINIT
127eac174f2Safresh1     EXTCONST U8 PL_e2utf[256];
128b46d8ef2Safresh1 #  else
129eac174f2Safresh1     EXTCONST U8 PL_e2utf[256] = {
130b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
131b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F,
132b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x9D,0x0A,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F,
133b46d8ef2Safresh1 /*2_*/0x80,0x81,0x82,0x83,0x84,0x85,0x17,0x1B,0x88,0x89,0x8A,0x8B,0x8C,0x05,0x06,0x07,
134b46d8ef2Safresh1 /*3_*/0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9A,0x9B,0x14,0x15,0x9E,0x1A,
135b46d8ef2Safresh1 /*4_*/0x20,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0x2E,0x3C,0x28,0x2B,0x7C,
136b46d8ef2Safresh1 /*5_*/0x26,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0x21,0x24,0x2A,0x29,0x3B,0x5E,
137b46d8ef2Safresh1 /*6_*/0x2D,0x2F,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0x2C,0x25,0x5F,0x3E,0x3F,
138b46d8ef2Safresh1 /*7_*/0xBC,0xBD,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0x60,0x3A,0x23,0x40,0x27,0x3D,0x22,
139b46d8ef2Safresh1 /*8_*/0xC5,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,
140b46d8ef2Safresh1 /*9_*/0xCC,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
141b46d8ef2Safresh1 /*A_*/0xD3,0x7E,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0xD4,0xD5,0xD6,0x5B,0xD7,0xD8,
142b46d8ef2Safresh1 /*B_*/0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0x5D,0xE6,0xE7,
143b46d8ef2Safresh1 /*C_*/0x7B,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,
144b46d8ef2Safresh1 /*D_*/0x7D,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,
145b46d8ef2Safresh1 /*E_*/0x5C,0xF4,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,
146b46d8ef2Safresh1 /*F_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xFB,0xFC,0xFD,0xFE,0xFF,0x9F
147b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
148b8851fccSafresh1 };
149b46d8ef2Safresh1 #  endif
150b8851fccSafresh1 
151b46d8ef2Safresh1 /* Index is EBCDIC 1047 UTF-EBCDIC byte; value is UTF8SKIP for start bytes
152b46d8ef2Safresh1  * (including for overlongs); 1 for continuation.  Adapted from the shadow
153b46d8ef2Safresh1  * flags table in tr16.  The entries marked 9 in tr16 are continuation bytes
154b46d8ef2Safresh1  * and are marked as length 1 here so that we can recover. */
155b46d8ef2Safresh1 #  ifndef DOINIT
156eac174f2Safresh1     EXTCONST U8 PL_utf8skip[256];
157b46d8ef2Safresh1 #  else
158eac174f2Safresh1     EXTCONST U8 PL_utf8skip[256] = {
159b46d8ef2Safresh1 /*     _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
160b46d8ef2Safresh1 /*0_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
161b46d8ef2Safresh1 /*1_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
162b46d8ef2Safresh1 /*2_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
163b46d8ef2Safresh1 /*3_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
164b46d8ef2Safresh1 /*4_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
165b46d8ef2Safresh1 /*5_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
166b46d8ef2Safresh1 /*6_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
167b46d8ef2Safresh1 /*7_*/  1,  1,  1,  1,  2,  2,  2,  2,  2,  1,  1,  1,  1,  1,  1,  1,
168b46d8ef2Safresh1 /*8_*/  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,
169b46d8ef2Safresh1 /*9_*/  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,
170b46d8ef2Safresh1 /*A_*/  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  1,  2,  2,
171b46d8ef2Safresh1 /*B_*/  2,  2,  2,  2,  2,  2,  2,  3,  3,  3,  3,  3,  3,  1,  3,  3,
172b46d8ef2Safresh1 /*C_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  3,  3,  3,  3,  3,
173b46d8ef2Safresh1 /*D_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  3,  4,  4,  4,  4,
174b46d8ef2Safresh1 /*E_*/  1,  4,  1,  1,  1,  1,  1,  1,  1,  1,  4,  4,  4,  5,  5,  5,
175b46d8ef2Safresh1 /*F_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  5,  6,  6,  7, 14,  1
176b46d8ef2Safresh1 /*     _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
177b8851fccSafresh1 };
178b46d8ef2Safresh1 #  endif
179b8851fccSafresh1 
180b8851fccSafresh1 /* Index is EBCDIC 1047 code point; value is its lowercase equivalent */
181b46d8ef2Safresh1 #  ifndef DOINIT
182eac174f2Safresh1     EXTCONST U8 PL_latin1_lc[256];
183b46d8ef2Safresh1 #  else
184eac174f2Safresh1     EXTCONST U8 PL_latin1_lc[256] = {
185b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
186b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
187b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
188b46d8ef2Safresh1 /*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
189b46d8ef2Safresh1 /*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
190b46d8ef2Safresh1 /*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
191b46d8ef2Safresh1 /*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
192b46d8ef2Safresh1 /*6_*/0x60,0x61,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
193b46d8ef2Safresh1 /*7_*/0x70,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
194b46d8ef2Safresh1 /*8_*/0x70,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
195b46d8ef2Safresh1 /*9_*/0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9C,0x9F,
196b46d8ef2Safresh1 /*A_*/0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0x8C,0xAD,0x8E,0xAF,
197b46d8ef2Safresh1 /*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0x8D,0xBB,0xBC,0xBD,0xBE,0xBF,
198b46d8ef2Safresh1 /*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
199b46d8ef2Safresh1 /*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
200b46d8ef2Safresh1 /*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xCB,0xCC,0xCD,0xCE,0xCF,
201b46d8ef2Safresh1 /*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xDB,0xDC,0xDD,0xDE,0xFF
202b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
203b8851fccSafresh1 };
204b46d8ef2Safresh1 #  endif
205b8851fccSafresh1 
206b8851fccSafresh1 /* Index is EBCDIC 1047 code point; value is its uppercase equivalent.
207b8851fccSafresh1  * The 'mod' in the name means that codepoints whose uppercase is above 255 or
208b8851fccSafresh1  * longer than 1 character map to LATIN SMALL LETTER Y WITH DIARESIS */
209b46d8ef2Safresh1 #  ifndef DOINIT
210eac174f2Safresh1     EXTCONST U8 PL_mod_latin1_uc[256];
211b46d8ef2Safresh1 #  else
212eac174f2Safresh1     EXTCONST U8 PL_mod_latin1_uc[256] = {
213b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
214b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
215b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
216b46d8ef2Safresh1 /*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
217b46d8ef2Safresh1 /*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
218b46d8ef2Safresh1 /*4_*/0x40,0x41,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
219b46d8ef2Safresh1 /*5_*/0x50,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0xDF,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
220b46d8ef2Safresh1 /*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
221b46d8ef2Safresh1 /*7_*/0x80,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
222b46d8ef2Safresh1 /*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0xAC,0xBA,0xAE,0x8F,
223b46d8ef2Safresh1 /*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9E,0x9D,0x9E,0x9F,
224b46d8ef2Safresh1 /*A_*/0xDF,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
225b46d8ef2Safresh1 /*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
226b46d8ef2Safresh1 /*C_*/0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xEB,0xEC,0xED,0xEE,0xEF,
227b46d8ef2Safresh1 /*D_*/0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xFB,0xFC,0xFD,0xFE,0xDF,
228b46d8ef2Safresh1 /*E_*/0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
229b46d8ef2Safresh1 /*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
230b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
231b8851fccSafresh1 };
232b46d8ef2Safresh1 #  endif
233b8851fccSafresh1 
234b8851fccSafresh1 /* Index is EBCDIC 1047 code point; For A-Z, value is a-z; for a-z, value
235b8851fccSafresh1  * is A-Z; all other code points map to themselves */
236b46d8ef2Safresh1 #  ifndef DOINIT
237eac174f2Safresh1     EXTCONST U8 PL_fold[256];
238b46d8ef2Safresh1 #  else
239eac174f2Safresh1     EXTCONST U8 PL_fold[256] = {
240eac174f2Safresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
241eac174f2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
242eac174f2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
243eac174f2Safresh1 /*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
244eac174f2Safresh1 /*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
245eac174f2Safresh1 /*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
246eac174f2Safresh1 /*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
247eac174f2Safresh1 /*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
248eac174f2Safresh1 /*7_*/0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
249eac174f2Safresh1 /*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
250eac174f2Safresh1 /*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
251eac174f2Safresh1 /*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
252eac174f2Safresh1 /*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
253eac174f2Safresh1 /*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
254eac174f2Safresh1 /*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
255eac174f2Safresh1 /*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
256eac174f2Safresh1 /*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
257eac174f2Safresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
258eac174f2Safresh1 };
259eac174f2Safresh1 #  endif
260eac174f2Safresh1 
261b8851fccSafresh1 /* Index is EBCDIC 1047 code point; value is its other fold-pair equivalent
262b8851fccSafresh1  * (A => a; a => A, etc) in the 0-255 range.  If no such equivalent, value is
263b8851fccSafresh1  * the code point itself */
264b46d8ef2Safresh1 #  ifndef DOINIT
265eac174f2Safresh1     EXTCONST U8 PL_fold_latin1[256];
266b46d8ef2Safresh1 #  else
267eac174f2Safresh1     EXTCONST U8 PL_fold_latin1[256] = {
268b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
269b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
270b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
271b46d8ef2Safresh1 /*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
272b46d8ef2Safresh1 /*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
273b46d8ef2Safresh1 /*4_*/0x40,0x41,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
274b46d8ef2Safresh1 /*5_*/0x50,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
275b46d8ef2Safresh1 /*6_*/0x60,0x61,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
276b46d8ef2Safresh1 /*7_*/0x80,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
277b46d8ef2Safresh1 /*8_*/0x70,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0xAC,0xBA,0xAE,0x8F,
278b46d8ef2Safresh1 /*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9E,0x9D,0x9C,0x9F,
279b46d8ef2Safresh1 /*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0x8C,0xAD,0x8E,0xAF,
280b46d8ef2Safresh1 /*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0x8D,0xBB,0xBC,0xBD,0xBE,0xBF,
281b46d8ef2Safresh1 /*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xEB,0xEC,0xED,0xEE,0xEF,
282b46d8ef2Safresh1 /*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xFB,0xFC,0xFD,0xFE,0xDF,
283b46d8ef2Safresh1 /*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xCB,0xCC,0xCD,0xCE,0xCF,
284b46d8ef2Safresh1 /*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xDB,0xDC,0xDD,0xDE,0xFF
285b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
286b8851fccSafresh1 };
287b46d8ef2Safresh1 #  endif
288b46d8ef2Safresh1 
289b46d8ef2Safresh1 
290b46d8ef2Safresh1 /* The table below is adapted from
29156d68f1eSafresh1  *      https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
292b46d8ef2Safresh1  * See copyright notice at the beginning of this file.
293b46d8ef2Safresh1  */
294b46d8ef2Safresh1 
295b46d8ef2Safresh1 #  ifndef DOINIT
296eac174f2Safresh1     EXTCONST U8 PL_extended_utf8_dfa_tab[416];
297b46d8ef2Safresh1 #  else
298eac174f2Safresh1     EXTCONST U8 PL_extended_utf8_dfa_tab[416] = {
299b46d8ef2Safresh1 /*         _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
300b46d8ef2Safresh1 /*0_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
301b46d8ef2Safresh1 /*1_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
302b46d8ef2Safresh1 /*2_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
303b46d8ef2Safresh1 /*3_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
304b46d8ef2Safresh1 /*4_    */  0,  7,  7,  8,  8,  9,  9,  9,  9, 10, 10,  0,  0,  0,  0,  0,
305b46d8ef2Safresh1 /*5_    */  0, 10, 10, 10, 10, 10, 10, 11, 11, 11,  0,  0,  0,  0,  0,  0,
306b46d8ef2Safresh1 /*6_    */  0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
307b46d8ef2Safresh1 /*7_    */ 11, 11, 11, 11,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,
308b46d8ef2Safresh1 /*8_    */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
309b46d8ef2Safresh1 /*9_    */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
310b46d8ef2Safresh1 /*A_    */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  0,  2,  2,
311b46d8ef2Safresh1 /*B_    */  2,  2,  2,  2,  2,  2,  2,  1,  3,  3,  3,  3,  3,  0,  3,  3,
312b46d8ef2Safresh1 /*C_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,
313b46d8ef2Safresh1 /*D_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3, 12,  4,  4,  4,
314b46d8ef2Safresh1 /*E_    */  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4, 13,  5,  5,
315b46d8ef2Safresh1 /*F_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5, 14,  6, 15,  1,  0,
316b46d8ef2Safresh1 /*N0=  0*/  0,  1, 16, 32, 48, 64, 80,  1,  1,  1,  1,  1, 96,112,128,144,
317b46d8ef2Safresh1 /*N1= 16*/  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  1,  1,  1,  1,
318b46d8ef2Safresh1 /*N2= 32*/  1,  1,  1,  1,  1,  1,  1, 16, 16, 16, 16, 16,  1,  1,  1,  1,
319b46d8ef2Safresh1 /*N3= 48*/  1,  1,  1,  1,  1,  1,  1, 32, 32, 32, 32, 32,  1,  1,  1,  1,
320b46d8ef2Safresh1 /*N4= 64*/  1,  1,  1,  1,  1,  1,  1, 48, 48, 48, 48, 48,  1,  1,  1,  1,
321b46d8ef2Safresh1 /*N5= 80*/  1,  1,  1,  1,  1,  1,  1, 64, 64, 64, 64, 64,  1,  1,  1,  1,
322b46d8ef2Safresh1 /*N6= 96*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 32,  1,  1,  1,  1,
323b46d8ef2Safresh1 /*N7=112*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 48, 48,  1,  1,  1,  1,
324b46d8ef2Safresh1 /*N8=128*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 64, 64, 64,  1,  1,  1,  1,
325b46d8ef2Safresh1 /*N9=144*/  1,  1,  1,  1,  1,  1,  1,  1, 80, 80, 80, 80,  1,  1,  1,  1
326b46d8ef2Safresh1 /*          0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 15*/
327b46d8ef2Safresh1 };
328b46d8ef2Safresh1 #  endif
329b46d8ef2Safresh1 
330b46d8ef2Safresh1 
331b46d8ef2Safresh1 /* The table below is adapted from
33256d68f1eSafresh1  *      https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
333b46d8ef2Safresh1  * See copyright notice at the beginning of this file.
334b46d8ef2Safresh1  */
335b46d8ef2Safresh1 
336b46d8ef2Safresh1 #  ifndef DOINIT
337eac174f2Safresh1     EXTCONST U16 PL_strict_utf8_dfa_tab[624];
338b46d8ef2Safresh1 #  else
339eac174f2Safresh1     EXTCONST U16 PL_strict_utf8_dfa_tab[624] = {
340b46d8ef2Safresh1 /*          _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
341b46d8ef2Safresh1 /*0_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
342b46d8ef2Safresh1 /*1_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
343b46d8ef2Safresh1 /*2_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
344b46d8ef2Safresh1 /*3_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
345b46d8ef2Safresh1 /*4_     */  0, 10, 11, 12, 12, 12, 12, 12, 12, 13, 14,  0,  0,  0,  0,  0,
346b46d8ef2Safresh1 /*5_     */  0, 13, 14, 13, 14, 15, 16, 17, 18, 17,  0,  0,  0,  0,  0,  0,
347b46d8ef2Safresh1 /*6_     */  0,  0, 18, 17, 18, 19, 20, 17, 18, 17, 18,  0,  0,  0,  0,  0,
348b46d8ef2Safresh1 /*7_     */ 17, 18, 21, 22,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,
349b46d8ef2Safresh1 /*8_     */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
350b46d8ef2Safresh1 /*9_     */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
351b46d8ef2Safresh1 /*A_     */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  0,  2,  2,
352b46d8ef2Safresh1 /*B_     */  2,  2,  2,  2,  2,  2,  2,  1,  3,  3,  3,  3,  3,  0,  3,  3,
353b46d8ef2Safresh1 /*C_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,
354b46d8ef2Safresh1 /*D_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  8,  6,  4,  5,
355b46d8ef2Safresh1 /*E_     */  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  5,  4,  5,  9,  7,  1,
356b46d8ef2Safresh1 /*F_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  0,
357b46d8ef2Safresh1 /*N0 =  0*/  0,  1, 23, 46, 69,138,115,184, 92,161,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
358b46d8ef2Safresh1 /*N1 = 23*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
359b46d8ef2Safresh1 /*N2 = 46*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
360b46d8ef2Safresh1 /*N3 = 69*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
361b46d8ef2Safresh1 /*N4 = 92*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46,
362b46d8ef2Safresh1 /*N5 =115*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46, 46, 46, 46,  1,  1, 46,207,
363b46d8ef2Safresh1 /*N6 =138*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,276,
364b46d8ef2Safresh1 /*N7 =161*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 69,322, 69,322, 69,322, 69,322, 69,322,
365b46d8ef2Safresh1 /*N8 =184*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 69,322,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
366b46d8ef2Safresh1 /*N9 =207*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 23, 23, 23, 23, 23,230,253, 23, 23, 23, 23, 23,299,
367b46d8ef2Safresh1 /*N10=230*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,
368b46d8ef2Safresh1 /*N11=253*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,
369b46d8ef2Safresh1 /*N12=276*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,299,
370b46d8ef2Safresh1 /*N13=299*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,
37156d68f1eSafresh1 /*N14=322*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,345,
37256d68f1eSafresh1 /*N15=345*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,299
373b46d8ef2Safresh1 /*           0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21 22*/
374b46d8ef2Safresh1 };
375b46d8ef2Safresh1 #  endif
376b46d8ef2Safresh1 
377b46d8ef2Safresh1 
378b46d8ef2Safresh1 /* The table below is adapted from
37956d68f1eSafresh1  *      https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
380b46d8ef2Safresh1  * See copyright notice at the beginning of this file.
381b46d8ef2Safresh1  */
382b46d8ef2Safresh1 
383b46d8ef2Safresh1 #  ifndef DOINIT
384eac174f2Safresh1     EXTCONST U8 PL_c9_utf8_dfa_tab[368];
385b46d8ef2Safresh1 #  else
386eac174f2Safresh1     EXTCONST U8 PL_c9_utf8_dfa_tab[368] = {
387b46d8ef2Safresh1 /*        _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
388b46d8ef2Safresh1 /*0_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
389b46d8ef2Safresh1 /*1_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
390b46d8ef2Safresh1 /*2_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
391b46d8ef2Safresh1 /*3_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
392b46d8ef2Safresh1 /*4_   */  0,  9,  9, 10, 10, 10, 10, 10, 10, 11, 11,  0,  0,  0,  0,  0,
393b46d8ef2Safresh1 /*5_   */  0, 11, 11, 11, 11, 11, 11, 12, 12, 12,  0,  0,  0,  0,  0,  0,
394b46d8ef2Safresh1 /*6_   */  0,  0, 12, 12, 12, 13, 13, 12, 12, 12, 12,  0,  0,  0,  0,  0,
395b46d8ef2Safresh1 /*7_   */ 12, 12, 12, 12,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,
396b46d8ef2Safresh1 /*8_   */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
397b46d8ef2Safresh1 /*9_   */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
398b46d8ef2Safresh1 /*A_   */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  0,  2,  2,
399b46d8ef2Safresh1 /*B_   */  2,  2,  2,  2,  2,  2,  2,  1,  3,  3,  3,  3,  3,  0,  3,  3,
400b46d8ef2Safresh1 /*C_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,
401b46d8ef2Safresh1 /*D_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  6,  5,  4,  4,
402b46d8ef2Safresh1 /*E_   */  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  8,  7,  1,
403b46d8ef2Safresh1 /*F_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  0,
404b46d8ef2Safresh1 /*N0= 0*/  0,  1, 14, 28, 42, 70, 56, 98, 84,  1,  1,  1,  1,  1,
405b46d8ef2Safresh1 /*N1=14*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,
406b46d8ef2Safresh1 /*N2=28*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 14, 14, 14, 14, 14,
407b46d8ef2Safresh1 /*N3=42*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 28, 28, 28, 28, 28,
408b46d8ef2Safresh1 /*N4=56*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 28, 28,
409b46d8ef2Safresh1 /*N5=70*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 28, 28, 28, 28,  1,
410b46d8ef2Safresh1 /*N6=84*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 42, 42, 42,
411b46d8ef2Safresh1 /*N7=98*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 42,  1,  1,  1,  1
412b46d8ef2Safresh1 /*         0   1   2   3   4   5   6   7   8   9  10  11  12 13*/
413b46d8ef2Safresh1 };
414b46d8ef2Safresh1 #  endif
415b8851fccSafresh1 
416b8851fccSafresh1 #endif	/* EBCDIC 1047 */
417b8851fccSafresh1 
418b8851fccSafresh1 #if 'A' == 193 /* EBCDIC 037 */ \
419b8851fccSafresh1      && '\\' == 224 && '[' == 186 && ']' == 187 && '{' == 192 && '}' == 208 \
420b8851fccSafresh1      && '^' == 176 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
421b46d8ef2Safresh1      && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
422b8851fccSafresh1 
423b8851fccSafresh1 /* Index is ASCII platform code point; value is EBCDIC 037 equivalent */
424b46d8ef2Safresh1 #  ifndef DOINIT
425eac174f2Safresh1     EXTCONST U8 PL_a2e[256];
426b46d8ef2Safresh1 #  else
427eac174f2Safresh1     EXTCONST U8 PL_a2e[256] = {
428b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
429b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x25,0x0B,0x0C,0x0D,0x0E,0x0F,
430b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F,
431b46d8ef2Safresh1 /*2_*/0x40,0x5A,0x7F,0x7B,0x5B,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61,
432b46d8ef2Safresh1 /*3_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F,
433b46d8ef2Safresh1 /*4_*/0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,
434b46d8ef2Safresh1 /*5_*/0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xBA,0xE0,0xBB,0xB0,0x6D,
435b46d8ef2Safresh1 /*6_*/0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,
436b46d8ef2Safresh1 /*7_*/0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xC0,0x4F,0xD0,0xA1,0x07,
437b46d8ef2Safresh1 /*8_*/0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,
438b46d8ef2Safresh1 /*9_*/0x30,0x31,0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,
439b46d8ef2Safresh1 /*A_*/0x41,0xAA,0x4A,0xB1,0x9F,0xB2,0x6A,0xB5,0xBD,0xB4,0x9A,0x8A,0x5F,0xCA,0xAF,0xBC,
440b46d8ef2Safresh1 /*B_*/0x90,0x8F,0xEA,0xFA,0xBE,0xA0,0xB6,0xB3,0x9D,0xDA,0x9B,0x8B,0xB7,0xB8,0xB9,0xAB,
441b46d8ef2Safresh1 /*C_*/0x64,0x65,0x62,0x66,0x63,0x67,0x9E,0x68,0x74,0x71,0x72,0x73,0x78,0x75,0x76,0x77,
442b46d8ef2Safresh1 /*D_*/0xAC,0x69,0xED,0xEE,0xEB,0xEF,0xEC,0xBF,0x80,0xFD,0xFE,0xFB,0xFC,0xAD,0xAE,0x59,
443b46d8ef2Safresh1 /*E_*/0x44,0x45,0x42,0x46,0x43,0x47,0x9C,0x48,0x54,0x51,0x52,0x53,0x58,0x55,0x56,0x57,
444b46d8ef2Safresh1 /*F_*/0x8C,0x49,0xCD,0xCE,0xCB,0xCF,0xCC,0xE1,0x70,0xDD,0xDE,0xDB,0xDC,0x8D,0x8E,0xDF
445b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
446b8851fccSafresh1 };
447b46d8ef2Safresh1 #  endif
448b8851fccSafresh1 
449b8851fccSafresh1 /* Index is EBCDIC 037 code point; value is ASCII platform equivalent */
450b46d8ef2Safresh1 #  ifndef DOINIT
451eac174f2Safresh1     EXTCONST U8 PL_e2a[256];
452b46d8ef2Safresh1 #  else
453eac174f2Safresh1     EXTCONST U8 PL_e2a[256] = {
454b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
455b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F,
456b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x9D,0x85,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F,
457b46d8ef2Safresh1 /*2_*/0x80,0x81,0x82,0x83,0x84,0x0A,0x17,0x1B,0x88,0x89,0x8A,0x8B,0x8C,0x05,0x06,0x07,
458b46d8ef2Safresh1 /*3_*/0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9A,0x9B,0x14,0x15,0x9E,0x1A,
459b46d8ef2Safresh1 /*4_*/0x20,0xA0,0xE2,0xE4,0xE0,0xE1,0xE3,0xE5,0xE7,0xF1,0xA2,0x2E,0x3C,0x28,0x2B,0x7C,
460b46d8ef2Safresh1 /*5_*/0x26,0xE9,0xEA,0xEB,0xE8,0xED,0xEE,0xEF,0xEC,0xDF,0x21,0x24,0x2A,0x29,0x3B,0xAC,
461b46d8ef2Safresh1 /*6_*/0x2D,0x2F,0xC2,0xC4,0xC0,0xC1,0xC3,0xC5,0xC7,0xD1,0xA6,0x2C,0x25,0x5F,0x3E,0x3F,
462b46d8ef2Safresh1 /*7_*/0xF8,0xC9,0xCA,0xCB,0xC8,0xCD,0xCE,0xCF,0xCC,0x60,0x3A,0x23,0x40,0x27,0x3D,0x22,
463b46d8ef2Safresh1 /*8_*/0xD8,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xAB,0xBB,0xF0,0xFD,0xFE,0xB1,
464b46d8ef2Safresh1 /*9_*/0xB0,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0xAA,0xBA,0xE6,0xB8,0xC6,0xA4,
465b46d8ef2Safresh1 /*A_*/0xB5,0x7E,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0xA1,0xBF,0xD0,0xDD,0xDE,0xAE,
466b46d8ef2Safresh1 /*B_*/0x5E,0xA3,0xA5,0xB7,0xA9,0xA7,0xB6,0xBC,0xBD,0xBE,0x5B,0x5D,0xAF,0xA8,0xB4,0xD7,
467b46d8ef2Safresh1 /*C_*/0x7B,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xAD,0xF4,0xF6,0xF2,0xF3,0xF5,
468b46d8ef2Safresh1 /*D_*/0x7D,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0xB9,0xFB,0xFC,0xF9,0xFA,0xFF,
469b46d8ef2Safresh1 /*E_*/0x5C,0xF7,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0xB2,0xD4,0xD6,0xD2,0xD3,0xD5,
470b46d8ef2Safresh1 /*F_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xB3,0xDB,0xDC,0xD9,0xDA,0x9F
471b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
472b8851fccSafresh1 };
473b46d8ef2Safresh1 #  endif
474b8851fccSafresh1 
475b8851fccSafresh1 /* (Confusingly named) Index is EBCDIC 037 I8 byte; value is
476b8851fccSafresh1  * EBCDIC 037 UTF-EBCDIC equivalent */
477b46d8ef2Safresh1 #  ifndef DOINIT
478eac174f2Safresh1     EXTCONST U8 PL_utf2e[256];
479b46d8ef2Safresh1 #  else
480eac174f2Safresh1     EXTCONST U8 PL_utf2e[256] = {
481b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
482b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x25,0x0B,0x0C,0x0D,0x0E,0x0F,
483b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F,
484b46d8ef2Safresh1 /*2_*/0x40,0x5A,0x7F,0x7B,0x5B,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61,
485b46d8ef2Safresh1 /*3_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F,
486b46d8ef2Safresh1 /*4_*/0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,
487b46d8ef2Safresh1 /*5_*/0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xBA,0xE0,0xBB,0xB0,0x6D,
488b46d8ef2Safresh1 /*6_*/0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,
489b46d8ef2Safresh1 /*7_*/0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xC0,0x4F,0xD0,0xA1,0x07,
490b46d8ef2Safresh1 /*8_*/0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,
491b46d8ef2Safresh1 /*9_*/0x30,0x31,0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,
492b46d8ef2Safresh1 /*A_*/0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x51,0x52,0x53,0x54,0x55,0x56,
493b46d8ef2Safresh1 /*B_*/0x57,0x58,0x59,0x5F,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x70,0x71,0x72,
494b46d8ef2Safresh1 /*C_*/0x73,0x74,0x75,0x76,0x77,0x78,0x80,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x9A,0x9B,
495b46d8ef2Safresh1 /*D_*/0x9C,0x9D,0x9E,0x9F,0xA0,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB1,0xB2,0xB3,0xB4,0xB5,
496b46d8ef2Safresh1 /*E_*/0xB6,0xB7,0xB8,0xB9,0xBC,0xBD,0xBE,0xBF,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xDA,0xDB,
497b46d8ef2Safresh1 /*F_*/0xDC,0xDD,0xDE,0xDF,0xE1,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xFA,0xFB,0xFC,0xFD,0xFE
498b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
499b8851fccSafresh1 };
500b46d8ef2Safresh1 #  endif
501b8851fccSafresh1 
502b8851fccSafresh1 /* (Confusingly named) Index is EBCDIC 037 UTF-EBCDIC byte; value is
503b8851fccSafresh1  * EBCDIC 037 I8 equivalent */
504b46d8ef2Safresh1 #  ifndef DOINIT
505eac174f2Safresh1     EXTCONST U8 PL_e2utf[256];
506b46d8ef2Safresh1 #  else
507eac174f2Safresh1     EXTCONST U8 PL_e2utf[256] = {
508b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
509b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F,
510b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x9D,0x85,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F,
511b46d8ef2Safresh1 /*2_*/0x80,0x81,0x82,0x83,0x84,0x0A,0x17,0x1B,0x88,0x89,0x8A,0x8B,0x8C,0x05,0x06,0x07,
512b46d8ef2Safresh1 /*3_*/0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9A,0x9B,0x14,0x15,0x9E,0x1A,
513b46d8ef2Safresh1 /*4_*/0x20,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0x2E,0x3C,0x28,0x2B,0x7C,
514b46d8ef2Safresh1 /*5_*/0x26,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0x21,0x24,0x2A,0x29,0x3B,0xB3,
515b46d8ef2Safresh1 /*6_*/0x2D,0x2F,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0x2C,0x25,0x5F,0x3E,0x3F,
516b46d8ef2Safresh1 /*7_*/0xBD,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0x60,0x3A,0x23,0x40,0x27,0x3D,0x22,
517b46d8ef2Safresh1 /*8_*/0xC6,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,
518b46d8ef2Safresh1 /*9_*/0xCD,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,
519b46d8ef2Safresh1 /*A_*/0xD4,0x7E,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,
520b46d8ef2Safresh1 /*B_*/0x5E,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0x5B,0x5D,0xE4,0xE5,0xE6,0xE7,
521b46d8ef2Safresh1 /*C_*/0x7B,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,
522b46d8ef2Safresh1 /*D_*/0x7D,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,
523b46d8ef2Safresh1 /*E_*/0x5C,0xF4,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,
524b46d8ef2Safresh1 /*F_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xFB,0xFC,0xFD,0xFE,0xFF,0x9F
525b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
526b8851fccSafresh1 };
527b46d8ef2Safresh1 #  endif
528b8851fccSafresh1 
529b46d8ef2Safresh1 /* Index is EBCDIC 037 UTF-EBCDIC byte; value is UTF8SKIP for start bytes
530b46d8ef2Safresh1  * (including for overlongs); 1 for continuation.  Adapted from the shadow
531b46d8ef2Safresh1  * flags table in tr16.  The entries marked 9 in tr16 are continuation bytes
532b46d8ef2Safresh1  * and are marked as length 1 here so that we can recover. */
533b46d8ef2Safresh1 #  ifndef DOINIT
534eac174f2Safresh1     EXTCONST U8 PL_utf8skip[256];
535b46d8ef2Safresh1 #  else
536eac174f2Safresh1     EXTCONST U8 PL_utf8skip[256] = {
537b46d8ef2Safresh1 /*     _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
538b46d8ef2Safresh1 /*0_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
539b46d8ef2Safresh1 /*1_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
540b46d8ef2Safresh1 /*2_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
541b46d8ef2Safresh1 /*3_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
542b46d8ef2Safresh1 /*4_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
543b46d8ef2Safresh1 /*5_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
544b46d8ef2Safresh1 /*6_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
545b46d8ef2Safresh1 /*7_*/  1,  1,  1,  2,  2,  2,  2,  2,  2,  1,  1,  1,  1,  1,  1,  1,
546b46d8ef2Safresh1 /*8_*/  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,
547b46d8ef2Safresh1 /*9_*/  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,
548b46d8ef2Safresh1 /*A_*/  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,
549b46d8ef2Safresh1 /*B_*/  1,  2,  2,  2,  2,  2,  3,  3,  3,  3,  1,  1,  3,  3,  3,  3,
550b46d8ef2Safresh1 /*C_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  3,  3,  3,  3,  3,
551b46d8ef2Safresh1 /*D_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  3,  4,  4,  4,  4,
552b46d8ef2Safresh1 /*E_*/  1,  4,  1,  1,  1,  1,  1,  1,  1,  1,  4,  4,  4,  5,  5,  5,
553b46d8ef2Safresh1 /*F_*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  5,  6,  6,  7, 14,  1
554b46d8ef2Safresh1 /*     _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
555b8851fccSafresh1 };
556b46d8ef2Safresh1 #  endif
557b8851fccSafresh1 
558b8851fccSafresh1 /* Index is EBCDIC 037 code point; value is its lowercase equivalent */
559b46d8ef2Safresh1 #  ifndef DOINIT
560eac174f2Safresh1     EXTCONST U8 PL_latin1_lc[256];
561b46d8ef2Safresh1 #  else
562eac174f2Safresh1     EXTCONST U8 PL_latin1_lc[256] = {
563b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
564b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
565b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
566b46d8ef2Safresh1 /*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
567b46d8ef2Safresh1 /*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
568b46d8ef2Safresh1 /*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
569b46d8ef2Safresh1 /*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
570b46d8ef2Safresh1 /*6_*/0x60,0x61,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
571b46d8ef2Safresh1 /*7_*/0x70,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
572b46d8ef2Safresh1 /*8_*/0x70,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
573b46d8ef2Safresh1 /*9_*/0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9C,0x9F,
574b46d8ef2Safresh1 /*A_*/0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0x8C,0x8D,0x8E,0xAF,
575b46d8ef2Safresh1 /*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
576b46d8ef2Safresh1 /*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
577b46d8ef2Safresh1 /*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
578b46d8ef2Safresh1 /*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xCB,0xCC,0xCD,0xCE,0xCF,
579b46d8ef2Safresh1 /*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xDB,0xDC,0xDD,0xDE,0xFF
580b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
581b8851fccSafresh1 };
582b46d8ef2Safresh1 #  endif
583b8851fccSafresh1 
584b8851fccSafresh1 /* Index is EBCDIC 037 code point; value is its uppercase equivalent.
585b8851fccSafresh1  * The 'mod' in the name means that codepoints whose uppercase is above 255 or
586b8851fccSafresh1  * longer than 1 character map to LATIN SMALL LETTER Y WITH DIARESIS */
587b46d8ef2Safresh1 #  ifndef DOINIT
588eac174f2Safresh1     EXTCONST U8 PL_mod_latin1_uc[256];
589b46d8ef2Safresh1 #  else
590eac174f2Safresh1     EXTCONST U8 PL_mod_latin1_uc[256] = {
591b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
592b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
593b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
594b46d8ef2Safresh1 /*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
595b46d8ef2Safresh1 /*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
596b46d8ef2Safresh1 /*4_*/0x40,0x41,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
597b46d8ef2Safresh1 /*5_*/0x50,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0xDF,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
598b46d8ef2Safresh1 /*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
599b46d8ef2Safresh1 /*7_*/0x80,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
600b46d8ef2Safresh1 /*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0xAC,0xAD,0xAE,0x8F,
601b46d8ef2Safresh1 /*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9E,0x9D,0x9E,0x9F,
602b46d8ef2Safresh1 /*A_*/0xDF,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
603b46d8ef2Safresh1 /*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
604b46d8ef2Safresh1 /*C_*/0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xEB,0xEC,0xED,0xEE,0xEF,
605b46d8ef2Safresh1 /*D_*/0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xFB,0xFC,0xFD,0xFE,0xDF,
606b46d8ef2Safresh1 /*E_*/0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
607b46d8ef2Safresh1 /*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
608b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
609b8851fccSafresh1 };
610b46d8ef2Safresh1 #  endif
611b8851fccSafresh1 
612b8851fccSafresh1 /* Index is EBCDIC 037 code point; For A-Z, value is a-z; for a-z, value
613b8851fccSafresh1  * is A-Z; all other code points map to themselves */
614b46d8ef2Safresh1 #  ifndef DOINIT
615eac174f2Safresh1     EXTCONST U8 PL_fold[256];
616b46d8ef2Safresh1 #  else
617eac174f2Safresh1     EXTCONST U8 PL_fold[256] = {
618eac174f2Safresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
619eac174f2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
620eac174f2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
621eac174f2Safresh1 /*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
622eac174f2Safresh1 /*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
623eac174f2Safresh1 /*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
624eac174f2Safresh1 /*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
625eac174f2Safresh1 /*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
626eac174f2Safresh1 /*7_*/0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
627eac174f2Safresh1 /*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
628eac174f2Safresh1 /*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
629eac174f2Safresh1 /*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
630eac174f2Safresh1 /*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
631eac174f2Safresh1 /*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
632eac174f2Safresh1 /*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
633eac174f2Safresh1 /*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
634eac174f2Safresh1 /*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
635eac174f2Safresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
636eac174f2Safresh1 };
637eac174f2Safresh1 #  endif
638eac174f2Safresh1 
639b8851fccSafresh1 /* Index is EBCDIC 037 code point; value is its other fold-pair equivalent
640b8851fccSafresh1  * (A => a; a => A, etc) in the 0-255 range.  If no such equivalent, value is
641b8851fccSafresh1  * the code point itself */
642b46d8ef2Safresh1 #  ifndef DOINIT
643eac174f2Safresh1     EXTCONST U8 PL_fold_latin1[256];
644b46d8ef2Safresh1 #  else
645eac174f2Safresh1     EXTCONST U8 PL_fold_latin1[256] = {
646b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
647b46d8ef2Safresh1 /*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
648b46d8ef2Safresh1 /*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
649b46d8ef2Safresh1 /*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
650b46d8ef2Safresh1 /*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
651b46d8ef2Safresh1 /*4_*/0x40,0x41,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
652b46d8ef2Safresh1 /*5_*/0x50,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
653b46d8ef2Safresh1 /*6_*/0x60,0x61,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
654b46d8ef2Safresh1 /*7_*/0x80,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
655b46d8ef2Safresh1 /*8_*/0x70,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0xAC,0xAD,0xAE,0x8F,
656b46d8ef2Safresh1 /*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9E,0x9D,0x9C,0x9F,
657b46d8ef2Safresh1 /*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0x8C,0x8D,0x8E,0xAF,
658b46d8ef2Safresh1 /*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
659b46d8ef2Safresh1 /*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xEB,0xEC,0xED,0xEE,0xEF,
660b46d8ef2Safresh1 /*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xFB,0xFC,0xFD,0xFE,0xDF,
661b46d8ef2Safresh1 /*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xCB,0xCC,0xCD,0xCE,0xCF,
662b46d8ef2Safresh1 /*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xDB,0xDC,0xDD,0xDE,0xFF
663b8851fccSafresh1 /*      _0   _1   _2   _3   _4   _5   _6   _7   _8   _9   _A   _B   _C   _D   _E  _F*/
664b8851fccSafresh1 };
665b46d8ef2Safresh1 #  endif
666b46d8ef2Safresh1 
667b46d8ef2Safresh1 
668b46d8ef2Safresh1 /* The table below is adapted from
66956d68f1eSafresh1  *      https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
670b46d8ef2Safresh1  * See copyright notice at the beginning of this file.
671b46d8ef2Safresh1  */
672b46d8ef2Safresh1 
673b46d8ef2Safresh1 #  ifndef DOINIT
674eac174f2Safresh1     EXTCONST U8 PL_extended_utf8_dfa_tab[416];
675b46d8ef2Safresh1 #  else
676eac174f2Safresh1     EXTCONST U8 PL_extended_utf8_dfa_tab[416] = {
677b46d8ef2Safresh1 /*         _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
678b46d8ef2Safresh1 /*0_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
679b46d8ef2Safresh1 /*1_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
680b46d8ef2Safresh1 /*2_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
681b46d8ef2Safresh1 /*3_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
682b46d8ef2Safresh1 /*4_    */  0,  7,  7,  8,  8,  9,  9,  9,  9, 10, 10,  0,  0,  0,  0,  0,
683b46d8ef2Safresh1 /*5_    */  0, 10, 10, 10, 10, 10, 10, 11, 11, 11,  0,  0,  0,  0,  0, 11,
684b46d8ef2Safresh1 /*6_    */  0,  0, 11, 11, 11, 11, 11, 11, 11, 11, 11,  0,  0,  0,  0,  0,
685b46d8ef2Safresh1 /*7_    */ 11, 11, 11,  1,  1,  1,  1,  1,  2,  0,  0,  0,  0,  0,  0,  0,
686b46d8ef2Safresh1 /*8_    */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
687b46d8ef2Safresh1 /*9_    */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
688b46d8ef2Safresh1 /*A_    */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
689b46d8ef2Safresh1 /*B_    */  0,  2,  2,  2,  2,  2,  1,  3,  3,  3,  0,  0,  3,  3,  3,  3,
690b46d8ef2Safresh1 /*C_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,
691b46d8ef2Safresh1 /*D_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3, 12,  4,  4,  4,
692b46d8ef2Safresh1 /*E_    */  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4, 13,  5,  5,
693b46d8ef2Safresh1 /*F_    */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5, 14,  6, 15,  1,  0,
694b46d8ef2Safresh1 /*N0=  0*/  0,  1, 16, 32, 48, 64, 80,  1,  1,  1,  1,  1, 96,112,128,144,
695b46d8ef2Safresh1 /*N1= 16*/  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  1,  1,  1,  1,
696b46d8ef2Safresh1 /*N2= 32*/  1,  1,  1,  1,  1,  1,  1, 16, 16, 16, 16, 16,  1,  1,  1,  1,
697b46d8ef2Safresh1 /*N3= 48*/  1,  1,  1,  1,  1,  1,  1, 32, 32, 32, 32, 32,  1,  1,  1,  1,
698b46d8ef2Safresh1 /*N4= 64*/  1,  1,  1,  1,  1,  1,  1, 48, 48, 48, 48, 48,  1,  1,  1,  1,
699b46d8ef2Safresh1 /*N5= 80*/  1,  1,  1,  1,  1,  1,  1, 64, 64, 64, 64, 64,  1,  1,  1,  1,
700b46d8ef2Safresh1 /*N6= 96*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 32,  1,  1,  1,  1,
701b46d8ef2Safresh1 /*N7=112*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 48, 48,  1,  1,  1,  1,
702b46d8ef2Safresh1 /*N8=128*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 64, 64, 64,  1,  1,  1,  1,
703b46d8ef2Safresh1 /*N9=144*/  1,  1,  1,  1,  1,  1,  1,  1, 80, 80, 80, 80,  1,  1,  1,  1
704b46d8ef2Safresh1 /*          0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 15*/
705b46d8ef2Safresh1 };
706b46d8ef2Safresh1 #  endif
707b46d8ef2Safresh1 
708b46d8ef2Safresh1 
709b46d8ef2Safresh1 /* The table below is adapted from
71056d68f1eSafresh1  *      https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
711b46d8ef2Safresh1  * See copyright notice at the beginning of this file.
712b46d8ef2Safresh1  */
713b46d8ef2Safresh1 
714b46d8ef2Safresh1 #  ifndef DOINIT
715eac174f2Safresh1     EXTCONST U16 PL_strict_utf8_dfa_tab[624];
716b46d8ef2Safresh1 #  else
717eac174f2Safresh1     EXTCONST U16 PL_strict_utf8_dfa_tab[624] = {
718b46d8ef2Safresh1 /*          _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
719b46d8ef2Safresh1 /*0_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
720b46d8ef2Safresh1 /*1_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
721b46d8ef2Safresh1 /*2_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
722b46d8ef2Safresh1 /*3_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
723b46d8ef2Safresh1 /*4_     */  0, 10, 11, 12, 12, 12, 12, 12, 12, 13, 14,  0,  0,  0,  0,  0,
724b46d8ef2Safresh1 /*5_     */  0, 13, 14, 13, 14, 15, 16, 17, 18, 17,  0,  0,  0,  0,  0, 18,
725b46d8ef2Safresh1 /*6_     */  0,  0, 17, 18, 19, 20, 17, 18, 17, 18, 17,  0,  0,  0,  0,  0,
726b46d8ef2Safresh1 /*7_     */ 18, 21, 22,  1,  1,  1,  1,  1,  2,  0,  0,  0,  0,  0,  0,  0,
727b46d8ef2Safresh1 /*8_     */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
728b46d8ef2Safresh1 /*9_     */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
729b46d8ef2Safresh1 /*A_     */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
730b46d8ef2Safresh1 /*B_     */  0,  2,  2,  2,  2,  2,  1,  3,  3,  3,  0,  0,  3,  3,  3,  3,
731b46d8ef2Safresh1 /*C_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,
732b46d8ef2Safresh1 /*D_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  8,  6,  4,  5,
733b46d8ef2Safresh1 /*E_     */  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  5,  4,  5,  9,  7,  1,
734b46d8ef2Safresh1 /*F_     */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  0,
735b46d8ef2Safresh1 /*N0 =  0*/  0,  1, 23, 46, 69,138,115,184, 92,161,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
736b46d8ef2Safresh1 /*N1 = 23*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
737b46d8ef2Safresh1 /*N2 = 46*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
738b46d8ef2Safresh1 /*N3 = 69*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
739b46d8ef2Safresh1 /*N4 = 92*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46,
740b46d8ef2Safresh1 /*N5 =115*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46, 46, 46, 46,  1,  1, 46,207,
741b46d8ef2Safresh1 /*N6 =138*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,276,
742b46d8ef2Safresh1 /*N7 =161*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 69,322, 69,322, 69,322, 69,322, 69,322,
743b46d8ef2Safresh1 /*N8 =184*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 69,322,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
744b46d8ef2Safresh1 /*N9 =207*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 23, 23, 23, 23, 23,230,253, 23, 23, 23, 23, 23,299,
745b46d8ef2Safresh1 /*N10=230*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,
746b46d8ef2Safresh1 /*N11=253*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,
747b46d8ef2Safresh1 /*N12=276*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,299,
748b46d8ef2Safresh1 /*N13=299*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,
74956d68f1eSafresh1 /*N14=322*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,345,
75056d68f1eSafresh1 /*N15=345*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,299
751b46d8ef2Safresh1 /*           0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21 22*/
752b46d8ef2Safresh1 };
753b46d8ef2Safresh1 #  endif
754b46d8ef2Safresh1 
755b46d8ef2Safresh1 
756b46d8ef2Safresh1 /* The table below is adapted from
75756d68f1eSafresh1  *      https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
758b46d8ef2Safresh1  * See copyright notice at the beginning of this file.
759b46d8ef2Safresh1  */
760b46d8ef2Safresh1 
761b46d8ef2Safresh1 #  ifndef DOINIT
762eac174f2Safresh1     EXTCONST U8 PL_c9_utf8_dfa_tab[368];
763b46d8ef2Safresh1 #  else
764eac174f2Safresh1     EXTCONST U8 PL_c9_utf8_dfa_tab[368] = {
765b46d8ef2Safresh1 /*        _0  _1  _2  _3  _4  _5  _6  _7  _8  _9  _A  _B  _C  _D  _E _F*/
766b46d8ef2Safresh1 /*0_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
767b46d8ef2Safresh1 /*1_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
768b46d8ef2Safresh1 /*2_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
769b46d8ef2Safresh1 /*3_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
770b46d8ef2Safresh1 /*4_   */  0,  9,  9, 10, 10, 10, 10, 10, 10, 11, 11,  0,  0,  0,  0,  0,
771b46d8ef2Safresh1 /*5_   */  0, 11, 11, 11, 11, 11, 11, 12, 12, 12,  0,  0,  0,  0,  0, 12,
772b46d8ef2Safresh1 /*6_   */  0,  0, 12, 12, 13, 13, 12, 12, 12, 12, 12,  0,  0,  0,  0,  0,
773b46d8ef2Safresh1 /*7_   */ 12, 12, 12,  1,  1,  1,  1,  1,  2,  0,  0,  0,  0,  0,  0,  0,
774b46d8ef2Safresh1 /*8_   */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
775b46d8ef2Safresh1 /*9_   */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
776b46d8ef2Safresh1 /*A_   */  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  2,  2,
777b46d8ef2Safresh1 /*B_   */  0,  2,  2,  2,  2,  2,  1,  3,  3,  3,  0,  0,  3,  3,  3,  3,
778b46d8ef2Safresh1 /*C_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  3,  3,  3,  3,
779b46d8ef2Safresh1 /*D_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  6,  5,  4,  4,
780b46d8ef2Safresh1 /*E_   */  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  4,  8,  7,  1,
781b46d8ef2Safresh1 /*F_   */  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  0,
782b46d8ef2Safresh1 /*N0= 0*/  0,  1, 14, 28, 42, 70, 56, 98, 84,  1,  1,  1,  1,  1,
783b46d8ef2Safresh1 /*N1=14*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0,
784b46d8ef2Safresh1 /*N2=28*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 14, 14, 14, 14, 14,
785b46d8ef2Safresh1 /*N3=42*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 28, 28, 28, 28, 28,
786b46d8ef2Safresh1 /*N4=56*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 28, 28,
787b46d8ef2Safresh1 /*N5=70*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 28, 28, 28, 28,  1,
788b46d8ef2Safresh1 /*N6=84*/  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 42, 42, 42,
789b46d8ef2Safresh1 /*N7=98*/  1,  1,  1,  1,  1,  1,  1,  1,  1, 42,  1,  1,  1,  1
790b46d8ef2Safresh1 /*         0   1   2   3   4   5   6   7   8   9  10  11  12 13*/
791b46d8ef2Safresh1 };
792b46d8ef2Safresh1 #  endif
793b8851fccSafresh1 
794b8851fccSafresh1 #endif	/* EBCDIC 037 */
795b8851fccSafresh1 
7965759b3d2Safresh1 #endif /* PERL_EBCDIC_TABLES_H_ */
797b8851fccSafresh1 
798*e0680481Safresh1 /* ex: set ro ft=c: */
799