^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Topro TP6800/6810 webcam driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (C) 2009 Anders Blomdell (anders.blomdell@control.lth.se)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Copyright (C) 2008 Thomas Champagne (lafeuil@gmail.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include "gspca.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) MODULE_DESCRIPTION("Topro TP6800/6810 gspca webcam driver");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, Anders Blomdell <anders.blomdell@control.lth.se>");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) MODULE_LICENSE("GPL");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) static int force_sensor = -1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) /* JPEG header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) static const u8 jpeg_head[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 0xff, 0xd8, /* jpeg */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) /* quantization table quality 50% */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 0xff, 0xdb, 0x00, 0x84, /* DQT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define JPEG_QT0_OFFSET 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define JPEG_QT1_OFFSET 72
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) /* Define Huffman table (thanks to Thomas Kaiser) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 0xff, 0xc4, 0x01, 0x5e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 0x00, 0x00, 0x02, 0x03,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 0x07, 0x05, 0x04, 0x06, 0x01, 0x00, 0x00, 0x57,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 0x01, 0x02, 0x03, 0x00, 0x11, 0x04, 0x12, 0x21,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 0x31, 0x13, 0x41, 0x51, 0x61, 0x05, 0x22, 0x32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 0x14, 0x71, 0x81, 0x91, 0x15, 0x23, 0x42, 0x52,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 0x62, 0xa1, 0xb1, 0x06, 0x33, 0x72, 0xc1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 0x24, 0x43, 0x53, 0x82, 0x16, 0x34, 0x92, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 0xe1, 0xf1, 0xf0, 0x07, 0x08, 0x17, 0x18, 0x25,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 0x26, 0x27, 0x28, 0x35, 0x36, 0x37, 0x38, 0x44,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 0x45, 0x46, 0x47, 0x48, 0x54, 0x55, 0x56, 0x57,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 0x58, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x73,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 0x74, 0x75, 0x76, 0x77, 0x78, 0x83, 0x84, 0x85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 0x86, 0x87, 0x88, 0x93, 0x94, 0x95, 0x96, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 0x98, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 0xd5, 0xd6, 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 0xe6, 0xe7, 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) 0xf7, 0xf8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 0x05, 0x06, 0x07, 0x08, 0x09, 0x11, 0x00, 0x02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 0x00, 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) 0x11, 0x02, 0x21, 0x03, 0x12, 0x31, 0x41, 0x13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 0x22, 0x51, 0x61, 0x04, 0x32, 0x71, 0x05, 0x14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) 0x23, 0x42, 0x33, 0x52, 0x81, 0x91, 0xa1, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 0xf0, 0x06, 0x15, 0xc1, 0xd1, 0xe1, 0x24, 0x43,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) 0x62, 0xf1, 0x16, 0x25, 0x34, 0x53, 0x72, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) 0x92, 0x07, 0x08, 0x17, 0x18, 0x26, 0x27, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) 0x35, 0x36, 0x37, 0x38, 0x44, 0x45, 0x46, 0x47,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 0x48, 0x54, 0x55, 0x56, 0x57, 0x58, 0x63, 0x64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) 0x65, 0x66, 0x67, 0x68, 0x73, 0x74, 0x75, 0x76,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) 0x77, 0x78, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xa2, 0xa3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 0xb3, 0xb4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 0xc4, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) 0xff, 0xc0, 0x00, 0x11, /* SOF0 (start of frame 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) 0x08, /* data precision */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #define JPEG_HEIGHT_OFFSET 493
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) 0x01, 0xe0, /* height */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) 0x02, 0x80, /* width */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) 0x03, /* component number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 0x21, /* samples Y = jpeg 422 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 0x00, /* quant Y */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 0x02, 0x11, 0x01, /* samples CbCr - quant CbCr */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 0x03, 0x11, 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 0xff, 0xda, 0x00, 0x0c, /* SOS (start of scan) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define JPEG_HDR_SZ 521
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) struct sd {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) struct gspca_dev gspca_dev; /* !! must be the first item */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) struct v4l2_ctrl *jpegqual;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) struct v4l2_ctrl *sharpness;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) struct v4l2_ctrl *gamma;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) struct v4l2_ctrl *blue;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) struct v4l2_ctrl *red;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) u8 framerate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) u8 quality; /* webcam current JPEG quality (0..16) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) s8 ag_cnt; /* autogain / start counter for tp6810 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #define AG_CNT_START 13 /* check gain every N frames */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) u8 bridge;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) u8 sensor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) u8 jpeg_hdr[JPEG_HDR_SZ];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) enum bridges {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) BRIDGE_TP6800,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) BRIDGE_TP6810,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) enum sensors {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) SENSOR_CX0342,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) SENSOR_SOI763A, /* ~= ov7630 / ov7648 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) NSENSORS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) static const struct v4l2_pix_format vga_mode[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) {320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) .bytesperline = 320,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) .sizeimage = 320 * 240 * 4 / 8 + 590,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) .colorspace = V4L2_COLORSPACE_JPEG},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) {640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) .bytesperline = 640,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) .sizeimage = 640 * 480 * 3 / 8 + 590,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) .colorspace = V4L2_COLORSPACE_JPEG}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) * JPEG quality
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) * index: webcam compression
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) * value: JPEG quality in %
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) static const u8 jpeg_q[17] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 88, 77, 67, 57, 55, 55, 45, 45, 36, 36, 30, 30, 26, 26, 22, 22, 94
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define BULK_OUT_SIZE 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #if BULK_OUT_SIZE > USB_BUF_SZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) #error "USB buffer too small"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) #define DEFAULT_FRAME_RATE 30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) static const u8 rates[] = {30, 20, 15, 10, 7, 5};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) static const struct framerates framerates[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) .rates = rates,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) .nrates = ARRAY_SIZE(rates)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) .rates = rates,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) .nrates = ARRAY_SIZE(rates)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) static const u8 rates_6810[] = {30, 15, 10, 7, 5};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) static const struct framerates framerates_6810[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) .rates = rates_6810,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) .nrates = ARRAY_SIZE(rates_6810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) .rates = rates_6810,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) .nrates = ARRAY_SIZE(rates_6810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) * webcam quality in %
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) * the last value is the ultra fine quality
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) /* TP6800 register offsets */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) #define TP6800_R10_SIF_TYPE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) #define TP6800_R11_SIF_CONTROL 0x11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) #define TP6800_R12_SIF_ADDR_S 0x12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) #define TP6800_R13_SIF_TX_DATA 0x13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #define TP6800_R14_SIF_RX_DATA 0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) #define TP6800_R15_GPIO_PU 0x15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #define TP6800_R16_GPIO_PD 0x16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #define TP6800_R17_GPIO_IO 0x17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #define TP6800_R18_GPIO_DATA 0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) #define TP6800_R19_SIF_ADDR_S2 0x19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) #define TP6800_R1A_SIF_TX_DATA2 0x1a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) #define TP6800_R1B_SIF_RX_DATA2 0x1b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) #define TP6800_R21_ENDP_1_CTL 0x21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) #define TP6800_R2F_TIMING_CFG 0x2f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) #define TP6800_R30_SENSOR_CFG 0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) #define TP6800_R31_PIXEL_START 0x31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) #define TP6800_R32_PIXEL_END_L 0x32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) #define TP6800_R33_PIXEL_END_H 0x33
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) #define TP6800_R34_LINE_START 0x34
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) #define TP6800_R35_LINE_END_L 0x35
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) #define TP6800_R36_LINE_END_H 0x36
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) #define TP6800_R37_FRONT_DARK_ST 0x37
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) #define TP6800_R38_FRONT_DARK_END 0x38
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) #define TP6800_R39_REAR_DARK_ST_L 0x39
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) #define TP6800_R3A_REAR_DARK_ST_H 0x3a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) #define TP6800_R3B_REAR_DARK_END_L 0x3b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #define TP6800_R3C_REAR_DARK_END_H 0x3c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #define TP6800_R3D_HORIZ_DARK_LINE_L 0x3d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) #define TP6800_R3E_HORIZ_DARK_LINE_H 0x3e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) #define TP6800_R3F_FRAME_RATE 0x3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) #define TP6800_R50 0x50
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) #define TP6800_R51 0x51
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) #define TP6800_R52 0x52
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) #define TP6800_R53 0x53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #define TP6800_R54_DARK_CFG 0x54
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) #define TP6800_R55_GAMMA_R 0x55
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) #define TP6800_R56_GAMMA_G 0x56
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #define TP6800_R57_GAMMA_B 0x57
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) #define TP6800_R5C_EDGE_THRLD 0x5c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) #define TP6800_R5D_DEMOSAIC_CFG 0x5d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) #define TP6800_R78_FORMAT 0x78
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) #define TP6800_R79_QUALITY 0x79
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) #define TP6800_R7A_BLK_THRLD 0x7a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) /* CX0342 register offsets */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) #define CX0342_SENSOR_ID 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) #define CX0342_VERSION_NO 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) #define CX0342_ORG_X_L 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) #define CX0342_ORG_X_H 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) #define CX0342_ORG_Y_L 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) #define CX0342_ORG_Y_H 0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) #define CX0342_STOP_X_L 0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) #define CX0342_STOP_X_H 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define CX0342_STOP_Y_L 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) #define CX0342_STOP_Y_H 0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) #define CX0342_FRAME_WIDTH_L 0x0a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) #define CX0342_FRAME_WIDTH_H 0x0b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) #define CX0342_FRAME_HEIGH_L 0x0c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #define CX0342_FRAME_HEIGH_H 0x0d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #define CX0342_EXPO_LINE_L 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) #define CX0342_EXPO_LINE_H 0x11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) #define CX0342_EXPO_CLK_L 0x12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) #define CX0342_EXPO_CLK_H 0x13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) #define CX0342_RAW_GRGAIN_L 0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) #define CX0342_RAW_GRGAIN_H 0x15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) #define CX0342_RAW_GBGAIN_L 0x16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) #define CX0342_RAW_GBGAIN_H 0x17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) #define CX0342_RAW_RGAIN_L 0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) #define CX0342_RAW_RGAIN_H 0x19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) #define CX0342_RAW_BGAIN_L 0x1a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) #define CX0342_RAW_BGAIN_H 0x1b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) #define CX0342_GLOBAL_GAIN 0x1c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) #define CX0342_SYS_CTRL_0 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) #define CX0342_SYS_CTRL_1 0x21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) #define CX0342_SYS_CTRL_2 0x22
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) #define CX0342_BYPASS_MODE 0x23
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) #define CX0342_SYS_CTRL_3 0x24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) #define CX0342_TIMING_EN 0x25
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) #define CX0342_OUTPUT_CTRL 0x26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) #define CX0342_AUTO_ADC_CALIB 0x27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) #define CX0342_SYS_CTRL_4 0x28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) #define CX0342_ADCGN 0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) #define CX0342_SLPCR 0x31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) #define CX0342_SLPFN_LO 0x32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) #define CX0342_ADC_CTL 0x33
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) #define CX0342_LVRST_BLBIAS 0x34
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) #define CX0342_VTHSEL 0x35
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) #define CX0342_RAMP_RIV 0x36
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) #define CX0342_LDOSEL 0x37
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) #define CX0342_CLOCK_GEN 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) #define CX0342_SOFT_RESET 0x41
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) #define CX0342_PLL 0x42
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) #define CX0342_DR_ENH_PULSE_OFFSET_L 0x43
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) #define CX0342_DR_ENH_PULSE_OFFSET_H 0x44
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) #define CX0342_DR_ENH_PULSE_POS_L 0x45
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) #define CX0342_DR_ENH_PULSE_POS_H 0x46
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) #define CX0342_DR_ENH_PULSE_WIDTH 0x47
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) #define CX0342_AS_CURRENT_CNT_L 0x48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) #define CX0342_AS_CURRENT_CNT_H 0x49
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) #define CX0342_AS_PREVIOUS_CNT_L 0x4a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) #define CX0342_AS_PREVIOUS_CNT_H 0x4b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) #define CX0342_SPV_VALUE_L 0x4c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) #define CX0342_SPV_VALUE_H 0x4d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) #define CX0342_GPXLTHD_L 0x50
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) #define CX0342_GPXLTHD_H 0x51
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) #define CX0342_RBPXLTHD_L 0x52
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) #define CX0342_RBPXLTHD_H 0x53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) #define CX0342_PLANETHD_L 0x54
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) #define CX0342_PLANETHD_H 0x55
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) #define CX0342_ROWDARK_TH 0x56
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) #define CX0342_ROWDARK_TOL 0x57
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) #define CX0342_RB_GAP_L 0x58
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) #define CX0342_RB_GAP_H 0x59
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) #define CX0342_G_GAP_L 0x5a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) #define CX0342_G_GAP_H 0x5b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) #define CX0342_AUTO_ROW_DARK 0x60
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) #define CX0342_MANUAL_DARK_VALUE 0x61
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) #define CX0342_GB_DARK_OFFSET 0x62
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) #define CX0342_GR_DARK_OFFSET 0x63
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) #define CX0342_RED_DARK_OFFSET 0x64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) #define CX0342_BLUE_DARK_OFFSET 0x65
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) #define CX0342_DATA_SCALING_MULTI 0x66
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) #define CX0342_AUTOD_Q_FRAME 0x67
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) #define CX0342_AUTOD_ALLOW_VARI 0x68
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #define CX0342_AUTO_DARK_VALUE_L 0x69
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #define CX0342_AUTO_DARK_VALUE_H 0x6a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) #define CX0342_IO_CTRL_0 0x70
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) #define CX0342_IO_CTRL_1 0x71
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) #define CX0342_IO_CTRL_2 0x72
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) #define CX0342_IDLE_CTRL 0x73
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) #define CX0342_TEST_MODE 0x74
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) #define CX0342_FRAME_FIX_DATA_TEST 0x75
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) #define CX0342_FRAME_CNT_TEST 0x76
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) #define CX0342_RST_OVERFLOW_L 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) #define CX0342_RST_OVERFLOW_H 0x81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) #define CX0342_RST_UNDERFLOW_L 0x82
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) #define CX0342_RST_UNDERFLOW_H 0x83
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) #define CX0342_DATA_OVERFLOW_L 0x84
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) #define CX0342_DATA_OVERFLOW_H 0x85
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) #define CX0342_DATA_UNDERFLOW_L 0x86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) #define CX0342_DATA_UNDERFLOW_H 0x87
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) #define CX0342_CHANNEL_0_0_L_irst 0x90
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) #define CX0342_CHANNEL_0_0_H_irst 0x91
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) #define CX0342_CHANNEL_0_1_L_irst 0x92
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) #define CX0342_CHANNEL_0_1_H_irst 0x93
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) #define CX0342_CHANNEL_0_2_L_irst 0x94
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) #define CX0342_CHANNEL_0_2_H_irst 0x95
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) #define CX0342_CHANNEL_0_3_L_irst 0x96
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) #define CX0342_CHANNEL_0_3_H_irst 0x97
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) #define CX0342_CHANNEL_0_4_L_irst 0x98
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) #define CX0342_CHANNEL_0_4_H_irst 0x99
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) #define CX0342_CHANNEL_0_5_L_irst 0x9a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) #define CX0342_CHANNEL_0_5_H_irst 0x9b
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) #define CX0342_CHANNEL_0_6_L_irst 0x9c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) #define CX0342_CHANNEL_0_6_H_irst 0x9d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) #define CX0342_CHANNEL_0_7_L_irst 0x9e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) #define CX0342_CHANNEL_0_7_H_irst 0x9f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) #define CX0342_CHANNEL_1_0_L_itx 0xa0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) #define CX0342_CHANNEL_1_0_H_itx 0xa1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) #define CX0342_CHANNEL_1_1_L_itx 0xa2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) #define CX0342_CHANNEL_1_1_H_itx 0xa3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) #define CX0342_CHANNEL_1_2_L_itx 0xa4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) #define CX0342_CHANNEL_1_2_H_itx 0xa5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) #define CX0342_CHANNEL_1_3_L_itx 0xa6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) #define CX0342_CHANNEL_1_3_H_itx 0xa7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) #define CX0342_CHANNEL_1_4_L_itx 0xa8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) #define CX0342_CHANNEL_1_4_H_itx 0xa9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) #define CX0342_CHANNEL_1_5_L_itx 0xaa
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) #define CX0342_CHANNEL_1_5_H_itx 0xab
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) #define CX0342_CHANNEL_1_6_L_itx 0xac
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) #define CX0342_CHANNEL_1_6_H_itx 0xad
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) #define CX0342_CHANNEL_1_7_L_itx 0xae
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) #define CX0342_CHANNEL_1_7_H_itx 0xaf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) #define CX0342_CHANNEL_2_0_L_iwl 0xb0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) #define CX0342_CHANNEL_2_0_H_iwl 0xb1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) #define CX0342_CHANNEL_2_1_L_iwl 0xb2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) #define CX0342_CHANNEL_2_1_H_iwl 0xb3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) #define CX0342_CHANNEL_2_2_L_iwl 0xb4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) #define CX0342_CHANNEL_2_2_H_iwl 0xb5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) #define CX0342_CHANNEL_2_3_L_iwl 0xb6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) #define CX0342_CHANNEL_2_3_H_iwl 0xb7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) #define CX0342_CHANNEL_2_4_L_iwl 0xb8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) #define CX0342_CHANNEL_2_4_H_iwl 0xb9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) #define CX0342_CHANNEL_2_5_L_iwl 0xba
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) #define CX0342_CHANNEL_2_5_H_iwl 0xbb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) #define CX0342_CHANNEL_2_6_L_iwl 0xbc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) #define CX0342_CHANNEL_2_6_H_iwl 0xbd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) #define CX0342_CHANNEL_2_7_L_iwl 0xbe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) #define CX0342_CHANNEL_2_7_H_iwl 0xbf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) #define CX0342_CHANNEL_3_0_L_ensp 0xc0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) #define CX0342_CHANNEL_3_0_H_ensp 0xc1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) #define CX0342_CHANNEL_3_1_L_ensp 0xc2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) #define CX0342_CHANNEL_3_1_H_ensp 0xc3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) #define CX0342_CHANNEL_3_2_L_ensp 0xc4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) #define CX0342_CHANNEL_3_2_H_ensp 0xc5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) #define CX0342_CHANNEL_3_3_L_ensp 0xc6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) #define CX0342_CHANNEL_3_3_H_ensp 0xc7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) #define CX0342_CHANNEL_3_4_L_ensp 0xc8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) #define CX0342_CHANNEL_3_4_H_ensp 0xc9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) #define CX0342_CHANNEL_3_5_L_ensp 0xca
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) #define CX0342_CHANNEL_3_5_H_ensp 0xcb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) #define CX0342_CHANNEL_3_6_L_ensp 0xcc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) #define CX0342_CHANNEL_3_6_H_ensp 0xcd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) #define CX0342_CHANNEL_3_7_L_ensp 0xce
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) #define CX0342_CHANNEL_3_7_H_ensp 0xcf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) #define CX0342_CHANNEL_4_0_L_sela 0xd0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) #define CX0342_CHANNEL_4_0_H_sela 0xd1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) #define CX0342_CHANNEL_4_1_L_sela 0xd2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) #define CX0342_CHANNEL_4_1_H_sela 0xd3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) #define CX0342_CHANNEL_5_0_L_intla 0xe0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) #define CX0342_CHANNEL_5_0_H_intla 0xe1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) #define CX0342_CHANNEL_5_1_L_intla 0xe2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) #define CX0342_CHANNEL_5_1_H_intla 0xe3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) #define CX0342_CHANNEL_5_2_L_intla 0xe4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) #define CX0342_CHANNEL_5_2_H_intla 0xe5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) #define CX0342_CHANNEL_5_3_L_intla 0xe6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) #define CX0342_CHANNEL_5_3_H_intla 0xe7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) #define CX0342_CHANNEL_6_0_L_xa_sel_pos 0xf0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) #define CX0342_CHANNEL_6_0_H_xa_sel_pos 0xf1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) #define CX0342_CHANNEL_7_1_L_cds_pos 0xf2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) #define CX0342_CHANNEL_7_1_H_cds_pos 0xf3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) #define CX0342_SENSOR_HEIGHT_L 0xfb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) #define CX0342_SENSOR_HEIGHT_H 0xfc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) #define CX0342_SENSOR_WIDTH_L 0xfd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) #define CX0342_SENSOR_WIDTH_H 0xfe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) #define CX0342_VSYNC_HSYNC_READ 0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) struct cmd {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) u8 reg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) u8 val;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) static const u8 DQT[17][130] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) /* Define quantization table (thanks to Thomas Kaiser) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) { /* Quality 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) 0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0b, 0x06,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) 0x06, 0x0b, 0x18, 0x10, 0x0e, 0x10, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) { /* Quality 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) 0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) 0x08, 0x09, 0x09, 0x0c, 0x0a, 0x0c, 0x17, 0x0d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) 0x0d, 0x17, 0x31, 0x21, 0x1c, 0x21, 0x31, 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) { /* Quality 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) 0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) 0x0c, 0x0d, 0x0d, 0x12, 0x0f, 0x12, 0x23, 0x13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) 0x13, 0x23, 0x4a, 0x31, 0x2a, 0x31, 0x4a, 0x4a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) { /* Quality 3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) 0x04, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) 0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) { /* Quality 4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) 0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) 0x0a, 0x0a, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) 0x11, 0x16, 0x16, 0x1e, 0x1a, 0x1e, 0x3a, 0x20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) 0x20, 0x3a, 0x7b, 0x52, 0x46, 0x52, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) { /* Quality 5 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) 0x11, 0x1b, 0x1b, 0x24, 0x1f, 0x24, 0x46, 0x27,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) 0x27, 0x46, 0x94, 0x63, 0x54, 0x63, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) { /* Quality 6 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) 0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) 0x0e, 0x0e, 0x0e, 0x21, 0x21, 0x21, 0x21, 0x21,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) 0x15, 0x1f, 0x1f, 0x2a, 0x24, 0x2a, 0x52, 0x2d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) 0x2d, 0x52, 0xad, 0x73, 0x62, 0x73, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) { /* Quality 7 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) 0x05, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) 0x08, 0x08, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) 0x10, 0x10, 0x10, 0x26, 0x26, 0x26, 0x26, 0x26,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) 0x15, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) 0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) { /* Quality 8 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) 0x0a, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x0a, 0x0a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) 0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) 0x14, 0x14, 0x14, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) 0x19, 0x2d, 0x2d, 0x3c, 0x34, 0x3c, 0x75, 0x41,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) 0x41, 0x75, 0xf7, 0xa5, 0x8c, 0xa5, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) { /* Quality 9 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) 0x18, 0x18, 0x18, 0x39, 0x39, 0x39, 0x39, 0x39,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) 0x19, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) 0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) { /* Quality 10 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) 0x0e, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) 0x1c, 0x1c, 0x1c, 0x42, 0x42, 0x42, 0x42, 0x42,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) 0x1d, 0x3f, 0x3f, 0x54, 0x49, 0x54, 0xa4, 0x5b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) 0x5b, 0xa4, 0xff, 0xe7, 0xc4, 0xe7, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) { /* Quality 11 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) 0x07, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) 0x20, 0x20, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) 0x1d, 0x48, 0x48, 0x60, 0x54, 0x60, 0xbc, 0x68,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) 0x68, 0xbc, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) { /* Quality 12 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) 0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) 0x14, 0x14, 0x28, 0x28, 0x28, 0x14, 0x14, 0x14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) 0x14, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) 0x28, 0x28, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) 0x22, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) 0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) { /* Quality 13 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) 0x18, 0x18, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) 0x30, 0x30, 0x30, 0x72, 0x72, 0x72, 0x72, 0x72,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) 0x22, 0x6c, 0x6c, 0x90, 0x7e, 0x90, 0xff, 0x9c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) { /* Quality 14 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) 0x0a, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) 0x1c, 0x1c, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x1c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) 0x1c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) 0x38, 0x38, 0x38, 0x85, 0x85, 0x85, 0x85, 0x85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) 0x2a, 0x7e, 0x7e, 0xa8, 0x93, 0xa8, 0xff, 0xb6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) { /* Quality 15 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) 0x20, 0x20, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) 0x40, 0x40, 0x40, 0x98, 0x98, 0x98, 0x98, 0x98,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) 0x2a, 0x90, 0x90, 0xc0, 0xa8, 0xc0, 0xff, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) { /* Quality 16-31 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) static const struct cmd tp6810_cx_init_common[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) {0x1c, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) {TP6800_R10_SIF_TYPE, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) {0x4e, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) {0x4f, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) {TP6800_R50, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) {TP6800_R51, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) {0x00, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) {TP6800_R79_QUALITY, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) {TP6800_R2F_TIMING_CFG, 0x37},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) {TP6800_R30_SENSOR_CFG, 0x10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) {TP6800_R21_ENDP_1_CTL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) {TP6800_R52, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) {TP6800_R53, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) {TP6800_R54_DARK_CFG, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) {TP6800_R30_SENSOR_CFG, 0x18},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) {0x4b, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) {TP6800_R3F_FRAME_RATE, 0x83},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) {TP6800_R79_QUALITY, 0x05},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) {TP6800_R21_ENDP_1_CTL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) {0x7c, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) {0x25, 0x14},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) {0x26, 0x0f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) {0x7b, 0x10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) static const struct cmd tp6810_ov_init_common[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) {0x1c, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) {TP6800_R10_SIF_TYPE, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) {0x4e, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) {0x4f, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) {TP6800_R50, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) {TP6800_R51, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) {0x00, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) {TP6800_R52, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) {TP6800_R53, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) {TP6800_R54_DARK_CFG, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) {TP6800_R79_QUALITY, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) {TP6800_R2F_TIMING_CFG, 0x17},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) {TP6800_R30_SENSOR_CFG, 0x18},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) {TP6800_R21_ENDP_1_CTL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) {TP6800_R3F_FRAME_RATE, 0x86},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) {0x25, 0x18},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) {0x26, 0x0f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) {0x7b, 0x90},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) static const struct cmd tp6810_bridge_start[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) {0x59, 0x88},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) {0x5a, 0x0f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) {0x5b, 0x4e},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) {TP6800_R5C_EDGE_THRLD, 0x63},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) {TP6800_R5D_DEMOSAIC_CFG, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) {0x03, 0x7f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) {0x04, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) {0x06, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) {0x00, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) static const struct cmd tp6810_late_start[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) {0x7d, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) {0xb0, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) {0xb1, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) {0xb2, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) {0xb3, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) {0xb4, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) {0xb5, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) {0xb6, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) {0xb7, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) {0xb8, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) {0xb9, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) {0xba, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) {0xbb, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) {0xbc, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) {0xbd, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) {0xbe, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) {0xbf, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) {0xc0, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) {0xc1, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) {0xc2, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) {0xc3, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) {0xc4, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) {0xc5, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) {0xc6, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) {0xc7, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) {0xc8, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) {0xc9, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) {0xca, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) {0xcb, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) {0xcc, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863) {0xcd, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) {0xce, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) {0xcf, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) {0xd0, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) {0xd1, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) {0xd2, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) {0xd3, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) {0xd4, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) {0xd5, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) {0xd6, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873) {0xd7, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) {0xd8, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) {0xd9, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) {0xda, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) {0xdb, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) {0xdc, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) {0xdd, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) {0xde, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) {0xdf, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) {0xe0, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883) {0xe1, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) {0xe2, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) {0xe3, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) {0xe4, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) {0xe5, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) {0xe6, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) {0xe7, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) {0xe8, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) {0xe9, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) {0xea, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) {0xeb, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) {0xec, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) {0xed, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) {0xee, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) {0xef, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) {0x7d, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) /* later after isoc start */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) {0x7d, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) {0x7d, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905) static const struct cmd cx0342_timing_seq[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) {CX0342_CHANNEL_0_1_L_irst, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) {CX0342_CHANNEL_0_2_L_irst, 0x24},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) {CX0342_CHANNEL_0_2_H_irst, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) {CX0342_CHANNEL_0_3_L_irst, 0x2f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) {CX0342_CHANNEL_0_3_H_irst, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) {CX0342_CHANNEL_1_0_L_itx, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) {CX0342_CHANNEL_1_0_H_itx, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) {CX0342_CHANNEL_1_1_L_itx, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) {CX0342_CHANNEL_1_1_H_itx, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) {CX0342_CHANNEL_1_2_L_itx, 0xe4},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) {CX0342_CHANNEL_1_2_H_itx, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) {CX0342_CHANNEL_1_3_L_itx, 0xee},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) {CX0342_CHANNEL_1_3_H_itx, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) {CX0342_CHANNEL_2_0_L_iwl, 0x30},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) {CX0342_CHANNEL_2_0_H_iwl, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) {CX0342_CHANNEL_3_0_L_ensp, 0x34},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) {CX0342_CHANNEL_3_1_L_ensp, 0xe2},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923) {CX0342_CHANNEL_3_1_H_ensp, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) {CX0342_CHANNEL_3_2_L_ensp, 0xf6},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) {CX0342_CHANNEL_3_2_H_ensp, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) {CX0342_CHANNEL_3_3_L_ensp, 0xf4},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) {CX0342_CHANNEL_3_3_H_ensp, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) {CX0342_CHANNEL_4_0_L_sela, 0x26},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) {CX0342_CHANNEL_4_0_H_sela, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) {CX0342_CHANNEL_4_1_L_sela, 0xe2},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) {CX0342_CHANNEL_4_1_H_sela, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) {CX0342_CHANNEL_5_0_L_intla, 0x26},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933) {CX0342_CHANNEL_5_1_L_intla, 0x29},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) {CX0342_CHANNEL_5_2_L_intla, 0xf0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935) {CX0342_CHANNEL_5_2_H_intla, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) {CX0342_CHANNEL_5_3_L_intla, 0xf3},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) {CX0342_CHANNEL_5_3_H_intla, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) {CX0342_CHANNEL_6_0_L_xa_sel_pos, 0x24},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) {CX0342_CHANNEL_7_1_L_cds_pos, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) {CX0342_TIMING_EN, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) /* define the JPEG header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) static void jpeg_define(u8 *jpeg_hdr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) int height,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) int width)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948) memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) /* set the JPEG quality for sensor soi763a */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) static void jpeg_set_qual(u8 *jpeg_hdr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) int quality)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) int i, sc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) if (quality <= 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) sc = 5000;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) else if (quality < 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) sc = 5000 / quality;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) sc = 200 - quality * 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) for (i = 0; i < 64; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968) jpeg_hdr[JPEG_QT0_OFFSET + i] =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) (jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) jpeg_hdr[JPEG_QT1_OFFSET + i] =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) (jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) static void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) struct usb_device *dev = gspca_dev->dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) if (gspca_dev->usb_err < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) value, index, NULL, 0, 500);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) if (ret < 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) pr_err("reg_w err %d\n", ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) gspca_dev->usb_err = ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) /* the returned value is in gspca_dev->usb_buf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) static void reg_r(struct gspca_dev *gspca_dev, u8 index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) struct usb_device *dev = gspca_dev->dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) if (gspca_dev->usb_err < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) 0x0d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) 0, index, gspca_dev->usb_buf, 1, 500);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) if (ret < 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) pr_err("reg_r err %d\n", ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) gspca_dev->usb_err = ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) static void reg_w_buf(struct gspca_dev *gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) const struct cmd *p, int l)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) do {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) reg_w(gspca_dev, p->reg, p->val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) p++;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) } while (--l > 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) static int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) msleep(5);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) if (gspca_dev->usb_buf[0] == 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) return -1; /* error */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) static void i2c_w_buf(struct gspca_dev *gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) const struct cmd *p, int l)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) do {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) i2c_w(gspca_dev, p->reg, p->val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) p++;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) } while (--l > 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) static int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) int v;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) msleep(5);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) v = gspca_dev->usb_buf[0];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) return v;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) if (len > 1) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) v |= (gspca_dev->usb_buf[0] << 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) if (gspca_dev->usb_buf[0] == 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) return v;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) return -1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) static void bulk_w(struct gspca_dev *gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) u8 tag,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) const u8 *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) int length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) struct usb_device *dev = gspca_dev->dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) int count, actual_count, ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) if (gspca_dev->usb_err < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) for (;;) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) count = length > BULK_OUT_SIZE - 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) ? BULK_OUT_SIZE - 1 : length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) gspca_dev->usb_buf[0] = tag;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) memcpy(&gspca_dev->usb_buf[1], data, count);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) ret = usb_bulk_msg(dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) usb_sndbulkpipe(dev, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) gspca_dev->usb_buf, count + 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) &actual_count, 500);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) if (ret < 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) pr_err("bulk write error %d tag=%02x\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) ret, tag);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) gspca_dev->usb_err = ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) length -= count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) if (length <= 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) data += count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) static int probe_6810(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) u8 gpio;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) gpio = gspca_dev->usb_buf[0];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21); /* ov??? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) return SENSOR_SOI763A;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f); /* (unknown i2c) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) return -2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11); /* tas??? / hv??? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) ret = i2c_r(gspca_dev, 0x00, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) if (ret > 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) return -3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e); /* po??? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) ret = i2c_r(gspca_dev, 0x00, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) if (ret > 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) return -4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) ret = i2c_r(gspca_dev, 0x01, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) if (ret > 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) return -5;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d); /* mi/mt??? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) ret = i2c_r(gspca_dev, 0x00, 2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) if (ret > 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) return -6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c); /* mi/mt??? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) ret = i2c_r(gspca_dev, 0x36, 2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) if (ret > 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) return -7;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61); /* (unknown i2c) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) if (i2c_w(gspca_dev, 0xff, 0x00) >= 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) return -8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) ret = i2c_r(gspca_dev, 0x00, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) if (ret > 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) return SENSOR_CX0342;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) return -9;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) static void cx0342_6810_init(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) static const struct cmd reg_init_1[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) {TP6800_R2F_TIMING_CFG, 0x2f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) {0x25, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) {TP6800_R21_ENDP_1_CTL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) {TP6800_R3F_FRAME_RATE, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) {TP6800_R2F_TIMING_CFG, 0x2f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) {TP6800_R18_GPIO_DATA, 0xe1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) {TP6800_R18_GPIO_DATA, 0xc1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) {TP6800_R18_GPIO_DATA, 0xe1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) {TP6800_R11_SIF_CONTROL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) static const struct cmd reg_init_2[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) {TP6800_R78_FORMAT, 0x48},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) {TP6800_R11_SIF_CONTROL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) static const struct cmd sensor_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) {CX0342_OUTPUT_CTRL, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) {CX0342_BYPASS_MODE, 0x58},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) {CX0342_GPXLTHD_L, 0x28},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) {CX0342_RBPXLTHD_L, 0x28},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) {CX0342_PLANETHD_L, 0x50},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) {CX0342_PLANETHD_H, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) {CX0342_RB_GAP_L, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) {CX0342_RB_GAP_H, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) {CX0342_G_GAP_L, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) {CX0342_G_GAP_H, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) {CX0342_RST_OVERFLOW_L, 0x5c},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) {CX0342_RST_OVERFLOW_H, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) {CX0342_DATA_OVERFLOW_L, 0xfc},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) {CX0342_DATA_OVERFLOW_H, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) {CX0342_DATA_UNDERFLOW_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) {CX0342_DATA_UNDERFLOW_H, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) {CX0342_SYS_CTRL_0, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) {CX0342_GLOBAL_GAIN, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) {CX0342_CLOCK_GEN, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) {CX0342_SYS_CTRL_0, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) {CX0342_IDLE_CTRL, 0x05},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) {CX0342_ADCGN, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) {CX0342_ADC_CTL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) {CX0342_LVRST_BLBIAS, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) {CX0342_VTHSEL, 0x0b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) {CX0342_RAMP_RIV, 0x0b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) {CX0342_LDOSEL, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) {CX0342_SPV_VALUE_L, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) {CX0342_SPV_VALUE_H, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) {CX0342_AUTO_ADC_CALIB, 0x81},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) {CX0342_TIMING_EN, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) reg_w_buf(gspca_dev, tp6810_cx_init_common,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) ARRAY_SIZE(tp6810_cx_init_common));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 I2C addr */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) static void soi763a_6810_init(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) static const struct cmd reg_init_1[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) {TP6800_R2F_TIMING_CFG, 0x2f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) {TP6800_R18_GPIO_DATA, 0xe1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) {0x25, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) {TP6800_R21_ENDP_1_CTL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) {TP6800_R3F_FRAME_RATE, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) {TP6800_R2F_TIMING_CFG, 0x2f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) {TP6800_R18_GPIO_DATA, 0xc1},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) static const struct cmd reg_init_2[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) {TP6800_R78_FORMAT, 0x54},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) static const struct cmd sensor_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) {0x00, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) {0x01, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) {0x02, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) {0x03, 0x90},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) {0x04, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) {0x05, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) {0x06, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) {0x07, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) {0x08, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) {0x09, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) {0x0a, 0x76}, /* 7630 = soi673a */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) {0x0b, 0x30},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) {0x0c, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) {0x0d, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) {0x0e, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) {0x0f, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) {0x10, 0x41},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) {0x15, 0x14},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) {0x11, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) {0x12, 0x48},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) {0x13, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) {0x14, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) {0x16, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) {0x28, 0xb0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) {0x71, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) {0x75, 0x8e},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) {0x17, 0x1b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) {0x18, 0xbd},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) {0x19, 0x05},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) {0x1a, 0xf6},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) {0x1b, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) {0x1c, 0x7f}, /* omnivision */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) {0x1d, 0xa2},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) {0x1e, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) {0x1f, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) {0x20, 0x45},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) {0x21, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) {0x22, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) {0x23, 0xee},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) {0x24, 0x50},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) {0x25, 0x7a},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) {0x26, 0xa0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) {0x27, 0x9a},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) {0x29, 0x30},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) {0x2a, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) {0x2b, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) {0x2c, 0xac},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) {0x2d, 0x05},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) {0x2e, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) {0x2f, 0x3c},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) {0x30, 0x22},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) {0x31, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) {0x32, 0x86},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) {0x33, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) {0x34, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) {0x35, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) {0x36, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) {0x37, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) {0x38, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) {0x39, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) {0x3a, 0xfe},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) {0x3b, 0xfe},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) {0x3c, 0xfe},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) {0x3d, 0xfe},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) {0x3e, 0xfe},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) {0x3f, 0x71},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) {0x40, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) {0x41, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) {0x42, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) {0x43, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) {0x44, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) {0x45, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) {0x46, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) {0x47, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) {0x48, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) {0x49, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) {0x4a, 0xfe},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) {0x4b, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) {0x4c, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) {0x4d, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) {0x4e, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) {0x4f, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) {0x50, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) {0x51, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) {0x52, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) {0x53, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) {0x54, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) {0x55, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) {0x56, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) {0x57, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) {0x58, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) {0x59, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) {0x5a, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) {0x5b, 0xfe},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) {0x5c, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) {0x5d, 0x8f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) {0x5e, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) {0x5f, 0x8f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) {0x60, 0xa2},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) {0x61, 0x4a},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) {0x62, 0xf3},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) {0x63, 0x75},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) {0x64, 0xf0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) {0x65, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) {0x66, 0x55},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) {0x67, 0x92},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) {0x68, 0xa0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) {0x69, 0x4a},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) {0x6a, 0x22},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) {0x6b, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) {0x6c, 0x33},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) {0x6d, 0x44},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) {0x6e, 0x22},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) {0x6f, 0x84},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) {0x70, 0x0b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) {0x72, 0x10},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) {0x73, 0x50},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) {0x74, 0x21},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) {0x76, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) {0x77, 0xa5},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) {0x78, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) {0x79, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) {0x7a, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) {0x7b, 0xe2},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) {0x7c, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) {0x7d, 0xf7},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) {0x7e, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) {0x7f, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) reg_w_buf(gspca_dev, tp6810_ov_init_common,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) ARRAY_SIZE(tp6810_ov_init_common));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) msleep(10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) /* set the gain and exposure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 gain,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) s32 blue, s32 red)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) if (sd->sensor == SENSOR_CX0342) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) expo = (expo << 2) - 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) gain >> 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, gain);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) gain >> 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, gain);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) if (sd->sensor == SENSOR_CX0342) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) i2c_w(gspca_dev, CX0342_RAW_BGAIN_H,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) blue >> 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, blue);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) i2c_w(gspca_dev, CX0342_RAW_RGAIN_H,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) red >> 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, red);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) i2c_w(gspca_dev, CX0342_SYS_CTRL_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) sd->bridge == BRIDGE_TP6800 ? 0x80 : 0x81);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) /* soi763a */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) i2c_w(gspca_dev, 0x10, /* AEC_H (exposure time) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) expo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) /* i2c_w(gspca_dev, 0x76, 0x02); * AEC_L ([1:0] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) i2c_w(gspca_dev, 0x00, /* gain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) gain);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) /* set the JPEG quantization tables */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) static void set_dqt(struct gspca_dev *gspca_dev, u8 q)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) /* update the jpeg quantization tables */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) gspca_dbg(gspca_dev, D_STREAM, "q %d -> %d\n", sd->quality, q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) sd->quality = q;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) if (q > 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) q = 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448) if (sd->sensor == SENSOR_SOI763A)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) jpeg_set_qual(sd->jpeg_hdr, jpeg_q[q]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) memcpy(&sd->jpeg_hdr[JPEG_QT0_OFFSET - 1],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) DQT[q], sizeof DQT[0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) /* set the JPEG compression quality factor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) static void setquality(struct gspca_dev *gspca_dev, s32 q)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) if (q != 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) q = 15 - q;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) reg_w(gspca_dev, TP6800_R79_QUALITY, q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) /* auto quality */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) if (q == 15 && sd->bridge == BRIDGE_TP6810) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) msleep(4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) static const u8 color_null[18] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) static const u8 color_gain[NSENSORS][18] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) [SENSOR_CX0342] =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) {0x4c, 0x00, 0xa9, 0x00, 0x31, 0x00, /* Y R/G/B (LE values) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) 0xb6, 0x03, 0x6c, 0x03, 0xe0, 0x00, /* U R/G/B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) 0xdf, 0x00, 0x46, 0x03, 0xdc, 0x03}, /* V R/G/B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) [SENSOR_SOI763A] =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) {0x4c, 0x00, 0x95, 0x00, 0x1d, 0x00, /* Y R/G/B (LE values) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) 0xb6, 0x03, 0x6c, 0x03, 0xd7, 0x00, /* U R/G/B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) 0xd5, 0x00, 0x46, 0x03, 0xdc, 0x03}, /* V R/G/B */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) static void setgamma(struct gspca_dev *gspca_dev, s32 gamma)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) #define NGAMMA 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) static const u8 gamma_tb[NGAMMA][3][1024] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) { /* gamma 0 - from tp6800 + soi763a */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510) 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511) 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522) 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549) 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551) 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558) 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569) 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582) 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585) 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635) 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639) 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646) 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651) 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655) 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656) 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665) 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667) 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673) 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675) 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677) 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680) 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685) 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689) 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690) 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692) 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697) 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699) 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704) 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710) 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715) 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717) 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1750) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1751) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1752) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1753) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1754) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1755) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1756) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1757) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1758) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1759) 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1760) 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1761) 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1762) 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1763) 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1764) 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1765) 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1766) 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1767) 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1768) 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1769) 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1770) 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1771) 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1772) 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1773) 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1774) 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1775) 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1776) 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1777) 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1778) 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1779) 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1780) 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1781) 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1782) 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1783) 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1784) 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1785) 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1786) 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1787) 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1788) 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1789) 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1790) 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1791) 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1792) 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1793) 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1794) 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1795) 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1796) 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1797) 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1798) 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1799) 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1800) 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1801) 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1802) 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1803) 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1804) 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1805) 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1806) 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1807) 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1808) 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1809) 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1810) 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1811) 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1812) 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1813) 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1814) 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1815) 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1816) 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1817) 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1818) 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1819) 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1820) 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1821) 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1822) 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1823) 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1824) 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1825) 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1826) 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1827) 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1828) 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1829) 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1830) 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1831) 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1832) 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1833) 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1834) 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1835) 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1836) 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1837) 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1838) 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1839) 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1840) 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1841) 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1842) 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1843) 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1844) 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1845) 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1846) 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1847) 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1848) 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1849) 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1850) 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1851) 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1852) 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1853) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1854) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1855) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1856) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1857) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1858) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1859) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1860) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1861) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1862) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1863) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1864) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1865) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1866) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1867) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1868) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1869) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1870) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1871) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1872) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1873) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1874) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1875) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1876) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1877) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1878) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1879) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1880) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1881) { /* gamma 1 - from tp6810 + soi763a */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1882) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1883) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1884) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1885) 0x01, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1886) 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1887) 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1888) 0x1f, 0x20, 0x22, 0x22, 0x23, 0x25, 0x26, 0x27,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1889) 0x27, 0x28, 0x29, 0x2b, 0x2b, 0x2c, 0x2d, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1890) 0x2f, 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x35,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1891) 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1892) 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1893) 0x43, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 0x49,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1894) 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1895) 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1896) 0x54, 0x54, 0x55, 0x56, 0x56, 0x58, 0x58, 0x59,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1897) 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1898) 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1899) 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x65, 0x66,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1900) 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 0x69,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1901) 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1902) 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1903) 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1904) 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1905) 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1906) 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1907) 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1908) 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1909) 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1910) 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1911) 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1912) 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1913) 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1914) 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1915) 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1916) 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1917) 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1918) 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1919) 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1920) 0xa5, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1921) 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1922) 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1923) 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1924) 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1925) 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1926) 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1927) 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1928) 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1929) 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1930) 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1931) 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1932) 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1933) 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1934) 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1935) 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1936) 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1937) 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1938) 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1939) 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1940) 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1941) 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1942) 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1943) 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1944) 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1945) 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1946) 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1947) 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1948) 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1949) 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1950) 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1951) 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1952) 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1953) 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1954) 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1955) 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1956) 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1957) 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1958) 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1959) 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1960) 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1961) 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1962) 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1963) 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1964) 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1965) 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1966) 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1967) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1968) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1969) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1970) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1971) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1972) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1973) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1974) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1975) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1976) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1977) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1978) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1979) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1980) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1981) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1982) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1983) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1984) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1985) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1986) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1987) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1988) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1989) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1990) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1991) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1992) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1993) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1994) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1995) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1996) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1997) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1998) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1999) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2000) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2001) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2002) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2003) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2004) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2005) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2006) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2007) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2008) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2009) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2010) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2011) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2012) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2013) 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2014) 0x05, 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2015) 0x0e, 0x10, 0x10, 0x11, 0x12, 0x14, 0x15, 0x15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2016) 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2017) 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x25,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2018) 0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 0x2b, 0x2c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2019) 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2020) 0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2021) 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2022) 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x43,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2023) 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2024) 0x48, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2025) 0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2026) 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x55,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2027) 0x55, 0x56, 0x56, 0x56, 0x58, 0x58, 0x59, 0x59,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2028) 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2029) 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2030) 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x65,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2031) 0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2032) 0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2033) 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2034) 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2035) 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2036) 0x75, 0x75, 0x75, 0x77, 0x77, 0x77, 0x78, 0x78,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2037) 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2038) 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2039) 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2040) 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2041) 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2042) 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2043) 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2044) 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2045) 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2046) 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2047) 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2048) 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2049) 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2050) 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2051) 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2052) 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2053) 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2054) 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2055) 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2056) 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2057) 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2058) 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2059) 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2060) 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2061) 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2062) 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2063) 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2064) 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2065) 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2066) 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2067) 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2068) 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2069) 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2070) 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2071) 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2072) 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2073) 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2074) 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2075) 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2076) 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2077) 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2078) 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2079) 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2080) 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2081) 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2082) 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2083) 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2084) 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2085) 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2086) 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2087) 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2088) 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2089) 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2090) 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2091) 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2092) 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2093) 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2094) 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2095) 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2096) 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2097) 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2098) 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2099) 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2100) 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2101) 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2102) 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2103) 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2104) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2105) 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2106) 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2107) 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2108) 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2109) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2110) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2111) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2112) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2113) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2114) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2115) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2116) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2117) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2118) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2119) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2120) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2121) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2122) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2123) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2124) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2125) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2126) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2127) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2128) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2129) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2130) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2131) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2132) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2133) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2134) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2135) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2136) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2137) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2138) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2139) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2140) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2141) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2142) 0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 0x05, 0x07,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2143) 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2144) 0x10, 0x11, 0x12, 0x12, 0x14, 0x15, 0x16, 0x16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2145) 0x17, 0x18, 0x18, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2146) 0x1e, 0x1f, 0x1f, 0x20, 0x22, 0x22, 0x23, 0x23,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2147) 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x29, 0x29,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2148) 0x2b, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 0x30,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2149) 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 0x34, 0x35,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2150) 0x35, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39, 0x3a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2151) 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3d, 0x3d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2152) 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x42, 0x43,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2153) 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x47,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2154) 0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2155) 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2156) 0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x52, 0x53,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2157) 0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2158) 0x56, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2159) 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2160) 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2161) 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2162) 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2163) 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2164) 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2165) 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2166) 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2167) 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2168) 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x77, 0x77,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2169) 0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2170) 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2171) 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2172) 0x7d, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2173) 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2174) 0x82, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2175) 0x85, 0x86, 0x86, 0x86, 0x86, 0x88, 0x88, 0x88,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2176) 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2177) 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2178) 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2179) 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2180) 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2181) 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2182) 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 0x96,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2183) 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2184) 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2185) 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2186) 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2187) 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2188) 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2189) 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2190) 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2191) 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2192) 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2193) 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2194) 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2195) 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2196) 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2197) 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2198) 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2199) 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2200) 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2201) 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2202) 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2203) 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2204) 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2205) 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2206) 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2207) 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2208) 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2209) 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2210) 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2211) 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2212) 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2213) 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2214) 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2215) 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2216) 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2217) 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2218) 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2219) 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2220) 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2221) 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2222) 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2223) 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2224) 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2225) 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2226) 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2227) 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2228) 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2229) 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2230) 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2231) 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2232) 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2233) 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2234) 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2235) 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2236) 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2237) 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2238) 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2239) 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2240) 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2241) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2242) 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2243) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2244) 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2245) 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2246) 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2247) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2248) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2249) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2250) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2251) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2252) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2253) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2254) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2255) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2256) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2257) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2258) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2259) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2260) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2261) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2262) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2263) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2264) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2265) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2266) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2267) { /* gamma 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2268) {0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x0a, 0x0c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2269) 0x0d, 0x0e, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2270) 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2271) 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2272) 0x2d, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2273) 0x35, 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2274) 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2275) 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x49, 0x49,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2276) 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4f, 0x4f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2277) 0x50, 0x50, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2278) 0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 0x5a, 0x5a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2279) 0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2280) 0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2281) 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2282) 0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2283) 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2284) 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2285) 0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2286) 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2287) 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2288) 0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2289) 0x82, 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2290) 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x89, 0x89,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2291) 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2292) 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2293) 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2294) 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2295) 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2296) 0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2297) 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2298) 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2299) 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2300) 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2301) 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2302) 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2303) 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2304) 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2305) 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2306) 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2307) 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2308) 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2309) 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2310) 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2311) 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2312) 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2313) 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2314) 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2315) 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2316) 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2317) 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2318) 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2319) 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2320) 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2321) 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2322) 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2323) 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2324) 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2325) 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2326) 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2327) 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2328) 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2329) 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2330) 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2331) 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2332) 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2333) 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2334) 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2335) 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2336) 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2337) 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2338) 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2339) 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2340) 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2341) 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2342) 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2343) 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2344) 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2345) 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2346) 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2347) 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2348) 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2349) 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2350) 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2351) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2352) 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2353) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2354) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2355) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2356) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2357) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2358) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2359) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2360) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2361) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2362) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2363) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2364) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2365) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2366) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2367) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2368) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2369) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2370) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2371) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2372) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2373) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2374) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2375) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2376) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2377) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2378) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2379) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2380) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2381) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2382) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2383) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2384) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2385) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2386) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2387) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2388) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2389) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2390) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2391) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2392) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2393) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2394) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2395) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2396) {0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x05,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2397) 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2398) 0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x1a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2399) 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2400) 0x25, 0x26, 0x26, 0x27, 0x28, 0x29, 0x29, 0x2b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2401) 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x33,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2402) 0x33, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 0x39,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2403) 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3d, 0x3f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2404) 0x3f, 0x40, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2405) 0x45, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 0x4a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2406) 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2407) 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2408) 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x56, 0x58,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2409) 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2410) 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2411) 0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2412) 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2413) 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2414) 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2415) 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2416) 0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x73,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2417) 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 0x77,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2418) 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2419) 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2420) 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2421) 0x7f, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2422) 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x84, 0x84,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2423) 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2424) 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2425) 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2426) 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2427) 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x91,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2428) 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2429) 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2430) 0x94, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2431) 0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2432) 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2433) 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2434) 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2435) 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2436) 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2437) 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2438) 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2439) 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2440) 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2441) 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2442) 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2443) 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2444) 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2445) 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2446) 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2447) 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2448) 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2449) 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2450) 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2451) 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2452) 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2453) 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2454) 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2455) 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2456) 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2457) 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2458) 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2459) 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2460) 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2461) 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2462) 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2463) 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2464) 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2465) 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2466) 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2467) 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2468) 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2469) 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2470) 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2471) 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2472) 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2473) 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2474) 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2475) 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2476) 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2477) 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2478) 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2479) 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2480) 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2481) 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2482) 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2483) 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2484) 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2485) 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2486) 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2487) 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2488) 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2489) 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2490) 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2491) 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2492) 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2493) 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2494) 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2495) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2496) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2497) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2498) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2499) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2500) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2501) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2502) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2503) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2504) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2505) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2506) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2507) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2508) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2509) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2510) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2511) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2512) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2513) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2514) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2515) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2516) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2517) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2518) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2519) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2520) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2521) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2522) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2523) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2524) {0x00, 0x00, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2525) 0x09, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x12, 0x14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2526) 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2527) 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x26, 0x27,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2528) 0x28, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2d, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2529) 0x30, 0x31, 0x31, 0x33, 0x34, 0x35, 0x35, 0x37,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2530) 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2531) 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x43, 0x43,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2532) 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2533) 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2534) 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2535) 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2536) 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2537) 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2538) 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2539) 0x65, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2540) 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2541) 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2542) 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x73, 0x73,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2543) 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2544) 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2545) 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2546) 0x7c, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2547) 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2548) 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2549) 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2550) 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2551) 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2552) 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2553) 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2554) 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2555) 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2556) 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2557) 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2558) 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2559) 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2560) 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2561) 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2562) 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2563) 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2564) 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2565) 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2566) 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2567) 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2568) 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2569) 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2570) 0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb4, 0xb4, 0xb4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2571) 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2572) 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2573) 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2574) 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2575) 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2576) 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2577) 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2578) 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2579) 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2580) 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2581) 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2582) 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2583) 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2584) 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2585) 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2586) 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2587) 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2588) 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2589) 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2590) 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2591) 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2592) 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2593) 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2594) 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2595) 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2596) 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2597) 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2598) 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2599) 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2600) 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2601) 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2602) 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2603) 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2604) 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2605) 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2606) 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2607) 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2608) 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2609) 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2610) 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2611) 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2612) 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2613) 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2614) 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2615) 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2616) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2617) 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2618) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2619) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2620) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2621) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2622) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2623) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2624) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2625) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2626) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2627) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2628) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2629) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2630) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2631) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2632) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2633) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2634) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2635) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2636) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2637) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2638) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2639) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2640) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2641) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2642) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2643) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2644) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2645) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2646) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2647) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2648) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2649) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2650) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2651) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2652) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2653) { /* gamma 3 - from tp6810 + cx0342 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2654) {0x08, 0x09, 0x0c, 0x0d, 0x10, 0x11, 0x14, 0x15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2655) 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x23,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2656) 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2657) 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2658) 0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x42, 0x43,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2659) 0x44, 0x45, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2660) 0x4c, 0x4d, 0x4d, 0x4f, 0x50, 0x52, 0x53, 0x53,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2661) 0x54, 0x55, 0x56, 0x56, 0x58, 0x59, 0x5a, 0x5a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2662) 0x5b, 0x5c, 0x5c, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2663) 0x61, 0x62, 0x63, 0x63, 0x65, 0x66, 0x66, 0x67,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2664) 0x68, 0x68, 0x69, 0x69, 0x6a, 0x6c, 0x6c, 0x6d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2665) 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x73,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2666) 0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 0x78,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2667) 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2668) 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2669) 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2670) 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2671) 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2672) 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2673) 0x93, 0x93, 0x94, 0x94, 0x96, 0x96, 0x97, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2674) 0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2675) 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2676) 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2677) 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2678) 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2679) 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2680) 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2681) 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2682) 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2683) 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2684) 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2685) 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2686) 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2687) 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2688) 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2689) 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2690) 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2691) 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2692) 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2693) 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2694) 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2695) 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2696) 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2697) 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2698) 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2699) 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2700) 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2701) 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2702) 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2703) 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2704) 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2705) 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2706) 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2707) 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2708) 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2709) 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2710) 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2711) 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2712) 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2713) 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2714) 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2715) 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2716) 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2717) 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2718) 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2719) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2720) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2721) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2722) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2723) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2724) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2725) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2726) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2727) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2728) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2729) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2730) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2731) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2732) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2733) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2734) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2735) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2736) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2737) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2738) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2739) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2740) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2741) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2742) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2743) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2744) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2745) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2746) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2747) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2748) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2749) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2750) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2751) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2752) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2753) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2754) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2755) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2756) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2757) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2758) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2759) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2760) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2761) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2762) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2763) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2764) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2765) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2766) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2767) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2768) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2769) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2770) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2771) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2772) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2773) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2774) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2775) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2776) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2777) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2778) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2779) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2780) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2781) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2782) {0x03, 0x05, 0x07, 0x09, 0x0a, 0x0c, 0x0d, 0x10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2783) 0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x1a, 0x1b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2784) 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2785) 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2786) 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x37, 0x38,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2787) 0x38, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2788) 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2789) 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2790) 0x4c, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2791) 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x58,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2792) 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2793) 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2794) 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x66,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2795) 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2796) 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2797) 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2798) 0x71, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2799) 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2800) 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2801) 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2802) 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2803) 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2804) 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2805) 0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2806) 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2807) 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2808) 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2809) 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2810) 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2811) 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2812) 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2813) 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2814) 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2815) 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2816) 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2817) 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2818) 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2819) 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2820) 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2821) 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2822) 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2823) 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2824) 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2825) 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2826) 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2827) 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2828) 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2829) 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2830) 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2831) 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2832) 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2833) 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2834) 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2835) 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2836) 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2837) 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2838) 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2839) 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2840) 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2841) 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2842) 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2843) 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2844) 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2845) 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2846) 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2847) 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2848) 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2849) 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2850) 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2851) 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2852) 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2853) 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2854) 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2855) 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2856) 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2857) 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2858) 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2859) 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2860) 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2861) 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2862) 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2863) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2864) 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2865) 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2866) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2867) 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2868) 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2869) 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2870) 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2871) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2872) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2873) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2874) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2875) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2876) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2877) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2878) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2879) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2880) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2881) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2882) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2883) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2884) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2885) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2886) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2887) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2888) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2889) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2890) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2891) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2892) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2893) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2894) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2895) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2896) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2897) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2898) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2899) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2900) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2901) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2902) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2903) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2904) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2905) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2906) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2907) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2908) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2909) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2910) {0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2911) 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2912) 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2913) 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2914) 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 0x40,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2915) 0x42, 0x43, 0x44, 0x44, 0x45, 0x47, 0x48, 0x49,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2916) 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4f, 0x50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2917) 0x52, 0x52, 0x53, 0x54, 0x55, 0x55, 0x56, 0x58,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2918) 0x58, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2919) 0x5f, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2920) 0x65, 0x65, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2921) 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2922) 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x74,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2923) 0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 0x79,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2924) 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2925) 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2926) 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2927) 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2928) 0x8b, 0x8b, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2929) 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2930) 0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2931) 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2932) 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2933) 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2934) 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2935) 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2936) 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2937) 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2938) 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2939) 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2940) 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2941) 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2942) 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2943) 0xb9, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2944) 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2945) 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2946) 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2947) 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2948) 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2949) 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2950) 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2951) 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2952) 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2953) 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2954) 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2955) 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2956) 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2957) 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2958) 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2959) 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2960) 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2961) 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2962) 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2963) 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2964) 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2965) 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2966) 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2967) 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2968) 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2969) 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2970) 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2971) 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2972) 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2973) 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2974) 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2975) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2976) 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2977) 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2978) 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2979) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2980) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2981) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2982) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2983) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2984) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2985) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2986) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2987) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2988) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2989) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2990) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2991) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2992) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2993) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2994) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2995) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2996) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2997) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2998) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2999) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3000) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3001) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3002) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3003) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3004) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3005) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3006) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3007) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3008) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3009) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3010) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3011) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3012) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3013) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3014) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3015) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3016) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3017) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3018) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3019) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3020) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3021) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3022) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3023) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3024) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3025) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3026) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3027) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3028) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3029) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3030) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3031) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3032) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3033) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3034) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3035) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3036) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3037) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3038) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3039) { /* gamma 4 - from tp6800 + soi763a */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3040) {0x11, 0x14, 0x15, 0x17, 0x1a, 0x1b, 0x1e, 0x1f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3041) 0x22, 0x23, 0x25, 0x27, 0x28, 0x2b, 0x2c, 0x2d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3042) 0x2f, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3043) 0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3044) 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3045) 0x50, 0x52, 0x53, 0x53, 0x54, 0x55, 0x56, 0x58,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3046) 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5f, 0x60,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3047) 0x61, 0x61, 0x62, 0x63, 0x65, 0x65, 0x66, 0x67,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3048) 0x68, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3049) 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x73, 0x74, 0x74,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3050) 0x75, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3051) 0x7b, 0x7c, 0x7c, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3052) 0x81, 0x81, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3053) 0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3054) 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x91,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3055) 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x96,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3056) 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3057) 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3058) 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3059) 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3060) 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa9, 0xa9, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3061) 0xab, 0xab, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3062) 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3063) 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3064) 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3065) 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3066) 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3067) 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3068) 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3069) 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3070) 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3071) 0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3072) 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3073) 0xd0, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3074) 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3075) 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3076) 0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3077) 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3078) 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3079) 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3080) 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3081) 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3082) 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3083) 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3084) 0xec, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3085) 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3086) 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3087) 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3088) 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3089) 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3090) 0xf9, 0xf9, 0xfa, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3091) 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3092) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3093) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3094) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3095) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3096) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3097) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3098) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3099) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3100) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3101) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3102) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3103) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3104) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3105) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3106) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3107) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3108) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3109) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3110) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3111) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3112) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3113) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3114) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3115) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3116) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3117) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3118) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3119) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3120) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3121) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3122) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3123) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3124) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3125) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3126) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3127) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3128) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3129) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3130) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3131) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3132) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3133) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3134) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3135) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3136) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3137) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3138) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3139) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3140) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3141) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3142) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3143) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3144) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3145) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3146) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3147) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3148) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3149) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3150) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3151) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3152) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3153) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3154) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3155) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3156) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3157) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3158) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3159) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3160) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3161) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3162) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3163) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3164) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3165) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3166) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3167) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3168) {0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x14, 0x15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3169) 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3170) 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3171) 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 0x35,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3172) 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3173) 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3174) 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 0x4c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3175) 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 0x53, 0x54,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3176) 0x54, 0x55, 0x55, 0x56, 0x58, 0x58, 0x59, 0x5a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3177) 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3178) 0x60, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x65,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3179) 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3180) 0x69, 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3181) 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3182) 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3183) 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3184) 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3185) 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3186) 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3187) 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3188) 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3189) 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3190) 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3191) 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3192) 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3193) 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3194) 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3195) 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3196) 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3197) 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3198) 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3199) 0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3200) 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3201) 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3202) 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3203) 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3204) 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3205) 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3206) 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3207) 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3208) 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3209) 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3210) 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3211) 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3212) 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3213) 0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3214) 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3215) 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3216) 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3217) 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3218) 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3219) 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3220) 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3221) 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3222) 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3223) 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3224) 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3225) 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3226) 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3227) 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3228) 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3229) 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3230) 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3231) 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3232) 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3233) 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3234) 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3235) 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3236) 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3237) 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3238) 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3239) 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3240) 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3241) 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3242) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3243) 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3244) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3245) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3246) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3247) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3248) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3249) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3250) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3251) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3252) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3253) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3254) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3255) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3256) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3257) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3258) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3259) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3260) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3261) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3262) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3263) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3264) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3265) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3266) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3267) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3268) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3269) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3270) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3271) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3272) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3273) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3274) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3275) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3276) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3277) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3278) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3279) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3280) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3281) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3282) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3283) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3284) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3285) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3286) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3287) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3288) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3289) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3290) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3291) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3292) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3293) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3294) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3295) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3296) {0x0d, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x1b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3297) 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x26, 0x27, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3298) 0x29, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3299) 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3300) 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3301) 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4f, 0x50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3302) 0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x56, 0x58,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3303) 0x59, 0x5a, 0x5a, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3304) 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x65, 0x65,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3305) 0x66, 0x67, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3306) 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3307) 0x71, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x77,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3308) 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3309) 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3310) 0x81, 0x81, 0x82, 0x82, 0x84, 0x84, 0x85, 0x85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3311) 0x86, 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3312) 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3313) 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3314) 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3315) 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3316) 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3317) 0x9d, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3318) 0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3319) 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3320) 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3321) 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3322) 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3323) 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3324) 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3325) 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3326) 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3327) 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3328) 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3329) 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3330) 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3331) 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3332) 0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3333) 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3334) 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3335) 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3336) 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3337) 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3338) 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3339) 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3340) 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3341) 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3342) 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3343) 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3344) 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3345) 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3346) 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3347) 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3348) 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3349) 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3350) 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3351) 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3352) 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3353) 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3354) 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3355) 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3356) 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3357) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3358) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3359) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3360) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3361) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3362) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3363) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3364) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3365) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3366) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3367) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3368) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3369) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3370) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3371) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3372) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3373) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3374) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3375) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3376) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3377) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3378) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3379) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3380) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3381) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3382) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3383) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3384) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3385) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3386) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3387) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3388) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3389) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3390) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3391) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3392) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3393) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3394) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3395) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3396) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3397) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3398) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3399) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3400) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3401) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3402) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3403) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3404) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3405) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3406) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3407) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3408) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3409) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3410) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3411) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3412) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3413) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3414) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3415) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3416) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3417) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3418) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3419) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3420) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3421) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3422) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3423) 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3424) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3425) { /* gamma 5 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3426) {0x16, 0x18, 0x19, 0x1b, 0x1d, 0x1e, 0x20, 0x21,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3427) 0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3428) 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3429) 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3430) 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3431) 0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3432) 0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3433) 0x56, 0x56, 0x57, 0x58, 0x59, 0x59, 0x5a, 0x5b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3434) 0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3435) 0x62, 0x62, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3436) 0x67, 0x68, 0x68, 0x69, 0x6a, 0x6a, 0x6b, 0x6b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3437) 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3438) 0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3439) 0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3440) 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3441) 0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x82,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3442) 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3443) 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3444) 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3445) 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3446) 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3447) 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3448) 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3449) 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3450) 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3451) 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3452) 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3453) 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3454) 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3455) 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3456) 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3457) 0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3458) 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3459) 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3460) 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3461) 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3462) 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3463) 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3464) 0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3465) 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3466) 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3467) 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3468) 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3469) 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3470) 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3471) 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3472) 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3473) 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3474) 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3475) 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3476) 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3477) 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3478) 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3479) 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3480) 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3481) 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3482) 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3483) 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3484) 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3485) 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3486) 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3487) 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3488) 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3489) 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3490) 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3491) 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3492) 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3493) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3494) 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3495) 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3496) 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3497) 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3498) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3499) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3500) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3501) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3502) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3503) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3504) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3505) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3506) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3507) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3508) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3509) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3510) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3511) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3512) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3513) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3514) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3515) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3516) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3517) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3518) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3519) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3520) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3521) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3522) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3523) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3524) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3525) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3526) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3527) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3528) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3529) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3530) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3531) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3532) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3533) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3534) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3535) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3536) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3537) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3538) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3539) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3540) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3541) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3542) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3543) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3544) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3545) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3546) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3547) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3548) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3549) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3550) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3551) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3552) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3553) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3554) {0x0f, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3555) 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3556) 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3557) 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x31, 0x32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3558) 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, 0x39,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3559) 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, 0x3f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3560) 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x44, 0x45,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3561) 0x46, 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3562) 0x4b, 0x4c, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3563) 0x50, 0x51, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3564) 0x55, 0x55, 0x56, 0x56, 0x57, 0x58, 0x58, 0x59,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3565) 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3566) 0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3567) 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3568) 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3569) 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3570) 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3571) 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3572) 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3573) 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3574) 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3575) 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3576) 0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3577) 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3578) 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3579) 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3580) 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3581) 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3582) 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3583) 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3584) 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3585) 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3586) 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3587) 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3588) 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3589) 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3590) 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3591) 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3592) 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3593) 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3594) 0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3595) 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3596) 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3597) 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3598) 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3599) 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3600) 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3601) 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3602) 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3603) 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3604) 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3605) 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3606) 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3607) 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3608) 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3609) 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3610) 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3611) 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3612) 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3613) 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3614) 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3615) 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3616) 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3617) 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3618) 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3619) 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3620) 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3621) 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3622) 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3623) 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3624) 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3625) 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3626) 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3627) 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3628) 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3629) 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3630) 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3631) 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3632) 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3633) 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3634) 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3635) 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3636) 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3637) 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3638) 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3639) 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3640) 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3641) 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3642) 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3643) 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3644) 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3645) 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3646) 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3647) 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3648) 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3649) 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3650) 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3651) 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3652) 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3653) 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3654) 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3655) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3656) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3657) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3658) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3659) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3660) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3661) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3662) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3663) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3664) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3665) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3666) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3667) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3668) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3669) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3670) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3671) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3672) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3673) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3674) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3675) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3676) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3677) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3678) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3679) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3680) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3681) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3682) {0x13, 0x15, 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3683) 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3684) 0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3685) 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3686) 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3687) 0x42, 0x43, 0x44, 0x44, 0x45, 0x46, 0x47, 0x48,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3688) 0x49, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3689) 0x4f, 0x50, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3690) 0x55, 0x55, 0x56, 0x57, 0x57, 0x58, 0x59, 0x59,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3691) 0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5d, 0x5e, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3692) 0x5f, 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3693) 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3694) 0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3695) 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3696) 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3697) 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3698) 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3699) 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3700) 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3701) 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3702) 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3703) 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3704) 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3705) 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3706) 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3707) 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3708) 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3709) 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3710) 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3711) 0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3712) 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3713) 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3714) 0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3715) 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3716) 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3717) 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3718) 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3719) 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3720) 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3721) 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3722) 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3723) 0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3724) 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3725) 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3726) 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3727) 0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3728) 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3729) 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3730) 0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3731) 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3732) 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3733) 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3734) 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3735) 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3736) 0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3737) 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3738) 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3739) 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3740) 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3741) 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3742) 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3743) 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3744) 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3745) 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3746) 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3747) 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3748) 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3749) 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3750) 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3751) 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3752) 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3753) 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3754) 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3755) 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3756) 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3757) 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3758) 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3759) 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3760) 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3761) 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3762) 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3763) 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3764) 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3765) 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3766) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3767) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3768) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3769) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3770) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3771) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3772) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3773) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3774) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3775) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3776) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3777) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3778) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3779) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3780) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3781) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3782) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3783) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3784) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3785) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3786) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3787) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3788) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3789) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3790) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3791) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3792) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3793) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3794) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3795) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3796) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3797) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3798) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3799) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3800) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3801) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3802) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3803) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3804) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3805) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3806) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3807) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3808) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3809) 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3810) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3811) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3812)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3813) reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3814) if (sd->bridge == BRIDGE_TP6810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3815) reg_w(gspca_dev, 0x02, 0x28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3816) /* msleep(50); */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3817) bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3818) bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3819) bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3820) if (sd->bridge == BRIDGE_TP6810) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3821) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3822)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3823) reg_w(gspca_dev, 0x02, 0x2b);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3824) reg_w(gspca_dev, 0x02, 0x28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3825) for (i = 0; i < 6; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3826) reg_w(gspca_dev, TP6800_R55_GAMMA_R,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3827) gamma_tb[gamma][0][i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3828) reg_w(gspca_dev, 0x02, 0x2b);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3829) reg_w(gspca_dev, 0x02, 0x28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3830) for (i = 0; i < 6; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3831) reg_w(gspca_dev, TP6800_R56_GAMMA_G,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3832) gamma_tb[gamma][1][i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3833) reg_w(gspca_dev, 0x02, 0x2b);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3834) reg_w(gspca_dev, 0x02, 0x28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3835) for (i = 0; i < 6; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3836) reg_w(gspca_dev, TP6800_R57_GAMMA_B,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3837) gamma_tb[gamma][2][i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3838) reg_w(gspca_dev, 0x02, 0x28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3839) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3840) reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3841) /* msleep(50); */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3842) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3843)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3844) static void setsharpness(struct gspca_dev *gspca_dev, s32 val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3845) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3846) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3847)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3848) if (sd->bridge == BRIDGE_TP6800) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3849) val |= 0x08; /* grid compensation enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3850) if (gspca_dev->pixfmt.width == 640)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3851) reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3852) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3853) val |= 0x04; /* scaling down enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3854) reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3855) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3856) val = (val << 5) | 0x08;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3857) reg_w(gspca_dev, 0x59, val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3858) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3859) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3860)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3861) static void setautogain(struct gspca_dev *gspca_dev, s32 val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3862) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3863) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3864)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3865) sd->ag_cnt = val ? AG_CNT_START : -1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3866) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3867)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3868) /* set the resolution for sensor cx0342 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3869) static void set_resolution(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3870) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3871) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3872)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3873) reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3874) if (gspca_dev->pixfmt.width == 320) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3875) reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3876) msleep(100);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3877) i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3878) msleep(100);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3879) reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3880) reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3881) reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3882) i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3883) i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3884) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3885) reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3886) msleep(100);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3887) i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3888) msleep(100);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3889) reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3890) reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3891) reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3892) i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3893) i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3894) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3895) i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3896) bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3897) ARRAY_SIZE(color_gain[0]));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3898) setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3899) if (sd->sensor == SENSOR_SOI763A)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3900) setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3901) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3902)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3903) /* convert the frame rate to a tp68x0 value */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3904) static int get_fr_idx(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3905) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3906) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3907) int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3908)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3909) if (sd->bridge == BRIDGE_TP6800) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3910) for (i = 0; i < ARRAY_SIZE(rates) - 1; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3911) if (sd->framerate >= rates[i])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3912) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3913) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3914) i = 6 - i; /* 1 = 5fps .. 6 = 30fps */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3915)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3916) /* 640x480 * 30 fps does not work */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3917) if (i == 6 /* if 30 fps */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3918) && gspca_dev->pixfmt.width == 640)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3919) i = 0x05; /* 15 fps */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3920) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3921) for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3922) if (sd->framerate >= rates_6810[i])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3923) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3924) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3925) i = 7 - i; /* 3 = 5fps .. 7 = 30fps */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3926)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3927) /* 640x480 * 30 fps does not work */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3928) if (i == 7 /* if 30 fps */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3929) && gspca_dev->pixfmt.width == 640)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3930) i = 6; /* 15 fps */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3931) i |= 0x80; /* clock * 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3932) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3933) return i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3934) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3935)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3936) static void setframerate(struct gspca_dev *gspca_dev, s32 val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3937) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3938) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3939) u8 fr_idx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3940)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3941) fr_idx = get_fr_idx(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3942)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3943) if (sd->bridge == BRIDGE_TP6810) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3944) reg_r(gspca_dev, 0x7b);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3945) reg_w(gspca_dev, 0x7b,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3946) sd->sensor == SENSOR_CX0342 ? 0x10 : 0x90);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3947) if (val >= 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3948) fr_idx = 0xf0; /* lower frame rate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3949) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3950)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3951) reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3952)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3953) if (sd->sensor == SENSOR_CX0342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3954) i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3955) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3956)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3957) static void setrgain(struct gspca_dev *gspca_dev, s32 rgain)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3958) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3959) i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3960) i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3961) i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3962) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3963)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3964) static int sd_setgain(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3965) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3966) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3967) s32 val = gspca_dev->gain->val;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3968)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3969) if (sd->sensor == SENSOR_CX0342) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3970) s32 old = gspca_dev->gain->cur.val ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3971) gspca_dev->gain->cur.val : 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3972)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3973) sd->blue->val = sd->blue->val * val / old;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3974) if (sd->blue->val > 4095)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3975) sd->blue->val = 4095;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3976) sd->red->val = sd->red->val * val / old;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3977) if (sd->red->val > 4095)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3978) sd->red->val = 4095;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3979) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3980) if (gspca_dev->streaming) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3981) if (sd->sensor == SENSOR_CX0342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3982) setexposure(gspca_dev, gspca_dev->exposure->val,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3983) gspca_dev->gain->val,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3984) sd->blue->val, sd->red->val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3985) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3986) setexposure(gspca_dev, gspca_dev->exposure->val,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3987) gspca_dev->gain->val, 0, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3988) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3989) return gspca_dev->usb_err;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3990) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3991)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3992) static void setbgain(struct gspca_dev *gspca_dev, s32 bgain)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3993) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3994) i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3995) i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3996) i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3997) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3998)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3999) /* this function is called at probe time */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4000) static int sd_config(struct gspca_dev *gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4001) const struct usb_device_id *id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4002) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4003) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4004)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4005) sd->bridge = id->driver_info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4006)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4007) gspca_dev->cam.cam_mode = vga_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4008) gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4009) gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4010) framerates : framerates_6810;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4011)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4012) sd->framerate = DEFAULT_FRAME_RATE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4013) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4014) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4015)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4016) /* this function is called at probe and resume time */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4017) static int sd_init(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4018) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4019) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4020) static const struct cmd tp6800_preinit[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4021) {TP6800_R10_SIF_TYPE, 0x01}, /* sif */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4022) {TP6800_R11_SIF_CONTROL, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4023) {TP6800_R15_GPIO_PU, 0x9f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4024) {TP6800_R16_GPIO_PD, 0x9f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4025) {TP6800_R17_GPIO_IO, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4026) {TP6800_R18_GPIO_DATA, 0x40}, /* LED off */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4027) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4028) static const struct cmd tp6810_preinit[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4029) {TP6800_R2F_TIMING_CFG, 0x2f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4030) {TP6800_R15_GPIO_PU, 0x6f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4031) {TP6800_R16_GPIO_PD, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4032) {TP6800_R17_GPIO_IO, 0x9f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4033) {TP6800_R18_GPIO_DATA, 0xc1}, /* LED off */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4034) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4035)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4036) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4037) reg_w_buf(gspca_dev, tp6800_preinit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4038) ARRAY_SIZE(tp6800_preinit));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4039) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4040) reg_w_buf(gspca_dev, tp6810_preinit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4041) ARRAY_SIZE(tp6810_preinit));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4042) msleep(15);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4043) reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4044) gspca_dbg(gspca_dev, D_PROBE, "gpio: %02x\n", gspca_dev->usb_buf[0]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4045) /* values:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4046) * 0x80: snapshot button
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4047) * 0x40: LED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4048) * 0x20: (bridge / sensor) reset for tp6810 ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4049) * 0x07: sensor type ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4050) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4051)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4052) /* guess the sensor type */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4053) if (force_sensor >= 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4054) sd->sensor = force_sensor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4055) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4056) if (sd->bridge == BRIDGE_TP6800) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4057) /*fixme: not sure this is working*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4058) switch (gspca_dev->usb_buf[0] & 0x07) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4059) case 0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4060) sd->sensor = SENSOR_SOI763A;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4061) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4062) case 1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4063) sd->sensor = SENSOR_CX0342;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4064) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4065) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4066) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4067) int sensor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4068)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4069) sensor = probe_6810(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4070) if (sensor < 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4071) pr_warn("Unknown sensor %d - forced to soi763a\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4072) -sensor);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4073) sensor = SENSOR_SOI763A;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4074) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4075) sd->sensor = sensor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4076) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4077) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4078) if (sd->sensor == SENSOR_SOI763A) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4079) pr_info("Sensor soi763a\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4080) if (sd->bridge == BRIDGE_TP6810) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4081) soi763a_6810_init(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4082) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4083) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4084) pr_info("Sensor cx0342\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4085) if (sd->bridge == BRIDGE_TP6810) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4086) cx0342_6810_init(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4087) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4088) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4089)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4090) set_dqt(gspca_dev, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4091) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4092) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4093)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4094) /* This function is called before choosing the alt setting */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4095) static int sd_isoc_init(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4096) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4097) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4098) static const struct cmd cx_sensor_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4099) {CX0342_AUTO_ADC_CALIB, 0x81},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4100) {CX0342_EXPO_LINE_L, 0x37},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4101) {CX0342_EXPO_LINE_H, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4102) {CX0342_RAW_GRGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4103) {CX0342_RAW_GBGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4104) {CX0342_RAW_RGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4105) {CX0342_RAW_BGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4106) {CX0342_SYS_CTRL_0, 0x81},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4107) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4108) static const struct cmd cx_bridge_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4109) {0x4d, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4110) {0x4c, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4111) {0x4e, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4112) {0x4f, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4113) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4114) static const struct cmd ov_sensor_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4115) {0x10, 0x75}, /* exposure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4116) {0x76, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4117) {0x00, 0x00}, /* gain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4118) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4119) static const struct cmd ov_bridge_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4120) {0x7b, 0x90},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4121) {TP6800_R3F_FRAME_RATE, 0x87},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4122) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4124) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4125) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4126) if (sd->sensor == SENSOR_CX0342) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4127) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4128) reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4129) i2c_w_buf(gspca_dev, cx_sensor_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4130) ARRAY_SIZE(cx_sensor_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4131) reg_w_buf(gspca_dev, cx_bridge_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4132) ARRAY_SIZE(cx_bridge_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4133) bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4134) reg_w(gspca_dev, 0x59, 0x40);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4135) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4136) reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4137) i2c_w_buf(gspca_dev, ov_sensor_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4138) ARRAY_SIZE(ov_sensor_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4139) reg_r(gspca_dev, 0x7b);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4140) reg_w_buf(gspca_dev, ov_bridge_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4141) ARRAY_SIZE(ov_bridge_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4142) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4143) reg_w(gspca_dev, TP6800_R78_FORMAT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4144) gspca_dev->curr_mode ? 0x00 : 0x01);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4145) return gspca_dev->usb_err;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4146) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4147)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4148) static void set_led(struct gspca_dev *gspca_dev, int on)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4149) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4150) u8 data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4151)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4152) reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4153) data = gspca_dev->usb_buf[0];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4154) if (on)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4155) data &= ~0x40;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4156) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4157) data |= 0x40;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4158) reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4159) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4161) static void cx0342_6800_start(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4162) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4163) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4164) static const struct cmd reg_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4165) /* fixme: is this useful? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4166) {TP6800_R17_GPIO_IO, 0x9f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4167) {TP6800_R16_GPIO_PD, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4168) {TP6800_R10_SIF_TYPE, 0x00}, /* i2c 8 bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4169) {TP6800_R50, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4170) {TP6800_R51, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4171) {TP6800_R52, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4172) {TP6800_R53, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4173) {TP6800_R54_DARK_CFG, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4174) {TP6800_R5C_EDGE_THRLD, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4175) {TP6800_R7A_BLK_THRLD, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4176) {TP6800_R2F_TIMING_CFG, 0x17},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4177) {TP6800_R30_SENSOR_CFG, 0x18}, /* G1B..RG0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4178) {TP6800_R37_FRONT_DARK_ST, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4179) {TP6800_R38_FRONT_DARK_END, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4180) {TP6800_R39_REAR_DARK_ST_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4181) {TP6800_R3A_REAR_DARK_ST_H, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4182) {TP6800_R3B_REAR_DARK_END_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4183) {TP6800_R3C_REAR_DARK_END_H, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4184) {TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4185) {TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4186) {TP6800_R21_ENDP_1_CTL, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4188) {TP6800_R31_PIXEL_START, 0x0b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4189) {TP6800_R32_PIXEL_END_L, 0x8a},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4190) {TP6800_R33_PIXEL_END_H, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4191) {TP6800_R34_LINE_START, 0x0e},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4192) {TP6800_R35_LINE_END_L, 0xf4},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4193) {TP6800_R36_LINE_END_H, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4194) {TP6800_R78_FORMAT, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4195) {TP6800_R12_SIF_ADDR_S, 0x20}, /* cx0342 i2c addr */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4196) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4197) static const struct cmd sensor_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4198) {CX0342_OUTPUT_CTRL, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4199) {CX0342_BYPASS_MODE, 0x58},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4200) {CX0342_GPXLTHD_L, 0x16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4201) {CX0342_RBPXLTHD_L, 0x16},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4202) {CX0342_PLANETHD_L, 0xc0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4203) {CX0342_PLANETHD_H, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4204) {CX0342_RB_GAP_L, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4205) {CX0342_RB_GAP_H, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4206) {CX0342_G_GAP_L, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4207) {CX0342_G_GAP_H, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4208) {CX0342_RST_OVERFLOW_L, 0x5c},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4209) {CX0342_RST_OVERFLOW_H, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4210) {CX0342_DATA_OVERFLOW_L, 0xfc},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4211) {CX0342_DATA_OVERFLOW_H, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4212) {CX0342_DATA_UNDERFLOW_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4213) {CX0342_DATA_UNDERFLOW_H, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4214) {CX0342_SYS_CTRL_0, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4215) {CX0342_GLOBAL_GAIN, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4216) {CX0342_CLOCK_GEN, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4217) {CX0342_SYS_CTRL_0, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4218) {CX0342_IDLE_CTRL, 0x05},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4219) {CX0342_ADCGN, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4220) {CX0342_ADC_CTL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4221) {CX0342_LVRST_BLBIAS, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4222) {CX0342_VTHSEL, 0x0b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4223) {CX0342_RAMP_RIV, 0x0b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4224) {CX0342_LDOSEL, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4225) {CX0342_SPV_VALUE_L, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4226) {CX0342_SPV_VALUE_H, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4227) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4228)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4229) reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4230) i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4231) i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4232) reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4233) reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4234) i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4235) i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4236) if (sd->sensor == SENSOR_CX0342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4237) setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4238) v4l2_ctrl_g_ctrl(gspca_dev->gain),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4239) v4l2_ctrl_g_ctrl(sd->blue),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4240) v4l2_ctrl_g_ctrl(sd->red));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4241) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4242) setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4243) v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4244) set_led(gspca_dev, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4245) set_resolution(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4246) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4247)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4248) static void cx0342_6810_start(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4249) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4250) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4251) static const struct cmd sensor_init_2[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4252) {CX0342_EXPO_LINE_L, 0x6f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4253) {CX0342_EXPO_LINE_H, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4254) {CX0342_RAW_GRGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4255) {CX0342_RAW_GBGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4256) {CX0342_RAW_RGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4257) {CX0342_RAW_BGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4258) {CX0342_SYS_CTRL_0, 0x81},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4259) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4260) static const struct cmd bridge_init_2[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4261) {0x4d, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4262) {0x4c, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4263) {0x4e, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4264) {0x4f, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4265) {TP6800_R7A_BLK_THRLD, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4266) {TP6800_R79_QUALITY, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4267) {TP6800_R79_QUALITY, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4268) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4269) static const struct cmd bridge_init_3[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4270) {TP6800_R31_PIXEL_START, 0x08},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4271) {TP6800_R32_PIXEL_END_L, 0x87},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4272) {TP6800_R33_PIXEL_END_H, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4273) {TP6800_R34_LINE_START, 0x0e},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4274) {TP6800_R35_LINE_END_L, 0xf4},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4275) {TP6800_R36_LINE_END_H, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4276) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4277) static const struct cmd sensor_init_3[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4278) {CX0342_AUTO_ADC_CALIB, 0x81},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4279) {CX0342_EXPO_LINE_L, 0x6f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4280) {CX0342_EXPO_LINE_H, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4281) {CX0342_RAW_GRGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4282) {CX0342_RAW_GBGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4283) {CX0342_RAW_RGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4284) {CX0342_RAW_BGAIN_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4285) {CX0342_SYS_CTRL_0, 0x81},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4286) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4287) static const struct cmd bridge_init_5[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4288) {0x4d, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4289) {0x4c, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4290) {0x4e, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4291) {0x4f, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4292) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4293) static const struct cmd sensor_init_4[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4294) {CX0342_EXPO_LINE_L, 0xd3},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4295) {CX0342_EXPO_LINE_H, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4296) /*fixme: gains, but 00..80 only*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4297) {CX0342_RAW_GRGAIN_L, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4298) {CX0342_RAW_GBGAIN_L, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4299) {CX0342_RAW_RGAIN_L, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4300) {CX0342_RAW_BGAIN_L, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4301) {CX0342_SYS_CTRL_0, 0x81},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4302) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4303) static const struct cmd sensor_init_5[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4304) {CX0342_IDLE_CTRL, 0x05},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4305) {CX0342_ADCGN, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4306) {CX0342_ADC_CTL, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4307) {CX0342_LVRST_BLBIAS, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4308) {CX0342_VTHSEL, 0x0b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4309) {CX0342_RAMP_RIV, 0x0b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4310) {CX0342_LDOSEL, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4311) {CX0342_SPV_VALUE_L, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4312) {CX0342_SPV_VALUE_H, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4313) {CX0342_AUTO_ADC_CALIB, 0x81},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4314) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4315)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4316) reg_w(gspca_dev, 0x22, gspca_dev->alt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4317) i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4318) reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4319) reg_w_buf(gspca_dev, tp6810_cx_init_common,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4320) ARRAY_SIZE(tp6810_cx_init_common));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4321) reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4322) if (gspca_dev->curr_mode) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4323) reg_w(gspca_dev, 0x4a, 0x7f);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4324) reg_w(gspca_dev, 0x07, 0x05);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4325) reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4326) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4327) reg_w(gspca_dev, 0x4a, 0xff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4328) reg_w(gspca_dev, 0x07, 0x85);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4329) reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4330) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4331) setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4332) reg_w_buf(gspca_dev, tp6810_bridge_start,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4333) ARRAY_SIZE(tp6810_bridge_start));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4334) setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4335) bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4336) ARRAY_SIZE(color_gain[0]));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4337) reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4338) i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4339) reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4340) i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4341) reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4342) i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4343)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4344) set_led(gspca_dev, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4345) /* setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4346) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4347)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4348) static void soi763a_6800_start(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4349) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4350) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4351) static const struct cmd reg_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4352) {TP6800_R79_QUALITY, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4353) {TP6800_R79_QUALITY, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4354) {TP6800_R10_SIF_TYPE, 0x00}, /* i2c 8 bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4355)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4356) {TP6800_R50, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4357) {TP6800_R51, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4358) {TP6800_R52, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4359) {TP6800_R53, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4360) {TP6800_R54_DARK_CFG, 0x07},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4361) {TP6800_R5C_EDGE_THRLD, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4362)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4363) {TP6800_R79_QUALITY, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4364) {TP6800_R7A_BLK_THRLD, 0x40},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4365)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4366) {TP6800_R2F_TIMING_CFG, 0x46},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4367) {TP6800_R30_SENSOR_CFG, 0x10}, /* BG1..G0R */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4368) {TP6800_R37_FRONT_DARK_ST, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4369) {TP6800_R38_FRONT_DARK_END, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4370) {TP6800_R39_REAR_DARK_ST_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4371) {TP6800_R3A_REAR_DARK_ST_H, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4372) {TP6800_R3B_REAR_DARK_END_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4373) {TP6800_R3C_REAR_DARK_END_H, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4374) {TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4375) {TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4376) {TP6800_R21_ENDP_1_CTL, 0x03},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4377)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4378) {TP6800_R3F_FRAME_RATE, 0x04}, /* 15 fps */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4379) {TP6800_R5D_DEMOSAIC_CFG, 0x0e}, /* scale down - medium edge */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4380)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4381) {TP6800_R31_PIXEL_START, 0x1b},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4382) {TP6800_R32_PIXEL_END_L, 0x9a},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4383) {TP6800_R33_PIXEL_END_H, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4384) {TP6800_R34_LINE_START, 0x0f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4385) {TP6800_R35_LINE_END_L, 0xf4},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4386) {TP6800_R36_LINE_END_H, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4387) {TP6800_R78_FORMAT, 0x01}, /* qvga */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4388) {TP6800_R12_SIF_ADDR_S, 0x21}, /* soi763a i2c addr */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4389) {TP6800_R1A_SIF_TX_DATA2, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4390) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4391) static const struct cmd sensor_init[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4392) {0x12, 0x48}, /* mirror - RGB */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4393) {0x13, 0xa0}, /* clock - no AGC nor AEC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4394) {0x03, 0xa4}, /* saturation */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4395) {0x04, 0x30}, /* hue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4396) {0x05, 0x88}, /* contrast */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4397) {0x06, 0x60}, /* brightness */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4398) {0x10, 0x41}, /* AEC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4399) {0x11, 0x40}, /* clock rate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4400) {0x13, 0xa0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4401) {0x14, 0x00}, /* 640x480 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4402) {0x15, 0x14},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4403) {0x1f, 0x41},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4404) {0x20, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4405) {0x23, 0xee},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4406) {0x24, 0x50},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4407) {0x25, 0x7a},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4408) {0x26, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4409) {0x27, 0xe2},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4410) {0x28, 0xb0},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4411) {0x2a, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4412) {0x2b, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4413) {0x2d, 0x81},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4414) {0x2f, 0x9d},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4415) {0x60, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4416) {0x61, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4417) {0x62, 0x88},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4418) {0x63, 0x11},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4419) {0x64, 0x89},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4420) {0x65, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4421) {0x67, 0x94},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4422) {0x68, 0x7a},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4423) {0x69, 0x0f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4424) {0x6c, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4425) {0x6d, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4426) {0x6e, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4427) {0x6f, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4428) {0x71, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4429) {0x74, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4430) {0x75, 0x86},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4431) {0x77, 0xb5},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4432) {0x17, 0x18}, /* H href start */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4433) {0x18, 0xbf}, /* H href end */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4434) {0x19, 0x03}, /* V start */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4435) {0x1a, 0xf8}, /* V end */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4436) {0x01, 0x80}, /* blue gain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4437) {0x02, 0x80}, /* red gain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4438) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4439)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4440) reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4441)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4442) i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4443) msleep(10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4444)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4445) i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4446)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4447) reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4448) reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4449)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4450) setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4451)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4452) bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4453) ARRAY_SIZE(color_gain[0]));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4455) set_led(gspca_dev, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4456) if (sd->sensor == SENSOR_CX0342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4457) setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4458) v4l2_ctrl_g_ctrl(gspca_dev->gain),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4459) v4l2_ctrl_g_ctrl(sd->blue),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4460) v4l2_ctrl_g_ctrl(sd->red));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4461) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4462) setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4463) v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4464) if (sd->sensor == SENSOR_SOI763A)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4465) setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4466) setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4467) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4468)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4469) static void soi763a_6810_start(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4470) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4471) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4472) static const struct cmd bridge_init_2[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4473) {TP6800_R7A_BLK_THRLD, 0x00},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4474) {TP6800_R79_QUALITY, 0x04},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4475) {TP6800_R79_QUALITY, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4476) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4477) static const struct cmd bridge_init_3[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4478) {TP6800_R31_PIXEL_START, 0x20},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4479) {TP6800_R32_PIXEL_END_L, 0x9f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4480) {TP6800_R33_PIXEL_END_H, 0x02},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4481) {TP6800_R34_LINE_START, 0x13},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4482) {TP6800_R35_LINE_END_L, 0xf8},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4483) {TP6800_R36_LINE_END_H, 0x01},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4484) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4485) static const struct cmd bridge_init_6[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4486) {0x08, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4487) {0x09, 0xff},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4488) {0x0a, 0x5f},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4489) {0x0b, 0x80},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4490) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4491)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4492) reg_w(gspca_dev, 0x22, gspca_dev->alt);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4493) bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4494) reg_w(gspca_dev, 0x59, 0x40);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4495) if (sd->sensor == SENSOR_CX0342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4496) setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4497) v4l2_ctrl_g_ctrl(gspca_dev->gain),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4498) v4l2_ctrl_g_ctrl(sd->blue),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4499) v4l2_ctrl_g_ctrl(sd->red));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4500) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4501) setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4502) v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4503) reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4504) reg_w_buf(gspca_dev, tp6810_ov_init_common,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4505) ARRAY_SIZE(tp6810_ov_init_common));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4506) reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4507) if (gspca_dev->curr_mode) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4508) reg_w(gspca_dev, 0x4a, 0x7f);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4509) reg_w(gspca_dev, 0x07, 0x05);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4510) reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4511) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4512) reg_w(gspca_dev, 0x4a, 0xff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4513) reg_w(gspca_dev, 0x07, 0x85);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4514) reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4515) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4516) setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4517) reg_w_buf(gspca_dev, tp6810_bridge_start,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4518) ARRAY_SIZE(tp6810_bridge_start));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4519)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4520) if (gspca_dev->curr_mode) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4521) reg_w(gspca_dev, 0x4f, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4522) reg_w(gspca_dev, 0x4e, 0x7c);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4523) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4524)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4525) reg_w(gspca_dev, 0x00, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4526)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4527) setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4528) bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4529) ARRAY_SIZE(color_gain[0]));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4530) set_led(gspca_dev, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4531) reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4532) if (sd->sensor == SENSOR_CX0342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4533) setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4534) v4l2_ctrl_g_ctrl(gspca_dev->gain),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4535) v4l2_ctrl_g_ctrl(sd->blue),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4536) v4l2_ctrl_g_ctrl(sd->red));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4537) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4538) setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4539) v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4540) reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4541) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4542)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4543) /* -- start the camera -- */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4544) static int sd_start(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4545) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4546) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4547)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4548) jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4549) gspca_dev->pixfmt.width);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4550) set_dqt(gspca_dev, sd->quality);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4551) if (sd->bridge == BRIDGE_TP6800) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4552) if (sd->sensor == SENSOR_CX0342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4553) cx0342_6800_start(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4554) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4555) soi763a_6800_start(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4556) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4557) if (sd->sensor == SENSOR_CX0342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4558) cx0342_6810_start(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4559) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4560) soi763a_6810_start(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4561) reg_w_buf(gspca_dev, tp6810_late_start,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4562) ARRAY_SIZE(tp6810_late_start));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4563) reg_w(gspca_dev, 0x80, 0x03);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4564) reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4565)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4566) if (sd->sensor == SENSOR_CX0342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4567) setexposure(gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4568) v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4569) v4l2_ctrl_g_ctrl(gspca_dev->gain),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4570) v4l2_ctrl_g_ctrl(sd->blue),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4571) v4l2_ctrl_g_ctrl(sd->red));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4572) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4573) setexposure(gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4574) v4l2_ctrl_g_ctrl(gspca_dev->exposure),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4575) v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4576) if (sd->sensor == SENSOR_SOI763A)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4577) setquality(gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4578) v4l2_ctrl_g_ctrl(sd->jpegqual));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4579) if (sd->bridge == BRIDGE_TP6810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4580) setautogain(gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4581) v4l2_ctrl_g_ctrl(gspca_dev->autogain));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4582) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4583)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4584) setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4585)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4586) return gspca_dev->usb_err;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4587) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4588)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4589) static void sd_stopN(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4590) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4591) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4592)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4593) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4594) reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4595) set_led(gspca_dev, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4596) reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4597) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4598)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4599) static void sd_pkt_scan(struct gspca_dev *gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4600) u8 *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4601) int len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4602) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4603) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4604)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4605) /* the start of frame contains:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4606) * ff d8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4607) * ff fe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4608) * width / 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4609) * height / 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4610) * quality
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4611) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4612) if (sd->bridge == BRIDGE_TP6810) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4613) if (*data != 0x5a) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4614) /*fixme: don't discard the whole frame..*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4615) if (*data == 0xaa || *data == 0x00)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4616) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4617) if (*data > 0xc0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4618) gspca_dbg(gspca_dev, D_FRAM, "bad frame\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4619) gspca_dev->last_packet_type = DISCARD_PACKET;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4620) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4621) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4622) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4623) data++;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4624) len--;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4625) if (len < 2) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4626) gspca_dev->last_packet_type = DISCARD_PACKET;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4627) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4628) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4629) if (*data == 0xff && data[1] == 0xd8) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4630) /*fixme: there may be information in the 4 high bits*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4631) if (len < 7) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4632) gspca_dev->last_packet_type = DISCARD_PACKET;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4633) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4634) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4635) if ((data[6] & 0x0f) != sd->quality)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4636) set_dqt(gspca_dev, data[6] & 0x0f);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4637) gspca_frame_add(gspca_dev, FIRST_PACKET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4638) sd->jpeg_hdr, JPEG_HDR_SZ);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4639) gspca_frame_add(gspca_dev, INTER_PACKET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4640) data + 7, len - 7);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4641) } else if (data[len - 2] == 0xff && data[len - 1] == 0xd9) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4642) gspca_frame_add(gspca_dev, LAST_PACKET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4643) data, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4644) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4645) gspca_frame_add(gspca_dev, INTER_PACKET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4646) data, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4647) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4648) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4649) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4650)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4651) switch (*data) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4652) case 0x55:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4653) gspca_frame_add(gspca_dev, LAST_PACKET, data, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4654)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4655) if (len < 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4656) || data[1] != 0xff || data[2] != 0xd8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4657) || data[3] != 0xff || data[4] != 0xfe) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4658)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4659) /* Have only seen this with corrupt frames */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4660) gspca_dev->last_packet_type = DISCARD_PACKET;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4661) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4662) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4663) if (data[7] != sd->quality)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4664) set_dqt(gspca_dev, data[7]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4665) gspca_frame_add(gspca_dev, FIRST_PACKET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4666) sd->jpeg_hdr, JPEG_HDR_SZ);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4667) gspca_frame_add(gspca_dev, INTER_PACKET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4668) data + 8, len - 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4669) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4670) case 0xaa:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4671) gspca_dev->last_packet_type = DISCARD_PACKET;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4672) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4673) case 0xcc:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4674) if (len >= 3 && (data[1] != 0xff || data[2] != 0xd8))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4675) gspca_frame_add(gspca_dev, INTER_PACKET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4676) data + 1, len - 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4677) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4678) gspca_dev->last_packet_type = DISCARD_PACKET;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4679) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4680) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4681) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4682)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4683) static void sd_dq_callback(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4684) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4685) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4686) int ret, alen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4687) int luma, expo;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4688)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4689) if (sd->ag_cnt < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4690) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4691) if (--sd->ag_cnt > 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4692) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4693) switch (sd->ag_cnt) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4694) /* case 5: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4695) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4696) reg_w(gspca_dev, 0x7d, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4697) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4698) case 4:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4699) reg_w(gspca_dev, 0x27, 0xb0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4700) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4701) case 3:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4702) reg_w(gspca_dev, 0x0c, 0x01);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4703) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4704) case 2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4705) ret = usb_bulk_msg(gspca_dev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4706) usb_rcvbulkpipe(gspca_dev->dev, 0x02),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4707) gspca_dev->usb_buf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4708) 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4709) &alen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4710) 500);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4711) if (ret < 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4712) pr_err("bulk err %d\n", ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4713) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4714) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4715) /* values not used (unknown) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4716) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4717) case 1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4718) reg_w(gspca_dev, 0x27, 0xd0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4719) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4720) case 0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4721) ret = usb_bulk_msg(gspca_dev->dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4722) usb_rcvbulkpipe(gspca_dev->dev, 0x02),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4723) gspca_dev->usb_buf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4724) 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4725) &alen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4726) 500);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4727) if (ret < 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4728) pr_err("bulk err %d\n", ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4729) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4730) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4731) luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] +
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4732) (gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] +
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4733) (gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] +
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4734) (gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] +
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4735) (gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] +
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4736) (gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] +
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4737) (gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] +
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4738) (gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4739) / 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4740) if (gspca_dev->pixfmt.width == 640)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4741) luma /= 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4742) reg_w(gspca_dev, 0x7d, 0x00);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4743)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4744) expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4745) ret = gspca_expo_autogain(gspca_dev, luma,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4746) 60, /* desired luma */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4747) 6, /* dead zone */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4748) 2, /* gain knee */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4749) 70); /* expo knee */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4750) sd->ag_cnt = AG_CNT_START;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4751) if (sd->bridge == BRIDGE_TP6810) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4752) int new_expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4753)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4754) if ((expo >= 128 && new_expo < 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4755) || (expo < 128 && new_expo >= 128))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4756) setframerate(gspca_dev, new_expo);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4757) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4758) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4759) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4760) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4761)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4762) /* get stream parameters (framerate) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4763) static void sd_get_streamparm(struct gspca_dev *gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4764) struct v4l2_streamparm *parm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4765) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4766) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4767) struct v4l2_captureparm *cp = &parm->parm.capture;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4768) struct v4l2_fract *tpf = &cp->timeperframe;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4769) int fr, i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4770)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4771) tpf->numerator = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4772) i = get_fr_idx(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4773) if (i & 0x80) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4774) if (sd->bridge == BRIDGE_TP6800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4775) fr = rates[6 - (i & 0x07)];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4776) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4777) fr = rates_6810[7 - (i & 0x07)];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4778) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4779) fr = rates[6 - i];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4780) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4781) tpf->denominator = fr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4782) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4783)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4784) /* set stream parameters (framerate) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4785) static void sd_set_streamparm(struct gspca_dev *gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4786) struct v4l2_streamparm *parm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4787) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4788) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4789) struct v4l2_captureparm *cp = &parm->parm.capture;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4790) struct v4l2_fract *tpf = &cp->timeperframe;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4791) int fr, i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4792)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4793) if (tpf->numerator == 0 || tpf->denominator == 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4794) sd->framerate = DEFAULT_FRAME_RATE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4795) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4796) sd->framerate = tpf->denominator / tpf->numerator;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4797)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4798) if (gspca_dev->streaming)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4799) setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4801) /* Return the actual framerate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4802) i = get_fr_idx(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4803) if (i & 0x80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4804) fr = rates_6810[7 - (i & 0x07)];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4805) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4806) fr = rates[6 - i];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4807) tpf->numerator = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4808) tpf->denominator = fr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4809) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4811) static int sd_set_jcomp(struct gspca_dev *gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4812) const struct v4l2_jpegcompression *jcomp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4813) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4814) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4815)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4816) if (sd->sensor != SENSOR_SOI763A)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4817) return -ENOTTY;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4818) v4l2_ctrl_s_ctrl(sd->jpegqual, jcomp->quality);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4819) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4820) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4821)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4822) static int sd_get_jcomp(struct gspca_dev *gspca_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4823) struct v4l2_jpegcompression *jcomp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4824) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4825) struct sd *sd = (struct sd *) gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4826)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4827) if (sd->sensor != SENSOR_SOI763A)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4828) return -ENOTTY;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4829) memset(jcomp, 0, sizeof *jcomp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4830) jcomp->quality = v4l2_ctrl_g_ctrl(sd->jpegqual);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4831) jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4832) | V4L2_JPEG_MARKER_DQT;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4833) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4834) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4835)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4836) static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4837) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4838) struct gspca_dev *gspca_dev =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4839) container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4840) struct sd *sd = (struct sd *)gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4841)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4842) gspca_dev->usb_err = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4843)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4844) if (!gspca_dev->streaming)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4845) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4846)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4847) switch (ctrl->id) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4848) case V4L2_CID_SHARPNESS:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4849) setsharpness(gspca_dev, ctrl->val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4850) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4851) case V4L2_CID_GAMMA:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4852) setgamma(gspca_dev, ctrl->val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4853) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4854) case V4L2_CID_BLUE_BALANCE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4855) setbgain(gspca_dev, ctrl->val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4856) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4857) case V4L2_CID_RED_BALANCE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4858) setrgain(gspca_dev, ctrl->val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4859) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4860) case V4L2_CID_EXPOSURE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4861) sd_setgain(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4862) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4863) case V4L2_CID_AUTOGAIN:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4864) if (ctrl->val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4865) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4866) sd_setgain(gspca_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4867) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4868) case V4L2_CID_JPEG_COMPRESSION_QUALITY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4869) jpeg_set_qual(sd->jpeg_hdr, ctrl->val);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4870) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4871) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4872) return gspca_dev->usb_err;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4873) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4874)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4875) static const struct v4l2_ctrl_ops sd_ctrl_ops = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4876) .s_ctrl = sd_s_ctrl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4877) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4878)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4879) static int sd_init_controls(struct gspca_dev *gspca_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4880) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4881) struct sd *sd = (struct sd *)gspca_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4882) struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4883)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4884) gspca_dev->vdev.ctrl_handler = hdl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4885) v4l2_ctrl_handler_init(hdl, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4886) gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4887) V4L2_CID_EXPOSURE, 1, 0xdc, 1, 0x4e);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4888) if (sd->sensor == SENSOR_CX0342) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4889) sd->red = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4890) V4L2_CID_RED_BALANCE, 0, 4095, 1, 256);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4891) sd->blue = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4892) V4L2_CID_BLUE_BALANCE, 0, 4095, 1, 256);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4893) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4894) if (sd->sensor == SENSOR_SOI763A)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4895) gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4896) V4L2_CID_GAIN, 0, 15, 1, 3);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4897) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4898) gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4899) V4L2_CID_GAIN, 0, 4095, 1, 256);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4900) sd->sharpness = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4901) V4L2_CID_SHARPNESS, 0, 3, 1, 2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4902) sd->gamma = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4903) V4L2_CID_GAMMA, 0, NGAMMA - 1, 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4904) (sd->sensor == SENSOR_SOI763A &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4905) sd->bridge == BRIDGE_TP6800) ? 0 : 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4906) if (sd->bridge == BRIDGE_TP6810)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4907) gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4908) V4L2_CID_AUTOGAIN, 0, 1, 1, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4909) if (sd->sensor == SENSOR_SOI763A)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4910) sd->jpegqual = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4911) V4L2_CID_JPEG_COMPRESSION_QUALITY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4912) 0, 15, 1, (sd->bridge == BRIDGE_TP6810) ? 0 : 13);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4913)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4914) if (hdl->error) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4915) pr_err("Could not initialize controls\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4916) return hdl->error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4917) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4918) if (gspca_dev->autogain)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4919) v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4920) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4921) v4l2_ctrl_cluster(2, &gspca_dev->exposure);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4922) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4923) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4924)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4925) static const struct sd_desc sd_desc = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4926) .name = KBUILD_MODNAME,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4927) .config = sd_config,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4928) .init = sd_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4929) .init_controls = sd_init_controls,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4930) .isoc_init = sd_isoc_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4931) .start = sd_start,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4932) .stopN = sd_stopN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4933) .pkt_scan = sd_pkt_scan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4934) .dq_callback = sd_dq_callback,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4935) .get_streamparm = sd_get_streamparm,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4936) .set_streamparm = sd_set_streamparm,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4937) .get_jcomp = sd_get_jcomp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4938) .set_jcomp = sd_set_jcomp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4939) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4940)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4941) static const struct usb_device_id device_table[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4942) {USB_DEVICE(0x06a2, 0x0003), .driver_info = BRIDGE_TP6800},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4943) {USB_DEVICE(0x06a2, 0x6810), .driver_info = BRIDGE_TP6810},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4944) {} /* Terminating entry */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4945) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4946)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4947) MODULE_DEVICE_TABLE(usb, device_table);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4948)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4949) static int sd_probe(struct usb_interface *interface,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4950) const struct usb_device_id *id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4951) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4952) return gspca_dev_probe(interface, id, &sd_desc, sizeof(struct sd),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4953) THIS_MODULE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4954) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4955)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4956) static struct usb_driver sd_driver = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4957) .name = KBUILD_MODNAME,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4958) .id_table = device_table,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4959) .probe = sd_probe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4960) .disconnect = gspca_disconnect,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4961) #ifdef CONFIG_PM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4962) .suspend = gspca_suspend,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4963) .resume = gspca_resume,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4964) .reset_resume = gspca_resume,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4965) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4966) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4967)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4968) module_usb_driver(sd_driver);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4969)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4970) module_param(force_sensor, int, 0644);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4971) MODULE_PARM_DESC(force_sensor,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4972) "Force sensor. 0: cx0342, 1: soi763a");