2
* Topro TP6800/6810 webcam driver.
4
* Copyright (C) 2011 Jean-FranƧois Moine (http://moinejf.free.fr)
5
* Copyright (C) 2009 Anders Blomdell (anders.blomdell@control.lth.se)
6
* Copyright (C) 2008 Thomas Champagne (lafeuil@gmail.com)
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
18
* You should have received a copy of the GNU General Public License
19
* along with this program; If not, see <http://www.gnu.org/licenses/>.
22
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
26
MODULE_DESCRIPTION("Topro TP6800/6810 gspca webcam driver");
27
MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, "
28
"Anders Blomdell <anders.blomdell@control.lth.se>");
29
MODULE_LICENSE("GPL");
31
static int force_sensor = -1;
34
static const u8 jpeg_head[] = {
35
0xff, 0xd8, /* jpeg */
37
/* quantization table quality 50% */
38
0xff, 0xdb, 0x00, 0x84, /* DQT */
40
#define JPEG_QT0_OFFSET 7
41
0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
42
0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
43
0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
44
0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
45
0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
46
0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
47
0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
48
0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
50
#define JPEG_QT1_OFFSET 72
51
0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
52
0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
53
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
54
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
55
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
56
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
57
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
58
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
60
/* Define Huffman table (thanks to Thomas Kaiser) */
61
0xff, 0xc4, 0x01, 0x5e,
62
0x00, 0x00, 0x02, 0x03,
63
0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
64
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
65
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
66
0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
67
0x07, 0x05, 0x04, 0x06, 0x01, 0x00, 0x00, 0x57,
68
0x01, 0x02, 0x03, 0x00, 0x11, 0x04, 0x12, 0x21,
69
0x31, 0x13, 0x41, 0x51, 0x61, 0x05, 0x22, 0x32,
70
0x14, 0x71, 0x81, 0x91, 0x15, 0x23, 0x42, 0x52,
71
0x62, 0xa1, 0xb1, 0x06, 0x33, 0x72, 0xc1, 0xd1,
72
0x24, 0x43, 0x53, 0x82, 0x16, 0x34, 0x92, 0xa2,
73
0xe1, 0xf1, 0xf0, 0x07, 0x08, 0x17, 0x18, 0x25,
74
0x26, 0x27, 0x28, 0x35, 0x36, 0x37, 0x38, 0x44,
75
0x45, 0x46, 0x47, 0x48, 0x54, 0x55, 0x56, 0x57,
76
0x58, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x73,
77
0x74, 0x75, 0x76, 0x77, 0x78, 0x83, 0x84, 0x85,
78
0x86, 0x87, 0x88, 0x93, 0x94, 0x95, 0x96, 0x97,
79
0x98, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2,
80
0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3,
81
0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4,
82
0xd5, 0xd6, 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5,
83
0xe6, 0xe7, 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
84
0xf7, 0xf8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
85
0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
86
0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04,
87
0x05, 0x06, 0x07, 0x08, 0x09, 0x11, 0x00, 0x02,
88
0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
89
0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 0x00, 0x01,
90
0x11, 0x02, 0x21, 0x03, 0x12, 0x31, 0x41, 0x13,
91
0x22, 0x51, 0x61, 0x04, 0x32, 0x71, 0x05, 0x14,
92
0x23, 0x42, 0x33, 0x52, 0x81, 0x91, 0xa1, 0xb1,
93
0xf0, 0x06, 0x15, 0xc1, 0xd1, 0xe1, 0x24, 0x43,
94
0x62, 0xf1, 0x16, 0x25, 0x34, 0x53, 0x72, 0x82,
95
0x92, 0x07, 0x08, 0x17, 0x18, 0x26, 0x27, 0x28,
96
0x35, 0x36, 0x37, 0x38, 0x44, 0x45, 0x46, 0x47,
97
0x48, 0x54, 0x55, 0x56, 0x57, 0x58, 0x63, 0x64,
98
0x65, 0x66, 0x67, 0x68, 0x73, 0x74, 0x75, 0x76,
99
0x77, 0x78, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
100
0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xa2, 0xa3,
101
0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 0xb3, 0xb4,
102
0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 0xc4, 0xc5,
103
0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
104
0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
105
0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
106
0xff, 0xc0, 0x00, 0x11, /* SOF0 (start of frame 0 */
107
0x08, /* data precision */
108
#define JPEG_HEIGHT_OFFSET 493
109
0x01, 0xe0, /* height */
110
0x02, 0x80, /* width */
111
0x03, /* component number */
113
0x21, /* samples Y = jpeg 422 */
115
0x02, 0x11, 0x01, /* samples CbCr - quant CbCr */
118
0xff, 0xda, 0x00, 0x0c, /* SOS (start of scan) */
119
0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
120
#define JPEG_HDR_SZ 521
132
NCTRLS /* number of controls */
135
#define AUTOGAIN_DEF 1
138
struct gspca_dev gspca_dev; /* !! must be the first item */
140
struct gspca_ctrl ctrls[NCTRLS];
143
u8 quality; /* webcam current JPEG quality (0..16) */
144
s8 ag_cnt; /* autogain / start counter for tp6810 */
145
#define AG_CNT_START 13 /* check gain every N frames */
150
u8 jpeg_hdr[JPEG_HDR_SZ];
160
SENSOR_SOI763A, /* ~= ov7630 / ov7648 */
164
static const struct v4l2_pix_format vga_mode[] = {
165
{320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
167
.sizeimage = 320 * 240 * 4 / 8 + 590,
168
.colorspace = V4L2_COLORSPACE_JPEG},
169
{640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
171
.sizeimage = 640 * 480 * 3 / 8 + 590,
172
.colorspace = V4L2_COLORSPACE_JPEG}
177
* index: webcam compression
178
* value: JPEG quality in %
180
static const u8 jpeg_q[17] = {
181
88, 77, 67, 57, 55, 55, 45, 45, 36, 36, 30, 30, 26, 26, 22, 22, 94
184
#define BULK_OUT_SIZE 0x20
185
#if BULK_OUT_SIZE > USB_BUF_SZ
186
#error "USB buffer too small"
189
static const u8 rates[] = {30, 20, 15, 10, 7, 5};
190
static const struct framerates framerates[] = {
193
.nrates = ARRAY_SIZE(rates)
197
.nrates = ARRAY_SIZE(rates)
200
static const u8 rates_6810[] = {30, 15, 10, 7, 5};
201
static const struct framerates framerates_6810[] = {
204
.nrates = ARRAY_SIZE(rates_6810)
208
.nrates = ARRAY_SIZE(rates_6810)
213
* webcam quality in %
214
* the last value is the ultra fine quality
217
/* TP6800 register offsets */
218
#define TP6800_R10_SIF_TYPE 0x10
219
#define TP6800_R11_SIF_CONTROL 0x11
220
#define TP6800_R12_SIF_ADDR_S 0x12
221
#define TP6800_R13_SIF_TX_DATA 0x13
222
#define TP6800_R14_SIF_RX_DATA 0x14
223
#define TP6800_R15_GPIO_PU 0x15
224
#define TP6800_R16_GPIO_PD 0x16
225
#define TP6800_R17_GPIO_IO 0x17
226
#define TP6800_R18_GPIO_DATA 0x18
227
#define TP6800_R19_SIF_ADDR_S2 0x19
228
#define TP6800_R1A_SIF_TX_DATA2 0x1a
229
#define TP6800_R1B_SIF_RX_DATA2 0x1b
230
#define TP6800_R21_ENDP_1_CTL 0x21
231
#define TP6800_R2F_TIMING_CFG 0x2f
232
#define TP6800_R30_SENSOR_CFG 0x30
233
#define TP6800_R31_PIXEL_START 0x31
234
#define TP6800_R32_PIXEL_END_L 0x32
235
#define TP6800_R33_PIXEL_END_H 0x33
236
#define TP6800_R34_LINE_START 0x34
237
#define TP6800_R35_LINE_END_L 0x35
238
#define TP6800_R36_LINE_END_H 0x36
239
#define TP6800_R37_FRONT_DARK_ST 0x37
240
#define TP6800_R38_FRONT_DARK_END 0x38
241
#define TP6800_R39_REAR_DARK_ST_L 0x39
242
#define TP6800_R3A_REAR_DARK_ST_H 0x3a
243
#define TP6800_R3B_REAR_DARK_END_L 0x3b
244
#define TP6800_R3C_REAR_DARK_END_H 0x3c
245
#define TP6800_R3D_HORIZ_DARK_LINE_L 0x3d
246
#define TP6800_R3E_HORIZ_DARK_LINE_H 0x3e
247
#define TP6800_R3F_FRAME_RATE 0x3f
248
#define TP6800_R50 0x50
249
#define TP6800_R51 0x51
250
#define TP6800_R52 0x52
251
#define TP6800_R53 0x53
252
#define TP6800_R54_DARK_CFG 0x54
253
#define TP6800_R55_GAMMA_R 0x55
254
#define TP6800_R56_GAMMA_G 0x56
255
#define TP6800_R57_GAMMA_B 0x57
256
#define TP6800_R5C_EDGE_THRLD 0x5c
257
#define TP6800_R5D_DEMOSAIC_CFG 0x5d
258
#define TP6800_R78_FORMAT 0x78
259
#define TP6800_R79_QUALITY 0x79
260
#define TP6800_R7A_BLK_THRLD 0x7a
262
/* CX0342 register offsets */
264
#define CX0342_SENSOR_ID 0x00
265
#define CX0342_VERSION_NO 0x01
266
#define CX0342_ORG_X_L 0x02
267
#define CX0342_ORG_X_H 0x03
268
#define CX0342_ORG_Y_L 0x04
269
#define CX0342_ORG_Y_H 0x05
270
#define CX0342_STOP_X_L 0x06
271
#define CX0342_STOP_X_H 0x07
272
#define CX0342_STOP_Y_L 0x08
273
#define CX0342_STOP_Y_H 0x09
274
#define CX0342_FRAME_WIDTH_L 0x0a
275
#define CX0342_FRAME_WIDTH_H 0x0b
276
#define CX0342_FRAME_HEIGH_L 0x0c
277
#define CX0342_FRAME_HEIGH_H 0x0d
278
#define CX0342_EXPO_LINE_L 0x10
279
#define CX0342_EXPO_LINE_H 0x11
280
#define CX0342_EXPO_CLK_L 0x12
281
#define CX0342_EXPO_CLK_H 0x13
282
#define CX0342_RAW_GRGAIN_L 0x14
283
#define CX0342_RAW_GRGAIN_H 0x15
284
#define CX0342_RAW_GBGAIN_L 0x16
285
#define CX0342_RAW_GBGAIN_H 0x17
286
#define CX0342_RAW_RGAIN_L 0x18
287
#define CX0342_RAW_RGAIN_H 0x19
288
#define CX0342_RAW_BGAIN_L 0x1a
289
#define CX0342_RAW_BGAIN_H 0x1b
290
#define CX0342_GLOBAL_GAIN 0x1c
291
#define CX0342_SYS_CTRL_0 0x20
292
#define CX0342_SYS_CTRL_1 0x21
293
#define CX0342_SYS_CTRL_2 0x22
294
#define CX0342_BYPASS_MODE 0x23
295
#define CX0342_SYS_CTRL_3 0x24
296
#define CX0342_TIMING_EN 0x25
297
#define CX0342_OUTPUT_CTRL 0x26
298
#define CX0342_AUTO_ADC_CALIB 0x27
299
#define CX0342_SYS_CTRL_4 0x28
300
#define CX0342_ADCGN 0x30
301
#define CX0342_SLPCR 0x31
302
#define CX0342_SLPFN_LO 0x32
303
#define CX0342_ADC_CTL 0x33
304
#define CX0342_LVRST_BLBIAS 0x34
305
#define CX0342_VTHSEL 0x35
306
#define CX0342_RAMP_RIV 0x36
307
#define CX0342_LDOSEL 0x37
308
#define CX0342_CLOCK_GEN 0x40
309
#define CX0342_SOFT_RESET 0x41
310
#define CX0342_PLL 0x42
311
#define CX0342_DR_ENH_PULSE_OFFSET_L 0x43
312
#define CX0342_DR_ENH_PULSE_OFFSET_H 0x44
313
#define CX0342_DR_ENH_PULSE_POS_L 0x45
314
#define CX0342_DR_ENH_PULSE_POS_H 0x46
315
#define CX0342_DR_ENH_PULSE_WIDTH 0x47
316
#define CX0342_AS_CURRENT_CNT_L 0x48
317
#define CX0342_AS_CURRENT_CNT_H 0x49
318
#define CX0342_AS_PREVIOUS_CNT_L 0x4a
319
#define CX0342_AS_PREVIOUS_CNT_H 0x4b
320
#define CX0342_SPV_VALUE_L 0x4c
321
#define CX0342_SPV_VALUE_H 0x4d
322
#define CX0342_GPXLTHD_L 0x50
323
#define CX0342_GPXLTHD_H 0x51
324
#define CX0342_RBPXLTHD_L 0x52
325
#define CX0342_RBPXLTHD_H 0x53
326
#define CX0342_PLANETHD_L 0x54
327
#define CX0342_PLANETHD_H 0x55
328
#define CX0342_ROWDARK_TH 0x56
329
#define CX0342_ROWDARK_TOL 0x57
330
#define CX0342_RB_GAP_L 0x58
331
#define CX0342_RB_GAP_H 0x59
332
#define CX0342_G_GAP_L 0x5a
333
#define CX0342_G_GAP_H 0x5b
334
#define CX0342_AUTO_ROW_DARK 0x60
335
#define CX0342_MANUAL_DARK_VALUE 0x61
336
#define CX0342_GB_DARK_OFFSET 0x62
337
#define CX0342_GR_DARK_OFFSET 0x63
338
#define CX0342_RED_DARK_OFFSET 0x64
339
#define CX0342_BLUE_DARK_OFFSET 0x65
340
#define CX0342_DATA_SCALING_MULTI 0x66
341
#define CX0342_AUTOD_Q_FRAME 0x67
342
#define CX0342_AUTOD_ALLOW_VARI 0x68
343
#define CX0342_AUTO_DARK_VALUE_L 0x69
344
#define CX0342_AUTO_DARK_VALUE_H 0x6a
345
#define CX0342_IO_CTRL_0 0x70
346
#define CX0342_IO_CTRL_1 0x71
347
#define CX0342_IO_CTRL_2 0x72
348
#define CX0342_IDLE_CTRL 0x73
349
#define CX0342_TEST_MODE 0x74
350
#define CX0342_FRAME_FIX_DATA_TEST 0x75
351
#define CX0342_FRAME_CNT_TEST 0x76
352
#define CX0342_RST_OVERFLOW_L 0x80
353
#define CX0342_RST_OVERFLOW_H 0x81
354
#define CX0342_RST_UNDERFLOW_L 0x82
355
#define CX0342_RST_UNDERFLOW_H 0x83
356
#define CX0342_DATA_OVERFLOW_L 0x84
357
#define CX0342_DATA_OVERFLOW_H 0x85
358
#define CX0342_DATA_UNDERFLOW_L 0x86
359
#define CX0342_DATA_UNDERFLOW_H 0x87
360
#define CX0342_CHANNEL_0_0_L_irst 0x90
361
#define CX0342_CHANNEL_0_0_H_irst 0x91
362
#define CX0342_CHANNEL_0_1_L_irst 0x92
363
#define CX0342_CHANNEL_0_1_H_irst 0x93
364
#define CX0342_CHANNEL_0_2_L_irst 0x94
365
#define CX0342_CHANNEL_0_2_H_irst 0x95
366
#define CX0342_CHANNEL_0_3_L_irst 0x96
367
#define CX0342_CHANNEL_0_3_H_irst 0x97
368
#define CX0342_CHANNEL_0_4_L_irst 0x98
369
#define CX0342_CHANNEL_0_4_H_irst 0x99
370
#define CX0342_CHANNEL_0_5_L_irst 0x9a
371
#define CX0342_CHANNEL_0_5_H_irst 0x9b
372
#define CX0342_CHANNEL_0_6_L_irst 0x9c
373
#define CX0342_CHANNEL_0_6_H_irst 0x9d
374
#define CX0342_CHANNEL_0_7_L_irst 0x9e
375
#define CX0342_CHANNEL_0_7_H_irst 0x9f
376
#define CX0342_CHANNEL_1_0_L_itx 0xa0
377
#define CX0342_CHANNEL_1_0_H_itx 0xa1
378
#define CX0342_CHANNEL_1_1_L_itx 0xa2
379
#define CX0342_CHANNEL_1_1_H_itx 0xa3
380
#define CX0342_CHANNEL_1_2_L_itx 0xa4
381
#define CX0342_CHANNEL_1_2_H_itx 0xa5
382
#define CX0342_CHANNEL_1_3_L_itx 0xa6
383
#define CX0342_CHANNEL_1_3_H_itx 0xa7
384
#define CX0342_CHANNEL_1_4_L_itx 0xa8
385
#define CX0342_CHANNEL_1_4_H_itx 0xa9
386
#define CX0342_CHANNEL_1_5_L_itx 0xaa
387
#define CX0342_CHANNEL_1_5_H_itx 0xab
388
#define CX0342_CHANNEL_1_6_L_itx 0xac
389
#define CX0342_CHANNEL_1_6_H_itx 0xad
390
#define CX0342_CHANNEL_1_7_L_itx 0xae
391
#define CX0342_CHANNEL_1_7_H_itx 0xaf
392
#define CX0342_CHANNEL_2_0_L_iwl 0xb0
393
#define CX0342_CHANNEL_2_0_H_iwl 0xb1
394
#define CX0342_CHANNEL_2_1_L_iwl 0xb2
395
#define CX0342_CHANNEL_2_1_H_iwl 0xb3
396
#define CX0342_CHANNEL_2_2_L_iwl 0xb4
397
#define CX0342_CHANNEL_2_2_H_iwl 0xb5
398
#define CX0342_CHANNEL_2_3_L_iwl 0xb6
399
#define CX0342_CHANNEL_2_3_H_iwl 0xb7
400
#define CX0342_CHANNEL_2_4_L_iwl 0xb8
401
#define CX0342_CHANNEL_2_4_H_iwl 0xb9
402
#define CX0342_CHANNEL_2_5_L_iwl 0xba
403
#define CX0342_CHANNEL_2_5_H_iwl 0xbb
404
#define CX0342_CHANNEL_2_6_L_iwl 0xbc
405
#define CX0342_CHANNEL_2_6_H_iwl 0xbd
406
#define CX0342_CHANNEL_2_7_L_iwl 0xbe
407
#define CX0342_CHANNEL_2_7_H_iwl 0xbf
408
#define CX0342_CHANNEL_3_0_L_ensp 0xc0
409
#define CX0342_CHANNEL_3_0_H_ensp 0xc1
410
#define CX0342_CHANNEL_3_1_L_ensp 0xc2
411
#define CX0342_CHANNEL_3_1_H_ensp 0xc3
412
#define CX0342_CHANNEL_3_2_L_ensp 0xc4
413
#define CX0342_CHANNEL_3_2_H_ensp 0xc5
414
#define CX0342_CHANNEL_3_3_L_ensp 0xc6
415
#define CX0342_CHANNEL_3_3_H_ensp 0xc7
416
#define CX0342_CHANNEL_3_4_L_ensp 0xc8
417
#define CX0342_CHANNEL_3_4_H_ensp 0xc9
418
#define CX0342_CHANNEL_3_5_L_ensp 0xca
419
#define CX0342_CHANNEL_3_5_H_ensp 0xcb
420
#define CX0342_CHANNEL_3_6_L_ensp 0xcc
421
#define CX0342_CHANNEL_3_6_H_ensp 0xcd
422
#define CX0342_CHANNEL_3_7_L_ensp 0xce
423
#define CX0342_CHANNEL_3_7_H_ensp 0xcf
424
#define CX0342_CHANNEL_4_0_L_sela 0xd0
425
#define CX0342_CHANNEL_4_0_H_sela 0xd1
426
#define CX0342_CHANNEL_4_1_L_sela 0xd2
427
#define CX0342_CHANNEL_4_1_H_sela 0xd3
428
#define CX0342_CHANNEL_5_0_L_intla 0xe0
429
#define CX0342_CHANNEL_5_0_H_intla 0xe1
430
#define CX0342_CHANNEL_5_1_L_intla 0xe2
431
#define CX0342_CHANNEL_5_1_H_intla 0xe3
432
#define CX0342_CHANNEL_5_2_L_intla 0xe4
433
#define CX0342_CHANNEL_5_2_H_intla 0xe5
434
#define CX0342_CHANNEL_5_3_L_intla 0xe6
435
#define CX0342_CHANNEL_5_3_H_intla 0xe7
436
#define CX0342_CHANNEL_6_0_L_xa_sel_pos 0xf0
437
#define CX0342_CHANNEL_6_0_H_xa_sel_pos 0xf1
438
#define CX0342_CHANNEL_7_1_L_cds_pos 0xf2
439
#define CX0342_CHANNEL_7_1_H_cds_pos 0xf3
440
#define CX0342_SENSOR_HEIGHT_L 0xfb
441
#define CX0342_SENSOR_HEIGHT_H 0xfc
442
#define CX0342_SENSOR_WIDTH_L 0xfd
443
#define CX0342_SENSOR_WIDTH_H 0xfe
444
#define CX0342_VSYNC_HSYNC_READ 0xff
451
static const u8 DQT[17][130] = {
452
/* Define quantization table (thanks to Thomas Kaiser) */
455
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
456
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
457
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
458
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
459
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
460
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
461
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
462
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
464
0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0b, 0x06,
465
0x06, 0x0b, 0x18, 0x10, 0x0e, 0x10, 0x18, 0x18,
466
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
467
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
468
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
469
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
470
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
471
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
475
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
476
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
477
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
478
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
479
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
480
0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09,
481
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
482
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
484
0x08, 0x09, 0x09, 0x0c, 0x0a, 0x0c, 0x17, 0x0d,
485
0x0d, 0x17, 0x31, 0x21, 0x1c, 0x21, 0x31, 0x31,
486
0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
487
0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
488
0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
489
0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
490
0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
491
0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
495
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
496
0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
497
0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
498
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
499
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
500
0x06, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
501
0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
502
0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
504
0x0c, 0x0d, 0x0d, 0x12, 0x0f, 0x12, 0x23, 0x13,
505
0x13, 0x23, 0x4a, 0x31, 0x2a, 0x31, 0x4a, 0x4a,
506
0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
507
0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
508
0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
509
0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
510
0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
511
0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
515
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
516
0x04, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
517
0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
518
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
519
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
520
0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13,
521
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
522
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
524
0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
525
0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
526
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
527
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
528
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
529
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
530
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
531
0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
535
0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
536
0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
537
0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
538
0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
539
0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
540
0x0a, 0x0a, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17,
541
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
542
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
544
0x11, 0x16, 0x16, 0x1e, 0x1a, 0x1e, 0x3a, 0x20,
545
0x20, 0x3a, 0x7b, 0x52, 0x46, 0x52, 0x7b, 0x7b,
546
0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
547
0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
548
0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
549
0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
550
0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
551
0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
555
0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
556
0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06,
557
0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
558
0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
559
0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
560
0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
561
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
562
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
564
0x11, 0x1b, 0x1b, 0x24, 0x1f, 0x24, 0x46, 0x27,
565
0x27, 0x46, 0x94, 0x63, 0x54, 0x63, 0x94, 0x94,
566
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
567
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
568
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
569
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
570
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
571
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
575
0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
576
0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07,
577
0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
578
0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
579
0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
580
0x0e, 0x0e, 0x0e, 0x21, 0x21, 0x21, 0x21, 0x21,
581
0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
582
0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
584
0x15, 0x1f, 0x1f, 0x2a, 0x24, 0x2a, 0x52, 0x2d,
585
0x2d, 0x52, 0xad, 0x73, 0x62, 0x73, 0xad, 0xad,
586
0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
587
0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
588
0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
589
0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
590
0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
591
0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
595
0x05, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
596
0x08, 0x08, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08,
597
0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
598
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
599
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
600
0x10, 0x10, 0x10, 0x26, 0x26, 0x26, 0x26, 0x26,
601
0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
602
0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
604
0x15, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34,
605
0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6,
606
0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
607
0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
608
0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
609
0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
610
0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
611
0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
615
0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
616
0x0a, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x0a, 0x0a,
617
0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
618
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
619
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
620
0x14, 0x14, 0x14, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
621
0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
622
0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
624
0x19, 0x2d, 0x2d, 0x3c, 0x34, 0x3c, 0x75, 0x41,
625
0x41, 0x75, 0xf7, 0xa5, 0x8c, 0xa5, 0xf7, 0xf7,
626
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
627
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
628
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
629
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
630
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
631
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
635
0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
636
0x0c, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c,
637
0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
638
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
639
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
640
0x18, 0x18, 0x18, 0x39, 0x39, 0x39, 0x39, 0x39,
641
0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
642
0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
644
0x19, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e,
645
0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff,
646
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
647
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
648
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
649
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
650
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
651
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
655
0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
656
0x0e, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x0e,
657
0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
658
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
659
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
660
0x1c, 0x1c, 0x1c, 0x42, 0x42, 0x42, 0x42, 0x42,
661
0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
662
0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
664
0x1d, 0x3f, 0x3f, 0x54, 0x49, 0x54, 0xa4, 0x5b,
665
0x5b, 0xa4, 0xff, 0xe7, 0xc4, 0xe7, 0xff, 0xff,
666
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
667
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
668
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
669
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
670
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
671
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
675
0x07, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
676
0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10,
677
0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
678
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
679
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
680
0x20, 0x20, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
681
0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
682
0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
684
0x1d, 0x48, 0x48, 0x60, 0x54, 0x60, 0xbc, 0x68,
685
0x68, 0xbc, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff,
686
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
687
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
688
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
689
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
690
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
691
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
695
0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
696
0x14, 0x14, 0x28, 0x28, 0x28, 0x14, 0x14, 0x14,
697
0x14, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
698
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
699
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
700
0x28, 0x28, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
701
0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
702
0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
704
0x22, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82,
705
0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
706
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
707
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
708
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
709
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
710
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
711
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
715
0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
716
0x18, 0x18, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18,
717
0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
718
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
719
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
720
0x30, 0x30, 0x30, 0x72, 0x72, 0x72, 0x72, 0x72,
721
0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
722
0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
724
0x22, 0x6c, 0x6c, 0x90, 0x7e, 0x90, 0xff, 0x9c,
725
0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
726
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
727
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
728
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
729
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
730
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
731
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
735
0x0a, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
736
0x1c, 0x1c, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x1c,
737
0x1c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
738
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
739
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
740
0x38, 0x38, 0x38, 0x85, 0x85, 0x85, 0x85, 0x85,
741
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
742
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
744
0x2a, 0x7e, 0x7e, 0xa8, 0x93, 0xa8, 0xff, 0xb6,
745
0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
746
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
747
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
748
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
749
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
750
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
751
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
755
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
756
0x20, 0x20, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
757
0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
758
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
759
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
760
0x40, 0x40, 0x40, 0x98, 0x98, 0x98, 0x98, 0x98,
761
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
762
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
764
0x2a, 0x90, 0x90, 0xc0, 0xa8, 0xc0, 0xff, 0xd0,
765
0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
766
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
767
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
768
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
769
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
770
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
771
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
773
{ /* Quality 16-31 */
775
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
776
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
777
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
778
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
779
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
780
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
781
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
782
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
784
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
785
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
786
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
787
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
788
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
789
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
790
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
791
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
795
static const struct cmd tp6810_cx_init_common[] = {
797
{TP6800_R10_SIF_TYPE, 0x00},
803
{TP6800_R79_QUALITY, 0x03},
804
{TP6800_R2F_TIMING_CFG, 0x37},
805
{TP6800_R30_SENSOR_CFG, 0x10},
806
{TP6800_R21_ENDP_1_CTL, 0x00},
809
{TP6800_R54_DARK_CFG, 0x40},
810
{TP6800_R30_SENSOR_CFG, 0x18},
812
{TP6800_R3F_FRAME_RATE, 0x83},
813
{TP6800_R79_QUALITY, 0x05},
814
{TP6800_R21_ENDP_1_CTL, 0x00},
821
static const struct cmd tp6810_ov_init_common[] = {
823
{TP6800_R10_SIF_TYPE, 0x00},
831
{TP6800_R54_DARK_CFG, 0x40},
832
{TP6800_R79_QUALITY, 0x03},
833
{TP6800_R2F_TIMING_CFG, 0x17},
834
{TP6800_R30_SENSOR_CFG, 0x18},
835
{TP6800_R21_ENDP_1_CTL, 0x00},
836
{TP6800_R3F_FRAME_RATE, 0x86},
842
static const struct cmd tp6810_bridge_start[] = {
846
{TP6800_R5C_EDGE_THRLD, 0x63},
847
{TP6800_R5D_DEMOSAIC_CFG, 0x00},
854
static const struct cmd tp6810_late_start[] = {
922
/* later after isoc start */
927
static const struct cmd cx0342_timing_seq[] = {
928
{CX0342_CHANNEL_0_1_L_irst, 0x20},
929
{CX0342_CHANNEL_0_2_L_irst, 0x24},
930
{CX0342_CHANNEL_0_2_H_irst, 0x00},
931
{CX0342_CHANNEL_0_3_L_irst, 0x2f},
932
{CX0342_CHANNEL_0_3_H_irst, 0x00},
933
{CX0342_CHANNEL_1_0_L_itx, 0x02},
934
{CX0342_CHANNEL_1_0_H_itx, 0x00},
935
{CX0342_CHANNEL_1_1_L_itx, 0x20},
936
{CX0342_CHANNEL_1_1_H_itx, 0x00},
937
{CX0342_CHANNEL_1_2_L_itx, 0xe4},
938
{CX0342_CHANNEL_1_2_H_itx, 0x00},
939
{CX0342_CHANNEL_1_3_L_itx, 0xee},
940
{CX0342_CHANNEL_1_3_H_itx, 0x00},
941
{CX0342_CHANNEL_2_0_L_iwl, 0x30},
942
{CX0342_CHANNEL_2_0_H_iwl, 0x00},
943
{CX0342_CHANNEL_3_0_L_ensp, 0x34},
944
{CX0342_CHANNEL_3_1_L_ensp, 0xe2},
945
{CX0342_CHANNEL_3_1_H_ensp, 0x00},
946
{CX0342_CHANNEL_3_2_L_ensp, 0xf6},
947
{CX0342_CHANNEL_3_2_H_ensp, 0x00},
948
{CX0342_CHANNEL_3_3_L_ensp, 0xf4},
949
{CX0342_CHANNEL_3_3_H_ensp, 0x02},
950
{CX0342_CHANNEL_4_0_L_sela, 0x26},
951
{CX0342_CHANNEL_4_0_H_sela, 0x00},
952
{CX0342_CHANNEL_4_1_L_sela, 0xe2},
953
{CX0342_CHANNEL_4_1_H_sela, 0x00},
954
{CX0342_CHANNEL_5_0_L_intla, 0x26},
955
{CX0342_CHANNEL_5_1_L_intla, 0x29},
956
{CX0342_CHANNEL_5_2_L_intla, 0xf0},
957
{CX0342_CHANNEL_5_2_H_intla, 0x00},
958
{CX0342_CHANNEL_5_3_L_intla, 0xf3},
959
{CX0342_CHANNEL_5_3_H_intla, 0x00},
960
{CX0342_CHANNEL_6_0_L_xa_sel_pos, 0x24},
961
{CX0342_CHANNEL_7_1_L_cds_pos, 0x02},
962
{CX0342_TIMING_EN, 0x01},
965
/* define the JPEG header */
966
static void jpeg_define(u8 *jpeg_hdr,
970
memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head);
971
jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8;
972
jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height;
973
jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8;
974
jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width;
977
/* set the JPEG quality for sensor soi763a */
978
static void jpeg_set_qual(u8 *jpeg_hdr,
986
sc = 200 - quality * 2;
987
for (i = 0; i < 64; i++) {
988
jpeg_hdr[JPEG_QT0_OFFSET + i] =
989
(jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100;
990
jpeg_hdr[JPEG_QT1_OFFSET + i] =
991
(jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100;
995
static void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
997
struct usb_device *dev = gspca_dev->dev;
1000
if (gspca_dev->usb_err < 0)
1002
ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1004
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1005
value, index, NULL, 0, 500);
1007
pr_err("reg_w err %d\n", ret);
1008
gspca_dev->usb_err = ret;
1012
/* the returned value is in gspca_dev->usb_buf */
1013
static void reg_r(struct gspca_dev *gspca_dev, u8 index)
1015
struct usb_device *dev = gspca_dev->dev;
1018
if (gspca_dev->usb_err < 0)
1020
ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
1022
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1023
0, index, gspca_dev->usb_buf, 1, 500);
1025
pr_err("reg_r err %d\n", ret);
1026
gspca_dev->usb_err = ret;
1030
static void reg_w_buf(struct gspca_dev *gspca_dev,
1031
const struct cmd *p, int l)
1034
reg_w(gspca_dev, p->reg, p->val);
1039
static int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
1041
struct sd *sd = (struct sd *) gspca_dev;
1043
reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1044
reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1045
reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value);
1046
reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01);
1047
if (sd->bridge == BRIDGE_TP6800)
1050
reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1051
if (gspca_dev->usb_buf[0] == 0)
1053
reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1054
return -1; /* error */
1057
static void i2c_w_buf(struct gspca_dev *gspca_dev,
1058
const struct cmd *p, int l)
1061
i2c_w(gspca_dev, p->reg, p->val);
1066
static int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len)
1068
struct sd *sd = (struct sd *) gspca_dev;
1071
reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1072
reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02);
1074
reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA);
1075
v = gspca_dev->usb_buf[0];
1076
if (sd->bridge == BRIDGE_TP6800)
1079
reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2);
1080
v |= (gspca_dev->usb_buf[0] << 8);
1082
reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1083
if (gspca_dev->usb_buf[0] == 0)
1085
reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1089
static void bulk_w(struct gspca_dev *gspca_dev,
1094
struct usb_device *dev = gspca_dev->dev;
1095
int count, actual_count, ret;
1097
if (gspca_dev->usb_err < 0)
1100
count = length > BULK_OUT_SIZE - 1
1101
? BULK_OUT_SIZE - 1 : length;
1102
gspca_dev->usb_buf[0] = tag;
1103
memcpy(&gspca_dev->usb_buf[1], data, count);
1104
ret = usb_bulk_msg(dev,
1105
usb_sndbulkpipe(dev, 3),
1106
gspca_dev->usb_buf, count + 1,
1107
&actual_count, 500);
1109
pr_err("bulk write error %d tag=%02x\n",
1111
gspca_dev->usb_err = ret;
1121
static int probe_6810(struct gspca_dev *gspca_dev)
1126
reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
1127
gpio = gspca_dev->usb_buf[0];
1128
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1129
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1130
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1131
reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */
1132
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21); /* ov??? */
1133
reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00);
1134
if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1135
return SENSOR_SOI763A;
1137
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1138
reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */
1139
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f); /* (unknown i2c) */
1140
if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1143
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1144
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1145
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1146
reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */
1147
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11); /* tas??? / hv??? */
1148
ret = i2c_r(gspca_dev, 0x00, 1);
1152
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1153
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1154
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1155
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e); /* po??? */
1156
ret = i2c_r(gspca_dev, 0x00, 1);
1160
ret = i2c_r(gspca_dev, 0x01, 1);
1164
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1165
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1166
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1167
reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */
1168
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d); /* mi/mt??? */
1169
ret = i2c_r(gspca_dev, 0x00, 2);
1173
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1174
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1175
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1176
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c); /* mi/mt??? */
1177
ret = i2c_r(gspca_dev, 0x36, 2);
1181
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1182
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1183
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1184
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61); /* (unknown i2c) */
1185
reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10);
1186
if (i2c_w(gspca_dev, 0xff, 0x00) >= 0)
1189
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1190
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1191
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1192
reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */
1193
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 */
1194
ret = i2c_r(gspca_dev, 0x00, 1);
1196
return SENSOR_CX0342;
1200
static void cx0342_6810_init(struct gspca_dev *gspca_dev)
1202
static const struct cmd reg_init_1[] = {
1203
{TP6800_R2F_TIMING_CFG, 0x2f},
1205
{TP6800_R21_ENDP_1_CTL, 0x00},
1206
{TP6800_R3F_FRAME_RATE, 0x80},
1207
{TP6800_R2F_TIMING_CFG, 0x2f},
1208
{TP6800_R18_GPIO_DATA, 0xe1},
1209
{TP6800_R18_GPIO_DATA, 0xc1},
1210
{TP6800_R18_GPIO_DATA, 0xe1},
1211
{TP6800_R11_SIF_CONTROL, 0x00},
1213
static const struct cmd reg_init_2[] = {
1214
{TP6800_R78_FORMAT, 0x48},
1215
{TP6800_R11_SIF_CONTROL, 0x00},
1217
static const struct cmd sensor_init[] = {
1218
{CX0342_OUTPUT_CTRL, 0x07},
1219
{CX0342_BYPASS_MODE, 0x58},
1220
{CX0342_GPXLTHD_L, 0x28},
1221
{CX0342_RBPXLTHD_L, 0x28},
1222
{CX0342_PLANETHD_L, 0x50},
1223
{CX0342_PLANETHD_H, 0x03},
1224
{CX0342_RB_GAP_L, 0xff},
1225
{CX0342_RB_GAP_H, 0x07},
1226
{CX0342_G_GAP_L, 0xff},
1227
{CX0342_G_GAP_H, 0x07},
1228
{CX0342_RST_OVERFLOW_L, 0x5c},
1229
{CX0342_RST_OVERFLOW_H, 0x01},
1230
{CX0342_DATA_OVERFLOW_L, 0xfc},
1231
{CX0342_DATA_OVERFLOW_H, 0x03},
1232
{CX0342_DATA_UNDERFLOW_L, 0x00},
1233
{CX0342_DATA_UNDERFLOW_H, 0x00},
1234
{CX0342_SYS_CTRL_0, 0x40},
1235
{CX0342_GLOBAL_GAIN, 0x01},
1236
{CX0342_CLOCK_GEN, 0x00},
1237
{CX0342_SYS_CTRL_0, 0x02},
1238
{CX0342_IDLE_CTRL, 0x05},
1239
{CX0342_ADCGN, 0x00},
1240
{CX0342_ADC_CTL, 0x00},
1241
{CX0342_LVRST_BLBIAS, 0x01},
1242
{CX0342_VTHSEL, 0x0b},
1243
{CX0342_RAMP_RIV, 0x0b},
1244
{CX0342_LDOSEL, 0x07},
1245
{CX0342_SPV_VALUE_L, 0x40},
1246
{CX0342_SPV_VALUE_H, 0x02},
1248
{CX0342_AUTO_ADC_CALIB, 0x81},
1249
{CX0342_TIMING_EN, 0x01},
1252
reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1253
reg_w_buf(gspca_dev, tp6810_cx_init_common,
1254
ARRAY_SIZE(tp6810_cx_init_common));
1255
reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1257
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 I2C addr */
1258
i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1259
i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
1262
static void soi763a_6810_init(struct gspca_dev *gspca_dev)
1264
static const struct cmd reg_init_1[] = {
1265
{TP6800_R2F_TIMING_CFG, 0x2f},
1266
{TP6800_R18_GPIO_DATA, 0xe1},
1268
{TP6800_R21_ENDP_1_CTL, 0x00},
1269
{TP6800_R3F_FRAME_RATE, 0x80},
1270
{TP6800_R2F_TIMING_CFG, 0x2f},
1271
{TP6800_R18_GPIO_DATA, 0xc1},
1273
static const struct cmd reg_init_2[] = {
1274
{TP6800_R78_FORMAT, 0x54},
1276
static const struct cmd sensor_init[] = {
1287
{0x0a, 0x76}, /* 7630 = soi673a */
1308
{0x1c, 0x7f}, /* omnivision */
1407
reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1408
reg_w_buf(gspca_dev, tp6810_ov_init_common,
1409
ARRAY_SIZE(tp6810_ov_init_common));
1410
reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1412
i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */
1414
i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1417
/* set the gain and exposure */
1418
static void setexposure(struct gspca_dev *gspca_dev)
1420
struct sd *sd = (struct sd *) gspca_dev;
1422
if (sd->sensor == SENSOR_CX0342) {
1425
expo = (sd->ctrls[EXPOSURE].val << 2) - 1;
1426
i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo);
1427
i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8);
1428
if (sd->bridge == BRIDGE_TP6800)
1429
i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H,
1430
sd->ctrls[GAIN].val >> 8);
1431
i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, sd->ctrls[GAIN].val);
1432
if (sd->bridge == BRIDGE_TP6800)
1433
i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H,
1434
sd->ctrls[GAIN].val >> 8);
1435
i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, sd->ctrls[GAIN].val);
1436
if (sd->bridge == BRIDGE_TP6800)
1437
i2c_w(gspca_dev, CX0342_RAW_BGAIN_H,
1438
sd->ctrls[BGAIN].val >> 8);
1439
i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, sd->ctrls[BGAIN].val);
1440
if (sd->bridge == BRIDGE_TP6800)
1441
i2c_w(gspca_dev, CX0342_RAW_RGAIN_H,
1442
sd->ctrls[RGAIN].val >> 8);
1443
i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, sd->ctrls[RGAIN].val);
1444
i2c_w(gspca_dev, CX0342_SYS_CTRL_0,
1445
sd->bridge == BRIDGE_TP6800 ? 0x80 : 0x81);
1450
i2c_w(gspca_dev, 0x10, /* AEC_H (exposure time) */
1451
sd->ctrls[EXPOSURE].val);
1452
/* i2c_w(gspca_dev, 0x76, 0x02); * AEC_L ([1:0] */
1453
i2c_w(gspca_dev, 0x00, /* gain */
1454
sd->ctrls[GAIN].val);
1457
/* set the JPEG quantization tables */
1458
static void set_dqt(struct gspca_dev *gspca_dev, u8 q)
1460
struct sd *sd = (struct sd *) gspca_dev;
1462
/* update the jpeg quantization tables */
1463
PDEBUG(D_STREAM, "q %d -> %d", sd->quality, q);
1467
if (sd->sensor == SENSOR_SOI763A)
1468
jpeg_set_qual(sd->jpeg_hdr, jpeg_q[q]);
1470
memcpy(&sd->jpeg_hdr[JPEG_QT0_OFFSET - 1],
1471
DQT[q], sizeof DQT[0]);
1474
/* set the JPEG compression quality factor */
1475
static void setquality(struct gspca_dev *gspca_dev)
1477
struct sd *sd = (struct sd *) gspca_dev;
1480
q = sd->ctrls[QUALITY].val;
1484
reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00);
1485
reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04);
1486
reg_w(gspca_dev, TP6800_R79_QUALITY, q);
1489
if (q == 15 && sd->bridge == BRIDGE_TP6810) {
1491
reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19);
1495
static const u8 color_null[18] = {
1496
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1497
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1498
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1500
static const u8 color_gain[NSENSORS][18] = {
1502
{0x4c, 0x00, 0xa9, 0x00, 0x31, 0x00, /* Y R/G/B (LE values) */
1503
0xb6, 0x03, 0x6c, 0x03, 0xe0, 0x00, /* U R/G/B */
1504
0xdf, 0x00, 0x46, 0x03, 0xdc, 0x03}, /* V R/G/B */
1506
{0x4c, 0x00, 0x95, 0x00, 0x1d, 0x00, /* Y R/G/B (LE values) */
1507
0xb6, 0x03, 0x6c, 0x03, 0xd7, 0x00, /* U R/G/B */
1508
0xd5, 0x00, 0x46, 0x03, 0xdc, 0x03}, /* V R/G/B */
1511
static void setgamma(struct gspca_dev *gspca_dev)
1513
struct sd *sd = (struct sd *) gspca_dev;
1516
static const u8 gamma_tb[NGAMMA][3][1024] = {
1517
{ /* gamma 0 - from tp6800 + soi763a */
1518
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1519
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1520
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1521
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1522
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1523
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1524
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1525
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1526
0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1527
0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1528
0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1529
0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1530
0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1531
0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1532
0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1533
0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1534
0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1535
0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1536
0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1537
0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1538
0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1539
0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1540
0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1541
0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1542
0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1543
0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1544
0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1545
0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1546
0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1547
0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1548
0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1549
0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1550
0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1551
0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1552
0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1553
0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1554
0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1555
0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1556
0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1557
0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1558
0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1559
0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1560
0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1561
0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1562
0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1563
0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1564
0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1565
0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1566
0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1567
0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1568
0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1569
0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1570
0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1571
0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1572
0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1573
0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1574
0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1575
0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1576
0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1577
0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1578
0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1579
0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1580
0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1581
0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1582
0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1583
0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1584
0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1585
0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1586
0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1587
0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1588
0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1589
0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1590
0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1591
0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1592
0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1593
0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1594
0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1595
0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1596
0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1597
0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1598
0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1599
0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1600
0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1601
0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1602
0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1603
0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1604
0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1605
0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1606
0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1607
0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1608
0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1609
0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1610
0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1611
0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1612
0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1613
0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1614
0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1615
0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1616
0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1617
0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1618
0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1619
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1620
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1621
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1622
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1623
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1624
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1625
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1626
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1627
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1628
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1629
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1630
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1631
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1632
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1633
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1634
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1635
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1636
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1637
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1638
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1639
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1640
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1641
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1642
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1643
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1644
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1645
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1646
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1647
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1648
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1649
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1650
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1651
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1652
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1653
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1654
0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1655
0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1656
0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1657
0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1658
0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1659
0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1660
0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1661
0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1662
0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1663
0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1664
0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1665
0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1666
0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1667
0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1668
0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1669
0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1670
0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1671
0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1672
0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1673
0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1674
0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1675
0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1676
0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1677
0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1678
0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1679
0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1680
0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1681
0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1682
0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1683
0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1684
0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1685
0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1686
0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1687
0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1688
0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1689
0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1690
0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1691
0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1692
0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1693
0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1694
0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1695
0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1696
0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1697
0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1698
0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1699
0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1700
0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1701
0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1702
0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1703
0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1704
0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1705
0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1706
0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1707
0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1708
0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1709
0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1710
0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1711
0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1712
0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1713
0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1714
0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1715
0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1716
0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1717
0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1718
0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1719
0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1720
0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1721
0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1722
0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1723
0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1724
0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1725
0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1726
0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1727
0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1728
0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1729
0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1730
0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1731
0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1732
0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1733
0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1734
0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1735
0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1736
0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1737
0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1738
0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1739
0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1740
0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1741
0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1742
0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1743
0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1744
0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1745
0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1746
0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1747
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1748
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1749
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1750
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1751
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1752
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1753
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1754
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1755
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1756
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1757
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1758
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1759
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1760
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1761
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1762
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1763
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1764
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1765
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1766
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1767
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1768
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1769
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1770
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1771
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1772
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1773
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1774
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1775
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1776
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1777
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1778
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1779
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1780
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1781
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1782
0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1783
0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1784
0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1785
0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1786
0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1787
0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1788
0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1789
0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1790
0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1791
0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1792
0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1793
0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1794
0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1795
0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1796
0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1797
0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1798
0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1799
0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1800
0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1801
0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1802
0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1803
0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1804
0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1805
0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1806
0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1807
0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1808
0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76,
1809
0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1810
0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1811
0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1812
0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1813
0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1814
0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1815
0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1816
0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1817
0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1818
0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1819
0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1820
0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1821
0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1822
0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1823
0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1824
0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1825
0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1826
0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1827
0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1828
0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1829
0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1830
0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1831
0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1832
0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1833
0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1834
0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1835
0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1836
0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1837
0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1838
0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1839
0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1840
0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1841
0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1842
0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1843
0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1844
0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1845
0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1846
0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1847
0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1848
0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1849
0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1850
0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1851
0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1852
0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1853
0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1854
0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1855
0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1856
0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1857
0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1858
0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1859
0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1860
0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1861
0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1862
0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1863
0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1864
0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1865
0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1866
0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1867
0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1868
0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1869
0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1870
0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1871
0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1872
0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1873
0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1874
0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1875
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1876
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1877
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1878
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1879
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1880
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1881
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1882
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1883
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1884
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1885
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1886
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1887
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1888
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1889
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1890
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1891
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1892
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1893
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1894
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1895
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1896
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1897
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1898
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1899
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1900
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1901
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
1903
{ /* gamma 1 - from tp6810 + soi763a */
1904
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1905
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1906
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1907
0x01, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a,
1908
0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15,
1909
0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
1910
0x1f, 0x20, 0x22, 0x22, 0x23, 0x25, 0x26, 0x27,
1911
0x27, 0x28, 0x29, 0x2b, 0x2b, 0x2c, 0x2d, 0x2f,
1912
0x2f, 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x35,
1913
0x37, 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c,
1914
0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
1915
0x43, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 0x49,
1916
0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4d,
1917
0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
1918
0x54, 0x54, 0x55, 0x56, 0x56, 0x58, 0x58, 0x59,
1919
0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5e,
1920
0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x61,
1921
0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x65, 0x66,
1922
0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 0x69,
1923
0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1924
0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
1925
0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
1926
0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
1927
0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c,
1928
0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x80,
1929
0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84,
1930
0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
1931
0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
1932
0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
1933
0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91,
1934
0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93,
1935
0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x97,
1936
0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
1937
0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
1938
0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e,
1939
0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
1940
0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
1941
0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
1942
0xa5, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1943
0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xab,
1944
0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xae,
1945
0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
1946
0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1947
0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
1948
0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
1949
0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
1950
0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
1951
0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
1952
0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1953
0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
1954
0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4,
1955
0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
1956
0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
1957
0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
1958
0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
1959
0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1960
0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1961
0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
1962
0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
1963
0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
1964
0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
1965
0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
1966
0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
1967
0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
1968
0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
1969
0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
1970
0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
1971
0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
1972
0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
1973
0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8,
1974
0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
1975
0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
1976
0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed,
1977
0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
1978
0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
1979
0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
1980
0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
1981
0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
1982
0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1983
0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
1984
0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1985
0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1986
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
1987
0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe,
1988
0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
1989
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1990
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1991
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1992
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1993
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1994
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1995
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1996
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1997
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1998
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1999
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2000
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2001
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2002
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2003
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2004
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2005
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2006
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2007
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2008
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2009
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2010
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2011
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2012
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2013
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2014
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2015
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2016
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2017
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2018
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2019
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2020
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2021
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2022
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2023
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2024
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2025
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2026
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2027
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2028
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2029
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2030
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2031
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2032
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2033
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2034
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2035
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03,
2036
0x05, 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d,
2037
0x0e, 0x10, 0x10, 0x11, 0x12, 0x14, 0x15, 0x15,
2038
0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
2039
0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x25,
2040
0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 0x2b, 0x2c,
2041
0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x31,
2042
0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38,
2043
0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d,
2044
0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x43,
2045
0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48,
2046
0x48, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c,
2047
0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50,
2048
0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x55,
2049
0x55, 0x56, 0x56, 0x56, 0x58, 0x58, 0x59, 0x59,
2050
0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2051
0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60,
2052
0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x65,
2053
0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67,
2054
0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a,
2055
0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e,
2056
0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2057
0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74,
2058
0x75, 0x75, 0x75, 0x77, 0x77, 0x77, 0x78, 0x78,
2059
0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a,
2060
0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d,
2061
0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2062
0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
2063
0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
2064
0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89,
2065
0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b,
2066
0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2067
0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2068
0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2069
0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2070
0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2071
0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2072
0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
2073
0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2074
0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2075
0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2076
0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2077
0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2078
0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2079
0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2080
0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
2081
0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2082
0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
2083
0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
2084
0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
2085
0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
2086
0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
2087
0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
2088
0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
2089
0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
2090
0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2091
0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2092
0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
2093
0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2094
0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2095
0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9,
2096
0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
2097
0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2098
0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
2099
0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcf,
2100
0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2101
0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
2102
0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4,
2103
0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2104
0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2105
0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2106
0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
2107
0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2108
0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
2109
0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2110
0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2,
2111
0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3,
2112
0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2113
0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2114
0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2115
0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
2116
0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2117
0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2118
0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
2119
0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2120
0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
2121
0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2122
0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5,
2123
0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7,
2124
0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8,
2125
0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2126
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2127
0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc,
2128
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2129
0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2130
0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
2131
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2132
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2133
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2134
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2135
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2136
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2137
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2138
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2139
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2140
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2141
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2142
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2143
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2144
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2145
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2146
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2147
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2148
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2149
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2150
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2151
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2152
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2153
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2154
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2155
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2156
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2157
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2158
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2159
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2160
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2161
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2162
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2163
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2164
0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 0x05, 0x07,
2165
0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0e,
2166
0x10, 0x11, 0x12, 0x12, 0x14, 0x15, 0x16, 0x16,
2167
0x17, 0x18, 0x18, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
2168
0x1e, 0x1f, 0x1f, 0x20, 0x22, 0x22, 0x23, 0x23,
2169
0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x29, 0x29,
2170
0x2b, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 0x30,
2171
0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 0x34, 0x35,
2172
0x35, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39, 0x3a,
2173
0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3d, 0x3d,
2174
0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x42, 0x43,
2175
0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x47,
2176
0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4b,
2177
0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4f,
2178
0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x52, 0x53,
2179
0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56,
2180
0x56, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a,
2181
0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2182
0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60,
2183
0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63,
2184
0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66,
2185
0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69,
2186
0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2187
0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e,
2188
0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2189
0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74,
2190
0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x77, 0x77,
2191
0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79,
2192
0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b,
2193
0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
2194
0x7d, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2195
0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82,
2196
0x82, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2197
0x85, 0x86, 0x86, 0x86, 0x86, 0x88, 0x88, 0x88,
2198
0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2199
0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2200
0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
2201
0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2202
0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2203
0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94,
2204
0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 0x96,
2205
0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
2206
0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2207
0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
2208
0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2209
0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0,
2210
0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2211
0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
2212
0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
2213
0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6,
2214
0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
2215
0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2216
0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac,
2217
0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae,
2218
0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
2219
0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2220
0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2,
2221
0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
2222
0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6,
2223
0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2224
0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2225
0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba,
2226
0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2227
0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2228
0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2229
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2230
0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
2231
0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2232
0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2233
0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2234
0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2235
0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2236
0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2237
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2238
0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2239
0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2240
0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2241
0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
2242
0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7,
2243
0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2244
0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2245
0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
2246
0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2247
0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
2248
0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0,
2249
0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
2250
0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3,
2251
0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4,
2252
0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
2253
0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
2254
0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2255
0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
2256
0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2257
0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2258
0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef,
2259
0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1,
2260
0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2261
0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2262
0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2263
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
2264
0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2265
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2266
0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc,
2267
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd,
2268
0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
2269
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2270
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2271
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2272
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2273
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2274
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2275
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2276
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2277
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2278
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2279
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2280
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2281
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2282
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2283
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2284
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2285
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2286
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2287
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
2290
{0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x0a, 0x0c,
2291
0x0d, 0x0e, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17,
2292
0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22,
2293
0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
2294
0x2d, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34,
2295
0x35, 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3b,
2296
0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
2297
0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x49, 0x49,
2298
0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4f, 0x4f,
2299
0x50, 0x50, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55,
2300
0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 0x5a, 0x5a,
2301
0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
2302
0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63,
2303
0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
2304
0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2305
0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70,
2306
0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74,
2307
0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78,
2308
0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
2309
0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
2310
0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82,
2311
0x82, 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2312
0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x89, 0x89,
2313
0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8d,
2314
0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
2315
0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
2316
0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
2317
0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2318
0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99,
2319
0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2320
0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
2321
0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2322
0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3,
2323
0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5,
2324
0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8,
2325
0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2326
0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad,
2327
0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2328
0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0,
2329
0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2330
0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4,
2331
0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
2332
0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
2333
0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba,
2334
0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2335
0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2336
0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0,
2337
0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2338
0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4,
2339
0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
2340
0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
2341
0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2342
0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2343
0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2344
0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce,
2345
0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
2346
0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2347
0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4,
2348
0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2349
0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2350
0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
2351
0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2352
0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2353
0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2354
0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
2355
0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
2356
0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2357
0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
2358
0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2359
0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
2360
0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2361
0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
2362
0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2363
0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2364
0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2365
0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2366
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1,
2367
0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
2368
0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
2369
0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
2370
0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2371
0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9,
2372
0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa,
2373
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2374
0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2375
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2376
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2377
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2378
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2379
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2380
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2381
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2382
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2383
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2384
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2385
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2386
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2387
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2388
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2389
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2390
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2391
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2392
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2393
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2394
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2395
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2396
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2397
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2398
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2399
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2400
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2401
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2402
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2403
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2404
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2405
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2406
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2407
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2408
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2409
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2410
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2411
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2412
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2413
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2414
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2415
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2416
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2417
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2418
{0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x05,
2419
0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11,
2420
0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x1a,
2421
0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23,
2422
0x25, 0x26, 0x26, 0x27, 0x28, 0x29, 0x29, 0x2b,
2423
0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x33,
2424
0x33, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 0x39,
2425
0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3d, 0x3f,
2426
0x3f, 0x40, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44,
2427
0x45, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 0x4a,
2428
0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d,
2429
0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2430
0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x56, 0x58,
2431
0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
2432
0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f,
2433
0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63,
2434
0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67,
2435
0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69,
2436
0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d,
2437
0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
2438
0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x73,
2439
0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 0x77,
2440
0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79,
2441
0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c,
2442
0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f,
2443
0x7f, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81,
2444
0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x84, 0x84,
2445
0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
2446
0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a,
2447
0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2448
0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f,
2449
0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x91,
2450
0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2451
0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2452
0x94, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2453
0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99,
2454
0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b,
2455
0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c,
2456
0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e,
2457
0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2458
0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2,
2459
0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2460
0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
2461
0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2462
0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2463
0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2464
0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae,
2465
0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf,
2466
0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2467
0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2468
0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
2469
0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
2470
0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2471
0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2472
0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2473
0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2474
0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2475
0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
2476
0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2477
0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
2478
0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2479
0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
2480
0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
2481
0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
2482
0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
2483
0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2484
0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2485
0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2486
0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
2487
0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2488
0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2489
0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2490
0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2491
0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2492
0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2493
0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2494
0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
2495
0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
2496
0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2497
0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
2498
0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
2499
0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2500
0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2501
0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
2502
0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
2503
0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2504
0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2505
0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2506
0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2507
0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
2508
0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef,
2509
0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2510
0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2511
0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2512
0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2513
0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
2514
0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2515
0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
2516
0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
2517
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb,
2518
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2519
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2520
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2521
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2522
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2523
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2524
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2525
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2526
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2527
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2528
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2529
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2530
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2531
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2532
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2533
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2534
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2535
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2536
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2537
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2538
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2539
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2540
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2541
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2542
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2543
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2544
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2545
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2546
{0x00, 0x00, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08,
2547
0x09, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x12, 0x14,
2548
0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e,
2549
0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x26, 0x27,
2550
0x28, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2d, 0x2f,
2551
0x30, 0x31, 0x31, 0x33, 0x34, 0x35, 0x35, 0x37,
2552
0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c,
2553
0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x43, 0x43,
2554
0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49,
2555
0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d,
2556
0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2557
0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58,
2558
0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c,
2559
0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2560
0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65,
2561
0x65, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68,
2562
0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2563
0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f,
2564
0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x73, 0x73,
2565
0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
2566
0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a,
2567
0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2568
0x7c, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80,
2569
0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82,
2570
0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85,
2571
0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
2572
0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b,
2573
0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2574
0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90,
2575
0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2576
0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2577
0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2578
0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2579
0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2580
0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2581
0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2582
0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2583
0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2584
0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2585
0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2586
0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2587
0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2588
0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2589
0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
2590
0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
2591
0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
2592
0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb4, 0xb4, 0xb4,
2593
0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2594
0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
2595
0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
2596
0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2597
0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2598
0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2599
0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2600
0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
2601
0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2602
0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2603
0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2604
0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2605
0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2606
0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2607
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2608
0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2609
0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2610
0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2611
0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2612
0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2613
0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2614
0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
2615
0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2616
0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2617
0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2618
0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2619
0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
2620
0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2621
0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
2622
0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2623
0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6,
2624
0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2625
0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2626
0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
2627
0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
2628
0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2629
0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2630
0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2631
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1,
2632
0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2633
0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
2634
0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2635
0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7,
2636
0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
2637
0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2638
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2639
0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2640
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2641
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2642
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2643
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2644
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2645
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2646
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2647
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2648
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2649
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2650
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2651
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2652
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2653
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2654
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2655
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2656
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2657
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2658
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2659
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2660
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2661
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2662
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2663
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2664
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2665
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2666
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2667
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2668
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2669
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2670
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2671
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2672
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2673
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
2675
{ /* gamma 3 - from tp6810 + cx0342 */
2676
{0x08, 0x09, 0x0c, 0x0d, 0x10, 0x11, 0x14, 0x15,
2677
0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x23,
2678
0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2f,
2679
0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39,
2680
0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x42, 0x43,
2681
0x44, 0x45, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
2682
0x4c, 0x4d, 0x4d, 0x4f, 0x50, 0x52, 0x53, 0x53,
2683
0x54, 0x55, 0x56, 0x56, 0x58, 0x59, 0x5a, 0x5a,
2684
0x5b, 0x5c, 0x5c, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
2685
0x61, 0x62, 0x63, 0x63, 0x65, 0x66, 0x66, 0x67,
2686
0x68, 0x68, 0x69, 0x69, 0x6a, 0x6c, 0x6c, 0x6d,
2687
0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x73,
2688
0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 0x78,
2689
0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c,
2690
0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81,
2691
0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2692
0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2693
0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f,
2694
0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93,
2695
0x93, 0x93, 0x94, 0x94, 0x96, 0x96, 0x97, 0x97,
2696
0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2697
0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
2698
0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
2699
0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2700
0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
2701
0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
2702
0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2703
0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2704
0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3,
2705
0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2706
0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2707
0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2708
0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2709
0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
2710
0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5,
2711
0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
2712
0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2713
0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
2714
0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce,
2715
0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2716
0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3,
2717
0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2718
0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2719
0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda,
2720
0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2721
0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2722
0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2723
0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2724
0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4,
2725
0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2726
0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2727
0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
2728
0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2729
0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
2730
0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
2731
0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2732
0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2733
0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2734
0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2735
0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2736
0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2737
0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
2738
0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2739
0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
2740
0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff,
2741
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2742
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2743
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2744
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2745
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2746
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2747
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2748
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2749
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2750
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2751
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2752
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2753
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2754
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2755
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2756
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2757
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2758
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2759
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2760
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2761
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2762
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2763
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2764
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2765
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2766
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2767
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2768
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2769
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2770
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2771
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2772
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2773
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2774
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2775
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2776
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2777
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2778
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2779
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2780
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2781
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2782
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2783
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2784
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2785
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2786
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2787
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2788
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2789
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2790
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2791
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2792
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2793
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2794
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2795
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2796
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2797
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2798
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2799
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2800
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2801
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2802
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2803
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2804
{0x03, 0x05, 0x07, 0x09, 0x0a, 0x0c, 0x0d, 0x10,
2805
0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x1a, 0x1b,
2806
0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26,
2807
0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2f,
2808
0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x37, 0x38,
2809
0x38, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f,
2810
0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
2811
0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b,
2812
0x4c, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52,
2813
0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x58,
2814
0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c,
2815
0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2816
0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x66,
2817
0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69,
2818
0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
2819
0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
2820
0x71, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
2821
0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
2822
0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2823
0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80,
2824
0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84,
2825
0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86,
2826
0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2827
0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e,
2828
0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90,
2829
0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2830
0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96,
2831
0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98,
2832
0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a,
2833
0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
2834
0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e,
2835
0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2836
0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3,
2837
0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2838
0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
2839
0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
2840
0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad,
2841
0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2842
0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2843
0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
2844
0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4,
2845
0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2846
0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2847
0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2848
0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2849
0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
2850
0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
2851
0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2852
0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2853
0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2854
0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2855
0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2856
0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2857
0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2858
0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2859
0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0,
2860
0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2861
0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
2862
0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2863
0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
2864
0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2865
0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2866
0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2867
0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2868
0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2869
0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2870
0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2,
2871
0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
2872
0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
2873
0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2874
0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2875
0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2876
0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2877
0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec,
2878
0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2879
0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
2880
0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
2881
0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2882
0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2883
0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
2884
0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2885
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
2886
0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
2887
0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2888
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb,
2889
0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc,
2890
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2891
0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2892
0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
2893
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2894
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2895
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2896
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2897
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2898
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2899
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2900
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2901
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2902
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2903
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2904
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2905
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2906
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2907
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2908
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2909
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2910
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2911
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2912
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2913
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2914
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2915
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2916
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2917
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2918
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2919
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2920
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2921
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2922
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2923
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2924
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2925
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2926
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2927
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2928
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2929
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2930
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2931
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2932
{0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14,
2933
0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
2934
0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d,
2935
0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38,
2936
0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 0x40,
2937
0x42, 0x43, 0x44, 0x44, 0x45, 0x47, 0x48, 0x49,
2938
0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4f, 0x50,
2939
0x52, 0x52, 0x53, 0x54, 0x55, 0x55, 0x56, 0x58,
2940
0x58, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e,
2941
0x5f, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63,
2942
0x65, 0x65, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
2943
0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6e,
2944
0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x74,
2945
0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 0x79,
2946
0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d,
2947
0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81,
2948
0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2949
0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2950
0x8b, 0x8b, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f,
2951
0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
2952
0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96,
2953
0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
2954
0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
2955
0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
2956
0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
2957
0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
2958
0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9,
2959
0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac,
2960
0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2961
0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1,
2962
0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
2963
0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2964
0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2965
0xb9, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc,
2966
0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
2967
0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
2968
0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4,
2969
0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2970
0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9,
2971
0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb,
2972
0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2973
0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf,
2974
0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2975
0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
2976
0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2977
0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2978
0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
2979
0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2980
0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2981
0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2982
0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2983
0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2984
0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2985
0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2986
0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2987
0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb,
2988
0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2989
0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2990
0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2991
0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2992
0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
2993
0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2994
0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2995
0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2996
0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2997
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
2998
0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2999
0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd,
3000
0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff,
3001
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3002
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3003
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3004
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3005
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3006
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3007
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3008
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3009
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3010
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3011
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3012
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3013
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3014
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3015
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3016
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3017
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3018
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3019
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3020
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3021
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3022
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3023
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3024
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3025
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3026
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3027
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3028
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3029
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3030
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3031
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3032
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3033
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3034
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3035
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3036
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3037
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3038
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3039
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3040
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3041
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3042
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3043
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3044
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3045
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3046
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3047
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3048
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3049
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3050
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3051
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3052
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3053
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3054
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3055
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3056
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3057
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3058
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3059
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
3061
{ /* gamma 4 - from tp6800 + soi763a */
3062
{0x11, 0x14, 0x15, 0x17, 0x1a, 0x1b, 0x1e, 0x1f,
3063
0x22, 0x23, 0x25, 0x27, 0x28, 0x2b, 0x2c, 0x2d,
3064
0x2f, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3a,
3065
0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45,
3066
0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f,
3067
0x50, 0x52, 0x53, 0x53, 0x54, 0x55, 0x56, 0x58,
3068
0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5f, 0x60,
3069
0x61, 0x61, 0x62, 0x63, 0x65, 0x65, 0x66, 0x67,
3070
0x68, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 0x6e,
3071
0x6f, 0x6f, 0x70, 0x71, 0x71, 0x73, 0x74, 0x74,
3072
0x75, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a,
3073
0x7b, 0x7c, 0x7c, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3074
0x81, 0x81, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86,
3075
0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b,
3076
0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x91,
3077
0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x96,
3078
0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
3079
0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3080
0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2,
3081
0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5,
3082
0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa9, 0xa9, 0xab,
3083
0xab, 0xab, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3084
0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1,
3085
0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4,
3086
0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8,
3087
0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbc,
3088
0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
3089
0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
3090
0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3091
0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc9,
3092
0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3093
0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce,
3094
0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
3095
0xd0, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3096
0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3097
0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
3098
0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
3099
0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf,
3100
0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3101
0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3102
0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
3103
0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
3104
0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3105
0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3106
0xec, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3107
0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3108
0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
3109
0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3110
0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3111
0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
3112
0xf9, 0xf9, 0xfa, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
3113
0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3114
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3115
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3116
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3117
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3118
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3119
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3120
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3121
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3122
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3123
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3124
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3125
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3126
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3127
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3128
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3129
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3130
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3131
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3132
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3133
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3134
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3135
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3136
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3137
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3138
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3139
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3140
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3141
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3142
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3143
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3144
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3145
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3146
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3147
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3148
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3149
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3150
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3151
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3152
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3153
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3154
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3155
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3156
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3157
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3158
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3159
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3160
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3161
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3162
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3163
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3164
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3165
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3166
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3167
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3168
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3169
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3170
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3171
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3172
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3173
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3174
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3175
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3176
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3177
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3178
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3179
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3180
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3181
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3182
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3183
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3184
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3185
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3186
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3187
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3188
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3189
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3190
{0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x14, 0x15,
3191
0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
3192
0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
3193
0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 0x35,
3194
0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d,
3195
0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
3196
0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 0x4c,
3197
0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 0x53, 0x54,
3198
0x54, 0x55, 0x55, 0x56, 0x58, 0x58, 0x59, 0x5a,
3199
0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
3200
0x60, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x65,
3201
0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
3202
0x69, 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
3203
0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73,
3204
0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77,
3205
0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b,
3206
0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
3207
0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82,
3208
0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86,
3209
0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
3210
0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
3211
0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91,
3212
0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94,
3213
0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3214
0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a,
3215
0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
3216
0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
3217
0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3218
0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4,
3219
0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6,
3220
0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
3221
0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad,
3222
0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
3223
0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3224
0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
3225
0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
3226
0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8,
3227
0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3228
0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
3229
0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3230
0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
3231
0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3232
0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3233
0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3234
0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9,
3235
0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3236
0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd,
3237
0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3238
0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3239
0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3,
3240
0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3241
0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3242
0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3243
0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
3244
0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
3245
0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3246
0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
3247
0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
3248
0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
3249
0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
3250
0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3251
0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
3252
0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
3253
0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
3254
0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3255
0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3256
0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3257
0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3258
0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3259
0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
3260
0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3261
0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3262
0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3263
0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3264
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3265
0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3266
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3267
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3268
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3269
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3270
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3271
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3272
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3273
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3274
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3275
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3276
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3277
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3278
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3279
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3280
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3281
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3282
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3283
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3284
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3285
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3286
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3287
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3288
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3289
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3290
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3291
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3292
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3293
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3294
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3295
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3296
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3297
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3298
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3299
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3300
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3301
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3302
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3303
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3304
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3305
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3306
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3307
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3308
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3309
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3310
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3311
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3312
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3313
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3314
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3315
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3316
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3317
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3318
{0x0d, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x1b,
3319
0x1c, 0x1e, 0x20, 0x22, 0x23, 0x26, 0x27, 0x28,
3320
0x29, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34,
3321
0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
3322
0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48,
3323
0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4f, 0x50,
3324
0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x56, 0x58,
3325
0x59, 0x5a, 0x5a, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f,
3326
0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x65, 0x65,
3327
0x66, 0x67, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6c,
3328
0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3329
0x71, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x77,
3330
0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
3331
0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3332
0x81, 0x81, 0x82, 0x82, 0x84, 0x84, 0x85, 0x85,
3333
0x86, 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a,
3334
0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f,
3335
0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92,
3336
0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x97,
3337
0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3338
0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
3339
0x9d, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
3340
0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3341
0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
3342
0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
3343
0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
3344
0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3345
0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
3346
0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
3347
0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba,
3348
0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3349
0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
3350
0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc3,
3351
0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3352
0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
3353
0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3354
0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc,
3355
0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3356
0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0,
3357
0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3358
0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
3359
0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8,
3360
0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
3361
0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
3362
0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf,
3363
0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3364
0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3365
0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3366
0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
3367
0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8,
3368
0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
3369
0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
3370
0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
3371
0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3372
0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3373
0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
3374
0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
3375
0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8,
3376
0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
3377
0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3378
0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3379
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3380
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3381
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3382
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3383
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3384
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3385
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3386
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3387
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3388
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3389
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3390
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3391
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3392
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3393
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3394
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3395
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3396
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3397
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3398
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3399
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3400
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3401
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3402
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3403
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3404
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3405
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3406
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3407
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3408
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3409
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3410
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3411
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3412
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3413
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3414
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3415
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3416
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3417
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3418
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3419
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3420
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3421
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3422
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3423
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3424
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3425
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3426
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3427
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3428
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3429
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3430
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3431
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3432
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3433
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3434
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3435
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3436
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3437
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3438
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3439
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3440
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3441
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3442
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3443
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3444
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3445
0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
3448
{0x16, 0x18, 0x19, 0x1b, 0x1d, 0x1e, 0x20, 0x21,
3449
0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2c,
3450
0x2d, 0x2f, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36,
3451
0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3452
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3453
0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
3454
0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55,
3455
0x56, 0x56, 0x57, 0x58, 0x59, 0x59, 0x5a, 0x5b,
3456
0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
3457
0x62, 0x62, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66,
3458
0x67, 0x68, 0x68, 0x69, 0x6a, 0x6a, 0x6b, 0x6b,
3459
0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3460
0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75,
3461
0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79,
3462
0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e,
3463
0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x82,
3464
0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85,
3465
0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89,
3466
0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d,
3467
0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90,
3468
0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94,
3469
0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97,
3470
0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3471
0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3472
0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0,
3473
0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
3474
0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6,
3475
0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8,
3476
0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3477
0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3478
0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3479
0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3,
3480
0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5,
3481
0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3482
0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3483
0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc,
3484
0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
3485
0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1,
3486
0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3487
0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3488
0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7,
3489
0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9,
3490
0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3491
0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
3492
0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf,
3493
0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3494
0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3,
3495
0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5,
3496
0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3497
0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
3498
0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
3499
0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdd,
3500
0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde,
3501
0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
3502
0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3503
0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
3504
0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3505
0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7,
3506
0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3507
0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb,
3508
0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3509
0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3510
0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3511
0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
3512
0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3,
3513
0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
3514
0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
3515
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3516
0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3517
0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3518
0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3519
0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3520
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3521
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3522
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3523
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3524
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3525
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3526
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3527
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3528
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3529
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3530
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3531
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3532
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3533
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3534
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3535
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3536
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3537
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3538
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3539
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3540
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3541
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3542
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3543
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3544
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3545
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3546
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3547
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3548
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3549
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3550
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3551
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3552
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3553
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3554
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3555
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3556
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3557
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3558
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3559
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3560
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3561
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3562
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3563
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3564
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3565
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3566
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3567
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3568
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3569
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3570
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3571
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3572
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3573
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3574
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3575
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3576
{0x0f, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19,
3577
0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
3578
0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
3579
0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x31, 0x32,
3580
0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, 0x39,
3581
0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, 0x3f,
3582
0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x44, 0x45,
3583
0x46, 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b,
3584
0x4b, 0x4c, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x50,
3585
0x50, 0x51, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54,
3586
0x55, 0x55, 0x56, 0x56, 0x57, 0x58, 0x58, 0x59,
3587
0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d,
3588
0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
3589
0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65,
3590
0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68,
3591
0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c,
3592
0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f,
3593
0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72,
3594
0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75,
3595
0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78,
3596
0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
3597
0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e,
3598
0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81,
3599
0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83,
3600
0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86,
3601
0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88,
3602
0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b,
3603
0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d,
3604
0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f,
3605
0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
3606
0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
3607
0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96,
3608
0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98,
3609
0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3610
0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
3611
0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e,
3612
0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0,
3613
0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3614
0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
3615
0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
3616
0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7,
3617
0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9,
3618
0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3619
0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
3620
0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
3621
0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3622
0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
3623
0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3624
0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5,
3625
0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
3626
0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
3627
0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3628
0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
3629
0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3630
0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3631
0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
3632
0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
3633
0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3634
0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
3635
0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
3636
0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
3637
0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9,
3638
0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca,
3639
0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
3640
0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd,
3641
0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
3642
0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3643
0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
3644
0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3645
0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3646
0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
3647
0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3648
0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3649
0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
3650
0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb,
3651
0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3652
0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde,
3653
0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf,
3654
0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
3655
0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3656
0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
3657
0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3658
0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
3659
0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3660
0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3661
0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea,
3662
0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
3663
0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
3664
0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
3665
0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3666
0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
3667
0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
3668
0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
3669
0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3670
0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3671
0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3672
0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa,
3673
0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3674
0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3675
0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3676
0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3677
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3678
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3679
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3680
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3681
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3682
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3683
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3684
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3685
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3686
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3687
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3688
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3689
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3690
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3691
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3692
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3693
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3694
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3695
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3696
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3697
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3698
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3699
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3700
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3701
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3702
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3703
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3704
{0x13, 0x15, 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1e,
3705
0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28,
3706
0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
3707
0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
3708
0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
3709
0x42, 0x43, 0x44, 0x44, 0x45, 0x46, 0x47, 0x48,
3710
0x49, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e,
3711
0x4f, 0x50, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54,
3712
0x55, 0x55, 0x56, 0x57, 0x57, 0x58, 0x59, 0x59,
3713
0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5d, 0x5e, 0x5f,
3714
0x5f, 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x63,
3715
0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
3716
0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c,
3717
0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3718
0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74,
3719
0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78,
3720
0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c,
3721
0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
3722
0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83,
3723
0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
3724
0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89,
3725
0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c,
3726
0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
3727
0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
3728
0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95,
3729
0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3730
0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3731
0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d,
3732
0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f,
3733
0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2,
3734
0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3735
0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6,
3736
0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9,
3737
0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3738
0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad,
3739
0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf,
3740
0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
3741
0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3742
0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5,
3743
0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3744
0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
3745
0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb,
3746
0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
3747
0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
3748
0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1,
3749
0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3750
0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3751
0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3752
0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8,
3753
0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3754
0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
3755
0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
3756
0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
3757
0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3758
0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3759
0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
3760
0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6,
3761
0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
3762
0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
3763
0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
3764
0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3765
0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3766
0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
3767
0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
3768
0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3769
0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
3770
0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6,
3771
0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3772
0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3773
0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea,
3774
0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3775
0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3776
0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3777
0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3778
0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2,
3779
0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
3780
0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3781
0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
3782
0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3783
0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
3784
0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
3785
0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
3786
0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe,
3787
0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3788
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3789
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3790
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3791
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3792
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3793
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3794
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3795
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3796
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3797
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3798
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3799
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3800
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3801
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3802
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3803
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3804
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3805
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3806
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3807
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3808
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3809
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3810
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3811
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3812
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3813
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3814
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3815
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3816
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3817
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3818
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3819
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3820
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3821
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3822
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3823
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3824
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3825
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3826
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3827
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3828
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3829
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3830
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3831
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3835
reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3836
if (sd->bridge == BRIDGE_TP6810)
3837
reg_w(gspca_dev, 0x02, 0x28);
3839
gamma = sd->ctrls[GAMMA].val;
3840
bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024);
3841
bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024);
3842
bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024);
3843
if (sd->bridge == BRIDGE_TP6810) {
3846
reg_w(gspca_dev, 0x02, 0x2b);
3847
reg_w(gspca_dev, 0x02, 0x28);
3848
for (i = 0; i < 6; i++)
3849
reg_w(gspca_dev, TP6800_R55_GAMMA_R,
3850
gamma_tb[gamma][0][i]);
3851
reg_w(gspca_dev, 0x02, 0x2b);
3852
reg_w(gspca_dev, 0x02, 0x28);
3853
for (i = 0; i < 6; i++)
3854
reg_w(gspca_dev, TP6800_R56_GAMMA_G,
3855
gamma_tb[gamma][1][i]);
3856
reg_w(gspca_dev, 0x02, 0x2b);
3857
reg_w(gspca_dev, 0x02, 0x28);
3858
for (i = 0; i < 6; i++)
3859
reg_w(gspca_dev, TP6800_R57_GAMMA_B,
3860
gamma_tb[gamma][2][i]);
3861
reg_w(gspca_dev, 0x02, 0x28);
3863
reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3867
static void setsharpness(struct gspca_dev *gspca_dev)
3869
struct sd *sd = (struct sd *) gspca_dev;
3872
if (sd->bridge == BRIDGE_TP6800) {
3873
val = sd->ctrls[SHARPNESS].val
3874
| 0x08; /* grid compensation enable */
3875
if (gspca_dev->width == 640)
3876
reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
3878
val |= 0x04; /* scaling down enable */
3879
reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val);
3881
val = (sd->ctrls[SHARPNESS].val << 5) | 0x08;
3882
reg_w(gspca_dev, 0x59, val);
3886
static void setautogain(struct gspca_dev *gspca_dev)
3888
struct sd *sd = (struct sd *) gspca_dev;
3890
if (gspca_dev->ctrl_dis & (1 << AUTOGAIN))
3892
if (sd->ctrls[AUTOGAIN].val) {
3893
sd->ag_cnt = AG_CNT_START;
3894
gspca_dev->ctrl_inac |= (1 << EXPOSURE) | (1 << GAIN);
3897
gspca_dev->ctrl_inac &= ~((1 << EXPOSURE) | (1 << GAIN));
3901
/* set the resolution for sensor cx0342 */
3902
static void set_resolution(struct gspca_dev *gspca_dev)
3904
reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3905
if (gspca_dev->width == 320) {
3906
reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06);
3908
i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3910
reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3911
reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */
3912
reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d);
3913
i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37);
3914
i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01);
3916
reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05);
3918
i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3920
reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3921
reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
3922
reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09);
3923
i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf);
3924
i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
3926
i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
3927
bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
3928
ARRAY_SIZE(color_gain[0]));
3929
setgamma(gspca_dev);
3930
setquality(gspca_dev);
3933
/* convert the frame rate to a tp68x0 value */
3934
static int get_fr_idx(struct gspca_dev *gspca_dev)
3936
struct sd *sd = (struct sd *) gspca_dev;
3939
if (sd->bridge == BRIDGE_TP6800) {
3940
for (i = 0; i < ARRAY_SIZE(rates) - 1; i++) {
3941
if (sd->framerate >= rates[i])
3944
i = 6 - i; /* 1 = 5fps .. 6 = 30fps */
3946
/* 640x480 * 30 fps does not work */
3947
if (i == 6 /* if 30 fps */
3948
&& gspca_dev->width == 640)
3949
i = 0x86; /* 15 fps */
3951
for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) {
3952
if (sd->framerate >= rates_6810[i])
3955
i = 7 - i; /* 3 = 5fps .. 7 = 30fps */
3957
/* 640x480 * 30 fps does not work */
3958
if (i == 7 /* if 30 fps */
3959
&& gspca_dev->width == 640)
3961
i |= 0x80; /* clock * 1 */
3966
static void setframerate(struct gspca_dev *gspca_dev)
3968
struct sd *sd = (struct sd *) gspca_dev;
3971
fr_idx = get_fr_idx(gspca_dev);
3973
if (sd->bridge == BRIDGE_TP6810) {
3974
reg_r(gspca_dev, 0x7b);
3975
reg_w(gspca_dev, 0x7b,
3976
sd->sensor == SENSOR_CX0342 ? 0x10 : 0x90);
3977
if (sd->ctrls[EXPOSURE].val >= 128)
3978
fr_idx = 0xf0; /* lower frame rate */
3981
reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx);
3983
if (sd->sensor == SENSOR_CX0342)
3984
i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3987
static void setrgain(struct gspca_dev *gspca_dev)
3989
struct sd *sd = (struct sd *) gspca_dev;
3992
rgain = sd->ctrls[RGAIN].val;
3993
i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8);
3994
i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain);
3995
i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
3998
static int sd_setgain(struct gspca_dev *gspca_dev, __s32 val)
4000
struct sd *sd = (struct sd *) gspca_dev;
4002
if (sd->sensor == SENSOR_CX0342) {
4003
sd->ctrls[BGAIN].val = sd->ctrls[BGAIN].val
4004
* val / sd->ctrls[GAIN].val;
4005
if (sd->ctrls[BGAIN].val > 4095)
4006
sd->ctrls[BGAIN].val = 4095;
4007
sd->ctrls[RGAIN].val = sd->ctrls[RGAIN].val
4008
* val / sd->ctrls[GAIN].val;
4009
if (sd->ctrls[RGAIN].val > 4095)
4010
sd->ctrls[RGAIN].val = 4095;
4012
sd->ctrls[GAIN].val = val;
4013
if (gspca_dev->streaming)
4014
setexposure(gspca_dev);
4015
return gspca_dev->usb_err;
4018
static void setbgain(struct gspca_dev *gspca_dev)
4020
struct sd *sd = (struct sd *) gspca_dev;
4023
bgain = sd->ctrls[BGAIN].val;
4024
i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8);
4025
i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain);
4026
i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
4029
/* this function is called at probe time */
4030
static int sd_config(struct gspca_dev *gspca_dev,
4031
const struct usb_device_id *id)
4033
struct sd *sd = (struct sd *) gspca_dev;
4035
sd->bridge = id->driver_info;
4037
gspca_dev->cam.cam_mode = vga_mode;
4038
gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
4039
gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ?
4040
framerates : framerates_6810;
4042
sd->framerate = 30; /* default: 30 fps */
4043
gspca_dev->cam.ctrls = sd->ctrls;
4047
/* this function is called at probe and resume time */
4048
static int sd_init(struct gspca_dev *gspca_dev)
4050
struct sd *sd = (struct sd *) gspca_dev;
4051
static const struct cmd tp6800_preinit[] = {
4052
{TP6800_R10_SIF_TYPE, 0x01}, /* sif */
4053
{TP6800_R11_SIF_CONTROL, 0x01},
4054
{TP6800_R15_GPIO_PU, 0x9f},
4055
{TP6800_R16_GPIO_PD, 0x9f},
4056
{TP6800_R17_GPIO_IO, 0x80},
4057
{TP6800_R18_GPIO_DATA, 0x40}, /* LED off */
4059
static const struct cmd tp6810_preinit[] = {
4060
{TP6800_R2F_TIMING_CFG, 0x2f},
4061
{TP6800_R15_GPIO_PU, 0x6f},
4062
{TP6800_R16_GPIO_PD, 0x40},
4063
{TP6800_R17_GPIO_IO, 0x9f},
4064
{TP6800_R18_GPIO_DATA, 0xc1}, /* LED off */
4067
if (sd->bridge == BRIDGE_TP6800)
4068
reg_w_buf(gspca_dev, tp6800_preinit,
4069
ARRAY_SIZE(tp6800_preinit));
4071
reg_w_buf(gspca_dev, tp6810_preinit,
4072
ARRAY_SIZE(tp6810_preinit));
4074
reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4075
PDEBUG(D_PROBE, "gpio: %02x", gspca_dev->usb_buf[0]);
4077
* 0x80: snapshot button
4079
* 0x20: (bridge / sensor) reset for tp6810 ?
4080
* 0x07: sensor type ?
4083
/* guess the sensor type */
4084
if (force_sensor >= 0) {
4085
sd->sensor = force_sensor;
4087
if (sd->bridge == BRIDGE_TP6800) {
4088
/*fixme: not sure this is working*/
4089
switch (gspca_dev->usb_buf[0] & 0x07) {
4091
sd->sensor = SENSOR_SOI763A;
4094
sd->sensor = SENSOR_CX0342;
4100
sensor = probe_6810(gspca_dev);
4102
pr_warn("Unknown sensor %d - forced to soi763a\n",
4104
sensor = SENSOR_SOI763A;
4106
sd->sensor = sensor;
4109
if (sd->sensor == SENSOR_SOI763A) {
4110
pr_info("Sensor soi763a\n");
4111
sd->ctrls[GAMMA].def = sd->bridge == BRIDGE_TP6800 ? 0 : 1;
4112
sd->ctrls[GAIN].max = 15;
4113
sd->ctrls[GAIN].def = 3;
4114
gspca_dev->ctrl_dis = (1 << RGAIN) | (1 << BGAIN);
4115
if (sd->bridge == BRIDGE_TP6810) {
4116
soi763a_6810_init(gspca_dev);
4118
gspca_dev->ctrl_inac |= (1 << EXPOSURE) | (1 << GAIN);
4121
gspca_dev->ctrl_dis |= (1 << AUTOGAIN);
4124
pr_info("Sensor cx0342\n");
4125
if (sd->bridge == BRIDGE_TP6810) {
4126
cx0342_6810_init(gspca_dev);
4128
gspca_dev->ctrl_inac |= (1 << EXPOSURE) | (1 << GAIN);
4131
gspca_dev->ctrl_dis |= (1 << AUTOGAIN);
4135
if (sd->bridge == BRIDGE_TP6810)
4136
sd->ctrls[QUALITY].def = 0; /* auto quality */
4137
set_dqt(gspca_dev, 0);
4141
/* This function is called before choosing the alt setting */
4142
static int sd_isoc_init(struct gspca_dev *gspca_dev)
4144
struct sd *sd = (struct sd *) gspca_dev;
4145
static const struct cmd cx_sensor_init[] = {
4146
{CX0342_AUTO_ADC_CALIB, 0x81},
4147
{CX0342_EXPO_LINE_L, 0x37},
4148
{CX0342_EXPO_LINE_H, 0x01},
4149
{CX0342_RAW_GRGAIN_L, 0x00},
4150
{CX0342_RAW_GBGAIN_L, 0x00},
4151
{CX0342_RAW_RGAIN_L, 0x00},
4152
{CX0342_RAW_BGAIN_L, 0x00},
4153
{CX0342_SYS_CTRL_0, 0x81},
4155
static const struct cmd cx_bridge_init[] = {
4161
static const struct cmd ov_sensor_init[] = {
4162
{0x10, 0x75}, /* exposure */
4164
{0x00, 0x00}, /* gain */
4166
static const struct cmd ov_bridge_init[] = {
4168
{TP6800_R3F_FRAME_RATE, 0x87},
4171
if (sd->bridge == BRIDGE_TP6800)
4173
if (sd->sensor == SENSOR_CX0342) {
4174
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);
4175
reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4176
i2c_w_buf(gspca_dev, cx_sensor_init,
4177
ARRAY_SIZE(cx_sensor_init));
4178
reg_w_buf(gspca_dev, cx_bridge_init,
4179
ARRAY_SIZE(cx_bridge_init));
4180
bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4181
reg_w(gspca_dev, 0x59, 0x40);
4183
reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);
4184
i2c_w_buf(gspca_dev, ov_sensor_init,
4185
ARRAY_SIZE(ov_sensor_init));
4186
reg_r(gspca_dev, 0x7b);
4187
reg_w_buf(gspca_dev, ov_bridge_init,
4188
ARRAY_SIZE(ov_bridge_init));
4190
reg_w(gspca_dev, TP6800_R78_FORMAT,
4191
gspca_dev->curr_mode ? 0x00 : 0x01);
4192
return gspca_dev->usb_err;
4195
static void set_led(struct gspca_dev *gspca_dev, int on)
4199
reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4200
data = gspca_dev->usb_buf[0];
4205
reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data);
4208
static void cx0342_6800_start(struct gspca_dev *gspca_dev)
4210
static const struct cmd reg_init[] = {
4211
/*fixme: is this usefull?*/
4212
{TP6800_R17_GPIO_IO, 0x9f},
4213
{TP6800_R16_GPIO_PD, 0x40},
4214
{TP6800_R10_SIF_TYPE, 0x00}, /* i2c 8 bits */
4219
{TP6800_R54_DARK_CFG, 0x07},
4220
{TP6800_R5C_EDGE_THRLD, 0x40},
4221
{TP6800_R7A_BLK_THRLD, 0x40},
4222
{TP6800_R2F_TIMING_CFG, 0x17},
4223
{TP6800_R30_SENSOR_CFG, 0x18}, /* G1B..RG0 */
4224
{TP6800_R37_FRONT_DARK_ST, 0x00},
4225
{TP6800_R38_FRONT_DARK_END, 0x00},
4226
{TP6800_R39_REAR_DARK_ST_L, 0x00},
4227
{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4228
{TP6800_R3B_REAR_DARK_END_L, 0x00},
4229
{TP6800_R3C_REAR_DARK_END_H, 0x00},
4230
{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4231
{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4232
{TP6800_R21_ENDP_1_CTL, 0x03},
4234
{TP6800_R31_PIXEL_START, 0x0b},
4235
{TP6800_R32_PIXEL_END_L, 0x8a},
4236
{TP6800_R33_PIXEL_END_H, 0x02},
4237
{TP6800_R34_LINE_START, 0x0e},
4238
{TP6800_R35_LINE_END_L, 0xf4},
4239
{TP6800_R36_LINE_END_H, 0x01},
4240
{TP6800_R78_FORMAT, 0x00},
4241
{TP6800_R12_SIF_ADDR_S, 0x20}, /* cx0342 i2c addr */
4243
static const struct cmd sensor_init[] = {
4244
{CX0342_OUTPUT_CTRL, 0x07},
4245
{CX0342_BYPASS_MODE, 0x58},
4246
{CX0342_GPXLTHD_L, 0x16},
4247
{CX0342_RBPXLTHD_L, 0x16},
4248
{CX0342_PLANETHD_L, 0xc0},
4249
{CX0342_PLANETHD_H, 0x03},
4250
{CX0342_RB_GAP_L, 0xff},
4251
{CX0342_RB_GAP_H, 0x07},
4252
{CX0342_G_GAP_L, 0xff},
4253
{CX0342_G_GAP_H, 0x07},
4254
{CX0342_RST_OVERFLOW_L, 0x5c},
4255
{CX0342_RST_OVERFLOW_H, 0x01},
4256
{CX0342_DATA_OVERFLOW_L, 0xfc},
4257
{CX0342_DATA_OVERFLOW_H, 0x03},
4258
{CX0342_DATA_UNDERFLOW_L, 0x00},
4259
{CX0342_DATA_UNDERFLOW_H, 0x00},
4260
{CX0342_SYS_CTRL_0, 0x40},
4261
{CX0342_GLOBAL_GAIN, 0x01},
4262
{CX0342_CLOCK_GEN, 0x00},
4263
{CX0342_SYS_CTRL_0, 0x02},
4264
{CX0342_IDLE_CTRL, 0x05},
4265
{CX0342_ADCGN, 0x00},
4266
{CX0342_ADC_CTL, 0x00},
4267
{CX0342_LVRST_BLBIAS, 0x01},
4268
{CX0342_VTHSEL, 0x0b},
4269
{CX0342_RAMP_RIV, 0x0b},
4270
{CX0342_LDOSEL, 0x07},
4271
{CX0342_SPV_VALUE_L, 0x40},
4272
{CX0342_SPV_VALUE_H, 0x02},
4275
reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4276
i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4277
i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
4278
reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4279
reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4280
i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
4281
i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
4282
setexposure(gspca_dev);
4283
set_led(gspca_dev, 1);
4284
set_resolution(gspca_dev);
4287
static void cx0342_6810_start(struct gspca_dev *gspca_dev)
4289
static const struct cmd sensor_init_2[] = {
4290
{CX0342_EXPO_LINE_L, 0x6f},
4291
{CX0342_EXPO_LINE_H, 0x02},
4292
{CX0342_RAW_GRGAIN_L, 0x00},
4293
{CX0342_RAW_GBGAIN_L, 0x00},
4294
{CX0342_RAW_RGAIN_L, 0x00},
4295
{CX0342_RAW_BGAIN_L, 0x00},
4296
{CX0342_SYS_CTRL_0, 0x81},
4298
static const struct cmd bridge_init_2[] = {
4303
{TP6800_R7A_BLK_THRLD, 0x00},
4304
{TP6800_R79_QUALITY, 0x04},
4305
{TP6800_R79_QUALITY, 0x01},
4307
static const struct cmd bridge_init_3[] = {
4308
{TP6800_R31_PIXEL_START, 0x08},
4309
{TP6800_R32_PIXEL_END_L, 0x87},
4310
{TP6800_R33_PIXEL_END_H, 0x02},
4311
{TP6800_R34_LINE_START, 0x0e},
4312
{TP6800_R35_LINE_END_L, 0xf4},
4313
{TP6800_R36_LINE_END_H, 0x01},
4315
static const struct cmd sensor_init_3[] = {
4316
{CX0342_AUTO_ADC_CALIB, 0x81},
4317
{CX0342_EXPO_LINE_L, 0x6f},
4318
{CX0342_EXPO_LINE_H, 0x02},
4319
{CX0342_RAW_GRGAIN_L, 0x00},
4320
{CX0342_RAW_GBGAIN_L, 0x00},
4321
{CX0342_RAW_RGAIN_L, 0x00},
4322
{CX0342_RAW_BGAIN_L, 0x00},
4323
{CX0342_SYS_CTRL_0, 0x81},
4325
static const struct cmd bridge_init_5[] = {
4331
static const struct cmd sensor_init_4[] = {
4332
{CX0342_EXPO_LINE_L, 0xd3},
4333
{CX0342_EXPO_LINE_H, 0x01},
4334
/*fixme: gains, but 00..80 only*/
4335
{CX0342_RAW_GRGAIN_L, 0x40},
4336
{CX0342_RAW_GBGAIN_L, 0x40},
4337
{CX0342_RAW_RGAIN_L, 0x40},
4338
{CX0342_RAW_BGAIN_L, 0x40},
4339
{CX0342_SYS_CTRL_0, 0x81},
4341
static const struct cmd sensor_init_5[] = {
4342
{CX0342_IDLE_CTRL, 0x05},
4343
{CX0342_ADCGN, 0x00},
4344
{CX0342_ADC_CTL, 0x00},
4345
{CX0342_LVRST_BLBIAS, 0x01},
4346
{CX0342_VTHSEL, 0x0b},
4347
{CX0342_RAMP_RIV, 0x0b},
4348
{CX0342_LDOSEL, 0x07},
4349
{CX0342_SPV_VALUE_L, 0x40},
4350
{CX0342_SPV_VALUE_H, 0x02},
4351
{CX0342_AUTO_ADC_CALIB, 0x81},
4354
reg_w(gspca_dev, 0x22, gspca_dev->alt);
4355
i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2));
4356
reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4357
reg_w_buf(gspca_dev, tp6810_cx_init_common,
4358
ARRAY_SIZE(tp6810_cx_init_common));
4359
reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4360
if (gspca_dev->curr_mode) {
4361
reg_w(gspca_dev, 0x4a, 0x7f);
4362
reg_w(gspca_dev, 0x07, 0x05);
4363
reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
4365
reg_w(gspca_dev, 0x4a, 0xff);
4366
reg_w(gspca_dev, 0x07, 0x85);
4367
reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */
4369
setgamma(gspca_dev);
4370
reg_w_buf(gspca_dev, tp6810_bridge_start,
4371
ARRAY_SIZE(tp6810_bridge_start));
4372
setsharpness(gspca_dev);
4373
bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
4374
ARRAY_SIZE(color_gain[0]));
4375
reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4376
i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3));
4377
reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4378
i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4));
4379
reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4380
i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5));
4382
set_led(gspca_dev, 1);
4383
/* setquality(gspca_dev); */
4386
static void soi763a_6800_start(struct gspca_dev *gspca_dev)
4388
static const struct cmd reg_init[] = {
4389
{TP6800_R79_QUALITY, 0x04},
4390
{TP6800_R79_QUALITY, 0x01},
4391
{TP6800_R10_SIF_TYPE, 0x00}, /* i2c 8 bits */
4397
{TP6800_R54_DARK_CFG, 0x07},
4398
{TP6800_R5C_EDGE_THRLD, 0x40},
4400
{TP6800_R79_QUALITY, 0x03},
4401
{TP6800_R7A_BLK_THRLD, 0x40},
4403
{TP6800_R2F_TIMING_CFG, 0x46},
4404
{TP6800_R30_SENSOR_CFG, 0x10}, /* BG1..G0R */
4405
{TP6800_R37_FRONT_DARK_ST, 0x00},
4406
{TP6800_R38_FRONT_DARK_END, 0x00},
4407
{TP6800_R39_REAR_DARK_ST_L, 0x00},
4408
{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4409
{TP6800_R3B_REAR_DARK_END_L, 0x00},
4410
{TP6800_R3C_REAR_DARK_END_H, 0x00},
4411
{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4412
{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4413
{TP6800_R21_ENDP_1_CTL, 0x03},
4415
{TP6800_R3F_FRAME_RATE, 0x04}, /* 15 fps */
4416
{TP6800_R5D_DEMOSAIC_CFG, 0x0e}, /* scale down - medium edge */
4418
{TP6800_R31_PIXEL_START, 0x1b},
4419
{TP6800_R32_PIXEL_END_L, 0x9a},
4420
{TP6800_R33_PIXEL_END_H, 0x02},
4421
{TP6800_R34_LINE_START, 0x0f},
4422
{TP6800_R35_LINE_END_L, 0xf4},
4423
{TP6800_R36_LINE_END_H, 0x01},
4424
{TP6800_R78_FORMAT, 0x01}, /* qvga */
4425
{TP6800_R12_SIF_ADDR_S, 0x21}, /* soi763a i2c addr */
4426
{TP6800_R1A_SIF_TX_DATA2, 0x00},
4428
static const struct cmd sensor_init[] = {
4429
{0x12, 0x48}, /* mirror - RGB */
4430
{0x13, 0xa0}, /* clock - no AGC nor AEC */
4431
{0x03, 0xa4}, /* saturation */
4432
{0x04, 0x30}, /* hue */
4433
{0x05, 0x88}, /* contrast */
4434
{0x06, 0x60}, /* brightness */
4435
{0x10, 0x41}, /* AEC */
4436
{0x11, 0x40}, /* clock rate */
4438
{0x14, 0x00}, /* 640x480 */
4469
{0x17, 0x18}, /* H href start */
4470
{0x18, 0xbf}, /* H href end */
4471
{0x19, 0x03}, /* V start */
4472
{0x1a, 0xf8}, /* V end */
4473
{0x01, 0x80}, /* blue gain */
4474
{0x02, 0x80}, /* red gain */
4477
reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4479
i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */
4482
i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4484
reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4485
reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4487
setsharpness(gspca_dev);
4489
bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4490
ARRAY_SIZE(color_gain[0]));
4492
set_led(gspca_dev, 1);
4493
setexposure(gspca_dev);
4494
setquality(gspca_dev);
4495
setgamma(gspca_dev);
4498
static void soi763a_6810_start(struct gspca_dev *gspca_dev)
4500
static const struct cmd bridge_init_2[] = {
4501
{TP6800_R7A_BLK_THRLD, 0x00},
4502
{TP6800_R79_QUALITY, 0x04},
4503
{TP6800_R79_QUALITY, 0x01},
4505
static const struct cmd bridge_init_3[] = {
4506
{TP6800_R31_PIXEL_START, 0x20},
4507
{TP6800_R32_PIXEL_END_L, 0x9f},
4508
{TP6800_R33_PIXEL_END_H, 0x02},
4509
{TP6800_R34_LINE_START, 0x13},
4510
{TP6800_R35_LINE_END_L, 0xf8},
4511
{TP6800_R36_LINE_END_H, 0x01},
4513
static const struct cmd bridge_init_6[] = {
4520
reg_w(gspca_dev, 0x22, gspca_dev->alt);
4521
bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4522
reg_w(gspca_dev, 0x59, 0x40);
4523
setexposure(gspca_dev);
4524
reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4525
reg_w_buf(gspca_dev, tp6810_ov_init_common,
4526
ARRAY_SIZE(tp6810_ov_init_common));
4527
reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4528
if (gspca_dev->curr_mode) {
4529
reg_w(gspca_dev, 0x4a, 0x7f);
4530
reg_w(gspca_dev, 0x07, 0x05);
4531
reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
4533
reg_w(gspca_dev, 0x4a, 0xff);
4534
reg_w(gspca_dev, 0x07, 0x85);
4535
reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */
4537
setgamma(gspca_dev);
4538
reg_w_buf(gspca_dev, tp6810_bridge_start,
4539
ARRAY_SIZE(tp6810_bridge_start));
4541
if (gspca_dev->curr_mode) {
4542
reg_w(gspca_dev, 0x4f, 0x00);
4543
reg_w(gspca_dev, 0x4e, 0x7c);
4546
reg_w(gspca_dev, 0x00, 0x00);
4548
setsharpness(gspca_dev);
4549
bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4550
ARRAY_SIZE(color_gain[0]));
4551
set_led(gspca_dev, 1);
4552
reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0);
4553
setexposure(gspca_dev);
4554
reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6));
4557
/* -- start the camera -- */
4558
static int sd_start(struct gspca_dev *gspca_dev)
4560
struct sd *sd = (struct sd *) gspca_dev;
4562
jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width);
4563
set_dqt(gspca_dev, sd->quality);
4564
if (sd->bridge == BRIDGE_TP6800) {
4565
if (sd->sensor == SENSOR_CX0342)
4566
cx0342_6800_start(gspca_dev);
4568
soi763a_6800_start(gspca_dev);
4570
if (sd->sensor == SENSOR_CX0342)
4571
cx0342_6810_start(gspca_dev);
4573
soi763a_6810_start(gspca_dev);
4574
reg_w_buf(gspca_dev, tp6810_late_start,
4575
ARRAY_SIZE(tp6810_late_start));
4576
reg_w(gspca_dev, 0x80, 0x03);
4577
reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e);
4579
setexposure(gspca_dev);
4580
setquality(gspca_dev);
4581
setautogain(gspca_dev);
4584
setframerate(gspca_dev);
4586
return gspca_dev->usb_err;
4589
static void sd_stopN(struct gspca_dev *gspca_dev)
4591
struct sd *sd = (struct sd *) gspca_dev;
4593
if (sd->bridge == BRIDGE_TP6800)
4594
reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03);
4595
set_led(gspca_dev, 0);
4596
reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
4599
static void sd_pkt_scan(struct gspca_dev *gspca_dev,
4603
struct sd *sd = (struct sd *) gspca_dev;
4605
/* the start of frame contains:
4612
if (sd->bridge == BRIDGE_TP6810) {
4613
if (*data != 0x5a) {
4614
/*fixme: don't discard the whole frame..*/
4615
if (*data == 0xaa || *data == 0x00)
4618
PDEBUG(D_FRAM, "bad frame");
4619
gspca_dev->last_packet_type = DISCARD_PACKET;
4625
if (*data == 0xff && data[1] == 0xd8) {
4626
/*fixme: there may be information in the 4 high bits*/
4627
if ((data[6] & 0x0f) != sd->quality)
4628
set_dqt(gspca_dev, data[6] & 0x0f);
4629
gspca_frame_add(gspca_dev, FIRST_PACKET,
4630
sd->jpeg_hdr, JPEG_HDR_SZ);
4631
gspca_frame_add(gspca_dev, INTER_PACKET,
4633
} else if (data[len - 2] == 0xff && data[len - 1] == 0xd9) {
4634
gspca_frame_add(gspca_dev, LAST_PACKET,
4637
gspca_frame_add(gspca_dev, INTER_PACKET,
4645
gspca_frame_add(gspca_dev, LAST_PACKET, data, 0);
4648
|| data[1] != 0xff || data[2] != 0xd8
4649
|| data[3] != 0xff || data[4] != 0xfe) {
4651
/* Have only seen this with corrupt frames */
4652
gspca_dev->last_packet_type = DISCARD_PACKET;
4655
if (data[7] != sd->quality)
4656
set_dqt(gspca_dev, data[7]);
4657
gspca_frame_add(gspca_dev, FIRST_PACKET,
4658
sd->jpeg_hdr, JPEG_HDR_SZ);
4659
gspca_frame_add(gspca_dev, INTER_PACKET,
4663
gspca_dev->last_packet_type = DISCARD_PACKET;
4666
if (data[1] != 0xff || data[2] != 0xd8)
4667
gspca_frame_add(gspca_dev, INTER_PACKET,
4670
gspca_dev->last_packet_type = DISCARD_PACKET;
4675
/* -- do autogain -- */
4676
/* gain setting is done in setexposure() for tp6810 */
4677
static void setgain(struct gspca_dev *gspca_dev) {}
4678
/* !! coarse_grained_expo_autogain is not used !! */
4679
#define exp_too_low_cnt bridge
4680
#define exp_too_high_cnt sensor
4682
#include "autogain_functions.h"
4683
static void sd_dq_callback(struct gspca_dev *gspca_dev)
4685
struct sd *sd = (struct sd *) gspca_dev;
4691
if (--sd->ag_cnt > 5)
4693
switch (sd->ag_cnt) {
4696
reg_w(gspca_dev, 0x7d, 0x00);
4699
reg_w(gspca_dev, 0x27, 0xb0);
4702
reg_w(gspca_dev, 0x0c, 0x01);
4705
ret = usb_bulk_msg(gspca_dev->dev,
4706
usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4712
pr_err("bulk err %d\n", ret);
4715
/* values not used (unknown) */
4718
reg_w(gspca_dev, 0x27, 0xd0);
4721
ret = usb_bulk_msg(gspca_dev->dev,
4722
usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4728
pr_err("bulk err %d\n", ret);
4731
luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] +
4732
(gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] +
4733
(gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] +
4734
(gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] +
4735
(gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] +
4736
(gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] +
4737
(gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] +
4738
(gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28])
4740
if (gspca_dev->width == 640)
4742
reg_w(gspca_dev, 0x7d, 0x00);
4744
expo = sd->ctrls[EXPOSURE].val;
4745
ret = auto_gain_n_exposure(gspca_dev, luma,
4746
60, /* desired luma */
4749
70); /* expo knee */
4750
sd->ag_cnt = AG_CNT_START;
4751
if (sd->bridge == BRIDGE_TP6810) {
4752
if ((expo >= 128 && sd->ctrls[EXPOSURE].val < 128)
4753
|| (expo < 128 && sd->ctrls[EXPOSURE].val >= 128))
4754
setframerate(gspca_dev);
4760
/* get stream parameters (framerate) */
4761
static void sd_get_streamparm(struct gspca_dev *gspca_dev,
4762
struct v4l2_streamparm *parm)
4764
struct sd *sd = (struct sd *) gspca_dev;
4765
struct v4l2_captureparm *cp = &parm->parm.capture;
4766
struct v4l2_fract *tpf = &cp->timeperframe;
4769
cp->capability |= V4L2_CAP_TIMEPERFRAME;
4771
i = get_fr_idx(gspca_dev);
4773
if (sd->bridge == BRIDGE_TP6800)
4774
fr = rates[6 - (i & 0x07)];
4776
fr = rates_6810[7 - (i & 0x07)];
4780
tpf->denominator = fr;
4783
/* set stream parameters (framerate) */
4784
static void sd_set_streamparm(struct gspca_dev *gspca_dev,
4785
struct v4l2_streamparm *parm)
4787
struct sd *sd = (struct sd *) gspca_dev;
4788
struct v4l2_captureparm *cp = &parm->parm.capture;
4789
struct v4l2_fract *tpf = &cp->timeperframe;
4792
sd->framerate = tpf->denominator / tpf->numerator;
4793
if (gspca_dev->streaming)
4794
setframerate(gspca_dev);
4796
/* Return the actual framerate */
4797
i = get_fr_idx(gspca_dev);
4799
fr = rates_6810[7 - (i & 0x07)];
4803
tpf->denominator = fr;
4806
static int sd_set_jcomp(struct gspca_dev *gspca_dev,
4807
struct v4l2_jpegcompression *jcomp)
4809
struct sd *sd = (struct sd *) gspca_dev;
4811
if (sd->sensor == SENSOR_SOI763A)
4812
jpeg_set_qual(sd->jpeg_hdr, jcomp->quality);
4816
return gspca_dev->usb_err;
4819
static int sd_get_jcomp(struct gspca_dev *gspca_dev,
4820
struct v4l2_jpegcompression *jcomp)
4822
struct sd *sd = (struct sd *) gspca_dev;
4824
memset(jcomp, 0, sizeof *jcomp);
4825
jcomp->quality = jpeg_q[sd->quality];
4826
jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT
4827
| V4L2_JPEG_MARKER_DQT;
4831
static struct ctrl sd_ctrls[NCTRLS] = {
4834
.id = V4L2_CID_EXPOSURE,
4835
.type = V4L2_CTRL_TYPE_INTEGER,
4840
.default_value = 0x4e,
4842
.set_control = setexposure
4846
.id = V4L2_CID_PRIVATE_BASE,
4847
.type = V4L2_CTRL_TYPE_INTEGER,
4848
.name = "Compression quality",
4852
.default_value = 13,
4854
.set_control = setquality
4858
.id = V4L2_CID_RED_BALANCE,
4859
.type = V4L2_CTRL_TYPE_INTEGER,
4860
.name = "Red balance",
4864
.default_value = 256,
4866
.set_control = setrgain
4870
.id = V4L2_CID_GAIN,
4871
.type = V4L2_CTRL_TYPE_INTEGER,
4876
.default_value = 256,
4882
.id = V4L2_CID_BLUE_BALANCE,
4883
.type = V4L2_CTRL_TYPE_INTEGER,
4884
.name = "Blue balance",
4888
.default_value = 256,
4890
.set_control = setbgain
4894
.id = V4L2_CID_SHARPNESS,
4895
.type = V4L2_CTRL_TYPE_INTEGER,
4896
.name = "Sharpness",
4902
.set_control = setsharpness
4906
.id = V4L2_CID_GAMMA,
4907
.type = V4L2_CTRL_TYPE_INTEGER,
4910
.maximum = NGAMMA - 1,
4914
.set_control = setgamma
4918
.id = V4L2_CID_AUTOGAIN,
4919
.type = V4L2_CTRL_TYPE_BOOLEAN,
4920
.name = "Auto Gain",
4924
.default_value = AUTOGAIN_DEF
4926
.set_control = setautogain
4930
static const struct sd_desc sd_desc = {
4931
.name = KBUILD_MODNAME,
4934
.config = sd_config,
4936
.isoc_init = sd_isoc_init,
4939
.pkt_scan = sd_pkt_scan,
4940
.dq_callback = sd_dq_callback,
4941
.get_streamparm = sd_get_streamparm,
4942
.set_streamparm = sd_set_streamparm,
4943
.get_jcomp = sd_get_jcomp,
4944
.set_jcomp = sd_set_jcomp,
4947
static const struct usb_device_id device_table[] = {
4948
{USB_DEVICE(0x06a2, 0x0003), .driver_info = BRIDGE_TP6800},
4949
{USB_DEVICE(0x06a2, 0x6810), .driver_info = BRIDGE_TP6810},
4950
{} /* Terminating entry */
4953
MODULE_DEVICE_TABLE(usb, device_table);
4955
static int sd_probe(struct usb_interface *interface,
4956
const struct usb_device_id *id)
4958
return gspca_dev_probe(interface, id, &sd_desc, sizeof(struct sd),
4962
static struct usb_driver sd_driver = {
4963
.name = KBUILD_MODNAME,
4964
.id_table = device_table,
4966
.disconnect = gspca_disconnect,
4968
.suspend = gspca_suspend,
4969
.resume = gspca_resume,
4970
.reset_resume = gspca_resume,
4974
/* -- module insert / remove -- */
4975
static int __init sd_mod_init(void)
4977
return usb_register(&sd_driver);
4979
static void __exit sd_mod_exit(void)
4981
usb_deregister(&sd_driver);
4984
module_init(sd_mod_init);
4985
module_exit(sd_mod_exit);
4987
module_param(force_sensor, int, 0644);
4988
MODULE_PARM_DESC(force_sensor,
4989
"Force sensor. 0: cx0342, 1: soi763a");