Version 0.1.12 from FTP
[asterisk/asterisk.git] / channels / alaw.h
1 /*
2    Copyright (c) 1997 Kolja Waschk 
3
4    Name: alaw.h
5    Version: 1.0
6    Author: Marco Budde
7    Description: Converts a-law signals to signed linear signals and
8                 vice versa.
9
10
11    This file is part of isdn2h323.              
12  
13    This is public domain, but if you take more from this source than 
14    just the idea, it would be neat to see my name mentioned in your 
15    source or readme.        
16
17 */
18
19
20 #define ALAW2INT(x) alaw2int[x]
21 #define INT2ALAW(x) int2alaw[(x>>4)+4096]         
22
23
24 // table to convert unsigned a-law bytes to signed linear integers
25
26 const int alaw2int[256] = {
27   -5504,5504,-344,344,-22016,22016,-1376,1376,-2752,2752,-88,88,-11008,11008,
28   -688,688,-7552,7552,-472,472,-30208,30208,-1888,1888,-3776,3776,-216,216,
29   -15104,15104,-944,944,-4480,4480,-280,280,-17920,17920,-1120,1120,-2240,2240,
30   -24, 24,-8960,8960,-560,560,-6528,6528,-408,408,-26112,26112,-1632,1632,
31   -3264,3264,-152,152,-13056,13056,-816,816,-6016,6016,-376,376,-24064,24064,
32   -1504,1504,-3008,3008,-120,120,-12032,12032,-752,752,-8064,8064,-504,504,
33   -32256,32256,-2016,2016,-4032,4032,-248,248,-16128,16128,-1008,1008,-4992,
34    4992,-312,312,-19968,19968,-1248,1248,-2496,2496,-56,56,-9984,9984,-624,624,
35   -7040,7040,-440,440,-28160,28160,-1760,1760,-3520,3520,-184,184,-14080,14080,
36   -880,880,-5248,5248,-328,328,-20992,20992,-1312,1312,-2624,2624,-72,72,
37   -10496,10496,-656,656,-7296,7296,-456,456,-29184,29184,-1824,1824,-3648,3648,
38   -200,200,-14592,14592,-912,912,-4224,4224,-264,264,-16896,16896,-1056,1056,
39   -2112,2112, -8,  8,-8448,8448,-528,528,-6272,6272,-392,392,-25088,25088,
40   -1568,1568,-3136,3136,-136,136,-12544,12544,-784,784,-5760,5760,-360,360,
41   -23040,23040,-1440,1440,-2880,2880,-104,104,-11520,11520,-720,720,-7808,7808,
42   -488,488,-31232,31232,-1952,1952,-3904,3904,-232,232,-15616,15616,-976,976,
43   -4736,4736,-296,296,-18944,18944,-1184,1184,-2368,2368,-40,40,-9472,9472,
44   -592,592,-6784,6784,-424,424,-27136,27136,-1696,1696,-3392,3392,-168,168,
45   -13568,13568,-848,848
46 };
47
48
49 // table to convert linear shorts to a-law bytes
50 // shift the integer to be 12+1 bit first, then add 4096 to get 
51 // the right index 
52
53 const unsigned char int2alaw[8192] = {
54   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
55   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
56   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
57   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
58   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
59   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
60   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
61   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
62   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
63   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
64   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
65   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
66   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
67   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
68   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
69   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
70   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
71   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
72   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
73   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
74   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
75   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
76   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
77   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
78   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
79   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
80   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
81   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
82   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
83   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
84   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
85   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
86   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
87   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
88   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
89   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
90   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
91   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
92   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
93   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
94   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
95   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
96   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
97   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
98   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
99   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
100   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
101   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
102   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
103   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
104   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
105   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
106   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
107   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
108   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
109   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
110   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
111   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
112   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
113   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
114   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
115   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
116   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
117   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
118   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
119   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
120   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
121   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
122   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
123   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
124   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
125   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
126   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
127   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
128   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
129   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
130   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
131   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
132   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
133   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
134   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
135   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
136   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
137   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
138   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
139   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
140   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
141   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
142   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
143   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
144   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
145   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
146   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
147   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
148   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
149   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
150   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
151   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
152   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
153   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
154   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
155   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
156   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
157   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
158   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
159   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
160   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
161   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
162   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
163   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
164   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
165   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
166   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
167   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
168   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
169   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
170   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
171   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
172   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
173   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
174   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
175   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
176   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
177   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
178   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
179   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
180   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
181   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
182   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
183   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
184   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
185   84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,
186   212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,
187   212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,
188   212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,
189   212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,
190   20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
191   20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
192   20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
193   20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
194   148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,
195   148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,
196   148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,
197   148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,
198   116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,
199   116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,
200   116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,
201   116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,
202   244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
203   244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
204   244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
205   244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
206   52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,
207   52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,
208   52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,
209   52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,
210   180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,
211   180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,
212   180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,
213   180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,
214   68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,
215   68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,
216   68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,
217   68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,
218   196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,
219   196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,
220   196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,
221   196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,
222   4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
223   4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
224   4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
225   4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
226   132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
227   132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
228   132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
229   132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,
230   100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
231   100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
232   100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
233   100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,
234   228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,
235   228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,
236   228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,
237   228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,
238   36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
239   36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
240   36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
241   36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
242   164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,
243   164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,
244   164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,
245   164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,
246   92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
247   92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
248   220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,
249   220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,
250   28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,
251   28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,
252   156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,
253   156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,
254   124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,
255   124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,
256   252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,
257   252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,
258   60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,
259   60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,
260   188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,
261   188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,
262   76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,
263   76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,
264   204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,
265   204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,
266   12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
267   12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
268   140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,
269   140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,
270   108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,
271   108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,
272   236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
273   236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,
274   44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,
275   44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,
276   172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,
277   172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,
278   80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,
279   208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,
280   16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
281   144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,
282   112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,
283   240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,
284   48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,
285   176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,
286   64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,
287   192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,
288   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
289   128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
290   96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,
291   224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,
292   32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
293   160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,
294   88,88,88,88,88,88,88,88,216,216,216,216,216,216,216,216,
295   24,24,24,24,24,24,24,24,152,152,152,152,152,152,152,152,
296   120,120,120,120,120,120,120,120,248,248,248,248,248,248,248,248,
297   56,56,56,56,56,56,56,56,184,184,184,184,184,184,184,184,
298   72,72,72,72,72,72,72,72,200,200,200,200,200,200,200,200,
299   8,8,8,8,8,8,8,8,136,136,136,136,136,136,136,136,
300   104,104,104,104,104,104,104,104,232,232,232,232,232,232,232,232,
301   40,40,40,40,40,40,40,40,168,168,168,168,168,168,168,168,
302   86,86,86,86,214,214,214,214,22,22,22,22,150,150,150,150,
303   118,118,118,118,246,246,246,246,54,54,54,54,182,182,182,182,
304   70,70,70,70,198,198,198,198,6,6,6,6,134,134,134,134,
305   102,102,102,102,230,230,230,230,38,38,38,38,166,166,166,166,
306   94,94,222,222,30,30,158,158,126,126,254,254,62,62,190,190,
307   78,78,206,206,14,14,142,142,110,110,238,238,46,46,174,174,
308   82,210,18,146,114,242,50,178,66,194,2,130,98,226,34,162,
309   90,218,26,154,122,250,58,186,74,202,10,138,106,234,42,170,
310   171,43,235,107,139,11,203,75,187,59,251,123,155,27,219,91,
311   163,35,227,99,131,3,195,67,179,51,243,115,147,19,211,83,
312   175,175,47,47,239,239,111,111,143,143,15,15,207,207,79,79,
313   191,191,63,63,255,255,127,127,159,159,31,31,223,223,95,95,
314   167,167,167,167,39,39,39,39,231,231,231,231,103,103,103,103,
315   135,135,135,135,7,7,7,7,199,199,199,199,71,71,71,71,
316   183,183,183,183,55,55,55,55,247,247,247,247,119,119,119,119,
317   151,151,151,151,23,23,23,23,215,215,215,215,87,87,87,87,
318   169,169,169,169,169,169,169,169,41,41,41,41,41,41,41,41,
319   233,233,233,233,233,233,233,233,105,105,105,105,105,105,105,105,
320   137,137,137,137,137,137,137,137,9,9,9,9,9,9,9,9,
321   201,201,201,201,201,201,201,201,73,73,73,73,73,73,73,73,
322   185,185,185,185,185,185,185,185,57,57,57,57,57,57,57,57,
323   249,249,249,249,249,249,249,249,121,121,121,121,121,121,121,121,
324   153,153,153,153,153,153,153,153,25,25,25,25,25,25,25,25,
325   217,217,217,217,217,217,217,217,89,89,89,89,89,89,89,89,
326   161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,
327   33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,
328   225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,
329   97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,
330   129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,
331   1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
332   193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
333   65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,
334   177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,
335   49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,
336   241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,
337   113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,
338   145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,
339   17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
340   209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,
341   81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,
342   173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,
343   173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,
344   45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
345   45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
346   237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,
347   237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,
348   109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,
349   109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,
350   141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,
351   141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,
352   13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
353   13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
354   205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,
355   205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,
356   77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,
357   77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,
358   189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,
359   189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,
360   61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,
361   61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,
362   253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,
363   253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,
364   125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,
365   125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,
366   157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,
367   157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,
368   29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,
369   29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,
370   221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,
371   221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,
372   93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,
373   93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,
374   165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,
375   165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,
376   165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,
377   165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,
378   37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
379   37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
380   37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
381   37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
382   229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
383   229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
384   229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
385   229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
386   101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,
387   101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,
388   101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,
389   101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,
390   133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,
391   133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,
392   133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,
393   133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,
394   5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
395   5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
396   5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
397   5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
398   197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,
399   197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,
400   197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,
401   197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,
402   69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,
403   69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,
404   69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,
405   69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,
406   181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,
407   181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,
408   181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,
409   181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,
410   53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,
411   53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,
412   53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,
413   53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,
414   245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,
415   245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,
416   245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,
417   245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,
418   117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,
419   117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,
420   117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,
421   117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,
422   149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,
423   149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,
424   149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,
425   149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,
426   21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,
427   21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,
428   21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,
429   21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,
430   213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,
431   213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,
432   213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,
433   213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,
434   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
435   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
436   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
437   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
438   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
439   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
440   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
441   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
442   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
443   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
444   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
445   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
446   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
447   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
448   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
449   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
450   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
451   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
452   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
453   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
454   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
455   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
456   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
457   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
458   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
459   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
460   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
461   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
462   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
463   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
464   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
465   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
466   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
467   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
468   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
469   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
470   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
471   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
472   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
473   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
474   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
475   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
476   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
477   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
478   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
479   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
480   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
481   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
482   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
483   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
484   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
485   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
486   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
487   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
488   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
489   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
490   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
491   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
492   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
493   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
494   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
495   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
496   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
497   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
498   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
499   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
500   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
501   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
502   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
503   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
504   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
505   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
506   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
507   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
508   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
509   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
510   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
511   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
512   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
513   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
514   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
515   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
516   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
517   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
518   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
519   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
520   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
521   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
522   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
523   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
524   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
525   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
526   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
527   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
528   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
529   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
530   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
531   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
532   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
533   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
534   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
535   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
536   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
537   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
538   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
539   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
540   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
541   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
542   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
543   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
544   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
545   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
546   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
547   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
548   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
549   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
550   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
551   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
552   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
553   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
554   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
555   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
556   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
557   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
558   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
559   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
560   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
561   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
562   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
563   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
564   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
565   85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85
566 };