• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2017 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 /*****************************************************************************************
8  ******************** This file was generated by sksllex. Do not edit. *******************
9  *****************************************************************************************/
10 #include "src/sksl/SkSLLexer.h"
11 
12 namespace SkSL {
13 
14 using State = uint16_t;
15 static constexpr uint8_t kInvalidChar = 18;
16 static constexpr int8_t kMappings[118] = {
17         1,  2,  3,  3,  1,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
18         3,  3,  3,  1,  4,  3,  5,  6,  7,  8,  3,  9,  10, 11, 12, 13, 14, 15, 16, 17,
19         18, 19, 20, 21, 22, 22, 22, 23, 23, 24, 25, 26, 27, 28, 29, 3,  30, 30, 31, 32,
20         33, 30, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 36, 34, 37, 34, 34, 38,
21         34, 34, 39, 3,  40, 41, 42, 3,  43, 44, 45, 46, 47, 48, 49, 50, 51, 34, 52, 53,
22         54, 55, 56, 57, 34, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70};
23 using IndexEntry = int16_t;
24 struct FullEntry {
25     State data[71];
26 };
27 struct CompactEntry {
28     uint32_t values;
29     uint8_t data[18];
30 };
31 static constexpr FullEntry kFull[] = {
32         {
33                 0,   2,   3,   4,   5,   7,   9,   23,  25,  28,  29,  30,  32,  35,  36,
34                 39,  44,  50,  69,  69,  69,  69,  69,  69,  71,  72,  73,  77,  79,  83,
35                 84,  84,  84,  84,  84,  84,  84,  84,  84,  86,  87,  88,  84,  91,  104,
36                 114, 130, 150, 162, 178, 183, 191, 84,  215, 225, 232, 258, 263, 279, 291,
37                 345, 362, 378, 390, 84,  84,  84,  411, 412, 415, 416,
38         },
39         {
40                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  51, 0,  59, 59, 59, 59, 59, 59, 60,
41                 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 66, 67, 0,  0,  0,  0,  0,  0,  0,  0,  61,
42                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 66, 0,  0,  67, 0,  0,  0,  0,  0,  0,
43         },
44         {
45                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0, 51, 0, 59, 59, 59, 59, 59, 59, 60,
46                 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 65, 0, 0,  0, 0,  0,  0,  0,  0,  0,  61,
47                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 65, 0, 0,  0, 0,  0,  0,  0,  0,  0,
48         },
49         {
50                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0, 51, 0, 60, 60, 60, 60, 60, 60, 60,
51                 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 64, 0, 0,  0, 0,  0,  0,  0,  0,  0,  61,
52                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 64, 0, 0,  0, 0,  0,  0,  0,  0,  0,
53         },
54         {
55                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0, 51, 0, 70, 70, 70, 70, 70, 70, 70,
56                 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 66, 0, 0,  0, 0,  0,  0,  0,  0,  0,  61,
57                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 66, 0, 0,  0, 0,  0,  0,  0,  0,  0,
58         },
59         {
60                 0,  0,  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  85,
61                 85, 85, 85,  85, 85, 85, 0,  0,   0,  0,  0,  0,  85, 85, 85, 85, 85, 85,
62                 85, 85, 85,  0,  0,  0,  85, 115, 85, 85, 85, 85, 85, 85, 85, 85, 85, 118,
63                 85, 85, 121, 85, 85, 85, 85, 85,  85, 85, 85, 85, 85, 0,  0,  0,  0,
64         },
65         {
66                 0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,   0,  0,  0,  0,   0,  85,
67                 85, 85, 85,  85, 85, 85, 0,  0,  0,   0,  0,  0,   85, 85, 85, 85,  85, 85,
68                 85, 85, 85,  0,  0,  0,  85, 85, 85,  85, 85, 131, 85, 85, 85, 137, 85, 85,
69                 85, 85, 143, 85, 85, 85, 85, 85, 147, 85, 85, 85,  85, 0,  0,  0,   0,
70         },
71         {
72                 0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  85,
73                 85, 85,  85, 85, 85, 85, 0,  0,  0,  0,  0,   0,  85, 85, 85, 85, 85, 85,
74                 85, 85,  85, 0,  0,  0,  85, 85, 85, 85, 85,  85, 85, 85, 85, 85, 85, 151,
75                 85, 154, 85, 85, 85, 85, 85, 85, 85, 85, 156, 85, 85, 0,  0,  0,  0,
76         },
77         {
78                 0,  0,  0,   0,  0,  0,  0,  0,   0,   0,  0,  0,  0,  0,  0,  0,   0,  85,
79                 85, 85, 85,  85, 85, 85, 0,  0,   0,   0,  0,  0,  85, 85, 85, 85,  85, 85,
80                 85, 85, 85,  0,  0,  0,  85, 163, 85,  85, 85, 85, 85, 85, 85, 167, 85, 170,
81                 85, 85, 173, 85, 85, 85, 85, 85,  175, 85, 85, 85, 85, 0,  0,  0,   0,
82         },
83         {
84                 0,  0,  0,   0,   0,  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  85,
85                 85, 85, 85,  85,  85, 85, 0,   0,  0,   0,  0,  0,  85, 85, 85, 85, 85, 85,
86                 85, 85, 85,  0,   0,  0,  85,  85, 85,  85, 85, 85, 85, 85, 85, 85, 85, 194,
87                 85, 85, 198, 201, 85, 85, 203, 85, 209, 85, 85, 85, 85, 0,  0,  0,  0,
88         },
89         {
90                 0,  0,  0,  0,  0,   0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  85,
91                 85, 85, 85, 85, 85,  85, 0,  0,   0,  0,  0,  0,  85, 85, 85, 85, 85, 85,
92                 85, 85, 85, 0,  0,   0,  85, 264, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
93                 85, 85, 85, 85, 268, 85, 85, 275, 85, 85, 85, 85, 85, 0,  0,  0,  0,
94         },
95         {
96                 0,  0,  0,  0,  0,  0,  0,   0,   0,  0,   0,  0,  0,  0,  0,  0,   0,  85,
97                 85, 85, 85, 85, 85, 85, 0,   0,   0,  0,   0,  0,  85, 85, 85, 85,  85, 85,
98                 85, 85, 85, 0,  0,  0,  85,  292, 85, 85,  85, 85, 85, 85, 85, 324, 85, 85,
99                 85, 85, 85, 85, 85, 85, 328, 336, 85, 340, 85, 85, 85, 0,  0,  0,   0,
100         },
101         {
102                 0,   0,   0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  85,
103                 298, 305, 316, 85, 85, 85, 0,  0,  0,  0,  0,  0,  85, 321, 85, 85, 85, 85,
104                 85,  85,  85,  0,  0,  0,  85, 85, 85, 85, 85, 85, 85, 85,  85, 85, 85, 85,
105                 85,  85,  85,  85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 0,   0,  0,  0,
106         },
107         {
108                 0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,   0,  0,  0,   0,  0,  85,
109                 85, 85, 85, 85, 85,  85, 0,  0,  0,  0,  0,  0,   85, 85, 85,  85, 85, 85,
110                 85, 85, 85, 0,  0,   0,  85, 85, 85, 85, 85, 346, 85, 85, 352, 85, 85, 85,
111                 85, 85, 85, 85, 354, 85, 85, 85, 85, 85, 85, 357, 85, 0,  0,   0,  0,
112         },
113         {
114                 0,  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  85,
115                 85, 85, 85,  85, 85,  85, 0,  0,  0,  0,  0,  0,  85, 85, 85,  85, 85, 85,
116                 85, 85, 85,  0,  0,   0,  85, 85, 85, 85, 85, 85, 85, 85, 391, 85, 85, 85,
117                 85, 85, 395, 85, 403, 85, 85, 85, 85, 85, 85, 85, 85, 0,  0,   0,  0,
118         },
119 };
120 static constexpr CompactEntry kCompact[] = {
121         {0,
122          {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
123         {3,
124          {195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
125         {6,
126          {255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
127         {8, {255, 255, 255, 255, 255, 255, 255, 15, 0, 192, 15, 0, 0, 0, 0, 0, 192, 63}},
128         {8, {255, 255, 255, 255, 3, 0, 255, 15, 0, 192, 15, 0, 0, 0, 0, 0, 192, 63}},
129         {19 | (11 << 9) | (10 << 18),
130          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 106, 170, 170, 162, 170, 234, 63}},
131         {10, {255, 255, 255, 255, 3, 0, 255, 15, 0, 192, 15, 0, 0, 0, 0, 0, 192, 63}},
132         {14 | (12 << 9) | (10 << 18),
133          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 170, 170, 106, 170, 232, 63}},
134         {13 | (10 << 9),
135          {255, 255, 255, 255, 87, 84, 255, 95, 85, 213, 95, 85, 85, 85, 85, 85, 213, 63}},
136         {15 | (10 << 9),
137          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
138         {16 | (10 << 9),
139          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
140         {17 | (10 << 9),
141          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
142         {18 | (10 << 9),
143          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
144         {20 | (10 << 9),
145          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
146         {21 | (10 << 9),
147          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
148         {22 | (10 << 9),
149          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
150         {24,
151          {255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
152         {27 | (26 << 9),
153          {255, 255, 253, 255, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
154         {31,
155          {255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
156         {34 | (33 << 9),
157          {255, 255, 255, 253, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
158         {38 | (37 << 9),
159          {255, 255, 255, 223, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
160         {40, {255, 255, 255, 255, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
161         {41 | (40 << 9),
162          {255, 255, 255, 255, 87, 85, 255, 255, 243, 255, 255, 63, 255, 255, 255, 255, 255, 63}},
163         {43 | (42 << 9),
164          {255, 255, 255, 221, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
165         {43, {255, 255, 255, 255, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
166         {49 | (48 << 9) | (45 << 18),
167          {255, 255, 191, 255, 253, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
168         {46 | (45 << 9), {87, 85, 21, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 21}},
169         {47 | (45 << 9), {87, 85, 85, 85, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 21}},
170         {48, {51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
171         {56 | (52 << 9),
172          {255, 255, 255, 255, 87, 85, 255, 255, 243, 255, 255, 63, 255, 255, 255, 255, 255, 63}},
173         {53 | (52 << 9),
174          {255, 255, 255, 255, 87, 85, 255, 255, 243, 255, 255, 63, 255, 255, 255, 255, 255, 63}},
175         {55 | (54 << 9),
176          {255, 255, 255, 221, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
177         {55, {255, 255, 255, 255, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
178         {58 | (57 << 9),
179          {255, 255, 255, 221, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
180         {58, {255, 255, 255, 255, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
181         {63 | (62 << 9),
182          {255, 255, 255, 221, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
183         {63, {255, 255, 255, 255, 3, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
184         {68, {255, 255, 255, 255, 3, 0, 255, 15, 240, 255, 63, 0, 252, 255, 255, 255, 255, 63}},
185         {68 | (66 << 9),
186          {255, 255, 255, 255, 3, 0, 255, 15, 240, 247, 63, 0, 252, 255, 255, 247, 255, 63}},
187         {76 | (74 << 9),
188          {255, 255, 255, 255, 255, 255, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
189         {75,
190          {255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
191         {78,
192          {255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
193         {81 | (80 << 9),
194          {255, 255, 255, 255, 255, 255, 127, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
195         {82,
196          {255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63}},
197         {85, {255, 255, 255, 255, 3, 0, 255, 15, 0, 192, 15, 0, 0, 0, 0, 0, 192, 63}},
198         {90 | (89 << 9),
199          {255, 255, 255, 255, 255, 255, 127, 255, 255, 255, 243, 255, 255, 255, 255, 255, 255, 63}},
200         {94 | (92 << 9) | (85 << 18),
201          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 170, 170, 106, 168, 234, 63}},
202         {93 | (85 << 9),
203          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 69, 85, 85, 213, 63}},
204         {98 | (95 << 9) | (85 << 18),
205          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 170, 170, 169, 168, 234, 63}},
206         {96 | (85 << 9),
207          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 69, 85, 85, 213, 63}},
208         {97 | (85 << 9),
209          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
210         {93 | (85 << 9),
211          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
212         {99 | (85 << 9),
213          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
214         {100 | (85 << 9),
215          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
216         {101 | (85 << 9),
217          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 84, 85, 85, 85, 85, 213, 63}},
218         {102 | (85 << 9),
219          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
220         {103 | (85 << 9),
221          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
222         {93 | (85 << 9),
223          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
224         {109 | (105 << 9) | (85 << 18),
225          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 170, 170, 154, 162, 234, 63}},
226         {106 | (85 << 9),
227          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
228         {107 | (85 << 9),
229          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
230         {108 | (85 << 9),
231          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 84, 85, 85, 213, 63}},
232         {110 | (85 << 9),
233          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 84, 85, 85, 85, 213, 63}},
234         {111 | (85 << 9),
235          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 84, 85, 85, 85, 213, 63}},
236         {112 | (85 << 9),
237          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
238         {113 | (85 << 9),
239          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
240         {116 | (85 << 9),
241          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 21, 85, 213, 63}},
242         {117 | (93 << 9) | (85 << 18),
243          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 42, 170, 170, 170, 169, 234, 63}},
244         {119 | (85 << 9),
245          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
246         {120 | (85 << 9),
247          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 21, 85, 213, 63}},
248         {93 | (85 << 9),
249          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 21, 85, 213, 63}},
250         {122 | (85 << 9),
251          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
252         {125 | (123 << 9) | (85 << 18),
253          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 170, 170, 106, 168, 234, 63}},
254         {124 | (85 << 9),
255          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
256         {126 | (85 << 9),
257          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
258         {127 | (85 << 9),
259          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
260         {128 | (85 << 9),
261          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
262         {129 | (85 << 9),
263          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
264         {132 | (85 << 9),
265          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 84, 85, 85, 85, 213, 63}},
266         {133 | (85 << 9),
267          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
268         {134 | (85 << 9),
269          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
270         {135 | (85 << 9),
271          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
272         {136 | (85 << 9),
273          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
274         {138 | (85 << 9),
275          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 21, 85, 213, 63}},
276         {139 | (85 << 9),
277          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
278         {140 | (85 << 9),
279          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
280         {141 | (85 << 9),
281          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
282         {142 | (85 << 9),
283          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 69, 85, 85, 85, 85, 213, 63}},
284         {144 | (85 << 9),
285          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
286         {145 | (85 << 9),
287          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 84, 85, 85, 85, 85, 213, 63}},
288         {146 | (85 << 9),
289          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
290         {148 | (85 << 9),
291          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
292         {149 | (85 << 9),
293          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
294         {93 | (85 << 9),
295          {255, 255, 255, 255, 23, 80, 255, 95, 85, 213, 95, 85, 85, 85, 85, 85, 213, 63}},
296         {152 | (85 << 9),
297          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 21, 85, 213, 63}},
298         {153 | (85 << 9),
299          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
300         {155 | (85 << 9),
301          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
302         {157 | (85 << 9),
303          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
304         {158 | (85 << 9),
305          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
306         {159 | (85 << 9),
307          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
308         {160 | (85 << 9),
309          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
310         {161 | (85 << 9),
311          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
312         {93 | (85 << 9),
313          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
314         {164 | (85 << 9),
315          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
316         {165 | (85 << 9),
317          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 21, 85, 213, 63}},
318         {166 | (85 << 9),
319          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
320         {168 | (85 << 9),
321          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 85, 212, 63}},
322         {169 | (85 << 9),
323          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
324         {93 | (85 << 9),
325          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 69, 85, 85, 85, 85, 213, 63}},
326         {171 | (85 << 9),
327          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
328         {172 | (85 << 9),
329          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
330         {174 | (85 << 9),
331          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
332         {176 | (85 << 9),
333          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
334         {177 | (85 << 9),
335          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
336         {181 | (179 << 9) | (85 << 18),
337          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 170, 166, 168, 170, 234, 63}},
338         {180 | (85 << 9),
339          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 79, 85, 85, 85, 85, 85, 213, 63}},
340         {180, {255, 255, 255, 255, 3, 0, 255, 15, 0, 192, 15, 0, 0, 0, 0, 0, 192, 63}},
341         {182 | (85 << 9),
342          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
343         {93 | (85 << 9),
344          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
345         {188 | (184 << 9) | (85 << 18),
346          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 106, 170, 170, 138, 234, 63}},
347         {185 | (85 << 9),
348          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 81, 85, 85, 85, 213, 63}},
349         {186 | (85 << 9),
350          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 69, 85, 85, 85, 213, 63}},
351         {187 | (85 << 9),
352          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
353         {189 | (85 << 9),
354          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
355         {190 | (85 << 9),
356          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
357         {193 | (192 << 9) | (85 << 18),
358          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 169, 42, 170, 170, 234, 63}},
359         {195 | (85 << 9),
360          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
361         {196 | (85 << 9),
362          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
363         {197 | (85 << 9),
364          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
365         {199 | (85 << 9),
366          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
367         {200 | (85 << 9),
368          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
369         {202 | (85 << 9),
370          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
371         {93 | (85 << 9),
372          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
373         {204 | (85 << 9),
374          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
375         {205 | (85 << 9),
376          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
377         {206 | (85 << 9),
378          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 84, 85, 85, 85, 213, 63}},
379         {207 | (85 << 9),
380          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
381         {208 | (85 << 9),
382          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
383         {210 | (85 << 9),
384          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
385         {211 | (85 << 9),
386          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
387         {212 | (85 << 9),
388          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
389         {213 | (85 << 9),
390          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
391         {214 | (85 << 9),
392          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
393         {221 | (216 << 9) | (85 << 18),
394          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 111, 170, 170, 170, 168, 170, 234, 63}},
395         {217 | (85 << 9),
396          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 85, 209, 63}},
397         {218 | (85 << 9),
398          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
399         {219 | (85 << 9),
400          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
401         {220 | (85 << 9),
402          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
403         {223 | (222 << 9) | (85 << 18),
404          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 170, 106, 170, 42, 234, 63}},
405         {93 | (85 << 9),
406          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 81, 85, 85, 85, 213, 63}},
407         {224 | (85 << 9),
408          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
409         {226 | (85 << 9),
410          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
411         {227 | (85 << 9),
412          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 69, 85, 85, 85, 85, 213, 63}},
413         {228 | (85 << 9),
414          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
415         {229 | (85 << 9),
416          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
417         {230 | (85 << 9),
418          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 69, 85, 85, 213, 63}},
419         {231 | (85 << 9),
420          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
421         {240 | (233 << 9) | (85 << 18),
422          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 111, 170, 170, 170, 168, 170, 234, 63}},
423         {234 | (85 << 9),
424          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 69, 85, 85, 213, 63}},
425         {235 | (85 << 9),
426          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
427         {236 | (85 << 9),
428          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 21, 85, 213, 63}},
429         {237 | (85 << 9),
430          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
431         {238 | (85 << 9),
432          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
433         {239 | (85 << 9),
434          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
435         {247 | (241 << 9) | (85 << 18),
436          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 106, 170, 162, 170, 234, 63}},
437         {242 | (85 << 9),
438          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
439         {243 | (85 << 9),
440          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
441         {244 | (85 << 9),
442          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
443         {245 | (85 << 9),
444          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
445         {246 | (85 << 9),
446          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
447         {248 | (85 << 9),
448          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
449         {249 | (85 << 9),
450          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
451         {250 | (85 << 9),
452          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 21, 85, 213, 63}},
453         {251 | (85 << 9),
454          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
455         {252 | (85 << 9),
456          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
457         {253 | (85 << 9),
458          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
459         {254 | (85 << 9),
460          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
461         {255 | (85 << 9),
462          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
463         {256 | (85 << 9),
464          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 69, 213, 63}},
465         {257 | (85 << 9),
466          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
467         {259 | (85 << 9),
468          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
469         {260 | (85 << 9),
470          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
471         {261 | (85 << 9),
472          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
473         {262 | (85 << 9),
474          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
475         {265 | (85 << 9),
476          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
477         {266 | (85 << 9),
478          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 84, 85, 85, 213, 63}},
479         {267 | (85 << 9),
480          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
481         {269 | (85 << 9),
482          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
483         {270 | (85 << 9),
484          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
485         {271 | (85 << 9),
486          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
487         {272 | (85 << 9),
488          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 21, 85, 213, 63}},
489         {273 | (85 << 9),
490          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
491         {274 | (85 << 9),
492          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
493         {93 | (85 << 9),
494          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
495         {276 | (85 << 9),
496          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 84, 85, 85, 85, 85, 213, 63}},
497         {277 | (85 << 9),
498          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
499         {278 | (85 << 9),
500          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
501         {280 | (85 << 9),
502          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
503         {287 | (281 << 9) | (85 << 18),
504          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 111, 170, 170, 170, 170, 168, 234, 63}},
505         {282 | (85 << 9),
506          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 69, 85, 85, 85, 85, 213, 63}},
507         {283 | (85 << 9),
508          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
509         {284 | (85 << 9),
510          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
511         {285 | (85 << 9),
512          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
513         {286 | (85 << 9),
514          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 85, 209, 63}},
515         {288 | (85 << 9),
516          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
517         {289 | (85 << 9),
518          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
519         {290 | (85 << 9),
520          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
521         {293 | (85 << 9),
522          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 69, 85, 85, 213, 63}},
523         {294 | (85 << 9),
524          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
525         {295 | (85 << 9),
526          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
527         {296 | (85 << 9),
528          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
529         {297 | (85 << 9),
530          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
531         {299 | (85 << 9),
532          {255, 255, 255, 255, 87, 85, 255, 95, 84, 213, 95, 85, 85, 85, 85, 85, 213, 63}},
533         {300 | (85 << 9),
534          {255, 255, 255, 255, 87, 85, 255, 95, 85, 212, 95, 85, 85, 85, 85, 85, 213, 63}},
535         {301 | (85 << 9),
536          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 69, 85, 85, 85, 213, 63}},
537         {302 | (85 << 9),
538          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
539         {303 | (85 << 9),
540          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 69, 85, 85, 85, 85, 213, 63}},
541         {304 | (85 << 9),
542          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
543         {93 | (85 << 9),
544          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 21, 213, 63}},
545         {306 | (85 << 9),
546          {255, 255, 255, 255, 87, 85, 255, 95, 84, 213, 95, 85, 85, 85, 85, 85, 213, 63}},
547         {307 | (300 << 9) | (85 << 18),
548          {255, 255, 255, 255, 171, 170, 255, 175, 42, 233, 175, 170, 170, 170, 170, 170, 234, 63}},
549         {308 | (85 << 9),
550          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
551         {309 | (85 << 9),
552          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
553         {310 | (85 << 9),
554          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
555         {311 | (85 << 9),
556          {255, 255, 255, 255, 87, 85, 255, 95, 85, 212, 95, 85, 85, 85, 85, 85, 213, 63}},
557         {312 | (85 << 9),
558          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 69, 85, 85, 85, 213, 63}},
559         {313 | (85 << 9),
560          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
561         {314 | (85 << 9),
562          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 69, 85, 85, 85, 85, 213, 63}},
563         {315 | (85 << 9),
564          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
565         {317 | (85 << 9),
566          {255, 255, 255, 255, 87, 85, 255, 95, 84, 213, 95, 85, 85, 85, 85, 85, 213, 63}},
567         {318 | (85 << 9),
568          {255, 255, 255, 255, 87, 85, 255, 95, 21, 213, 95, 85, 85, 85, 85, 85, 213, 63}},
569         {319 | (85 << 9),
570          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
571         {320 | (85 << 9),
572          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
573         {322 | (85 << 9),
574          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
575         {323 | (85 << 9),
576          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 84, 85, 85, 85, 85, 213, 63}},
577         {325 | (85 << 9),
578          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 85, 197, 63}},
579         {326 | (85 << 9),
580          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
581         {327 | (85 << 9),
582          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
583         {93 | (85 << 9),
584          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 84, 85, 85, 85, 213, 63}},
585         {332 | (329 << 9) | (85 << 18),
586          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 111, 170, 170, 170, 138, 170, 234, 63}},
587         {330 | (85 << 9),
588          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
589         {331 | (85 << 9),
590          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
591         {333 | (85 << 9),
592          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
593         {334 | (85 << 9),
594          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
595         {335 | (85 << 9),
596          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
597         {337 | (85 << 9),
598          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
599         {338 | (85 << 9),
600          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
601         {339 | (85 << 9),
602          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
603         {93 | (85 << 9),
604          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
605         {341 | (85 << 9),
606          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
607         {342 | (85 << 9),
608          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
609         {343 | (85 << 9),
610          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 81, 85, 85, 85, 85, 213, 63}},
611         {344 | (85 << 9),
612          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 69, 85, 85, 85, 213, 63}},
613         {347 | (85 << 9),
614          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 69, 85, 85, 213, 63}},
615         {348 | (85 << 9),
616          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
617         {349 | (85 << 9),
618          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
619         {350 | (85 << 9),
620          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
621         {351 | (85 << 9),
622          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
623         {353 | (85 << 9),
624          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
625         {355 | (85 << 9),
626          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
627         {356 | (85 << 9),
628          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
629         {358 | (85 << 9),
630          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
631         {359 | (85 << 9),
632          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
633         {360 | (85 << 9),
634          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 69, 85, 85, 85, 85, 213, 63}},
635         {361 | (85 << 9),
636          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
637         {375 | (363 << 9) | (85 << 18),
638          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 170, 106, 42, 170, 234, 63}},
639         {370 | (364 << 9) | (85 << 18),
640          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 106, 170, 42, 170, 234, 63}},
641         {369 | (365 << 9) | (85 << 18),
642          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 175, 170, 169, 170, 168, 170, 234, 63}},
643         {366 | (85 << 9),
644          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
645         {367 | (85 << 9),
646          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
647         {368 | (85 << 9),
648          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 69, 85, 85, 213, 63}},
649         {371 | (85 << 9),
650          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
651         {372 | (85 << 9),
652          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 81, 85, 85, 85, 213, 63}},
653         {373 | (85 << 9),
654          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
655         {374 | (85 << 9),
656          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
657         {376 | (85 << 9),
658          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
659         {377 | (85 << 9),
660          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
661         {384 | (379 << 9) | (85 << 18),
662          {255, 255, 255, 255, 171, 170, 255, 175, 170, 234, 111, 170, 170, 170, 168, 170, 234, 63}},
663         {380 | (85 << 9),
664          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
665         {381 | (85 << 9),
666          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 85, 209, 63}},
667         {382 | (85 << 9),
668          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
669         {383 | (85 << 9),
670          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
671         {385 | (85 << 9),
672          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
673         {386 | (85 << 9),
674          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 31, 85, 85, 85, 85, 85, 213, 63}},
675         {387 | (85 << 9),
676          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
677         {388 | (85 << 9),
678          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
679         {389 | (85 << 9),
680          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
681         {392 | (85 << 9),
682          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
683         {393 | (85 << 9),
684          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
685         {394 | (85 << 9),
686          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
687         {396 | (85 << 9),
688          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
689         {397 | (85 << 9),
690          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 84, 85, 85, 213, 63}},
691         {398 | (85 << 9),
692          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 81, 85, 85, 85, 213, 63}},
693         {399 | (85 << 9),
694          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 69, 85, 213, 63}},
695         {400 | (85 << 9),
696          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
697         {401 | (85 << 9),
698          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 81, 213, 63}},
699         {402 | (85 << 9),
700          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 81, 85, 213, 63}},
701         {404 | (85 << 9),
702          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 21, 85, 85, 85, 213, 63}},
703         {405 | (85 << 9),
704          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 84, 213, 63}},
705         {406 | (85 << 9),
706          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 21, 85, 85, 85, 85, 213, 63}},
707         {407 | (85 << 9),
708          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 84, 85, 213, 63}},
709         {408 | (85 << 9),
710          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 21, 85, 85, 213, 63}},
711         {409 | (85 << 9),
712          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 81, 85, 85, 213, 63}},
713         {410 | (85 << 9),
714          {255, 255, 255, 255, 87, 85, 255, 95, 85, 213, 95, 85, 85, 85, 85, 85, 209, 63}},
715         {414 | (413 << 9),
716          {255, 255, 255, 255, 255, 255, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60}},
717 };
718 static constexpr IndexEntry kIndices[] = {
719         0,   -1,  1,   1,   0,   2,   0,   3,   4,   5,   6,   7,   8,   6,   9,   10,  11,  12,
720         6,   13,  14,  15,  6,   16,  0,   17,  0,   0,   0,   0,   18,  0,   19,  0,   0,   0,
721         20,  0,   0,   21,  22,  23,  24,  24,  25,  26,  27,  0,   28,  0,   -2,  29,  30,  31,
722         32,  32,  33,  34,  34,  -3,  -4,  35,  36,  36,  0,   0,   0,   37,  38,  -5,  -5,  0,
723         0,   39,  40,  0,   0,   41,  0,   42,  0,   43,  0,   0,   44,  44,  0,   0,   45,  0,
724         0,   46,  47,  44,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,
725         44,  62,  63,  64,  65,  44,  -6,  66,  67,  44,  68,  69,  70,  71,  72,  73,  44,  74,
726         75,  76,  77,  44,  -7,  78,  79,  80,  81,  82,  44,  83,  84,  85,  86,  87,  44,  88,
727         89,  90,  57,  91,  92,  93,  -8,  94,  95,  44,  96,  47,  97,  98,  99,  100, 101, 102,
728         -9,  103, 104, 105, 44,  106, 107, 108, 109, 110, 44,  111, 44,  112, 113, 93,  114, 115,
729         116, 117, 118, 119, 120, 121, 122, 44,  123, 124, 93,  125, 44,  -10, 126, 127, 128, 44,
730         129, 130, 44,  131, 132, 133, 134, 135, 136, 137, 57,  138, 139, 140, 141, 142, 132, 143,
731         144, 145, 146, 147, 44,  148, 149, 150, 44,  151, 152, 153, 154, 155, 156, 44,  157, 158,
732         159, 160, 161, 162, 163, 57,  164, 165, 166, 167, 168, 169, 44,  170, 171, 172, 173, 174,
733         175, 176, 177, 178, 179, 44,  180, 181, 182, 183, 132, -11, 184, 185, 186, 108, 187, 188,
734         189, 190, 191, 192, 193, 194, 195, 196, 51,  197, 198, 199, 200, 201, 202, 203, 44,  204,
735         205, 206, 44,  -12, 207, 208, 209, 210, 211, -13, 212, 213, 214, 215, 216, 217, 218, 219,
736         220, 221, 222, 223, 224, 225, 226, 227, 228, 218, 229, 230, 231, 232, 132, 233, 234, 57,
737         235, 236, 237, 238, 239, 240, 241, 51,  242, 243, 244, 44,  245, 246, 247, 248, 249, 250,
738         251, 252, 44,  -14, 253, 254, 255, 256, 257, 57,  258, 70,  259, 260, 44,  261, 262, 263,
739         264, 238, 265, 266, 267, 268, 269, 270, 44,  193, 271, 272, 273, 274, 108, 275, 276, 149,
740         277, 278, 279, 280, 281, 149, 282, 283, 284, 285, 286, 57,  -15, 287, 288, 289, 44,  290,
741         291, 292, 293, 294, 295, 296, 44,  297, 298, 299, 300, 301, 302, 303, 44,  0,   304, 0,
742         0,   0,   0,
743 };
get_transition(int transition,int state)744 State get_transition(int transition, int state) {
745     IndexEntry index = kIndices[state];
746     if (index < 0) {
747         return kFull[~index].data[transition];
748     }
749     const CompactEntry& entry = kCompact[index];
750     int v = entry.data[transition >> 2];
751     v >>= 2 * (transition & 3);
752     v &= 3;
753     v *= 9;
754     return (entry.values >> v) & 511;
755 }
756 static const int8_t kAccepts[417] = {
757         -1, -1, 88, 88, 91, 67, 72, 91, 42, 40, 40, 40, 40, 36, 40, 40, 40, 40, 37, 40, 40, 40,
758         27, 57, 81, 62, 66, 86, 43, 44, 55, 79, 53, 51, 77, 50, 54, 52, 78, 49, 1,  -1, -1, 1,
759         56, -1, -1, 90, 89, 80, 2,  1,  1,  -1, -1, 1,  -1, -1, 1,  2,  3,  -1, -1, 1,  3,  2,
760         2,  -1, 2,  2,  2,  69, 87, 74, 58, 82, 76, 70, 71, 73, 75, 59, 83, 68, 41, 41, 47, 48,
761         61, 85, 65, 41, 41, 39, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 14, 41,
762         41, 41, 41, 30, 41, 41, 41, 12, 41, 41, 41, 41, 41, 41, 22, 41, 41, 41, 41, 15, 41, 41,
763         41, 41, 41, 41, 13, 41, 41, 41, 41, 41, 16, 10, 41, 41, 41, 41, 41, 41, 41, 41, 41, 7,
764         41, 41, 41, 41, 41, 41, 39, 41, 41, 41, 41, 41, 5,  41, 41, 41, 41, 41, 23, 41, 8,  41,
765         41, 41, 41, 41, 39, 41, 41, 41, 41, 41, 41, 33, 41, 41, 41, 41, 6,  18, 41, 41, 41, 25,
766         41, 41, 20, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
767         32, 41, 41, 41, 35, 41, 41, 41, 41, 41, 41, 34, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
768         41, 41, 41, 41, 26, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 24, 41, 41, 19, 41, 41, 41,
769         41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
770         28, 41, 41, 41, 17, 41, 41, 41, 41, 41, 41, 41, 41, 39, 41, 41, 41, 41, 41, 41, 41, 41,
771         41, 41, 41, 41, 41, 41, 41, 41, 41, 39, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
772         41, 41, 41, 41, 41, 31, 41, 41, 41, 41, 41, 41, 41, 41, 11, 41, 41, 41, 41, 41, 41, 41,
773         41, 41, 41, 41, 4,  41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 21, 41, 41, 41, 41, 41,
774         41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 9,  41,
775         41, 41, 41, 41, 41, 41, 38, 41, 41, 41, 41, 41, 41, 41, 29, 45, 60, 84, 64, 46, 63,
776 };
777 
next()778 Token Lexer::next() {
779     // note that we cheat here: normally a lexer needs to worry about the case
780     // where a token has a prefix which is not itself a valid token - for instance,
781     // maybe we have a valid token 'while', but 'w', 'wh', etc. are not valid
782     // tokens. Our grammar doesn't have this property, so we can simplify the logic
783     // a bit.
784     int32_t startOffset = fOffset;
785     State state = 1;
786     for (;;) {
787         if (fOffset >= (int32_t)fText.length()) {
788             if (startOffset == (int32_t)fText.length() || kAccepts[state] == -1) {
789                 return Token(Token::Kind::TK_END_OF_FILE, startOffset, 0);
790             }
791             break;
792         }
793         uint8_t c = (uint8_t)(fText[fOffset] - 9);
794         if (c >= 118) {
795             c = kInvalidChar;
796         }
797         State newState = get_transition(kMappings[c], state);
798         if (!newState) {
799             break;
800         }
801         state = newState;
802         ++fOffset;
803     }
804     Token::Kind kind = (Token::Kind)kAccepts[state];
805     return Token(kind, startOffset, fOffset - startOffset);
806 }
807 
808 }  // namespace SkSL
809