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 static const uint8_t INVALID_CHAR = 18;
15 static int8_t mappings[127] = {
16         0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  3,  3,  1,  3,  3,  3,  3,  3,  3,  3,  3,
17         3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  1,  4,  3,  5,  6,  7,  8,  3,  9,  10, 11, 12,
18         13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26,
19         26, 26, 26, 27, 26, 6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  28, 6,  6,  6,
20         29, 6,  6,  30, 3,  31, 32, 33, 3,  34, 35, 36, 37, 38, 39, 6,  40, 41, 6,  42, 43, 44,
21         45, 46, 47, 6,  48, 49, 50, 51, 52, 53, 54, 55, 6,  56, 57, 58, 59};
22 static int16_t transitions[60][304] = {
23         {
24                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
25                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
26                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
27                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
28                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
29                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
30                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
31                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
32                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
33                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
34                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35         },
36         {
37                 0, 2, 3, 3, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
38                 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
39                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
40                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
41                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
42                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
43                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
44                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
45                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
46                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
47                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
49         },
50         {
51                 0, 3, 3, 3, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
52                 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
53                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
54                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
55                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
56                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
57                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
58                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
59                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
60                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
61                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
62                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,
63         },
64         {
65                 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
66                 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
67                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
68                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
69                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
70                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
71                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
72                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
73                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
74                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
77         },
78         {
79                 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80                 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
82                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
87                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
88                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
89                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
90                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
91         },
92         {
93                 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
94                 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
95                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
97                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
98                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
99                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
100                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
101                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
102                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
103                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
104                 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
105         },
106         {
107                 0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
108                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  35, 35, 0,  38, 0,  0,  0,
109                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
110                 0,  0,  0,  0,  0,  0,  0,  71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 0,  0,  0,  0,
111                 0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
112                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
113                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
114                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
115                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
116                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
117                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
118                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
119                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
120                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
121                 10, 10, 10, 0,  0,  0,  0,  0,  0,  0,
122         },
123         {
124                 0, 11, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
125                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
126                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
127                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
128                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
129                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
130                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
131                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
132                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
133                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
134                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
135                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
136         },
137         {
138                 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
139                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
140                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
141                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
142                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
143                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
144                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
145                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
146                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
147                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
148                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
149                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0,
150         },
151         {
152                 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
153                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
154                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
155                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
156                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
157                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
158                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
159                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
160                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
161                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
162                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
163                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
164         },
165         {
166                 0, 18, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
167                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
168                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
169                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
170                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
171                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
172                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
173                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
174                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
175                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
176                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
177                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
178         },
179         {
180                 0, 19, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
181                 0, 0,  0, 0, 0, 0, 0, 0, 35, 36, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
182                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
183                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
184                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
185                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
186                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
187                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
188                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
189                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
190                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
191                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0,
192         },
193         {
194                 0, 21, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 22, 0,  0,
195                 0, 0,  0,  0, 0, 0, 0, 32, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 44, 0, 0,  47, 0,
196                 0, 0,  51, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
197                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
198                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
199                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
200                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
201                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
202                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
203                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
204                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
205                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0,
206                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0,
207         },
208         {
209                 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
210                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
211                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
212                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
213                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
214                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
215                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
216                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
217                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
218                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
219                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
220                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
221         },
222         {
223                 0, 25, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
224                 0, 26, 0,  0, 0, 0, 0, 32, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 44, 0, 0, 47, 0,
225                 0, 0,  51, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
226                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
227                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
228                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
229                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
230                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
231                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
232                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
233                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
234                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0,
235                 0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0,
236         },
237         {
238                 0, 29, 0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
239                 0, 0,  0, 0,  0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0,
240                 0, 0,  0, 41, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
241                 0, 0,  0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
242                 0, 0,  0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
243                 0, 0,  0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
244                 0, 0,  0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
245                 0, 0,  0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
246                 0, 0,  0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
247                 0, 0,  0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
248                 0, 0,  0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
249                 0, 0,  0, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0,
250         },
251         {
252                 0, 34, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
253                 0, 0,  0, 0, 0, 0, 0, 0, 38, 35, 37, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
254                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
256                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
257                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
258                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
259                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
260                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
261                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
263                 0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0,
264         },
265         {
266                 0,  40, 0,  0,  0,  0,  0,  0,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
267                 0,  0,  0,  0,  0,  0,  0,  0,  30, 30, 33, 33, 33, 0,  35, 35, 0,  38, 0,  49, 42,
268                 42, 45, 45, 45, 48, 48, 48, 49, 52, 52, 52, 54, 54, 49, 0,  0,  0,  0,  0,  0,  0,
269                 0,  0,  0,  0,  0,  0,  0,  0,  71, 71, 71, 71, 71, 71, 71, 71, 71, 0,  0,  0,  0,
270                 0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
271                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
272                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
273                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
274                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
275                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
276                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
277                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
278                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
279                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
280                 10, 10, 10, 0,  0,  0,  0,  0,  0,  0,
281         },
282         {
283                 0,  55, 0,  0,  0,  0,  0,  0,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
284                 0,  0,  0,  0,  0,  0,  0,  0,  30, 30, 33, 33, 33, 0,  35, 35, 0,  38, 0,  49, 42,
285                 42, 45, 45, 45, 48, 48, 48, 49, 52, 52, 52, 54, 54, 49, 0,  0,  0,  0,  0,  0,  0,
286                 0,  0,  0,  0,  0,  0,  0,  0,  71, 71, 71, 71, 71, 71, 71, 71, 71, 0,  0,  0,  0,
287                 0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
288                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
289                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
290                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
291                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
292                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
293                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
294                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
295                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
296                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
297                 10, 10, 10, 0,  0,  0,  0,  0,  0,  0,
298         },
299         {
300                 0, 56, 0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
301                 0, 0,  0, 0, 0,  0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
302                 0, 0,  0, 0, 57, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
303                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
304                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
305                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
306                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
307                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
308                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
309                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
310                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
311                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
312         },
313         {
314                 0, 58, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
315                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
316                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
317                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
318                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
319                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
320                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
321                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
322                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
323                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
324                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
325                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
326         },
327         {
328                 0, 59, 0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
329                 0, 0,  0, 0, 0, 0, 0, 0,  0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
330                 0, 0,  0, 0, 0, 0, 0, 60, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
331                 0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
332                 0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
333                 0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
334                 0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
335                 0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
336                 0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
337                 0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
338                 0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
339                 0, 0,  0, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
340         },
341         {
342                 0, 63, 0, 0, 0, 6, 0, 0, 0, 0, 0,   12, 0,   16, 15, 0,  0, 0,  0, 20, 0, 23, 0, 0,
343                 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 39,  35, 35,  0,  38, 0,  0, 0,  0, 0,  0, 0,  0, 0,
344                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   62, 61,  0,  0,  64, 0, 66, 0, 68, 0, 0,  0, 0,
345                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 83,  0,  85,  0,  0,  0,  0, 0,  0, 0,  0, 0,  0, 0,
346                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,   0,  0,  0,  0, 0,  0, 0,  0, 0,  0, 0,
347                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,   0,  0,  0,  0, 0,  0, 0,  0, 0,  0, 0,
348                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,   0,  0,  0,  0, 0,  0, 0,  0, 0,  0, 0,
349                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,   0,  0,  0,  0, 0,  0, 0,  0, 0,  0, 0,
350                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,   0,  0,  0,  0, 0,  0, 0,  0, 0,  0, 0,
351                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,   0,  0,  0,  0, 0,  0, 0,  0, 0,  0, 0,
352                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,   0,  0,  0,  0, 0,  0, 0,  0, 0,  0, 0,
353                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,   0,  0,  0,  0, 0,  0, 0,  0, 0,  0, 0,
354                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 299, 0,  301, 0,  0,  0,
355         },
356         {
357                 0, 65, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
358                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
359                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
360                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
361                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
362                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
363                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
364                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
365                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
366                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
367                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
368                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0,
369         },
370         {
371                 0, 69, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
372                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
373                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
374                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
375                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
376                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
377                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
378                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
379                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
380                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
381                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
382                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
383         },
384         {
385                 0, 70, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
386                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
387                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
388                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
389                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
390                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
392                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
393                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
394                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
395                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
396                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
397         },
398         {
399                 0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
400                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  35, 35, 0,  38, 0,  0,  0,
401                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  54, 54, 0,  0,  0,  0,  0,  0,  0,  0,
402                 0,  0,  0,  0,  0,  0,  0,  71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 0,  0,  0,  0,
403                 0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
404                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
405                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
406                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
407                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
408                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
409                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
410                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
411                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
412                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
413                 10, 10, 10, 0,  0,  0,  0,  0,  0,  0,
414         },
415         {
416                 0,  9,  0,  0,  0,  0,  0,  8,  8,  10,  10, 0,  0,  0,  0,  0,   0,  0,  0,
417                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  31, 0,  0,  0,  0,   35, 35, 0,
418                 38, 0,  50, 46, 43, 0,  0,  0,  0,  0,   0,  50, 0,  0,  0,  54,  54, 50, 0,
419                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  71, 71, 71,  71, 71, 71,
420                 71, 71, 71, 71, 0,  0,  0,  0,  0,  0,   10, 10, 10, 10, 10, 10,  10, 10, 10,
421                 10, 10, 10, 99, 10, 10, 10, 10, 10, 105, 10, 10, 10, 10, 10, 111, 10, 10, 10,
422                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10,
423                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10,
424                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10,
425                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10,
426                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10,
427                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10,
428                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10,
429                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10,
430                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10,
431                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 0,  0,  0,  0,   0,  0,  0,
432         },
433         {
434                 0,  9,  0,  0,  0,  0,   0,  8,  8,  10, 10, 0,   0,  0,  0,  0,  0,  0,   0,
435                 0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  35, 35,  0,
436                 38, 0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,
437                 0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  71, 71, 71, 71, 71,  71,
438                 71, 71, 71, 71, 0,  0,   0,  0,  0,  0,  10, 10,  10, 10, 10, 10, 10, 10,  10,
439                 10, 10, 10, 10, 10, 101, 10, 10, 10, 10, 10, 107, 10, 10, 10, 10, 10, 113, 10,
440                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10,
441                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10,
442                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10,
443                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10,
444                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10,
445                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10,
446                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10,
447                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10,
448                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10,
449                 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  0,  0,  0,  0,  0,  0,   0,
450         },
451         {
452                 0,  9,  0,  0,  0,   0,  0,  8,  8,  10, 10,  0,  0,  0,  0,  0,  0,   0,  0,
453                 0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  35,  35, 0,
454                 38, 0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,
455                 0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  71, 71, 71, 71,  71, 71,
456                 71, 71, 71, 71, 0,   0,  0,  0,  0,  0,  10,  10, 10, 10, 10, 10, 10,  10, 10,
457                 10, 10, 10, 10, 100, 10, 10, 10, 10, 10, 106, 10, 10, 10, 10, 10, 112, 10, 10,
458                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
459                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
460                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
461                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
462                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
463                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
464                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
465                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
466                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
467                 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 0,  0,  0,  0,  0,   0,  0,
468         },
469         {
470                 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
471                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
472                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
473                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
474                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
475                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
476                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
477                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
478                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
479                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
480                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
481                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
482         },
483         {
484                 0, 81, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
485                 0, 0,  0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
486                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
487                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
488                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
489                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
490                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
491                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
492                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
493                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
494                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
495                 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
496         },
497         {
498                 0, 82, 0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
499                 0, 0,  0, 0, 0,  0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
500                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
501                 0, 0,  0, 0, 84, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
502                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
503                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
504                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
505                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
506                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
507                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
508                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
509                 0, 0,  0, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
510         },
511         {
512                 0,  86, 0,  0,   0,  0,  0,  8,  8,  10,  10, 0,  0,  0,   0,  0,  0,  0,  0,
513                 0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  35, 35, 0,
514                 38, 0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,  0,  0,
515                 0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  71,  71, 71, 71, 71, 71,
516                 71, 71, 71, 71,  0,  0,  0,  0,  0,  0,   87, 10, 10, 10,  10, 10, 93, 10, 10,
517                 10, 10, 10, 102, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,
518                 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,
519                 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,
520                 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,
521                 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,
522                 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,
523                 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,
524                 10, 10, 10, 10,  10, 10, 10, 10, 10, 238, 10, 10, 10, 242, 10, 10, 10, 10, 247,
525                 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,
526                 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,
527                 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 0,  0,   0,  0,  0,  0,  0,
528         },
529         {
530                 0,  9,  0,   0,  0,   0,  0,  8,  8,  10, 10,  0,   0,   0,   0,   0,  0,   0,  0,
531                 0,  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,   0,   0,   0,   0,   0,  35,  35, 0,
532                 38, 0,  0,   0,  0,   0,  0,  0,  0,  0,  0,   0,   0,   0,   0,   54, 54,  0,  0,
533                 0,  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,   0,   0,   71,  71,  71, 71,  71, 71,
534                 71, 71, 71,  71, 0,   0,  0,  0,  0,  0,  10,  10,  10,  10,  10,  10, 10,  10, 10,
535                 10, 97, 10,  10, 10,  10, 10, 10, 10, 10, 10,  10,  10,  10,  10,  10, 10,  10, 10,
536                 10, 10, 117, 10, 10,  10, 10, 10, 10, 10, 125, 10,  10,  10,  129, 10, 10,  10, 10,
537                 10, 10, 10,  10, 10,  10, 10, 10, 10, 10, 10,  10,  10,  10,  10,  10, 150, 10, 10,
538                 10, 10, 10,  10, 157, 10, 10, 10, 10, 10, 10,  10,  10,  10,  10,  10, 169, 10, 10,
539                 10, 10, 174, 10, 10,  10, 10, 10, 10, 10, 10,  10,  10,  185, 10,  10, 10,  10, 10,
540                 10, 10, 10,  10, 10,  10, 10, 10, 10, 10, 10,  10,  10,  10,  10,  10, 10,  10, 10,
541                 10, 10, 10,  10, 10,  10, 10, 10, 10, 10, 220, 10,  10,  10,  10,  10, 10,  10, 10,
542                 10, 10, 10,  10, 10,  10, 10, 10, 10, 10, 10,  240, 10,  10,  10,  10, 10,  10, 10,
543                 10, 10, 10,  10, 10,  10, 10, 10, 10, 10, 10,  10,  10,  10,  10,  10, 10,  10, 10,
544                 10, 10, 10,  10, 10,  10, 10, 10, 10, 10, 10,  10,  279, 10,  10,  10, 10,  10, 10,
545                 10, 10, 10,  10, 10,  10, 10, 10, 10, 10, 10,  10,  0,   0,   0,   0,  0,   0,  0,
546         },
547         {
548                 0,  114, 0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
549                 0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  35, 35, 0,  38, 0,  0,  0,
550                 0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  54, 54, 0,  0,  0,  0,  0,  0,  0,  0,
551                 0,  0,   0,  0,  0,  0,  0,  71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 0,  0,  0,  0,
552                 0,  0,   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
553                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
554                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
555                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
556                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
557                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
558                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
559                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
560                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
561                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
562                 10, 10,  10, 0,  0,  0,  0,  0,  0,  0,
563         },
564         {
565                 0,  124, 0,   0,   0,   0,  0,  8,   8,  10, 10,  0,  0,  0,  0,  0,   0,  0,  0,
566                 0,  0,   0,   0,   0,   0,  0,  0,   0,  0,  0,   0,  0,  0,  0,  0,   35, 35, 0,
567                 38, 0,   0,   0,   0,   0,  0,  0,   0,  0,  0,   0,  0,  0,  0,  54,  54, 0,  0,
568                 0,  0,   0,   0,   0,   0,  0,  0,   0,  0,  0,   0,  0,  71, 71, 71,  71, 71, 71,
569                 71, 78,  71,  71,  0,   0,  0,  0,   0,  0,  10,  10, 10, 10, 10, 10,  10, 10, 10,
570                 96, 10,  10,  10,  10,  10, 10, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10,
571                 10, 10,  10,  10,  10,  10, 10, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10,
572                 10, 10,  10,  10,  10,  10, 10, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10,
573                 10, 10,  10,  156, 10,  10, 10, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10,
574                 10, 10,  10,  10,  10,  10, 10, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10,
575                 10, 10,  10,  10,  10,  10, 10, 198, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10,
576                 10, 10,  212, 10,  10,  10, 10, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10,
577                 10, 230, 10,  10,  10,  10, 10, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10,
578                 10, 10,  10,  10,  252, 10, 10, 10,  10, 10, 258, 10, 10, 10, 10, 263, 10, 10, 10,
579                 10, 10,  10,  10,  10,  10, 10, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10,
580                 10, 10,  10,  10,  10,  10, 10, 10,  10, 10, 10,  10, 0,  0,  0,  0,   0,  0,  0,
581         },
582         {
583                 0,  147, 0,  0,  0,  0,  0,   8,  8,  10, 10, 0,   0,  0,  0,  0,  0,   0,  0,
584                 0,  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  35,  35, 0,
585                 38, 0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  0,   0,  0,  0,  54, 54,  0,  0,
586                 0,  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  0,   0,  71, 71, 71, 71,  71, 71,
587                 71, 71,  71, 71, 0,  0,  0,   0,  0,  0,  10, 10,  10, 10, 10, 10, 10,  10, 10,
588                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10,
589                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10,
590                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10,
591                 10, 10,  10, 10, 10, 10, 159, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10,
592                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10,
593                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10,
594                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 221, 10, 10, 10, 10, 10,  10, 10,
595                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 245, 10, 10,
596                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10,
597                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10,
598                 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10,  0,  0,  0,  0,  0,   0,  0,
599         },
600         {
601                 0,   161, 0,   0,   0,  0,  0,  8,   8,  10,  10, 0,   0,   0,   0,  0,   0,   0,
602                 0,   0,   0,   0,   0,  0,  0,  0,   0,  0,   0,  0,   31,  0,   0,  0,   0,   35,
603                 35,  0,   38,  0,   50, 46, 43, 0,   0,  0,   0,  0,   0,   50,  0,  0,   0,   54,
604                 54,  50,  0,   0,   0,  0,  0,  0,   0,  0,   0,  0,   0,   0,   0,  0,   71,  71,
605                 71,  71,  71,  71,  71, 71, 71, 71,  0,  0,   0,  0,   0,   0,   10, 10,  10,  10,
606                 91,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10,  10,  10,  10, 10,  10,  10,
607                 10,  10,  10,  10,  10, 10, 10, 116, 10, 10,  10, 10,  10,  122, 10, 10,  10,  10,
608                 127, 10,  10,  10,  10, 10, 10, 134, 10, 136, 10, 10,  10,  10,  10, 10,  10,  10,
609                 10,  146, 10,  148, 10, 10, 10, 10,  10, 10,  10, 10,  10,  10,  10, 10,  10,  10,
610                 10,  164, 10,  10,  10, 10, 10, 10,  10, 172, 10, 10,  10,  10,  10, 10,  10,  10,
611                 10,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10,  193, 10,  10, 10,  197, 10,
612                 10,  10,  10,  202, 10, 10, 10, 10,  10, 10,  10, 10,  211, 10,  10, 10,  10,  10,
613                 10,  10,  219, 10,  10, 10, 10, 10,  10, 10,  10, 10,  10,  10,  10, 10,  10,  10,
614                 10,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 246, 10,  248, 10, 10,  251, 10,
615                 10,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10,  10,  10,  10, 268, 10,  10,
616                 10,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10,  283, 10,  10, 10,  10,  288,
617                 10,  10,  10,  292, 10, 10, 10, 10,  10, 0,   0,  0,   0,   0,   0,  0,
618         },
619         {
620                 0,  168, 0,   0,  0,  0,   0,   8,   8,  10, 10, 0,  0,  0,  0,  0,   0,  0,  0,
621                 0,  0,   0,   0,  0,  0,   0,   0,   0,  0,  0,  0,  0,  0,  0,  0,   35, 35, 0,
622                 38, 0,   0,   0,  0,  0,   0,   0,   0,  0,  0,  0,  0,  0,  0,  54,  54, 0,  0,
623                 0,  0,   0,   0,  0,  0,   0,   0,   0,  0,  0,  0,  0,  71, 71, 73,  71, 71, 71,
624                 71, 71,  71,  71, 0,  0,   0,   0,   0,  0,  10, 10, 10, 10, 10, 10,  10, 10, 10,
625                 10, 10,  10,  10, 10, 10,  10,  10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
626                 10, 10,  10,  10, 10, 120, 121, 10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
627                 10, 10,  10,  10, 10, 10,  10,  10,  10, 10, 10, 10, 10, 10, 10, 149, 10, 10, 10,
628                 10, 10,  10,  10, 10, 10,  10,  10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
629                 10, 10,  10,  10, 10, 10,  10,  179, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
630                 10, 10,  10,  10, 10, 10,  10,  10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
631                 10, 10,  10,  10, 10, 10,  10,  10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
632                 10, 10,  10,  10, 10, 10,  10,  10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
633                 10, 249, 250, 10, 10, 10,  10,  10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
634                 10, 10,  10,  10, 10, 272, 10,  10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
635                 10, 10,  10,  10, 10, 10,  10,  10,  10, 10, 10, 10, 0,  0,  0,  0,   0,  0,  0,
636         },
637         {
638                 0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10,  0,  0,  0,  0,  0,  0,   0,  0,
639                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  35,  35, 0,
640                 38, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,
641                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  71, 71, 71, 71,  71, 71,
642                 71, 71, 79, 71, 0,  0,  0,  0,  0,  0,  10,  10, 10, 10, 10, 10, 10,  10, 10,
643                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
644                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 133,
645                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
646                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
647                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
648                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
649                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10,
650                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 239, 10, 10, 10, 10, 10, 10,  10, 10,
651                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 264, 10, 10,
652                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 285,
653                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 0,  0,  0,  0,  0,   0,  0,
654         },
655         {
656                 0,   178, 0,  0,   0,  0,  0,  8,  8,   10,  10,  0,  0,   0,  0,   0,   0,   0,
657                 0,   0,   0,  0,   0,  0,  0,  0,  0,   0,   0,   0,  0,   0,  0,   0,   0,   35,
658                 35,  0,   38, 0,   0,  0,  0,  0,  0,   0,   0,   0,  0,   0,  0,   0,   0,   0,
659                 0,   0,   0,  0,   0,  0,  0,  0,  0,   0,   0,   0,  0,   0,  0,   0,   72,  71,
660                 71,  71,  71, 76,  71, 71, 71, 71, 0,   0,   0,   0,  0,   0,  10,  10,  89,  10,
661                 10,  10,  10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 103, 10, 10,  10,  10,  10,
662                 10,  10,  10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10,  10,  10,  10,
663                 10,  10,  10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10,  10,  143, 10,
664                 10,  10,  10, 154, 10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10,  10,  10,  10,
665                 10,  10,  10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10,  10,  10,  10,
666                 10,  10,  10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10,  10,  10,  10,
667                 10,  200, 10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 213, 10,  215, 10,
668                 10,  10,  10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 229, 10, 10,  10,  10,  10,
669                 10,  10,  10, 10,  10, 10, 10, 10, 10,  244, 10,  10, 10,  10, 10,  10,  10,  10,
670                 10,  10,  10, 10,  10, 10, 10, 10, 261, 10,  10,  10, 10,  10, 10,  10,  10,  10,
671                 271, 10,  10, 10,  10, 10, 10, 10, 10,  10,  281, 10, 10,  10, 10,  286, 10,  10,
672                 10,  290, 10, 10,  10, 10, 10, 10, 10,  0,   0,   0,  0,   0,  0,   0,
673         },
674         {
675                 0,  9,  0,  0,   0,  0,  0,  8,  8,   10, 10, 0,  0,  0,  0,  0,  0,  0,  0,
676                 0,  0,  0,  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  35, 35, 0,
677                 38, 0,  0,  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
678                 0,  0,  0,  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  71, 71, 71, 71, 71, 71,
679                 71, 71, 71, 71,  0,  0,  0,  0,  0,   0,  10, 10, 10, 10, 10, 10, 10, 10, 10,
680                 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
681                 10, 10, 10, 118, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
682                 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
683                 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
684                 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
685                 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
686                 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
687                 10, 10, 10, 10,  10, 10, 10, 10, 237, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
688                 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
689                 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
690                 10, 10, 10, 10,  10, 10, 10, 10, 10,  10, 10, 10, 0,  0,  0,  0,  0,  0,  0,
691         },
692         {
693                 0,  184, 0,  0,  0,  0,   0,   8,   8,  10, 10, 0,   0,  0,  0,  0,  0,   0,
694                 0,  0,   0,  0,  0,  0,   0,   0,   0,  0,  0,  0,   0,  0,  0,  0,  0,   35,
695                 35, 0,   38, 0,  0,  0,   0,   0,   0,  0,  0,  0,   0,  0,  0,  0,  0,   0,
696                 0,  0,   0,  0,  0,  0,   0,   0,   0,  0,  0,  0,   0,  0,  0,  0,  71,  71,
697                 71, 71,  71, 71, 71, 71,  71,  71,  0,  0,  0,  0,   0,  0,  10, 10, 10,  10,
698                 10, 92,  10, 94, 10, 10,  10,  98,  10, 10, 10, 10,  10, 10, 10, 10, 10,  10,
699                 10, 10,  10, 10, 10, 10,  10,  10,  10, 10, 10, 10,  10, 10, 10, 10, 128, 10,
700                 10, 10,  10, 10, 10, 10,  10,  10,  10, 10, 10, 10,  10, 10, 10, 10, 10,  10,
701                 10, 10,  10, 10, 10, 10,  10,  152, 10, 10, 10, 10,  10, 10, 10, 10, 10,  162,
702                 10, 10,  10, 10, 10, 10,  173, 170, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10,
703                 10, 10,  10, 10, 10, 10,  10,  10,  10, 10, 10, 10,  10, 10, 10, 10, 10,  10,
704                 10, 10,  10, 10, 10, 204, 205, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10,  10,
705                 10, 10,  10, 10, 10, 10,  10,  224, 10, 10, 10, 10,  10, 10, 10, 10, 10,  10,
706                 10, 10,  10, 10, 10, 10,  10,  10,  10, 10, 10, 10,  10, 10, 10, 10, 10,  10,
707                 10, 10,  10, 10, 10, 10,  10,  10,  10, 10, 10, 10,  10, 10, 10, 10, 10,  10,
708                 10, 10,  10, 10, 10, 10,  10,  278, 10, 10, 10, 282, 10, 10, 10, 10, 287, 10,
709                 10, 10,  10, 10, 10, 10,  295, 10,  10, 0,  0,  0,   0,  0,  0,  0,
710         },
711         {
712                 0,  9,  0,  0,  0,  0,  0,  8,  8,   10, 10, 0,  0,  0,  0,   0,  0,  0,  0,
713                 0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  35, 35, 0,
714                 38, 0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,
715                 0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  71, 71,  71, 71, 71, 71,
716                 71, 71, 71, 71, 0,  0,  0,  0,  0,   0,  10, 10, 10, 10, 10,  10, 10, 10, 10,
717                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
718                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
719                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
720                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 167, 10, 10, 10, 10,
721                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
722                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
723                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
724                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
725                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
726                 10, 10, 10, 10, 10, 10, 10, 10, 275, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
727                 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 0,  0,  0,   0,  0,  0,  0,
728         },
729         {
730                 0,  190, 0,  0,   0,  0,  0,   8,   8,   10,  10,  0,  0,  0,   0,  0,  0,  0,  0,
731                 0,  0,   0,  0,   0,  0,  0,   0,   0,   0,   0,   0,  0,  0,   0,  0,  35, 35, 0,
732                 38, 0,   0,  0,   0,  0,  0,   0,   0,   0,   0,   0,  0,  0,   0,  0,  0,  0,  0,
733                 0,  0,   0,  0,   0,  0,  0,   0,   0,   0,   0,   0,  0,  71,  71, 71, 71, 71, 71,
734                 71, 71,  71, 71,  0,  0,  0,   0,   0,   0,   10,  10, 10, 10,  10, 10, 10, 10, 10,
735                 10, 10,  10, 10,  10, 10, 10,  10,  104, 10,  10,  10, 10, 10,  10, 10, 10, 10, 10,
736                 10, 10,  10, 10,  10, 10, 10,  10,  10,  10,  10,  10, 10, 10,  10, 10, 10, 10, 139,
737                 10, 10,  10, 137, 10, 10, 10,  10,  10,  10,  144, 10, 10, 10,  10, 10, 10, 10, 10,
738                 10, 10,  10, 10,  10, 10, 10,  10,  10,  165, 10,  10, 10, 10,  10, 10, 10, 10, 10,
739                 10, 10,  10, 10,  10, 10, 10,  180, 10,  10,  10,  10, 10, 10,  10, 10, 10, 10, 10,
740                 10, 10,  10, 10,  10, 10, 10,  10,  10,  10,  10,  10, 10, 10,  10, 10, 10, 10, 10,
741                 10, 10,  10, 10,  10, 10, 10,  217, 10,  10,  10,  10, 10, 223, 10, 10, 10, 10, 10,
742                 10, 10,  10, 10,  10, 10, 235, 10,  10,  10,  10,  10, 10, 10,  10, 10, 10, 10, 10,
743                 10, 10,  10, 10,  10, 10, 10,  10,  10,  10,  10,  10, 10, 10,  10, 10, 10, 10, 10,
744                 10, 10,  10, 270, 10, 10, 10,  10,  10,  10,  10,  10, 10, 10,  10, 10, 10, 10, 10,
745                 10, 10,  10, 10,  10, 10, 10,  10,  294, 10,  10,  10, 0,  0,   0,  0,  0,  0,  0,
746         },
747         {
748                 0,   206, 0,   0,   0,   0,   0,   8,  8,  10, 10,  0,  0,   0,  0,  0,  0,   0,
749                 0,   0,   0,   0,   0,   0,   0,   0,  0,  0,  0,   0,  0,   0,  0,  0,  0,   35,
750                 35,  0,   38,  0,   0,   0,   0,   0,  0,  0,  0,   0,  0,   0,  0,  0,  0,   0,
751                 0,   0,   0,   0,   0,   0,   0,   0,  0,  0,  0,   0,  0,   0,  0,  0,  71,  71,
752                 71,  71,  71,  71,  71,  71,  71,  71, 0,  0,  0,   0,  0,   0,  10, 10, 10,  10,
753                 10,  10,  10,  10,  95,  10,  10,  10, 10, 10, 10,  10, 108, 10, 10, 10, 10,  10,
754                 10,  10,  10,  10,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10, 10, 132, 10,
755                 10,  10,  10,  10,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10, 10, 10,  10,
756                 10,  10,  10,  160, 10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10, 10, 10,  10,
757                 10,  10,  10,  10,  10,  10,  176, 10, 10, 10, 10,  10, 10,  10, 10, 10, 10,  10,
758                 181, 10,  10,  10,  10,  10,  187, 10, 10, 10, 191, 10, 10,  10, 10, 10, 10,  10,
759                 10,  10,  10,  10,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10, 10, 10,  216,
760                 10,  10,  10,  10,  10,  222, 10,  10, 10, 10, 10,  10, 10,  10, 10, 10, 10,  10,
761                 10,  10,  10,  10,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10, 10, 10,  10,
762                 10,  10,  10,  10,  10,  10,  10,  10, 10, 10, 10,  10, 10,  10, 10, 10, 10,  10,
763                 10,  10,  273, 10,  10,  10,  277, 10, 10, 10, 10,  10, 10,  10, 10, 10, 10,  10,
764                 10,  10,  10,  10,  293, 10,  10,  10, 10, 0,  0,   0,  0,   0,  0,  0,
765         },
766         {
767                 0,  209, 0,  0,  0,  0,   0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,
768                 0,  0,   0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  35, 35, 0,
769                 38, 0,   0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
770                 0,  0,   0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  71, 71, 71, 71, 71, 71,
771                 71, 71,  71, 71, 0,  0,   0,  0,  0,  0,  10, 88, 10, 10, 10, 10, 10, 10, 10,
772                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
773                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
774                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
775                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
776                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
777                 10, 192, 10, 10, 10, 196, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
778                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
779                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
780                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
781                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
782                 10, 10,  10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,  0,
783         },
784         {
785                 0,   218, 0,  0,   0,  0,   0,  8,   8,   10, 10, 0,  0,  0,  0,  0,  0,  0,  0,
786                 0,   0,   0,  0,   0,  0,   0,  0,   0,   0,  0,  0,  0,  0,  0,  0,  35, 35, 0,
787                 38,  0,   0,  0,   0,  0,   0,  0,   0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
788                 0,   0,   0,  0,   0,  0,   0,  0,   0,   0,  0,  0,  0,  71, 71, 71, 71, 71, 71,
789                 71,  71,  71, 71,  0,  0,   0,  0,   0,   0,  10, 10, 10, 10, 10, 10, 10, 10, 10,
790                 10,  10,  10, 10,  10, 10,  10, 10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
791                 115, 10,  10, 10,  10, 10,  10, 10,  123, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
792                 10,  135, 10, 10,  10, 10,  10, 10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
793                 10,  10,  10, 10,  10, 158, 10, 10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
794                 10,  10,  10, 10,  10, 177, 10, 10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
795                 10,  10,  10, 194, 10, 10,  10, 10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
796                 210, 10,  10, 10,  10, 10,  10, 10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 228,
797                 10,  10,  10, 10,  10, 234, 10, 10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
798                 10,  10,  10, 10,  10, 10,  10, 10,  256, 10, 10, 10, 10, 10, 10, 10, 10, 10, 266,
799                 10,  10,  10, 10,  10, 10,  10, 274, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 289,
800                 10,  10,  10, 10,  10, 10,  10, 10,  10,  10, 10, 10, 0,  0,  0,  0,  0,  0,  0,
801         },
802         {
803                 0,   236, 0,  0,   0,   0,  0,   8,  8,   10, 10,  0,  0,  0,   0,   0,   0,  0,
804                 0,   0,   0,  0,   0,   0,  0,   0,  0,   0,  0,   0,  0,  0,   0,   0,   0,  35,
805                 35,  0,   38, 0,   0,   0,  0,   0,  0,   0,  0,   0,  0,  0,   0,   0,   0,  0,
806                 0,   0,   0,  0,   0,   0,  0,   0,  0,   0,  0,   0,  0,  0,   0,   0,   74, 71,
807                 71,  71,  71, 71,  71,  71, 71,  71, 0,   0,  0,   0,  0,  0,   10,  10,  10, 10,
808                 10,  10,  10, 10,  10,  10, 10,  10, 10,  10, 10,  10, 10, 10,  10,  10,  10, 10,
809                 10,  10,  10, 10,  10,  10, 10,  10, 10,  10, 10,  10, 10, 10,  10,  10,  10, 126,
810                 10,  10,  10, 130, 131, 10, 10,  10, 10,  10, 10,  10, 10, 140, 10,  10,  10, 10,
811                 10,  10,  10, 10,  10,  10, 10,  10, 10,  10, 155, 10, 10, 10,  10,  10,  10, 10,
812                 163, 10,  10, 10,  10,  10, 10,  10, 171, 10, 10,  10, 10, 10,  10,  10,  10, 10,
813                 10,  10,  10, 10,  10,  10, 10,  10, 10,  10, 10,  10, 10, 10,  195, 10,  10, 10,
814                 10,  10,  10, 10,  10,  10, 10,  10, 10,  10, 10,  10, 10, 10,  10,  214, 10, 10,
815                 10,  10,  10, 226, 10,  10, 10,  10, 10,  10, 10,  10, 10, 10,  10,  10,  10, 10,
816                 10,  10,  10, 10,  10,  10, 241, 10, 243, 10, 10,  10, 10, 10,  10,  10,  10, 10,
817                 10,  254, 10, 10,  10,  10, 10,  10, 10,  10, 10,  10, 10, 10,  10,  10,  10, 10,
818                 10,  10,  10, 10,  10,  10, 10,  10, 10,  10, 10,  10, 10, 10,  10,  10,  10, 10,
819                 10,  10,  10, 10,  10,  10, 10,  10, 10,  0,  0,   0,  0,  0,   0,   0,
820         },
821         {
822                 0,   265, 0,   0,   0,  0,  0,   8,  8,   10,  10,  0,   0,   0,   0,   0,  0,  0,
823                 0,   0,   0,   0,   0,  0,  0,   0,  0,   0,   0,   0,   0,   0,   0,   0,  0,  35,
824                 35,  0,   38,  0,   0,  0,  0,   0,  0,   0,   0,   0,   0,   0,   0,   0,  0,  0,
825                 0,   0,   0,   0,   0,  0,  0,   0,  0,   0,   0,   0,   0,   0,   0,   0,  71, 71,
826                 71,  71,  71,  71,  77, 71, 71,  71, 0,   0,   0,   0,   0,   0,   10,  10, 10, 10,
827                 10,  10,  10,  10,  10, 10, 10,  10, 10,  10,  10,  10,  10,  10,  10,  10, 10, 10,
828                 10,  110, 10,  10,  10, 10, 10,  10, 10,  10,  10,  10,  10,  10,  10,  10, 10, 10,
829                 10,  10,  10,  10,  10, 10, 10,  10, 10,  10,  10,  138, 10,  142, 141, 10, 10, 10,
830                 10,  10,  10,  10,  10, 10, 10,  10, 153, 10,  10,  10,  10,  10,  10,  10, 10, 10,
831                 10,  10,  10,  10,  10, 10, 10,  10, 10,  10,  10,  10,  175, 10,  10,  10, 10, 10,
832                 10,  10,  183, 10,  10, 10, 10,  10, 189, 10,  10,  10,  10,  10,  10,  10, 10, 10,
833                 199, 10,  10,  10,  10, 10, 10,  10, 10,  208, 10,  10,  10,  10,  10,  10, 10, 10,
834                 10,  10,  10,  232, 10, 10, 10,  10, 10,  10,  227, 10,  10,  10,  231, 10, 10, 10,
835                 10,  10,  255, 10,  10, 10, 10,  10, 10,  10,  10,  10,  10,  10,  10,  10, 10, 10,
836                 253, 10,  10,  10,  10, 10, 259, 10, 10,  262, 10,  10,  10,  10,  10,  10, 10, 10,
837                 10,  10,  10,  10,  10, 10, 10,  10, 10,  280, 10,  10,  10,  10,  10,  10, 10, 10,
838                 10,  10,  291, 10,  10, 10, 10,  10, 10,  0,   0,   0,   0,   0,   0,   0,
839         },
840         {
841                 0,   269, 0,  0,  0,   0,  0,  8,  8,  10,  10,  0,   0,  0,   0,  0,  0,   0,   0,
842                 0,   0,   0,  0,  0,   0,  0,  0,  0,  0,   0,   0,   0,  0,   0,  0,  35,  35,  0,
843                 38,  0,   0,  0,  0,   0,  0,  0,  0,  0,   0,   0,   0,  0,   0,  0,  0,   0,   0,
844                 0,   0,   0,  0,  0,   0,  0,  0,  0,  0,   0,   0,   0,  71,  71, 71, 71,  71,  71,
845                 71,  71,  71, 71, 0,   0,  0,  0,  0,  0,   10,  10,  10, 10,  10, 10, 10,  10,  10,
846                 10,  10,  10, 10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 109, 10, 10, 10,  10,  10,
847                 119, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10, 10,  10,  10,
848                 10,  10,  10, 10, 10,  10, 10, 10, 10, 10,  10,  145, 10, 10,  10, 10, 10,  151, 10,
849                 10,  10,  10, 10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 166, 10, 10, 10,  10,  10,
850                 10,  10,  10, 10, 10,  10, 10, 10, 10, 10,  182, 10,  10, 10,  10, 10, 188, 10,  10,
851                 203, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10, 207, 10,  10,
852                 10,  10,  10, 10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10, 10,  10,  10,
853                 10,  10,  10, 10, 233, 10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10, 10,  10,  10,
854                 10,  10,  10, 10, 10,  10, 10, 10, 10, 257, 10,  10,  10, 10,  10, 10, 10,  10,  10,
855                 267, 10,  10, 10, 10,  10, 10, 10, 10, 10,  10,  10,  10, 10,  10, 10, 10,  10,  10,
856                 10,  10,  10, 10, 10,  10, 10, 10, 10, 10,  10,  10,  0,  0,   0,  0,  0,   0,   0,
857         },
858         {
859                 0,  276, 0,  0,  0,  0,  0,  8,  8,  10, 10,  0,  0,  0,  0,  0,  0,  0,  0,
860                 0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  35, 35, 0,
861                 38, 0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
862                 0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  71, 71, 71, 71, 71, 71,
863                 71, 71,  71, 71, 0,  0,  0,  0,  0,  0,  10,  10, 10, 10, 10, 10, 10, 10, 10,
864                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,
865                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,
866                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,
867                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,
868                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,
869                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 201, 10, 10, 10, 10, 10, 10, 10, 10,
870                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,
871                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,
872                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,
873                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,
874                 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 0,  0,  0,  0,  0,  0,  0,
875         },
876         {
877                 0,  284, 0,  0,  0,  0,  0,  8,  8,   10, 10, 0,  0,  0,  0,  0,  0,  0,  0,
878                 0,  0,   0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  35, 35, 0,
879                 38, 0,   0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
880                 0,  0,   0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  71, 71, 71, 71, 75, 71,
881                 71, 71,  71, 71, 0,  0,  0,  0,  0,   0,  10, 10, 10, 10, 10, 10, 10, 10, 10,
882                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
883                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
884                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
885                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
886                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
887                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
888                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
889                 10, 10,  10, 10, 10, 10, 10, 10, 260, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
890                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
891                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
892                 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 0,  0,  0,  0,  0,  0,  0,
893         },
894         {
895                 0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
896                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  35, 35, 0,  38, 0,  53, 0,
897                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
898                 0,  0,  0,  0,  0,  0,  0,  71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 0,  0,  0,  0,
899                 0,  0,  10, 10, 10, 90, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
900                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
901                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
902                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
903                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
904                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
905                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
906                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
907                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
908                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
909                 10, 10, 10, 0,  0,  0,  0,  0,  0,  0,
910         },
911         {
912                 0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10,  0,  0,  0,  0,   0,   0,  0,  0,
913                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,   0,   35, 35, 0,
914                 38, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,   0,   0,  0,  0,
915                 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  71, 71,  71,  71, 71, 71,
916                 71, 71, 71, 71, 0,  0,  0,  0,  0,  0,  10,  10, 10, 10, 10,  10,  10, 10, 10,
917                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10,
918                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10,
919                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10,
920                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10,
921                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 186, 10,  10, 10, 10,
922                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10,
923                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  225, 10, 10, 10,
924                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10,
925                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10,
926                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10,
927                 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 296, 10, 0,  0,  0,   0,   0,  0,  0,
928         },
929         {
930                 0, 297, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
931                 0, 0,   0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
932                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
933                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
934                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
935                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
936                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
937                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
938                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
939                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
940                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
941                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
942         },
943         {
944                 0, 298, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
945                 0, 0,   0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
946                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
947                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
948                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
949                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
950                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
951                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
952                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
953                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
954                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
955                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 300, 0, 0, 0, 0, 0,
956         },
957         {
958                 0, 302, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
959                 0, 0,   0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
960                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
961                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
962                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
963                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
964                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
965                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
966                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
967                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
968                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
969                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
970         },
971         {
972                 0, 303, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
973                 0, 0,   0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
974                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
975                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
976                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
977                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
978                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
979                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
980                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
981                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
982                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
983                 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,
984         },
985 };
986 
987 static int8_t accepts[304] = {
988         -1, -1, 95, 95, 98, 69, 75, 98, 43, 42, 42, 59, 84, 64, 68, 92, 89, 45, 46, 57, 82, 55,
989         53, 80, 52, 56, 54, 81, 94, 51, 1,  -1, -1, 1,  58, -1, -1, 97, 96, 83, 2,  1,  1,  -1,
990         -1, 1,  -1, -1, 1,  2,  -1, -1, 1,  -1, 2,  2,  72, 71, 93, 77, 60, 85, 79, 73, 74, 76,
991         78, 61, 86, 70, 98, 44, 44, 6,  44, 44, 44, 44, 44, 12, 49, 50, 63, 88, 67, 91, 42, 42,
992         42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 34, 42, 42, 42, 42, 42, 35, 42, 42,
993         42, 42, 42, 36, 42, 42, 42, 42, 15, 42, 42, 42, 42, 32, 42, 42, 42, 13, 42, 42, 42, 41,
994         42, 42, 42, 42, 42, 42, 29, 42, 42, 24, 42, 42, 42, 42, 16, 42, 42, 42, 42, 42, 42, 14,
995         42, 42, 42, 42, 42, 17, 10, 42, 42, 42, 7,  42, 42, 40, 42, 42, 42, 42, 4,  42, 42, 25,
996         42, 8,  42, 5,  20, 42, 42, 22, 42, 42, 42, 42, 42, 38, 42, 42, 42, 42, 42, 42, 42, 42,
997         42, 42, 42, 42, 26, 42, 42, 19, 42, 42, 21, 42, 42, 42, 42, 42, 42, 42, 42, 39, 42, 42,
998         42, 42, 42, 42, 42, 27, 42, 42, 42, 42, 42, 31, 42, 42, 42, 18, 42, 42, 42, 42, 42, 42,
999         42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 33, 42, 42, 42, 42, 37, 42, 42, 42, 42,
1000         11, 42, 42, 42, 3,  42, 42, 42, 42, 42, 42, 23, 42, 42, 42, 42, 42, 42, 42, 30, 42, 42,
1001         42, 42, 9,  42, 42, 42, 42, 42, 42, 42, 28, 47, 62, 87, 66, 90, 48, 65,
1002 };
1003 
next()1004 Token Lexer::next() {
1005     // note that we cheat here: normally a lexer needs to worry about the case
1006     // where a token has a prefix which is not itself a valid token - for instance,
1007     // maybe we have a valid token 'while', but 'w', 'wh', etc. are not valid
1008     // tokens. Our grammar doesn't have this property, so we can simplify the logic
1009     // a bit.
1010     int32_t startOffset = fOffset;
1011     if (startOffset == fLength) {
1012         return Token(Token::END_OF_FILE, startOffset, 0);
1013     }
1014     int16_t state = 1;
1015     for (;;) {
1016         if (fOffset >= fLength) {
1017             if (accepts[state] == -1) {
1018                 return Token(Token::END_OF_FILE, startOffset, 0);
1019             }
1020             break;
1021         }
1022         uint8_t c = (uint8_t)fText[fOffset];
1023         if (c <= 8 || c >= 127) {
1024             c = INVALID_CHAR;
1025         }
1026         int16_t newState = transitions[mappings[c]][state];
1027         if (!newState) {
1028             break;
1029         }
1030         state = newState;
1031         ++fOffset;
1032     }
1033     Token::Kind kind = (Token::Kind)accepts[state];
1034     return Token(kind, startOffset, fOffset - startOffset);
1035 }
1036 
1037 }  // namespace
1038