diff options
author | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
---|---|---|
committer | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
commit | 871480933a1c28f8a9fed4c4d34d06c439a7a422 (patch) | |
tree | 8718f573808810c2a1e8cb8fb6ac469093ca2784 /ANDROID_3.4.5/drivers/video/wmt/bootanimation | |
parent | 9d40ac5867b9aefe0722bc1f110b965ff294d30d (diff) | |
download | FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.gz FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.bz2 FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.zip |
Moved, renamed, and deleted files
The original directory structure was scattered and unorganized.
Changes are basically to make it look like kernel structure.
Diffstat (limited to 'ANDROID_3.4.5/drivers/video/wmt/bootanimation')
9 files changed, 0 insertions, 2979 deletions
diff --git a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/LzmaDec.c b/ANDROID_3.4.5/drivers/video/wmt/bootanimation/LzmaDec.c deleted file mode 100755 index 10f6cda6..00000000 --- a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/LzmaDec.c +++ /dev/null @@ -1,1007 +0,0 @@ -/* LzmaDec.c -- LZMA Decoder -2008-11-06 : Igor Pavlov : Public domain */ - -#include "LzmaDec.h" - -#include <linux/string.h> - -#define kNumTopBits 24 -#define kTopValue ((UInt32)1 << kNumTopBits) - -#define kNumBitModelTotalBits 11 -#define kBitModelTotal (1 << kNumBitModelTotalBits) -#define kNumMoveBits 5 - -#define RC_INIT_SIZE 5 - -#define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); } - -#define IF_BIT_0(p) ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) -#define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); -#define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits)); -#define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \ - { UPDATE_0(p); i = (i + i); A0; } else \ - { UPDATE_1(p); i = (i + i) + 1; A1; } -#define GET_BIT(p, i) GET_BIT2(p, i, ; , ;) - -#define TREE_GET_BIT(probs, i) { GET_BIT((probs + i), i); } -#define TREE_DECODE(probs, limit, i) \ - { i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; } - -/* #define _LZMA_SIZE_OPT */ - -#ifdef _LZMA_SIZE_OPT -#define TREE_6_DECODE(probs, i) TREE_DECODE(probs, (1 << 6), i) -#else -#define TREE_6_DECODE(probs, i) \ - { i = 1; \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - TREE_GET_BIT(probs, i); \ - i -= 0x40; } -#endif - -#define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_ERROR; range <<= 8; code = (code << 8) | (*buf++); } - -#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) -#define UPDATE_0_CHECK range = bound; -#define UPDATE_1_CHECK range -= bound; code -= bound; -#define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \ - { UPDATE_0_CHECK; i = (i + i); A0; } else \ - { UPDATE_1_CHECK; i = (i + i) + 1; A1; } -#define GET_BIT_CHECK(p, i) GET_BIT2_CHECK(p, i, ; , ;) -#define TREE_DECODE_CHECK(probs, limit, i) \ - { i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; } - - -#define kNumPosBitsMax 4 -#define kNumPosStatesMax (1 << kNumPosBitsMax) - -#define kLenNumLowBits 3 -#define kLenNumLowSymbols (1 << kLenNumLowBits) -#define kLenNumMidBits 3 -#define kLenNumMidSymbols (1 << kLenNumMidBits) -#define kLenNumHighBits 8 -#define kLenNumHighSymbols (1 << kLenNumHighBits) - -#define LenChoice 0 -#define LenChoice2 (LenChoice + 1) -#define LenLow (LenChoice2 + 1) -#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) -#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) -#define kNumLenProbs (LenHigh + kLenNumHighSymbols) - - -#define kNumStates 12 -#define kNumLitStates 7 - -#define kStartPosModelIndex 4 -#define kEndPosModelIndex 14 -#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) - -#define kNumPosSlotBits 6 -#define kNumLenToPosStates 4 - -#define kNumAlignBits 4 -#define kAlignTableSize (1 << kNumAlignBits) - -#define kMatchMinLen 2 -#define kMatchSpecLenStart (kMatchMinLen + kLenNumLowSymbols + kLenNumMidSymbols + kLenNumHighSymbols) - -#define IsMatch 0 -#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) -#define IsRepG0 (IsRep + kNumStates) -#define IsRepG1 (IsRepG0 + kNumStates) -#define IsRepG2 (IsRepG1 + kNumStates) -#define IsRep0Long (IsRepG2 + kNumStates) -#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) -#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) -#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) -#define LenCoder (Align + kAlignTableSize) -#define RepLenCoder (LenCoder + kNumLenProbs) -#define Literal (RepLenCoder + kNumLenProbs) - -#define LZMA_BASE_SIZE 1846 -#define LZMA_LIT_SIZE 768 - -#define LzmaProps_GetNumProbs(p) ((UInt32)LZMA_BASE_SIZE + (LZMA_LIT_SIZE << ((p)->lc + (p)->lp))) - -#if Literal != LZMA_BASE_SIZE -StopCompilingDueBUG -#endif - -static const Byte kLiteralNextStates[kNumStates * 2] = -{ - 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5, - 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10 -}; - -#define LZMA_DIC_MIN (1 << 12) - -/* First LZMA-symbol is always decoded. -And it decodes new LZMA-symbols while (buf < bufLimit), but "buf" is without last normalization -Out: - Result: - SZ_OK - OK - SZ_ERROR_DATA - Error - p->remainLen: - < kMatchSpecLenStart : normal remain - = kMatchSpecLenStart : finished - = kMatchSpecLenStart + 1 : Flush marker - = kMatchSpecLenStart + 2 : State Init Marker -*/ - -static int MY_FAST_CALL LzmaDec_DecodeReal(CLzmaDec *p, SizeT limit, const Byte *bufLimit) -{ - CLzmaProb *probs = p->probs; - - unsigned state = p->state; - UInt32 rep0 = p->reps[0], rep1 = p->reps[1], rep2 = p->reps[2], rep3 = p->reps[3]; - unsigned pbMask = ((unsigned)1 << (p->prop.pb)) - 1; - unsigned lpMask = ((unsigned)1 << (p->prop.lp)) - 1; - unsigned lc = p->prop.lc; - - Byte *dic = p->dic; - SizeT dicBufSize = p->dicBufSize; - SizeT dicPos = p->dicPos; - - UInt32 processedPos = p->processedPos; - UInt32 checkDicSize = p->checkDicSize; - unsigned len = 0; - - const Byte *buf = p->buf; - UInt32 range = p->range; - UInt32 code = p->code; - - do - { - CLzmaProb *prob; - UInt32 bound; - unsigned ttt; - unsigned posState = processedPos & pbMask; - - prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; - IF_BIT_0(prob) - { - unsigned symbol; - UPDATE_0(prob); - prob = probs + Literal; - if (checkDicSize != 0 || processedPos != 0) - prob += (LZMA_LIT_SIZE * (((processedPos & lpMask) << lc) + - (dic[(dicPos == 0 ? dicBufSize : dicPos) - 1] >> (8 - lc)))); - - if (state < kNumLitStates) - { - symbol = 1; - do { GET_BIT(prob + symbol, symbol) } while (symbol < 0x100); - } - else - { - unsigned matchByte = p->dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; - unsigned offs = 0x100; - symbol = 1; - do - { - unsigned bit; - CLzmaProb *probLit; - matchByte <<= 1; - bit = (matchByte & offs); - probLit = prob + offs + bit + symbol; - GET_BIT2(probLit, symbol, offs &= ~bit, offs &= bit) - } - while (symbol < 0x100); - } - dic[dicPos++] = (Byte)symbol; - processedPos++; - - state = kLiteralNextStates[state]; - /* if (state < 4) state = 0; else if (state < 10) state -= 3; else state -= 6; */ - continue; - } - else - { - UPDATE_1(prob); - prob = probs + IsRep + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - state += kNumStates; - prob = probs + LenCoder; - } - else - { - UPDATE_1(prob); - if (checkDicSize == 0 && processedPos == 0) - return SZ_ERROR_DATA; - prob = probs + IsRepG0 + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; - IF_BIT_0(prob) - { - UPDATE_0(prob); - dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; - dicPos++; - processedPos++; - state = state < kNumLitStates ? 9 : 11; - continue; - } - UPDATE_1(prob); - } - else - { - UInt32 distance; - UPDATE_1(prob); - prob = probs + IsRepG1 + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - distance = rep1; - } - else - { - UPDATE_1(prob); - prob = probs + IsRepG2 + state; - IF_BIT_0(prob) - { - UPDATE_0(prob); - distance = rep2; - } - else - { - UPDATE_1(prob); - distance = rep3; - rep3 = rep2; - } - rep2 = rep1; - } - rep1 = rep0; - rep0 = distance; - } - state = state < kNumLitStates ? 8 : 11; - prob = probs + RepLenCoder; - } - { - unsigned limit, offset; - CLzmaProb *probLen = prob + LenChoice; - IF_BIT_0(probLen) - { - UPDATE_0(probLen); - probLen = prob + LenLow + (posState << kLenNumLowBits); - offset = 0; - limit = (1 << kLenNumLowBits); - } - else - { - UPDATE_1(probLen); - probLen = prob + LenChoice2; - IF_BIT_0(probLen) - { - UPDATE_0(probLen); - probLen = prob + LenMid + (posState << kLenNumMidBits); - offset = kLenNumLowSymbols; - limit = (1 << kLenNumMidBits); - } - else - { - UPDATE_1(probLen); - probLen = prob + LenHigh; - offset = kLenNumLowSymbols + kLenNumMidSymbols; - limit = (1 << kLenNumHighBits); - } - } - TREE_DECODE(probLen, limit, len); - len += offset; - } - - if (state >= kNumStates) - { - UInt32 distance; - prob = probs + PosSlot + - ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); - TREE_6_DECODE(prob, distance); - if (distance >= kStartPosModelIndex) - { - unsigned posSlot = (unsigned)distance; - int numDirectBits = (int)(((distance >> 1) - 1)); - distance = (2 | (distance & 1)); - if (posSlot < kEndPosModelIndex) - { - distance <<= numDirectBits; - prob = probs + SpecPos + distance - posSlot - 1; - { - UInt32 mask = 1; - unsigned i = 1; - do - { - GET_BIT2(prob + i, i, ; , distance |= mask); - mask <<= 1; - } - while (--numDirectBits != 0); - } - } - else - { - numDirectBits -= kNumAlignBits; - do - { - NORMALIZE - range >>= 1; - - { - UInt32 t; - code -= range; - t = (0 - ((UInt32)code >> 31)); /* (UInt32)((Int32)code >> 31) */ - distance = (distance << 1) + (t + 1); - code += range & t; - } - /* - distance <<= 1; - if (code >= range) - { - code -= range; - distance |= 1; - } - */ - } - while (--numDirectBits != 0); - prob = probs + Align; - distance <<= kNumAlignBits; - { - unsigned i = 1; - GET_BIT2(prob + i, i, ; , distance |= 1); - GET_BIT2(prob + i, i, ; , distance |= 2); - GET_BIT2(prob + i, i, ; , distance |= 4); - GET_BIT2(prob + i, i, ; , distance |= 8); - } - if (distance == (UInt32)0xFFFFFFFF) - { - len += kMatchSpecLenStart; - state -= kNumStates; - break; - } - } - } - rep3 = rep2; - rep2 = rep1; - rep1 = rep0; - rep0 = distance + 1; - if (checkDicSize == 0) - { - if (distance >= processedPos) - return SZ_ERROR_DATA; - } - else if (distance >= checkDicSize) - return SZ_ERROR_DATA; - state = (state < kNumStates + kNumLitStates) ? kNumLitStates : kNumLitStates + 3; - /* state = kLiteralNextStates[state]; */ - } - - len += kMatchMinLen; - - if (limit == dicPos) - return SZ_ERROR_DATA; - { - SizeT rem = limit - dicPos; - unsigned curLen = ((rem < len) ? (unsigned)rem : len); - SizeT pos = (dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0); - - processedPos += curLen; - - len -= curLen; - if (pos + curLen <= dicBufSize) - { - Byte *dest = dic + dicPos; - ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos; - const Byte *lim = dest + curLen; - dicPos += curLen; - do - *(dest) = (Byte)*(dest + src); - while (++dest != lim); - } - else - { - do - { - dic[dicPos++] = dic[pos]; - if (++pos == dicBufSize) - pos = 0; - } - while (--curLen != 0); - } - } - } - } - while (dicPos < limit && buf < bufLimit); - NORMALIZE; - p->buf = buf; - p->range = range; - p->code = code; - p->remainLen = len; - p->dicPos = dicPos; - p->processedPos = processedPos; - p->reps[0] = rep0; - p->reps[1] = rep1; - p->reps[2] = rep2; - p->reps[3] = rep3; - p->state = state; - - return SZ_OK; -} - -static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) -{ - if (p->remainLen != 0 && p->remainLen < kMatchSpecLenStart) - { - Byte *dic = p->dic; - SizeT dicPos = p->dicPos; - SizeT dicBufSize = p->dicBufSize; - unsigned len = p->remainLen; - UInt32 rep0 = p->reps[0]; - if (limit - dicPos < len) - len = (unsigned)(limit - dicPos); - - if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len) - p->checkDicSize = p->prop.dicSize; - - p->processedPos += len; - p->remainLen -= len; - while (len-- != 0) - { - dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; - dicPos++; - } - p->dicPos = dicPos; - } -} - -static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) -{ - do - { - SizeT limit2 = limit; - if (p->checkDicSize == 0) - { - UInt32 rem = p->prop.dicSize - p->processedPos; - if (limit - p->dicPos > rem) - limit2 = p->dicPos + rem; - } - RINOK(LzmaDec_DecodeReal(p, limit2, bufLimit)); - if (p->processedPos >= p->prop.dicSize) - p->checkDicSize = p->prop.dicSize; - LzmaDec_WriteRem(p, limit); - } - while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart); - - if (p->remainLen > kMatchSpecLenStart) - { - p->remainLen = kMatchSpecLenStart; - } - return 0; -} - -typedef enum -{ - DUMMY_ERROR, /* unexpected end of input stream */ - DUMMY_LIT, - DUMMY_MATCH, - DUMMY_REP -} ELzmaDummy; - -static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, SizeT inSize) -{ - UInt32 range = p->range; - UInt32 code = p->code; - const Byte *bufLimit = buf + inSize; - CLzmaProb *probs = p->probs; - unsigned state = p->state; - ELzmaDummy res; - - { - CLzmaProb *prob; - UInt32 bound; - unsigned ttt; - unsigned posState = (p->processedPos) & ((1 << p->prop.pb) - 1); - - prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK - - /* if (bufLimit - buf >= 7) return DUMMY_LIT; */ - - prob = probs + Literal; - if (p->checkDicSize != 0 || p->processedPos != 0) - prob += (LZMA_LIT_SIZE * - ((((p->processedPos) & ((1 << (p->prop.lp)) - 1)) << p->prop.lc) + - (p->dic[(p->dicPos == 0 ? p->dicBufSize : p->dicPos) - 1] >> (8 - p->prop.lc)))); - - if (state < kNumLitStates) - { - unsigned symbol = 1; - do { GET_BIT_CHECK(prob + symbol, symbol) } while (symbol < 0x100); - } - else - { - unsigned matchByte = p->dic[p->dicPos - p->reps[0] + - ((p->dicPos < p->reps[0]) ? p->dicBufSize : 0)]; - unsigned offs = 0x100; - unsigned symbol = 1; - do - { - unsigned bit; - CLzmaProb *probLit; - matchByte <<= 1; - bit = (matchByte & offs); - probLit = prob + offs + bit + symbol; - GET_BIT2_CHECK(probLit, symbol, offs &= ~bit, offs &= bit) - } - while (symbol < 0x100); - } - res = DUMMY_LIT; - } - else - { - unsigned len; - UPDATE_1_CHECK; - - prob = probs + IsRep + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - state = 0; - prob = probs + LenCoder; - res = DUMMY_MATCH; - } - else - { - UPDATE_1_CHECK; - res = DUMMY_REP; - prob = probs + IsRepG0 + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - NORMALIZE_CHECK; - return DUMMY_REP; - } - else - { - UPDATE_1_CHECK; - } - } - else - { - UPDATE_1_CHECK; - prob = probs + IsRepG1 + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - } - else - { - UPDATE_1_CHECK; - prob = probs + IsRepG2 + state; - IF_BIT_0_CHECK(prob) - { - UPDATE_0_CHECK; - } - else - { - UPDATE_1_CHECK; - } - } - } - state = kNumStates; - prob = probs + RepLenCoder; - } - { - unsigned limit, offset; - CLzmaProb *probLen = prob + LenChoice; - IF_BIT_0_CHECK(probLen) - { - UPDATE_0_CHECK; - probLen = prob + LenLow + (posState << kLenNumLowBits); - offset = 0; - limit = 1 << kLenNumLowBits; - } - else - { - UPDATE_1_CHECK; - probLen = prob + LenChoice2; - IF_BIT_0_CHECK(probLen) - { - UPDATE_0_CHECK; - probLen = prob + LenMid + (posState << kLenNumMidBits); - offset = kLenNumLowSymbols; - limit = 1 << kLenNumMidBits; - } - else - { - UPDATE_1_CHECK; - probLen = prob + LenHigh; - offset = kLenNumLowSymbols + kLenNumMidSymbols; - limit = 1 << kLenNumHighBits; - } - } - TREE_DECODE_CHECK(probLen, limit, len); - len += offset; - } - - if (state < 4) - { - unsigned posSlot; - prob = probs + PosSlot + - ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << - kNumPosSlotBits); - TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); - if (posSlot >= kStartPosModelIndex) - { - int numDirectBits = ((posSlot >> 1) - 1); - - /* if (bufLimit - buf >= 8) return DUMMY_MATCH; */ - - if (posSlot < kEndPosModelIndex) - { - prob = probs + SpecPos + ((2 | (posSlot & 1)) << numDirectBits) - posSlot - 1; - } - else - { - numDirectBits -= kNumAlignBits; - do - { - NORMALIZE_CHECK - range >>= 1; - code -= range & (((code - range) >> 31) - 1); - /* if (code >= range) code -= range; */ - } - while (--numDirectBits != 0); - prob = probs + Align; - numDirectBits = kNumAlignBits; - } - { - unsigned i = 1; - do - { - GET_BIT_CHECK(prob + i, i); - } - while (--numDirectBits != 0); - } - } - } - } - } - NORMALIZE_CHECK; - return res; -} - - -static void LzmaDec_InitRc(CLzmaDec *p, const Byte *data) -{ - p->code = ((UInt32)data[1] << 24) | ((UInt32)data[2] << 16) | ((UInt32)data[3] << 8) | ((UInt32)data[4]); - p->range = 0xFFFFFFFF; - p->needFlush = 0; -} - -void LzmaDec_InitDicAndState(CLzmaDec *p, Bool initDic, Bool initState) -{ - p->needFlush = 1; - p->remainLen = 0; - p->tempBufSize = 0; - - if (initDic) - { - p->processedPos = 0; - p->checkDicSize = 0; - p->needInitState = 1; - } - if (initState) - p->needInitState = 1; -} - -void LzmaDec_Init(CLzmaDec *p) -{ - p->dicPos = 0; - LzmaDec_InitDicAndState(p, True, True); -} - -static void LzmaDec_InitStateReal(CLzmaDec *p) -{ - UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (p->prop.lc + p->prop.lp)); - UInt32 i; - CLzmaProb *probs = p->probs; - for (i = 0; i < numProbs; i++) - probs[i] = kBitModelTotal >> 1; - p->reps[0] = p->reps[1] = p->reps[2] = p->reps[3] = 1; - p->state = 0; - p->needInitState = 0; -} - -SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, - ELzmaFinishMode finishMode, ELzmaStatus *status) -{ - SizeT inSize = *srcLen; - (*srcLen) = 0; - LzmaDec_WriteRem(p, dicLimit); - - *status = LZMA_STATUS_NOT_SPECIFIED; - - while (p->remainLen != kMatchSpecLenStart) - { - int checkEndMarkNow; - - if (p->needFlush != 0) - { - for (; inSize > 0 && p->tempBufSize < RC_INIT_SIZE; (*srcLen)++, inSize--) - p->tempBuf[p->tempBufSize++] = *src++; - if (p->tempBufSize < RC_INIT_SIZE) - { - *status = LZMA_STATUS_NEEDS_MORE_INPUT; - return SZ_OK; - } - if (p->tempBuf[0] != 0) - return SZ_ERROR_DATA; - - LzmaDec_InitRc(p, p->tempBuf); - p->tempBufSize = 0; - } - - checkEndMarkNow = 0; - if (p->dicPos >= dicLimit) - { - if (p->remainLen == 0 && p->code == 0) - { - *status = LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK; - return SZ_OK; - } - if (finishMode == LZMA_FINISH_ANY) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_OK; - } - if (p->remainLen != 0) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_ERROR_DATA; - } - checkEndMarkNow = 1; - } - - if (p->needInitState) - LzmaDec_InitStateReal(p); - - if (p->tempBufSize == 0) - { - SizeT processed; - const Byte *bufLimit; - if (inSize < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) - { - int dummyRes = LzmaDec_TryDummy(p, src, inSize); - if (dummyRes == DUMMY_ERROR) - { - memcpy(p->tempBuf, src, inSize); - p->tempBufSize = (unsigned)inSize; - (*srcLen) += inSize; - *status = LZMA_STATUS_NEEDS_MORE_INPUT; - return SZ_OK; - } - if (checkEndMarkNow && dummyRes != DUMMY_MATCH) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_ERROR_DATA; - } - bufLimit = src; - } - else - bufLimit = src + inSize - LZMA_REQUIRED_INPUT_MAX; - p->buf = src; - if (LzmaDec_DecodeReal2(p, dicLimit, bufLimit) != 0) - return SZ_ERROR_DATA; - processed = (SizeT)(p->buf - src); - (*srcLen) += processed; - src += processed; - inSize -= processed; - } - else - { - unsigned rem = p->tempBufSize, lookAhead = 0; - while (rem < LZMA_REQUIRED_INPUT_MAX && lookAhead < inSize) - p->tempBuf[rem++] = src[lookAhead++]; - p->tempBufSize = rem; - if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) - { - int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, rem); - if (dummyRes == DUMMY_ERROR) - { - (*srcLen) += lookAhead; - *status = LZMA_STATUS_NEEDS_MORE_INPUT; - return SZ_OK; - } - if (checkEndMarkNow && dummyRes != DUMMY_MATCH) - { - *status = LZMA_STATUS_NOT_FINISHED; - return SZ_ERROR_DATA; - } - } - p->buf = p->tempBuf; - if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0) - return SZ_ERROR_DATA; - lookAhead -= (rem - (unsigned)(p->buf - p->tempBuf)); - (*srcLen) += lookAhead; - src += lookAhead; - inSize -= lookAhead; - p->tempBufSize = 0; - } - } - if (p->code == 0) - *status = LZMA_STATUS_FINISHED_WITH_MARK; - return (p->code == 0) ? SZ_OK : SZ_ERROR_DATA; -} - -SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) -{ - SizeT outSize = *destLen; - SizeT inSize = *srcLen; - *srcLen = *destLen = 0; - for (;;) - { - SizeT inSizeCur = inSize, outSizeCur, dicPos; - ELzmaFinishMode curFinishMode; - SRes res; - if (p->dicPos == p->dicBufSize) - p->dicPos = 0; - dicPos = p->dicPos; - if (outSize > p->dicBufSize - dicPos) - { - outSizeCur = p->dicBufSize; - curFinishMode = LZMA_FINISH_ANY; - } - else - { - outSizeCur = dicPos + outSize; - curFinishMode = finishMode; - } - - res = LzmaDec_DecodeToDic(p, outSizeCur, src, &inSizeCur, curFinishMode, status); - src += inSizeCur; - inSize -= inSizeCur; - *srcLen += inSizeCur; - outSizeCur = p->dicPos - dicPos; - memcpy(dest, p->dic + dicPos, outSizeCur); - dest += outSizeCur; - outSize -= outSizeCur; - *destLen += outSizeCur; - if (res != 0) - return res; - if (outSizeCur == 0 || outSize == 0) - return SZ_OK; - } -} - -void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc) -{ - alloc->Free(alloc, p->probs); - p->probs = 0; -} - -static void LzmaDec_FreeDict(CLzmaDec *p, ISzAlloc *alloc) -{ - alloc->Free(alloc, p->dic); - p->dic = 0; -} - -void LzmaDec_Free(CLzmaDec *p, ISzAlloc *alloc) -{ - LzmaDec_FreeProbs(p, alloc); - LzmaDec_FreeDict(p, alloc); -} - -SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size) -{ - UInt32 dicSize; - Byte d; - - if (size < LZMA_PROPS_SIZE) - return SZ_ERROR_UNSUPPORTED; - else - dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24); - - if (dicSize < LZMA_DIC_MIN) - dicSize = LZMA_DIC_MIN; - p->dicSize = dicSize; - - d = data[0]; - if (d >= (9 * 5 * 5)) - return SZ_ERROR_UNSUPPORTED; - - p->lc = d % 9; - d /= 9; - p->pb = d / 5; - p->lp = d % 5; - - return SZ_OK; -} - -static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAlloc *alloc) -{ - UInt32 numProbs = LzmaProps_GetNumProbs(propNew); - if (p->probs == 0 || numProbs != p->numProbs) - { - LzmaDec_FreeProbs(p, alloc); - p->probs = (CLzmaProb *)alloc->Alloc(alloc, numProbs * sizeof(CLzmaProb)); - p->numProbs = numProbs; - if (p->probs == 0) - return SZ_ERROR_MEM; - } - return SZ_OK; -} - -SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) -{ - CLzmaProps propNew; - RINOK(LzmaProps_Decode(&propNew, props, propsSize)); - RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); - p->prop = propNew; - return SZ_OK; -} - -SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) -{ - CLzmaProps propNew; - SizeT dicBufSize; - RINOK(LzmaProps_Decode(&propNew, props, propsSize)); - RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); - dicBufSize = propNew.dicSize; - if (p->dic == 0 || dicBufSize != p->dicBufSize) - { - LzmaDec_FreeDict(p, alloc); - p->dic = (Byte *)alloc->Alloc(alloc, dicBufSize); - if (p->dic == 0) - { - LzmaDec_FreeProbs(p, alloc); - return SZ_ERROR_MEM; - } - } - p->dicBufSize = dicBufSize; - p->prop = propNew; - return SZ_OK; -} - -SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, - const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, - ELzmaStatus *status, ISzAlloc *alloc) -{ - CLzmaDec p; - SRes res; - SizeT inSize = *srcLen; - SizeT outSize = *destLen; - *srcLen = *destLen = 0; - if (inSize < RC_INIT_SIZE) - return SZ_ERROR_INPUT_EOF; - - LzmaDec_Construct(&p); - res = LzmaDec_AllocateProbs(&p, propData, propSize, alloc); - if (res != 0) - return res; - p.dic = dest; - p.dicBufSize = outSize; - - LzmaDec_Init(&p); - - *srcLen = inSize; - res = LzmaDec_DecodeToDic(&p, outSize, src, srcLen, finishMode, status); - - if (res == SZ_OK && *status == LZMA_STATUS_NEEDS_MORE_INPUT) - res = SZ_ERROR_INPUT_EOF; - - (*destLen) = p.dicPos; - LzmaDec_FreeProbs(&p, alloc); - return res; -} diff --git a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/LzmaDec.h b/ANDROID_3.4.5/drivers/video/wmt/bootanimation/LzmaDec.h deleted file mode 100755 index 98cdbe94..00000000 --- a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/LzmaDec.h +++ /dev/null @@ -1,223 +0,0 @@ -/* LzmaDec.h -- LZMA Decoder -2008-10-04 : Igor Pavlov : Public domain */ - -#ifndef __LZMADEC_H -#define __LZMADEC_H - -#include "Types.h" - -/* #define _LZMA_PROB32 */ -/* _LZMA_PROB32 can increase the speed on some CPUs, - but memory usage for CLzmaDec::probs will be doubled in that case */ - -#ifdef _LZMA_PROB32 -#define CLzmaProb UInt32 -#else -#define CLzmaProb UInt16 -#endif - - -/* ---------- LZMA Properties ---------- */ - -#define LZMA_PROPS_SIZE 5 - -typedef struct _CLzmaProps -{ - unsigned lc, lp, pb; - UInt32 dicSize; -} CLzmaProps; - -/* LzmaProps_Decode - decodes properties -Returns: - SZ_OK - SZ_ERROR_UNSUPPORTED - Unsupported properties -*/ - -SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size); - - -/* ---------- LZMA Decoder state ---------- */ - -/* LZMA_REQUIRED_INPUT_MAX = number of required input bytes for worst case. - Num bits = log2((2^11 / 31) ^ 22) + 26 < 134 + 26 = 160; */ - -#define LZMA_REQUIRED_INPUT_MAX 20 - -typedef struct -{ - CLzmaProps prop; - CLzmaProb *probs; - Byte *dic; - const Byte *buf; - UInt32 range, code; - SizeT dicPos; - SizeT dicBufSize; - UInt32 processedPos; - UInt32 checkDicSize; - unsigned state; - UInt32 reps[4]; - unsigned remainLen; - int needFlush; - int needInitState; - UInt32 numProbs; - unsigned tempBufSize; - Byte tempBuf[LZMA_REQUIRED_INPUT_MAX]; -} CLzmaDec; - -#define LzmaDec_Construct(p) { (p)->dic = 0; (p)->probs = 0; } - -void LzmaDec_Init(CLzmaDec *p); - -/* There are two types of LZMA streams: - 0) Stream with end mark. That end mark adds about 6 bytes to compressed size. - 1) Stream without end mark. You must know exact uncompressed size to decompress such stream. */ - -typedef enum -{ - LZMA_FINISH_ANY, /* finish at any point */ - LZMA_FINISH_END /* block must be finished at the end */ -} ELzmaFinishMode; - -/* ELzmaFinishMode has meaning only if the decoding reaches output limit !!! - - You must use LZMA_FINISH_END, when you know that current output buffer - covers last bytes of block. In other cases you must use LZMA_FINISH_ANY. - - If LZMA decoder sees end marker before reaching output limit, it returns SZ_OK, - and output value of destLen will be less than output buffer size limit. - You can check status result also. - - You can use multiple checks to test data integrity after full decompression: - 1) Check Result and "status" variable. - 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. - 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. - You must use correct finish mode in that case. */ - -typedef enum -{ - LZMA_STATUS_NOT_SPECIFIED, /* use main error code instead */ - LZMA_STATUS_FINISHED_WITH_MARK, /* stream was finished with end mark. */ - LZMA_STATUS_NOT_FINISHED, /* stream was not finished */ - LZMA_STATUS_NEEDS_MORE_INPUT, /* you must provide more input bytes */ - LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK /* there is probability that stream was finished without end mark */ -} ELzmaStatus; - -/* ELzmaStatus is used only as output value for function call */ - - -/* ---------- Interfaces ---------- */ - -/* There are 3 levels of interfaces: - 1) Dictionary Interface - 2) Buffer Interface - 3) One Call Interface - You can select any of these interfaces, but don't mix functions from different - groups for same object. */ - - -/* There are two variants to allocate state for Dictionary Interface: - 1) LzmaDec_Allocate / LzmaDec_Free - 2) LzmaDec_AllocateProbs / LzmaDec_FreeProbs - You can use variant 2, if you set dictionary buffer manually. - For Buffer Interface you must always use variant 1. - -LzmaDec_Allocate* can return: - SZ_OK - SZ_ERROR_MEM - Memory allocation error - SZ_ERROR_UNSUPPORTED - Unsupported properties -*/ - -SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc); -void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc); - -SRes LzmaDec_Allocate(CLzmaDec *state, const Byte *prop, unsigned propsSize, ISzAlloc *alloc); -void LzmaDec_Free(CLzmaDec *state, ISzAlloc *alloc); - -/* ---------- Dictionary Interface ---------- */ - -/* You can use it, if you want to eliminate the overhead for data copying from - dictionary to some other external buffer. - You must work with CLzmaDec variables directly in this interface. - - STEPS: - LzmaDec_Constr() - LzmaDec_Allocate() - for (each new stream) - { - LzmaDec_Init() - while (it needs more decompression) - { - LzmaDec_DecodeToDic() - use data from CLzmaDec::dic and update CLzmaDec::dicPos - } - } - LzmaDec_Free() -*/ - -/* LzmaDec_DecodeToDic - - The decoding to internal dictionary buffer (CLzmaDec::dic). - You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!! - -finishMode: - It has meaning only if the decoding reaches output limit (dicLimit). - LZMA_FINISH_ANY - Decode just dicLimit bytes. - LZMA_FINISH_END - Stream must be finished after dicLimit. - -Returns: - SZ_OK - status: - LZMA_STATUS_FINISHED_WITH_MARK - LZMA_STATUS_NOT_FINISHED - LZMA_STATUS_NEEDS_MORE_INPUT - LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK - SZ_ERROR_DATA - Data error -*/ - -SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, - const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); - - -/* ---------- Buffer Interface ---------- */ - -/* It's zlib-like interface. - See LzmaDec_DecodeToDic description for information about STEPS and return results, - but you must use LzmaDec_DecodeToBuf instead of LzmaDec_DecodeToDic and you don't need - to work with CLzmaDec variables manually. - -finishMode: - It has meaning only if the decoding reaches output limit (*destLen). - LZMA_FINISH_ANY - Decode just destLen bytes. - LZMA_FINISH_END - Stream must be finished after (*destLen). -*/ - -SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, - const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); - - -/* ---------- One Call Interface ---------- */ - -/* LzmaDecode - -finishMode: - It has meaning only if the decoding reaches output limit (*destLen). - LZMA_FINISH_ANY - Decode just destLen bytes. - LZMA_FINISH_END - Stream must be finished after (*destLen). - -Returns: - SZ_OK - status: - LZMA_STATUS_FINISHED_WITH_MARK - LZMA_STATUS_NOT_FINISHED - LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK - SZ_ERROR_DATA - Data error - SZ_ERROR_MEM - Memory allocation error - SZ_ERROR_UNSUPPORTED - Unsupported properties - SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). -*/ - -SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, - const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, - ELzmaStatus *status, ISzAlloc *alloc); - -#endif diff --git a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/Makefile b/ANDROID_3.4.5/drivers/video/wmt/bootanimation/Makefile deleted file mode 100755 index f0d021a8..00000000 --- a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -# This is a modified version of zlib, which does all memory -# allocation ahead of time. -# -# This is only the decompression, see zlib_deflate for the -# the compression -# -# Decompression needs to be serialized for each memory -# allocation. -# -# (The upsides of the simplification is that you can't get in -# any nasty situations wrt memory management, and that the -# uncompression can be done without blocking on allocation). -# -lzma_dec-objs := LzmaDec.o - -obj-$(CONFIG_LOGO_WMT_ANIMATION) += lzma_dec.o buffer.o animation.o - - diff --git a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/Types.h b/ANDROID_3.4.5/drivers/video/wmt/bootanimation/Types.h deleted file mode 100755 index 60cfe05e..00000000 --- a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/Types.h +++ /dev/null @@ -1,237 +0,0 @@ -/* Types.h -- Basic types -2010-03-11 : Igor Pavlov : Public domain */ - -#ifndef __7Z_TYPES_H -#define __7Z_TYPES_H - -#include <stddef.h> - -#ifdef _WIN32 -#include <windows.h> -#endif - -#ifndef EXTERN_C_BEGIN -#ifdef __cplusplus -#define EXTERN_C_BEGIN extern "C" { -#define EXTERN_C_END } -#else -#define EXTERN_C_BEGIN -#define EXTERN_C_END -#endif -#endif - -EXTERN_C_BEGIN - -#define SZ_OK 0 - -#define SZ_ERROR_DATA 1 -#define SZ_ERROR_MEM 2 -#define SZ_ERROR_CRC 3 -#define SZ_ERROR_UNSUPPORTED 4 -#define SZ_ERROR_PARAM 5 -#define SZ_ERROR_INPUT_EOF 6 -#define SZ_ERROR_OUTPUT_EOF 7 -#define SZ_ERROR_READ 8 -#define SZ_ERROR_WRITE 9 -#define SZ_ERROR_PROGRESS 10 -#define SZ_ERROR_FAIL 11 -#define SZ_ERROR_THREAD 12 - -#define SZ_ERROR_ARCHIVE 16 -#define SZ_ERROR_NO_ARCHIVE 17 - -typedef int SRes; - -#ifdef _WIN32 -typedef DWORD WRes; -#else -typedef int WRes; -#endif - -#ifndef RINOK -#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; } -#endif - -typedef unsigned char Byte; -typedef short Int16; -typedef unsigned short UInt16; - -#ifdef _LZMA_UINT32_IS_ULONG -typedef long Int32; -typedef unsigned long UInt32; -#else -typedef int Int32; -typedef unsigned int UInt32; -#endif - -#ifdef _SZ_NO_INT_64 - -/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers. - NOTES: Some code will work incorrectly in that case! */ - -typedef long Int64; -typedef unsigned long UInt64; - -#else - -#if defined(_MSC_VER) || defined(__BORLANDC__) -typedef __int64 Int64; -typedef unsigned __int64 UInt64; -#else -typedef long long int Int64; -typedef unsigned long long int UInt64; -#endif - -#endif - -#ifdef _LZMA_NO_SYSTEM_SIZE_T -typedef UInt32 SizeT; -#else -typedef size_t SizeT; -#endif - -typedef int Bool; -#define True 1 -#define False 0 - - -#ifdef _WIN32 -#define MY_STD_CALL __stdcall -#else -#define MY_STD_CALL -#endif - -#ifdef _MSC_VER - -#if _MSC_VER >= 1300 -#define MY_NO_INLINE __declspec(noinline) -#else -#define MY_NO_INLINE -#endif - -#define MY_CDECL __cdecl -#define MY_FAST_CALL __fastcall - -#else - -#define MY_CDECL -#define MY_FAST_CALL - -#endif - - -/* The following interfaces use first parameter as pointer to structure */ - -typedef struct -{ - Byte (*Read)(void *p); /* reads one byte, returns 0 in case of EOF or error */ -} IByteIn; - -typedef struct -{ - void (*Write)(void *p, Byte b); -} IByteOut; - -typedef struct -{ - SRes (*Read)(void *p, void *buf, size_t *size); - /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. - (output(*size) < input(*size)) is allowed */ -} ISeqInStream; - -/* it can return SZ_ERROR_INPUT_EOF */ -SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size); -SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType); -SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf); - -typedef struct -{ - size_t (*Write)(void *p, const void *buf, size_t size); - /* Returns: result - the number of actually written bytes. - (result < size) means error */ -} ISeqOutStream; - -typedef enum -{ - SZ_SEEK_SET = 0, - SZ_SEEK_CUR = 1, - SZ_SEEK_END = 2 -} ESzSeek; - -typedef struct -{ - SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */ - SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); -} ISeekInStream; - -typedef struct -{ - SRes (*Look)(void *p, const void **buf, size_t *size); - /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. - (output(*size) > input(*size)) is not allowed - (output(*size) < input(*size)) is allowed */ - SRes (*Skip)(void *p, size_t offset); - /* offset must be <= output(*size) of Look */ - - SRes (*Read)(void *p, void *buf, size_t *size); - /* reads directly (without buffer). It's same as ISeqInStream::Read */ - SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); -} ILookInStream; - -SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size); -SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset); - -/* reads via ILookInStream::Read */ -SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType); -SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size); - -#define LookToRead_BUF_SIZE (1 << 14) - -typedef struct -{ - ILookInStream s; - ISeekInStream *realStream; - size_t pos; - size_t size; - Byte buf[LookToRead_BUF_SIZE]; -} CLookToRead; - -void LookToRead_CreateVTable(CLookToRead *p, int lookahead); -void LookToRead_Init(CLookToRead *p); - -typedef struct -{ - ISeqInStream s; - ILookInStream *realStream; -} CSecToLook; - -void SecToLook_CreateVTable(CSecToLook *p); - -typedef struct -{ - ISeqInStream s; - ILookInStream *realStream; -} CSecToRead; - -void SecToRead_CreateVTable(CSecToRead *p); - -typedef struct -{ - SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize); - /* Returns: result. (result != SZ_OK) means break. - Value (UInt64)(Int64)-1 for size means unknown value. */ -} ICompressProgress; - -typedef struct -{ - void *(*Alloc)(void *p, size_t size); - void (*Free)(void *p, void *address); /* address can be 0 */ - int private; -} ISzAlloc; - -#define IAlloc_Alloc(p, size) (p)->Alloc((p), size) -#define IAlloc_Free(p, a) (p)->Free((p), a) - -EXTERN_C_END - -#endif diff --git a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/anim_data.h b/ANDROID_3.4.5/drivers/video/wmt/bootanimation/anim_data.h deleted file mode 100755 index 1932ee0d..00000000 --- a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/anim_data.h +++ /dev/null @@ -1,911 +0,0 @@ -static const unsigned char __initdata anim_data[] = -{ - 0x21,0x43,0x34,0x12,0x01,0x01,0x01,0x00,0xAA,0x38,0x00,0x00,0x05,0x01,0x00,0x00, - 0x20,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x01,0x02,0x00,0x00,0xD8,0xFF,0x01,0x00, - 0x64,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x7E,0x38,0x00,0x00,0x5D,0x00,0x00,0x40, - 0x00,0x00,0xC4,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6F,0xFD,0xFF,0xFF,0xA3, - 0xB7,0xFE,0xD9,0xBF,0x11,0xE8,0x0D,0x8B,0xC0,0xF6,0x05,0x19,0xBF,0x01,0x86,0x8C, - 0xCB,0xE9,0x9E,0xEA,0x0E,0x25,0xB9,0x55,0xEB,0xCF,0x2E,0x7F,0x12,0xC1,0x7D,0xF3, - 0x20,0x9F,0xCE,0x4B,0xD3,0xA1,0xC5,0x29,0x2E,0x78,0x11,0x91,0x41,0x01,0x5D,0xC2, - 0x66,0xAC,0x26,0xA8,0x42,0xCD,0x15,0xCC,0x13,0xE0,0xEA,0x77,0xC5,0x42,0x67,0xF8, - 0xFF,0x3B,0x44,0xE6,0x50,0xF4,0xDB,0xB4,0x8A,0x44,0x71,0x36,0x27,0xCB,0xE8,0xA3, - 0x23,0x09,0x64,0x82,0x3C,0x54,0x6C,0x86,0x3A,0xE4,0x8C,0x3D,0x85,0x9C,0xEE,0x88, - 0x9A,0x23,0x2F,0xE7,0x15,0x39,0x0E,0x48,0x6B,0x5B,0xA3,0x69,0x8E,0xA9,0xF6,0x30, - 0xC2,0x2A,0x04,0x6C,0x1F,0x9B,0x02,0xC6,0x88,0xFC,0x40,0x8F,0x59,0xE7,0x6F,0x09, - 0x95,0x00,0x16,0xE1,0x6D,0xC4,0x52,0x5F,0x28,0x64,0x9E,0x6B,0xFA,0x9C,0x3C,0x35, - 0x33,0xC1,0x06,0xFB,0xB7,0x79,0x2B,0xAA,0xCE,0xD9,0xA1,0x3E,0x38,0xC7,0xF2,0x53, - 0xFB,0x23,0x82,0x76,0xDD,0x2B,0x3E,0x0C,0x8D,0xA6,0xAC,0xD6,0x27,0x4F,0x24,0xC1, - 0x6B,0x2D,0xF8,0xD1,0xE1,0xE2,0xC2,0x54,0x8D,0x7A,0xC7,0x4C,0x35,0x4B,0x09,0x7A, - 0x73,0xDE,0xB5,0xF1,0xB7,0x11,0xCE,0xAD,0x34,0x7F,0x23,0xC7,0x48,0xC5,0x41,0xB2, - 0x25,0xD6,0x68,0x29,0xD7,0xDA,0x92,0xAF,0x11,0x60,0x07,0xDB,0xCA,0xA1,0x59,0xD4, - 0xF1,0xC2,0x70,0x2A,0xC8,0xDF,0x2B,0xA4,0xD4,0x0B,0x5E,0xFA,0x30,0x27,0x1E,0xDB, - 0x68,0xB0,0xD6,0x25,0x11,0xEF,0xDC,0x48,0xD4,0x1C,0xF7,0xB8,0x7E,0xF0,0xBF,0x2C, - 0x4D,0x61,0xF0,0x94,0x20,0xA2,0x4C,0xF1,0x6F,0x52,0xEC,0x30,0xF0,0x92,0x7D,0xCB, - 0x4A,0x8E,0xA3,0x06,0x6F,0xBB,0x7A,0x6B,0xCB,0x5F,0xE7,0xE4,0x5D,0x3D,0x0B,0x5A, - 0xB5,0xC7,0x81,0x59,0x35,0x72,0x6C,0x21,0xED,0x5C,0xF4,0xBF,0xD7,0xEA,0x20,0xCC, - 0x3F,0x72,0x85,0x51,0xF9,0xE2,0x44,0xB6,0x73,0xD1,0xE0,0x07,0x90,0x41,0x94,0xC5, - 0x40,0xCD,0xBC,0x21,0xD4,0x9D,0x86,0xE5,0x1F,0xDE,0xDE,0x38,0xB3,0x30,0x23,0x15, - 0x6F,0x99,0x4F,0x12,0x12,0x5B,0x39,0x4F,0x98,0x34,0x2B,0x69,0x11,0xBF,0xF8,0x8E, - 0xDD,0x77,0x8E,0x63,0x9F,0xEE,0xD7,0x60,0xE9,0x2B,0x84,0x9B,0x4F,0xDE,0xD5,0x5D, - 0xF6,0x76,0x6D,0x3A,0x0C,0xD3,0x21,0xBA,0x98,0xD9,0x62,0xA4,0xA3,0x88,0xF4,0xB4, - 0x8C,0x2B,0x67,0xE6,0x49,0x0A,0x89,0x72,0x09,0x90,0xAD,0x14,0x31,0xA1,0x18,0x79, - 0xC9,0x6F,0xCF,0x41,0xDD,0x74,0x01,0x43,0x8B,0x38,0x71,0x0B,0xD4,0x23,0x8C,0x4B, - 0x83,0x17,0xBC,0x56,0xEB,0x1E,0x2C,0x7E,0x6F,0x86,0x9B,0x49,0xFF,0x38,0x01,0xC1, - 0xE7,0x2A,0x94,0xA4,0x7D,0x37,0xB8,0xBA,0xE1,0x8F,0xCA,0x0B,0x78,0xC5,0xD2,0x0A, - 0x36,0xA6,0xE6,0xC9,0x92,0x08,0xE5,0x4E,0xCD,0xF2,0xB7,0xB8,0xEF,0xEC,0x9F,0x37, - 0xDC,0x7B,0x24,0x0C,0x6B,0xB4,0xB4,0xAB,0x04,0x5A,0x2C,0x84,0x95,0xC6,0xCE,0x5D, - 0x02,0x2A,0x74,0x78,0xB0,0xDB,0x30,0xFA,0xDA,0x67,0x84,0xF3,0x57,0x8E,0x6D,0x67, - 0x7D,0xAE,0x28,0x03,0x31,0x05,0x0E,0xD4,0x5F,0x64,0x4D,0xC7,0xDE,0x89,0x8D,0xB8, - 0x07,0xC1,0x38,0xE9,0x01,0x53,0x3D,0xEE,0xFB,0x0A,0x0A,0x20,0x6F,0xF3,0x2B,0x83, - 0xD9,0xD4,0x31,0xB4,0x33,0xAD,0x5D,0x74,0xBC,0xF8,0x67,0x3A,0xCC,0x7A,0xA3,0x10, - 0x8F,0x45,0x31,0x34,0x58,0xC3,0x44,0xD8,0x03,0x18,0xF9,0xD2,0xFA,0xC5,0xDB,0x0B, - 0x0C,0xB9,0x15,0x09,0xEE,0xB0,0x07,0x80,0xF6,0x04,0xDF,0x0B,0x41,0x08,0xE0,0x3C, - 0x5E,0xF5,0x82,0xDC,0x20,0x40,0x22,0x96,0x1C,0x31,0xD6,0x4E,0x7C,0x13,0xD8,0x17, - 0xC5,0x1A,0xFB,0xB0,0x7B,0x9B,0xE8,0x45,0xA9,0x53,0x98,0x21,0xB3,0xE8,0xD2,0x3F, - 0xDE,0x4A,0xF2,0xF9,0x0F,0xBF,0xBE,0x62,0x56,0xB7,0x90,0xBA,0xA4,0x43,0x39,0x60, - 0x0A,0x4B,0xCE,0xD2,0x46,0xBC,0x90,0x04,0xE1,0xAD,0x12,0xCB,0xBE,0x17,0xC3,0x9A, - 0x9F,0xE4,0xAD,0x0B,0xE0,0x21,0x6B,0x42,0xD6,0x52,0xBB,0x51,0xFE,0xFB,0x50,0x09, - 0xA3,0x77,0xC7,0x06,0x49,0xDC,0xCC,0x5C,0xBB,0xA8,0x5A,0x87,0x11,0xFA,0x67,0x17, - 0x1A,0x41,0x12,0x71,0x88,0xE1,0x99,0xEC,0xEB,0xE5,0xBC,0x4E,0x8F,0x8F,0x51,0x8E, - 0xFC,0x0C,0xC4,0x5A,0xCB,0x09,0x9A,0xDA,0x24,0xCB,0x13,0xAC,0x82,0x77,0xC6,0x8F, - 0x4C,0x08,0xF4,0xEE,0x80,0x01,0xEF,0xEC,0xE1,0x47,0x22,0xEC,0xEE,0xF9,0x7D,0x56, - 0xAF,0x8E,0xF2,0xF2,0x85,0xA3,0x9C,0xB5,0x1E,0xD7,0xFF,0xB1,0xEA,0x12,0xB5,0xE2, - 0xDF,0x01,0x13,0x3A,0x8F,0xAA,0x67,0x7A,0x06,0xE0,0x7F,0xC2,0xF1,0xF5,0x35,0x3F, - 0x5E,0x68,0x72,0x1C,0x6B,0x49,0x8D,0xD6,0xC0,0xCA,0xCC,0xFF,0xC8,0xD9,0xE2,0x75, - 0x1C,0x50,0x1A,0xEC,0xB0,0xDB,0x7B,0x88,0xD1,0x81,0xE2,0xEA,0xA8,0x1C,0xB2,0x64, - 0xFC,0x3C,0x66,0x40,0xDC,0xB0,0x39,0x57,0x2E,0x80,0x65,0x34,0x0F,0xA0,0xBE,0xFF, - 0x6D,0x5D,0x1A,0xEE,0xF3,0x18,0x77,0x06,0x00,0x49,0x9D,0xDC,0x27,0xD8,0xB9,0x2E, - 0xA5,0xC8,0x52,0x9B,0xBE,0xA1,0x32,0x83,0xA2,0x35,0x1A,0x42,0xA4,0xA8,0x95,0x98, - 0x31,0xE7,0x14,0xFC,0xBA,0xD5,0x70,0x0C,0x33,0x33,0x21,0x30,0xB9,0xD2,0xDA,0x4C, - 0x21,0x05,0xA4,0x0F,0xD2,0x73,0x7D,0xC0,0xD3,0xD3,0xED,0x67,0x11,0x0B,0xD3,0xCF, - 0x9E,0xBE,0xDF,0x91,0x2C,0x3F,0x3D,0x50,0xBF,0x02,0xE2,0xC6,0xC5,0xE0,0xA3,0xB4, - 0x60,0x6A,0x6C,0xC0,0x57,0x7E,0x4B,0x84,0x0B,0x6B,0x4E,0xDE,0x70,0x04,0xED,0xE0, - 0x2B,0xEB,0x95,0xDB,0xDF,0xA6,0x65,0x0C,0xF0,0x90,0x39,0x06,0xE0,0x6D,0xB8,0xDB, - 0x21,0x42,0xA9,0x0F,0x35,0x8C,0x32,0xD3,0xCC,0x1E,0x49,0x3D,0xC9,0xBB,0x04,0x08, - 0x14,0x94,0x9F,0x2A,0x10,0xF9,0x60,0xAE,0x91,0xEF,0x88,0xDA,0x4B,0xA1,0x57,0xDA, - 0xD8,0xD4,0x81,0x67,0x8B,0x4D,0x19,0xCD,0x04,0x0D,0xFE,0x18,0xDD,0x40,0x09,0xCE, - 0x31,0x77,0xEB,0xDC,0xD0,0xB8,0xB1,0x8B,0x31,0x36,0x1A,0xF0,0xD7,0xF3,0xC3,0xD2, - 0x7B,0x37,0xDC,0x34,0xBA,0x31,0xAF,0xC6,0x87,0x4E,0x0B,0x2D,0x30,0x33,0xA9,0xEA, - 0xC2,0x68,0x8C,0xCF,0x41,0xD5,0x93,0x22,0x2A,0x94,0x46,0x6D,0xF7,0x2A,0x89,0x83, - 0x2A,0xD0,0x13,0xE8,0xAD,0xE9,0x82,0x61,0xA4,0xD8,0x94,0xFC,0xFF,0x9D,0x9B,0xD9, - 0x68,0x36,0x8E,0x05,0xA5,0x61,0x9B,0x7C,0x6F,0x01,0x7E,0x90,0xC9,0x57,0x2B,0x6C, - 0x9C,0xC0,0xD3,0xEC,0xB7,0x89,0x43,0x97,0xF5,0xA0,0x64,0x89,0xB1,0x1D,0xF9,0x5A, - 0x69,0x92,0x16,0x3E,0x5E,0x52,0x53,0x78,0x61,0x03,0xFB,0xA3,0x3F,0x97,0x46,0xFE, - 0x98,0xE2,0xB6,0x7B,0x2A,0x48,0x73,0x91,0x11,0xC5,0xF0,0xAF,0xF8,0xE3,0x2E,0xF6, - 0xD8,0x81,0xE7,0xA0,0x44,0x15,0x56,0x19,0x43,0xF0,0xAC,0x40,0x51,0xBD,0x9F,0xFD, - 0x14,0x58,0x63,0x68,0x3A,0x91,0x94,0xF0,0x0F,0x94,0xE8,0xA0,0x8E,0xFB,0xC4,0x46, - 0xF4,0x0F,0xD3,0x92,0xD9,0xCC,0x19,0x6C,0xE9,0x52,0x4A,0x56,0xD5,0x82,0xA7,0x00, - 0x0B,0xB2,0xC9,0x99,0xD8,0xA4,0xA7,0x5B,0xC6,0x99,0xC4,0x87,0xCE,0xE5,0x45,0xE6, - 0xC4,0xBA,0xE1,0x26,0x84,0x03,0x0C,0x34,0x97,0xD9,0xC2,0xE3,0x1C,0xE6,0xF4,0x78, - 0x9F,0x1A,0x29,0xEB,0x5B,0x88,0x85,0x4A,0xE9,0x06,0xEE,0x5A,0x61,0xCF,0x47,0xE5, - 0xA5,0x68,0x99,0xFD,0x58,0x13,0x49,0x96,0xA4,0xA1,0xEC,0xF1,0xB7,0x0C,0x96,0x92, - 0x5D,0xC9,0x46,0x38,0xA3,0x97,0x71,0x92,0x5F,0x5E,0x2D,0xB6,0x8C,0x96,0x0B,0xE6, - 0xF8,0x8D,0x46,0x61,0x78,0xAD,0xD4,0x62,0x2F,0xD2,0x3B,0x0F,0x46,0x65,0x1F,0x3B, - 0x0F,0x2B,0xD3,0x98,0x4D,0x90,0x34,0xD5,0x5E,0x11,0x88,0x93,0x46,0xE8,0x57,0x1A, - 0x47,0xA7,0xDB,0xA9,0xC5,0x5B,0x49,0xAB,0x1A,0x52,0xF4,0xDB,0xE0,0x4E,0x0C,0xA2, - 0x28,0x1C,0xCB,0x04,0xF1,0xCF,0x2B,0x41,0xBF,0x46,0xC5,0x92,0x4E,0x49,0x82,0x5B, - 0xD4,0x36,0x3F,0xFC,0x7D,0xCD,0x8A,0xCB,0xEC,0x75,0xE7,0x2E,0xA9,0x1A,0x5A,0xFD, - 0x4C,0x15,0x0E,0x82,0x2A,0x8C,0x15,0x14,0x5D,0x70,0x70,0xE6,0x05,0xAE,0x5C,0x67, - 0xF7,0xF0,0x09,0x23,0x0A,0x27,0xA0,0x1D,0x7F,0x7D,0x01,0x50,0x7E,0xEB,0x35,0x79, - 0x39,0xA9,0x83,0xCB,0x89,0xDC,0x76,0xB1,0x77,0x96,0x1E,0xF8,0x71,0xD5,0x58,0xD9, - 0x93,0x6E,0x99,0x6A,0xBB,0x89,0x39,0xDF,0x48,0x18,0xDB,0xE7,0xD3,0x78,0x55,0x94, - 0x35,0xAA,0x84,0x1C,0xBD,0xD5,0xF4,0xED,0x94,0x9C,0x23,0x6B,0x48,0xE6,0xB7,0x66, - 0xFE,0x14,0x38,0xCE,0xB1,0x05,0x3D,0xBF,0xC9,0x3F,0x97,0x60,0x3C,0xB0,0xD7,0xD7, - 0x2B,0xAA,0x1C,0x6C,0x03,0x99,0xD9,0x41,0x42,0x4A,0x5F,0xFF,0x6B,0x2C,0x22,0x31, - 0xAE,0x65,0xB8,0xB2,0x70,0x19,0x8A,0xA6,0x2C,0xDC,0xA3,0xF5,0x84,0x8C,0x3B,0x4D, - 0xF6,0xA3,0x65,0x60,0x8E,0x30,0x79,0x51,0x77,0xC0,0x1E,0xCC,0x5D,0xC4,0x31,0x07, - 0xEE,0x28,0xC3,0x1D,0x9C,0xC8,0xD4,0x70,0x51,0xA9,0xE6,0x64,0x78,0x7D,0x6A,0x3A, - 0xE3,0xDE,0xD3,0x08,0x3A,0x01,0x9A,0x01,0x4D,0x81,0x49,0x5B,0xF4,0xEE,0xCE,0x6A, - 0x4C,0x31,0xB9,0x42,0xCC,0x29,0x71,0x08,0x1F,0x15,0xF5,0xCC,0x34,0x24,0xD5,0x93, - 0x18,0x8F,0x04,0x0F,0x7D,0xEB,0xC7,0x09,0x90,0x1A,0xE9,0xC6,0x01,0xDB,0x1A,0x84, - 0x33,0x5D,0x4D,0x04,0x02,0xB9,0xC4,0x8D,0xCA,0xCF,0xC6,0xCE,0x7C,0x61,0x0D,0xFF, - 0x18,0x87,0xEE,0x58,0x81,0xCE,0x13,0x43,0x18,0xA6,0xF2,0x80,0xAB,0x14,0xAF,0x49, - 0x60,0x34,0x4A,0xE4,0x6B,0x31,0xCD,0x6E,0x17,0x0D,0x6D,0x52,0xC6,0x47,0x66,0x1B, - 0x44,0x59,0xD7,0x49,0x2E,0x94,0x65,0x88,0x09,0x38,0x52,0xC5,0x94,0x98,0x84,0x1F, - 0xDD,0xFF,0xE9,0x47,0x2C,0xB7,0xE7,0x94,0x6A,0x9D,0x56,0x9F,0xAE,0xBC,0x2E,0x3E, - 0x97,0x15,0xA1,0x29,0xA2,0xB4,0xD5,0x8A,0x60,0xFA,0xB0,0x08,0xBD,0xF7,0xD4,0xDC, - 0x92,0x40,0x5B,0x85,0x75,0x50,0x0F,0x42,0x45,0x3D,0xEF,0xE9,0x9B,0xF9,0x09,0x5C, - 0x63,0xD3,0xF5,0x93,0xFE,0xC5,0xA0,0x1E,0x39,0xCC,0x98,0x40,0xC1,0xEE,0x21,0x7E, - 0x20,0xFD,0xBD,0xF7,0xEE,0xC6,0x9D,0x3B,0xD1,0xD7,0x73,0xCB,0x07,0x97,0xF9,0x0E, - 0xBB,0xBA,0x79,0xD0,0x23,0xE7,0x36,0x0F,0xE0,0x9A,0x15,0x79,0x6A,0x6A,0x37,0xFB, - 0xC9,0x20,0x7D,0xFD,0x39,0x6F,0x79,0x2F,0xD0,0x24,0x94,0x41,0xE3,0xA3,0x68,0x0A, - 0xDD,0x15,0x22,0x9C,0xC9,0x87,0xD6,0x4F,0x08,0x4C,0xDA,0x3F,0x9B,0xBC,0x40,0x9A, - 0x08,0xAE,0xBB,0x07,0x41,0xEC,0x75,0x2B,0x90,0xA9,0x0D,0x9A,0xBF,0x98,0xCC,0xB3, - 0x15,0x4B,0x3A,0x6A,0x00,0x59,0xB4,0x85,0x17,0xB8,0xAE,0xA5,0xDB,0x79,0xB7,0x6D, - 0x92,0x30,0x7B,0xF4,0x37,0xA3,0x4E,0xDE,0x7D,0xF7,0xFC,0x7B,0x72,0x30,0xD0,0x11, - 0x1F,0x05,0xD8,0xF4,0xD8,0xAE,0x6E,0x52,0x5A,0xFF,0xF4,0xE3,0xCF,0x92,0xA0,0x90, - 0x76,0xCC,0xFB,0xFF,0x60,0xEF,0xAE,0xF6,0x86,0x50,0x36,0x5C,0x56,0x86,0x00,0x37, - 0x2F,0xB1,0xAD,0xA7,0x0C,0xFA,0xE1,0x74,0x93,0x5C,0x63,0xB2,0x52,0xE3,0xBA,0x1D, - 0x2C,0x83,0x5C,0x00,0x5A,0x7C,0xB2,0x12,0x4C,0x7D,0x81,0x45,0x30,0xD0,0x53,0xE1, - 0xD7,0x9F,0x02,0xC3,0x2A,0xB9,0x9A,0x9E,0x61,0xBD,0x6C,0x3B,0x0A,0xA7,0xB3,0xF9, - 0xFB,0x51,0xB7,0x33,0x26,0x77,0x4F,0x78,0x3E,0xA0,0xF9,0xA2,0x15,0xEA,0x3E,0xFF, - 0x48,0x5A,0x4B,0x05,0x3A,0xFF,0x28,0x24,0x18,0x7F,0xF9,0xF9,0x69,0x5C,0x01,0xC7, - 0x5F,0xB7,0x78,0xD2,0x3D,0x7F,0xF0,0x07,0xD0,0xCC,0x4C,0x42,0x9C,0x87,0xC9,0x12, - 0xDB,0x45,0x8B,0xC1,0x26,0x00,0xE4,0x47,0x01,0x81,0x5B,0x3F,0x38,0x2B,0x70,0x18, - 0x15,0x86,0xC5,0x9C,0x22,0x0B,0xE6,0x93,0x99,0x7B,0x32,0xB9,0x1A,0xA6,0x4B,0x6F, - 0xAA,0xEC,0x06,0xFA,0x8B,0xCD,0xEE,0x80,0xB2,0xE7,0xE0,0x5F,0x5F,0x09,0x33,0xBD, - 0x18,0x5B,0x90,0xEA,0xD1,0x4A,0x27,0xC3,0xD0,0x64,0x8A,0x03,0x8E,0x53,0x13,0xDD, - 0x96,0x61,0x4E,0xC0,0xCE,0x3A,0xA2,0x54,0xBB,0x56,0x6C,0x91,0xF9,0xF8,0xD5,0x35, - 0x86,0xE1,0xA0,0x8C,0xBA,0xDB,0x79,0xF4,0x22,0xC5,0x4A,0x1E,0x99,0x74,0x49,0x94, - 0xDE,0x64,0x1F,0x0F,0x6E,0x4A,0x5F,0x07,0xB9,0xBE,0xE0,0xCE,0x07,0xF9,0xA1,0x7A, - 0xA3,0x91,0x4B,0x0E,0x64,0xED,0x06,0xAE,0x98,0xC8,0xBA,0xB5,0x00,0x38,0xA7,0xE3, - 0x68,0xAD,0x2F,0x5A,0xAF,0xD8,0xDE,0x21,0xF1,0x0D,0x6A,0x00,0xEF,0x7F,0x9B,0x94, - 0x6A,0xE5,0xEC,0x2B,0xA3,0x4F,0x2D,0x7F,0xD4,0x26,0x87,0x98,0x66,0x76,0x2B,0x2C, - 0xFC,0x11,0x62,0x0D,0xEB,0x1C,0xE9,0xA7,0x97,0xAC,0x4D,0x24,0xB7,0x5A,0x87,0x1D, - 0x30,0xF8,0x38,0xE3,0x59,0x5A,0x61,0xA0,0x67,0x6A,0x15,0x56,0x25,0xA6,0xFC,0x0E, - 0x51,0x55,0xDB,0x5C,0xE0,0xFC,0x59,0x78,0x76,0x27,0x07,0x68,0xEF,0xF4,0xDA,0xBA, - 0x52,0x7E,0x5F,0xA9,0x2E,0x21,0x9C,0xBD,0x6B,0xBB,0x64,0x27,0x66,0x0B,0x63,0xC2, - 0x3C,0x77,0xA9,0x9B,0x2C,0x48,0x93,0xF5,0xC9,0x48,0x2C,0x70,0x05,0xA0,0x75,0x81, - 0x0E,0xBD,0x21,0x54,0x68,0xC4,0x93,0x78,0x77,0x1D,0xCD,0x90,0x92,0x99,0x53,0x94, - 0x82,0xFE,0x09,0x0C,0x77,0x2D,0x3F,0x30,0xFF,0xF1,0xC0,0x0D,0xEC,0xC4,0xBA,0xFD, - 0x94,0x50,0xB7,0x15,0x51,0x09,0xB5,0xD0,0x7C,0x1E,0xF8,0x1B,0xD1,0x89,0x45,0xD6, - 0x59,0x56,0xDA,0x69,0x39,0x1A,0x75,0x6C,0x79,0xDE,0xD0,0x42,0x45,0xC0,0xCC,0xDC, - 0x20,0x7E,0x69,0x6A,0xAC,0xCA,0x46,0x7C,0xB9,0xB6,0x4A,0xC8,0xD8,0x22,0x99,0x63, - 0xF1,0x76,0x06,0x39,0x8F,0xCA,0xC6,0xA5,0x9E,0x59,0x43,0xDE,0xDF,0xCA,0xE8,0x07, - 0xAC,0x83,0xC5,0xD1,0xB7,0xF4,0xF2,0x1E,0xAD,0xFB,0x6C,0x30,0x4C,0x26,0xE5,0xEB, - 0x6E,0x02,0x0A,0xE0,0xC9,0x22,0x93,0xED,0x64,0x98,0x09,0x2A,0x1E,0x01,0x95,0x2B, - 0x00,0xE3,0xDC,0x62,0x25,0x75,0xC7,0x6C,0xB7,0xC7,0x60,0xE1,0x63,0x2A,0x8D,0xB1, - 0xBE,0x6C,0xE7,0x80,0xC0,0x03,0x4F,0x45,0x8A,0xE3,0x13,0x4C,0xB9,0x10,0xD1,0x98, - 0x4B,0xCE,0x94,0x6D,0x03,0x50,0x53,0x16,0xEC,0xEA,0x35,0x6F,0x90,0xE0,0x00,0x83, - 0x55,0xC3,0xAF,0x72,0xFD,0x78,0xC3,0xA5,0xE2,0x77,0xB4,0x00,0xED,0x21,0x1D,0x8B, - 0xB3,0xD2,0x0E,0x95,0x88,0x54,0x05,0xD9,0x4E,0x9D,0x4D,0x9B,0xFB,0x77,0x9C,0x6B, - 0xCF,0x0A,0x0F,0x86,0x9C,0xFE,0x5B,0x4A,0xD3,0x94,0xF9,0x24,0xE1,0x26,0x4E,0x4E, - 0xC7,0x0A,0x59,0x2E,0xF8,0x03,0x2E,0xA2,0x4E,0x7C,0x43,0x54,0x8B,0xAA,0x4A,0x55, - 0xF2,0x35,0xFD,0xAC,0xC0,0xCB,0x4A,0x8C,0x52,0x80,0xB8,0x70,0x4F,0x70,0x0D,0xE2, - 0x48,0x42,0x50,0xA5,0x9A,0x86,0x5D,0x3F,0xD9,0x33,0xE5,0xCE,0x85,0x35,0x72,0xD3, - 0xF5,0x40,0x3D,0x2C,0x42,0x3E,0x02,0x0B,0x98,0x81,0x59,0x03,0x4E,0x48,0xA0,0xC7, - 0xA2,0xC0,0xA5,0x3B,0x3C,0xB5,0x88,0x36,0xDC,0xDA,0x48,0x51,0x1A,0x5E,0xF7,0xB6, - 0xD9,0x7E,0xA2,0xEB,0x94,0xD9,0xA6,0x32,0xC6,0x55,0x74,0x63,0xE2,0xCB,0xB0,0x90, - 0xEF,0xBA,0xA4,0x1C,0x85,0xB6,0x9C,0x2B,0x79,0x20,0xCD,0x71,0xD9,0x01,0x05,0x42, - 0x4F,0x6F,0x4E,0x7C,0x09,0x62,0x0C,0x69,0xC7,0x4B,0xC2,0x9D,0xE2,0x36,0x59,0xBE, - 0xC1,0xE0,0xA8,0x10,0xAD,0x49,0x9D,0xEB,0x1A,0xB0,0x58,0x74,0x66,0xCF,0x32,0x5F, - 0xD0,0x0A,0x24,0x27,0x73,0x1C,0x36,0x61,0x3A,0xEE,0x7C,0xD7,0x68,0xAB,0xBF,0xEF, - 0x6A,0x65,0xA6,0xCC,0x1C,0x83,0x50,0x11,0x69,0x6E,0x8A,0x2C,0xBC,0xE8,0xDC,0x5A, - 0x62,0x41,0x2B,0x93,0xA0,0x97,0x2E,0xFA,0xE2,0x1B,0x39,0x37,0x61,0x38,0xD9,0x3D, - 0x37,0x8D,0x30,0x3A,0xF6,0x19,0x3D,0x0A,0xCC,0xED,0xD6,0x92,0xA2,0x4A,0xF4,0xD7, - 0x94,0xEC,0x5F,0xC8,0x65,0x78,0x9F,0xC3,0x1F,0x84,0x7D,0xB1,0xDC,0x9B,0x32,0x79, - 0x66,0xF2,0x55,0x42,0xA7,0x73,0xFA,0x7A,0xBF,0xFA,0x8B,0x24,0xBE,0x15,0x7F,0xA5, - 0x1D,0x05,0x0C,0xA8,0x35,0xB2,0x37,0xAC,0x58,0x28,0x24,0x97,0xD2,0x49,0x32,0x3D, - 0x6E,0xA4,0xCB,0x0B,0x79,0xF7,0x1B,0x10,0x7D,0xA4,0xAD,0x3E,0xDB,0x99,0xE1,0x37, - 0x0C,0x71,0x90,0x95,0x4A,0x4A,0xE2,0xA6,0x31,0x68,0x94,0xC5,0x13,0xA7,0xF4,0xAE, - 0x4D,0xF9,0xEC,0x3C,0x80,0x30,0x0A,0x29,0x9E,0x79,0x0A,0x9C,0x42,0xFE,0x1E,0x2F, - 0x02,0x6D,0xBA,0xF0,0xA3,0x9B,0x89,0xE8,0x56,0xA2,0xB9,0xBE,0xFC,0xC6,0xFE,0x16, - 0xDF,0x82,0xCD,0x36,0x18,0xA1,0x23,0x44,0x31,0x64,0xBB,0x8C,0x6D,0x3D,0xCD,0xBF, - 0xC9,0xB3,0xA4,0x15,0xF4,0xA9,0x83,0xD1,0x8B,0x30,0xFB,0xBD,0x32,0xA0,0xC2,0x8E, - 0xD0,0x0A,0xFC,0xB2,0x99,0x61,0x4C,0x55,0xEF,0x40,0x95,0xD3,0x8F,0x4B,0x0A,0xC3, - 0x25,0x21,0xAA,0x4F,0xFD,0xF5,0x57,0x22,0x6E,0x5C,0xD2,0x01,0xA6,0x4D,0xDD,0x92, - 0x7A,0x9D,0xC7,0x38,0x14,0xDF,0x05,0xCF,0xBD,0x95,0x3F,0xC9,0x17,0x44,0x6B,0x6F, - 0x30,0x02,0xB2,0xCE,0xA2,0x21,0xB8,0x4C,0x07,0x18,0x3A,0x45,0xE9,0xC8,0xFE,0x0F, - 0xDB,0x29,0x25,0x1F,0x58,0x56,0x08,0x4F,0x1A,0xF6,0x74,0xEF,0x92,0xD1,0x29,0x24, - 0xC7,0xCD,0x5C,0x22,0x19,0xD3,0x50,0x77,0xC0,0xE8,0x2A,0x5E,0x94,0x3F,0xC8,0x61, - 0x4E,0x89,0x33,0xB0,0xA3,0xFA,0xB9,0x60,0xCB,0x83,0x81,0x5C,0x52,0x4E,0xC0,0xE5, - 0x92,0x80,0x9F,0x37,0x93,0xD4,0xDA,0x9B,0x5C,0x3A,0x69,0x5D,0x19,0x81,0x9F,0x9F, - 0xB7,0xD1,0x8D,0xCF,0xA2,0x9A,0xF7,0xCD,0xAB,0x66,0x6E,0x68,0x93,0x38,0x0A,0x1E, - 0x0B,0x3D,0xCC,0x0C,0xA9,0xDF,0xDE,0x38,0xF2,0x87,0x3E,0xCE,0x50,0x4A,0x36,0x02, - 0xD2,0x85,0xD8,0x2A,0x7E,0x1F,0x72,0xAD,0x5F,0x9E,0x28,0xC0,0xE0,0x74,0xC3,0x53, - 0x7A,0x94,0x49,0xD8,0x6C,0x38,0x06,0xCC,0x15,0x44,0xED,0x76,0x87,0x9D,0x1D,0x82, - 0x33,0x55,0xD3,0x3A,0x6F,0x25,0x28,0x2E,0x2D,0xE6,0xAE,0x1F,0xA5,0x4C,0x53,0x19, - 0xE4,0xFD,0x6B,0x62,0x88,0xAA,0xD0,0xC3,0x68,0x58,0x75,0x78,0xB9,0x9F,0x07,0x61, - 0xFE,0x90,0xE4,0x5F,0x5C,0x1E,0xE4,0x35,0xA6,0xED,0x4E,0xFD,0x1C,0x28,0xEE,0x2E, - 0x34,0x35,0xFE,0x0B,0x64,0xB4,0xB8,0x93,0xBF,0x44,0x92,0x67,0x0E,0x8E,0x85,0x67, - 0xD7,0x5F,0xF0,0x1A,0x65,0x7C,0x6E,0xB0,0x01,0xA8,0xCA,0x86,0x10,0x62,0xDB,0x02, - 0x2F,0x93,0x37,0x07,0xE1,0xBA,0xA9,0x09,0x80,0x6A,0x01,0xE5,0x76,0x8B,0x52,0x8F, - 0x00,0xC7,0x60,0xEF,0x04,0x4E,0xE6,0x40,0x9D,0xA8,0xDA,0x5B,0xD8,0xD7,0x98,0x39, - 0xE8,0xB9,0x26,0xCE,0xBE,0xCA,0x30,0xB9,0x11,0x8B,0xEF,0x82,0x37,0x70,0xDC,0xDF, - 0xC9,0x40,0x10,0xA1,0x28,0x69,0x82,0x64,0x39,0xAF,0x2D,0xD3,0x03,0x91,0x5A,0x86, - 0x55,0xFC,0xF0,0x55,0x2E,0xEC,0xD8,0x74,0x67,0xF7,0x9C,0x4C,0xB6,0x57,0xAF,0xEC, - 0x6A,0xE4,0x4B,0x73,0x89,0x3C,0xFE,0x63,0x99,0x3A,0xFF,0xC8,0x21,0x58,0x96,0x24, - 0xCA,0x11,0xCB,0x71,0x50,0xC9,0x7A,0xBB,0xBB,0x0F,0xFA,0x24,0x3C,0x34,0xBB,0x4E, - 0xAB,0x37,0x92,0xB9,0x63,0x88,0x5C,0x06,0xB0,0xF0,0x7B,0xD7,0x0C,0xFD,0xB6,0x0B, - 0x5F,0x78,0xE7,0x9D,0x06,0x7D,0x46,0x59,0x44,0xDD,0x31,0x91,0xC7,0x12,0x80,0xA4, - 0x33,0x23,0xFC,0xAE,0x62,0xE2,0xE8,0x85,0x3E,0x9C,0x4A,0xC9,0x61,0x9D,0x0D,0x65, - 0x61,0x72,0x45,0xF1,0xCF,0xA2,0x7F,0x9D,0xC3,0x04,0xB2,0xA5,0x68,0x3E,0xE1,0x56, - 0xE9,0x49,0x00,0xBF,0x19,0xCB,0x75,0xFB,0xCB,0x05,0x73,0x50,0x7E,0xB2,0x24,0x95, - 0x0E,0x9D,0x3D,0xA6,0xF3,0x09,0x5C,0x43,0xE8,0x6C,0xFD,0x68,0x8C,0x2F,0x64,0xCD, - 0xD3,0x4B,0x7E,0x66,0x70,0xB7,0xB2,0x76,0xF3,0xE2,0x63,0x92,0x0F,0x45,0xFE,0x9C, - 0xFB,0xD4,0x30,0xC7,0x93,0x77,0xEF,0x98,0xBE,0x66,0x56,0x51,0xB6,0xA3,0x7E,0xC7, - 0xBB,0x4D,0x7A,0xFD,0xCB,0x13,0x01,0x05,0x8C,0x96,0x06,0xF6,0x37,0x1E,0x78,0x70, - 0x13,0xCC,0x00,0xC3,0x7F,0xB8,0xA5,0xF3,0xB5,0xB3,0x4E,0xD9,0xAB,0x2E,0x1E,0xFE, - 0xA9,0x2D,0x4B,0xA5,0x9F,0xEB,0xD5,0x07,0x13,0x3D,0xAB,0xA4,0x1B,0xC2,0xD3,0xB3, - 0x57,0x41,0x96,0xBC,0x5D,0x4F,0xC3,0x5F,0x07,0x06,0x25,0x65,0x19,0xF6,0xD4,0x0D, - 0x40,0x66,0xA8,0x01,0x62,0x83,0xC7,0xCD,0xA8,0xCE,0xFE,0x03,0x6C,0x58,0x81,0x38, - 0x80,0xA9,0x0E,0x75,0x5A,0x23,0x41,0x8C,0x20,0x62,0xCA,0x69,0x1A,0x33,0x62,0x0E, - 0x0B,0x80,0x6E,0xD5,0x85,0x21,0xEB,0xBE,0xC0,0x3E,0x6A,0xC7,0x92,0x51,0xE6,0xDE, - 0x74,0x63,0xB7,0x01,0x22,0x59,0xB5,0x39,0x8B,0xF4,0xF1,0x0E,0x93,0xBB,0x7F,0xA8, - 0xAE,0xF2,0xD7,0x9B,0x5A,0xA4,0xFC,0x2D,0xE5,0x5F,0x0D,0x46,0x3F,0x1D,0x2B,0x5A, - 0xBC,0x3A,0x7D,0x00,0xAC,0x2B,0x38,0x75,0xF6,0x05,0x70,0xFE,0xD7,0xC6,0x2E,0x19, - 0xF9,0xDF,0xFA,0x77,0xB3,0x24,0xB8,0xB5,0xFF,0xD3,0x2C,0x06,0xD4,0xEA,0x25,0xDB, - 0x85,0xC9,0xC3,0x59,0x2C,0x90,0x42,0xB9,0x1F,0xB1,0xAB,0x64,0x55,0x25,0xAD,0xD3, - 0x82,0x5F,0x1B,0x53,0x2B,0xF1,0x51,0x7C,0xFE,0x64,0x02,0x0C,0x72,0x5F,0xD0,0x51, - 0x36,0x58,0xA3,0xED,0x44,0x59,0x3F,0xDD,0x75,0xEE,0x21,0xF0,0x97,0x3D,0x05,0x38, - 0x7D,0x29,0xF9,0x88,0x3A,0x42,0x76,0x0C,0x67,0x6F,0x61,0xAB,0x99,0xA2,0x87,0x58, - 0x74,0x2A,0x1F,0x42,0x25,0x02,0xED,0xD5,0x46,0x99,0x13,0xAE,0x91,0x86,0xAF,0x71, - 0x95,0xE6,0x93,0x12,0x51,0xF2,0xAA,0x44,0x79,0xE9,0x5B,0x58,0xEE,0xE0,0x9F,0x25, - 0x25,0xCC,0x39,0xA1,0xCF,0x11,0x98,0xBB,0x2E,0x82,0xBD,0xDE,0x05,0x53,0x50,0x1A, - 0xFC,0x1B,0x9C,0xE5,0x58,0xF4,0x8D,0xF7,0x6A,0xA3,0xDD,0x68,0xF2,0x42,0x3A,0xE2, - 0xF3,0xAB,0x7D,0x12,0x5F,0x0C,0x92,0x30,0xE8,0xB5,0xD7,0x22,0xEB,0x70,0x37,0x8B, - 0x5B,0xE4,0x6D,0x90,0x28,0x14,0x79,0xE4,0x32,0xDD,0x2F,0xE4,0x87,0x8F,0xE8,0xAD, - 0x3F,0x32,0x42,0x88,0x23,0xA5,0xB6,0x1A,0xD6,0xD4,0x7C,0x47,0xB4,0x19,0x91,0x5D, - 0x40,0xE6,0xAA,0x32,0x65,0x85,0xD6,0x95,0x77,0x57,0x65,0x82,0xCF,0x40,0xFF,0x02, - 0x50,0x30,0x81,0x5B,0xD1,0xDE,0x41,0x5D,0xB9,0x7B,0xC7,0xE1,0xFD,0xE0,0x41,0xFF, - 0x9B,0x66,0x42,0x4A,0x1B,0xAE,0xF6,0xA1,0x2A,0x4F,0x55,0x94,0x73,0x3C,0x05,0x24, - 0x4E,0xDE,0xBF,0xCC,0xCE,0x02,0xD1,0x16,0xFD,0x81,0x16,0x57,0xF4,0x94,0x2C,0x6C, - 0x85,0xAC,0x85,0x27,0xB1,0x1E,0x00,0x07,0x63,0xE0,0x0B,0x01,0xFC,0xCF,0x2D,0x40, - 0x44,0xB2,0x74,0x5B,0xAA,0xED,0x7A,0xB8,0x91,0x3B,0xBE,0x92,0x10,0x02,0xC9,0xDF, - 0xDB,0x1A,0x87,0x84,0x14,0x61,0x89,0x34,0xD1,0xB4,0x67,0xC2,0x3A,0xBC,0x36,0xE3, - 0x76,0x3B,0xD3,0x0F,0xDB,0x49,0x1C,0x3D,0x87,0xB2,0x8A,0xF9,0x4D,0x19,0x29,0x07, - 0x36,0x1C,0x1D,0x8C,0xD8,0x61,0xD3,0xE3,0x7D,0xA7,0xC6,0xC1,0x64,0x07,0xA2,0xDE, - 0x87,0x0C,0x77,0x82,0xD0,0x96,0x28,0x17,0x82,0x3D,0x88,0xBB,0x4D,0x47,0x08,0xEF, - 0x29,0x42,0xA7,0x54,0x9F,0x12,0xB8,0xDD,0x89,0x61,0x94,0xB1,0xF4,0xCE,0x5D,0x42, - 0x1F,0x23,0xC0,0x88,0xDB,0xDA,0xCC,0xA3,0x17,0x20,0x1B,0x8B,0x17,0xE7,0xE5,0x7F, - 0xC4,0x4D,0xBA,0xC8,0xE4,0x89,0x99,0x00,0x06,0x7E,0x45,0xF3,0x96,0x09,0xB8,0x3E, - 0xE4,0x74,0x58,0x91,0x7E,0xC7,0x92,0x18,0x28,0xC5,0xF2,0xA8,0x87,0x6E,0x11,0xFB, - 0x20,0x57,0xD7,0x33,0xBF,0x4B,0x47,0xE9,0xCD,0xF3,0xF2,0xE4,0x95,0xBE,0x5A,0x0B, - 0x70,0x70,0x51,0x71,0x4E,0x85,0x1E,0x46,0xE5,0xE4,0xE8,0xF2,0x60,0xC0,0x72,0xDA, - 0x1C,0x74,0xFE,0xC1,0xD8,0x37,0xB4,0x54,0xBE,0xA9,0x59,0x79,0xFD,0xFD,0x31,0xC6, - 0xB3,0x57,0x9D,0xAB,0xAE,0x0E,0x42,0x91,0x2C,0x44,0x41,0x61,0x07,0x0D,0x7B,0x4F, - 0x8A,0xD3,0x35,0x1F,0x7E,0x53,0x96,0xE5,0x2A,0x0E,0x02,0xEF,0x87,0xEB,0x83,0xD6, - 0xA7,0xA2,0xF8,0x16,0x26,0x96,0x60,0xA1,0x3F,0x60,0xD1,0x6C,0x4A,0x69,0x99,0xD8, - 0x91,0x40,0xCB,0x76,0x5C,0x59,0x62,0x4A,0xF1,0xF0,0x87,0xF5,0x0D,0x15,0x54,0xBD, - 0x54,0x1D,0xB5,0x7A,0x22,0xE2,0x5F,0x7A,0x35,0x7E,0x6C,0x77,0x56,0x93,0xEE,0x24, - 0x74,0xFF,0xDB,0x63,0x16,0x80,0x62,0x48,0xD5,0x51,0x45,0xAB,0xDA,0xFF,0x6F,0xAF, - 0x93,0xDA,0x47,0xD4,0xCA,0x17,0x47,0x28,0x29,0x40,0x83,0x05,0xD0,0x52,0xB5,0xF7, - 0x74,0x6F,0x0D,0xAB,0x36,0xD3,0x89,0x1F,0x52,0x97,0xFE,0x02,0x8E,0x2D,0x44,0x14, - 0x52,0x25,0x64,0xAB,0x22,0xE1,0x16,0x16,0x32,0x4A,0xBF,0x09,0x06,0x5C,0x55,0x85, - 0x02,0x44,0x16,0x02,0x68,0x46,0x74,0x2E,0x53,0x59,0x18,0xA3,0x4B,0x55,0x49,0xF5, - 0x3A,0x74,0x1F,0x4B,0x90,0x56,0xE4,0x72,0xB2,0x54,0x16,0x41,0x8F,0x52,0x9D,0x7D, - 0xC8,0x19,0xCC,0xE8,0xC7,0x9C,0x1A,0x30,0x67,0x93,0x3E,0x38,0x7E,0xC4,0x1F,0x73, - 0x0C,0x1D,0xF4,0x37,0x4C,0x57,0x52,0xDA,0x88,0xB3,0xBB,0x85,0x1F,0x1D,0x6D,0x0B, - 0x6E,0x6A,0xB8,0x7D,0xEB,0x6B,0x46,0x22,0x9A,0x2E,0x39,0x86,0x0B,0x50,0x95,0xCE, - 0xB1,0x8F,0xDE,0x34,0x7B,0x1D,0xD7,0x8E,0xD8,0xEB,0x78,0xBE,0x8B,0x3D,0x1A,0xDA, - 0x83,0xD4,0x8F,0xBD,0xCE,0xF9,0xD9,0x1D,0xE1,0x06,0x16,0xDA,0xA3,0xFD,0x91,0x5E, - 0x02,0xB5,0xFD,0x2A,0x26,0x5A,0x1E,0xA4,0x06,0x39,0xD4,0xF7,0x17,0x44,0xC9,0x93, - 0x54,0x59,0x0C,0x8C,0xF2,0xC9,0xFD,0xF3,0x29,0xE2,0x18,0x3D,0xA5,0x7A,0x7F,0x3F, - 0x27,0x16,0xAE,0x89,0x08,0x7D,0xAA,0xDE,0x2F,0x2D,0xA8,0x45,0xC6,0xAC,0xD0,0xCD, - 0x92,0x83,0x18,0x53,0x00,0xC7,0x41,0x7D,0xF2,0x80,0xF8,0x5D,0x83,0xE4,0xA1,0x61, - 0x64,0xC5,0x1F,0x8D,0xA8,0x3F,0xF9,0x4A,0x0B,0xB0,0x45,0xB9,0xD1,0xBA,0x79,0xCB, - 0xD9,0x67,0x86,0x2C,0x5A,0xB2,0xAE,0xAE,0xE6,0x0A,0x9F,0xA6,0x13,0x00,0x54,0x21, - 0xEF,0x0E,0x34,0x51,0xE7,0xF3,0x20,0x8C,0x65,0x42,0xE4,0xAC,0x3A,0xC4,0xD2,0x8B, - 0x54,0x04,0x3C,0xB4,0xDB,0x9F,0x0D,0x13,0x5E,0x66,0x0A,0x0D,0xAD,0x8E,0x97,0x36, - 0x8E,0x06,0x6F,0x1A,0x63,0x3F,0x84,0xAE,0xC1,0x84,0xF5,0x7D,0xC9,0xCB,0x49,0x79, - 0xF6,0x64,0x0A,0xC0,0x70,0x60,0x84,0x53,0x71,0x11,0xA8,0x3B,0xB2,0xA2,0xA0,0x05, - 0x5E,0x9D,0x30,0x64,0x5F,0xB7,0x21,0x7B,0xAE,0x78,0x88,0x5B,0xE9,0xE6,0xCA,0xBF, - 0x0B,0x5D,0xFF,0x81,0x5F,0xA6,0xDA,0x3D,0xC3,0xCD,0xB8,0xFF,0x7E,0x4A,0x57,0xAB, - 0x97,0x33,0xE8,0x3E,0x28,0x15,0xF5,0x7E,0x68,0x71,0xDA,0x02,0xEC,0x2A,0x8D,0xF9, - 0x20,0x78,0xF5,0x56,0x22,0x4B,0x0C,0x50,0xCE,0x5F,0x42,0xEA,0xB7,0x74,0x3D,0xC2, - 0x5B,0xE2,0x10,0x49,0x62,0x33,0x69,0xAA,0x7A,0x83,0x5D,0x81,0x48,0x43,0x7E,0x26, - 0xE2,0x34,0xF4,0x24,0x70,0xDC,0x77,0x11,0xFF,0x48,0xC9,0x5F,0x89,0x33,0x61,0xFD, - 0x18,0xB3,0x98,0x3B,0x17,0x8E,0xB1,0xB1,0xF7,0x14,0xBD,0x73,0x95,0x42,0x02,0x6A, - 0x27,0xDA,0x44,0x42,0xE2,0xE0,0x2C,0x6B,0x20,0xC5,0x82,0x09,0x22,0x99,0x4A,0xE1, - 0x85,0xAA,0xD0,0x36,0x11,0x81,0x18,0x70,0x29,0x22,0x27,0xD5,0x04,0x3E,0x7B,0xD3, - 0xFB,0x12,0x97,0xFA,0xBD,0xF5,0xF0,0xBA,0xBB,0x20,0x7B,0xC8,0x1E,0x30,0xA9,0x96, - 0xC6,0xD9,0x95,0x6B,0xD1,0x4C,0xA7,0x46,0x58,0x3C,0x29,0x2B,0x8F,0x77,0x39,0xB5, - 0x9D,0x48,0x73,0x35,0x16,0x82,0xEC,0xBC,0x17,0x2C,0xA5,0x6B,0xA8,0x86,0x28,0x94, - 0x81,0x5F,0x47,0xC9,0xE1,0x7B,0x5B,0x26,0x42,0xC2,0xF9,0xF7,0x43,0xA4,0x97,0x37, - 0x2C,0x36,0x82,0x23,0xAD,0x85,0x4B,0xE4,0xBC,0x2B,0xAA,0xCB,0xD4,0xD5,0xFF,0x78, - 0xCA,0xD9,0x19,0x76,0xEA,0x63,0x81,0x1B,0x24,0xC4,0xD8,0x06,0x61,0xEF,0x4F,0x8B, - 0x3D,0x7A,0x28,0x33,0x5D,0x83,0x8F,0xB1,0x8E,0x57,0x10,0xAB,0x84,0x2A,0x48,0xC8, - 0x8C,0x95,0xE2,0x4B,0x67,0x87,0xD8,0x17,0x5A,0x06,0xAB,0xF9,0xD4,0xC8,0xBB,0xAC, - 0xF2,0xBA,0xD2,0x71,0x23,0x3B,0xDA,0x82,0xE0,0x0F,0x40,0x6E,0x8D,0x84,0x7D,0x6C, - 0xA8,0xFE,0xFC,0x3B,0xE1,0xA4,0x66,0x2A,0x8F,0x46,0xDC,0x89,0x6B,0x3A,0x15,0xEB, - 0xB1,0x3F,0x09,0x8C,0x2F,0xE7,0x74,0x8C,0x13,0x4B,0x5B,0xA7,0xCC,0x72,0xF1,0x26, - 0xA9,0x32,0xF6,0x9C,0xC2,0xF6,0x57,0x6A,0xEB,0x42,0xAD,0x31,0xF2,0xD8,0x02,0x2D, - 0x13,0xA4,0x1C,0xE4,0x02,0x08,0x5D,0x89,0x12,0xCF,0x7E,0xF8,0xFA,0xB1,0xBB,0x79, - 0xA0,0x8A,0x24,0x7C,0xB9,0xCE,0x07,0x3D,0x6E,0x85,0x53,0xCC,0x66,0xC9,0xAE,0xC0, - 0x94,0x75,0xAB,0xFF,0xE3,0x2D,0x2C,0xC9,0xC9,0x37,0x17,0x17,0xDF,0x4D,0xED,0x56, - 0xE3,0x6E,0xF4,0xF9,0x24,0xDC,0x42,0x99,0xCD,0x6A,0x61,0x4F,0x54,0x9E,0xCC,0x98, - 0x91,0x73,0xD4,0x7F,0x22,0xB6,0xB0,0x40,0x09,0x18,0x10,0x60,0x9A,0x3C,0xFB,0x53, - 0x1A,0x0A,0x4A,0x78,0xA8,0x91,0x64,0x6F,0x2F,0x5F,0x44,0xD8,0x27,0x87,0xB7,0x51, - 0x43,0xE5,0x00,0xAC,0xC2,0x79,0x33,0xC9,0xC1,0xD1,0xD8,0x37,0x85,0xDC,0x80,0xFD, - 0xF0,0xB2,0x89,0x93,0xE0,0x71,0x5B,0x72,0x3C,0xD3,0xBB,0xE4,0xA5,0xCD,0x13,0x7C, - 0x90,0x5D,0x17,0x81,0x8D,0xD4,0x50,0x26,0x4D,0x16,0x19,0xB8,0x47,0x93,0x14,0x24, - 0xBB,0x13,0xA5,0x30,0xEA,0xCA,0xCA,0x24,0x5F,0x5F,0x12,0xB7,0x1B,0xD4,0x1C,0xCA, - 0x3F,0x2B,0x37,0x2F,0x05,0x80,0x4C,0xEA,0x5C,0x74,0x59,0xA7,0x44,0xFE,0x3C,0x32, - 0xE7,0xDF,0x3F,0xAC,0x48,0x72,0x43,0x7A,0x73,0xCB,0x3B,0x45,0x9C,0x08,0xA0,0xB2, - 0xD1,0x99,0xE6,0x7E,0xEE,0x86,0xF3,0x8F,0xB9,0x9C,0xA7,0xC6,0x69,0xBF,0xD6,0x1C, - 0x0F,0xDF,0x50,0x96,0x82,0x69,0x28,0x13,0x28,0xA0,0x8F,0xB1,0x9D,0x65,0x0C,0xC9, - 0xC5,0xE2,0xA8,0x6D,0x3C,0xA3,0xA5,0x07,0x8C,0xDF,0x66,0xAE,0xF2,0x06,0x64,0x66, - 0xC8,0x1C,0xB8,0x9B,0x09,0xC5,0xA2,0x95,0x3B,0x14,0x5B,0x58,0x42,0x17,0x23,0x5A, - 0x2E,0x1E,0x27,0x22,0xD7,0x72,0x92,0x15,0x2F,0x53,0xAA,0x73,0xCE,0x8C,0xB3,0xBD, - 0xA7,0x4A,0x6C,0x46,0x2F,0x22,0x6B,0x61,0xAF,0x2B,0xD8,0xAB,0x51,0x8A,0x9A,0x84, - 0x48,0x30,0xFF,0x84,0x09,0xEA,0x00,0x27,0xC6,0x24,0x7D,0xC2,0x4C,0x32,0x23,0xCF, - 0x59,0x01,0x67,0xA3,0x7A,0x80,0x09,0x69,0x7E,0xEC,0x42,0x51,0x09,0xD2,0xEC,0xAC, - 0x8D,0x67,0x7E,0x1D,0xC4,0x1E,0xFE,0x80,0x83,0x94,0xFC,0x25,0x8D,0x84,0x55,0x97, - 0xC8,0x4A,0xD5,0x10,0x73,0x10,0xAF,0x74,0x51,0x27,0xA4,0x4C,0x2E,0x42,0x4F,0x69, - 0xFC,0x02,0xEA,0x03,0x66,0xDC,0x19,0xC3,0x5D,0x12,0x70,0xED,0x69,0x57,0x91,0xCB, - 0xCB,0xE3,0xFC,0x09,0x31,0x68,0x1A,0x34,0xDE,0xEB,0x9D,0x20,0x9E,0x26,0xED,0x13, - 0x2E,0xB8,0x62,0xCF,0x8B,0x93,0xB9,0x2F,0xDF,0xC4,0x73,0x5E,0x1C,0x08,0xAC,0x32, - 0x5F,0xA1,0x56,0xE9,0xBE,0x0C,0x5D,0xD3,0x6F,0x96,0x24,0x40,0xBA,0x37,0xAE,0x10, - 0x89,0xE5,0x3F,0x51,0x2A,0xC9,0x34,0xB2,0xA9,0x23,0xAE,0xE1,0x5B,0xA4,0xF2,0xFD, - 0x9F,0xDA,0x22,0xFF,0x37,0x2F,0x4A,0x96,0x24,0x20,0xCE,0xA6,0xBD,0x42,0x79,0x5D, - 0xE5,0x55,0xFC,0xDB,0x9D,0x83,0xDD,0xB9,0xC7,0xC9,0xDE,0xEF,0x94,0x02,0xC6,0xDD, - 0xFC,0x71,0x22,0x73,0xD2,0x71,0xA7,0xFF,0x5C,0x0A,0x66,0xDE,0xD2,0x8E,0x35,0x3E, - 0xD6,0x8A,0x26,0x94,0x6D,0x44,0x41,0xF3,0x1D,0x7F,0x6E,0xFC,0x45,0x60,0x98,0xB5, - 0x4A,0x47,0x03,0xF1,0x65,0x9D,0x7C,0x36,0x36,0xF8,0xE9,0x2F,0x67,0x1A,0x73,0xE6, - 0x11,0x58,0x9D,0xC6,0x85,0x91,0x3A,0xC1,0x3F,0x95,0xE1,0x34,0xE7,0x84,0x1B,0x8A, - 0x47,0x05,0xCC,0x4E,0xAA,0xA3,0x89,0x6B,0x17,0xC0,0xB3,0xB2,0x99,0x2B,0xE4,0x71, - 0x50,0xA1,0x9A,0x99,0x32,0x00,0x63,0xBB,0x96,0x80,0x9E,0xE6,0x67,0x31,0x26,0x83, - 0x1D,0x7E,0x5A,0x07,0x2E,0x1C,0x79,0x8E,0x0B,0x6C,0x8A,0x86,0x8B,0x22,0x71,0x68, - 0xBD,0x54,0x36,0xD9,0x2E,0xF4,0xF3,0xAE,0xEF,0x9C,0x8A,0x63,0x63,0x65,0x74,0xB1, - 0x4D,0xDD,0xE1,0xFA,0x38,0x49,0x5A,0xF9,0x89,0x9C,0x85,0xF7,0xB8,0x19,0xA9,0x78, - 0xEF,0x68,0x9E,0xAE,0x49,0xC8,0x8A,0x18,0xC6,0xAF,0xE0,0x40,0xCA,0xC8,0x1E,0x24, - 0x55,0xBE,0x9C,0x80,0x18,0x7D,0x08,0xBA,0x51,0x79,0x68,0x5C,0x78,0x0C,0xC7,0x83, - 0x62,0x8B,0xCC,0x2D,0x01,0xA0,0xC5,0xE3,0x30,0xE5,0xDB,0x3F,0x53,0xD8,0x76,0xE6, - 0x1C,0x27,0x19,0xE0,0x52,0xEE,0x2D,0x4C,0x7D,0x30,0x88,0xEB,0x56,0x72,0xCA,0xD5, - 0xA8,0xD5,0xDF,0x54,0x00,0x7C,0x19,0x44,0x2A,0xB6,0xA4,0x10,0x48,0x3E,0xDB,0xF6, - 0xA0,0x90,0xFB,0x75,0xF5,0x36,0xF1,0x8B,0xC8,0xE5,0x89,0x25,0x8A,0x63,0xA0,0xF1, - 0xB2,0xD3,0xEB,0x9C,0xF6,0x55,0xC0,0xE6,0x42,0x7C,0x93,0x9A,0xC5,0xE4,0x91,0x93, - 0xBB,0x60,0xA2,0x92,0x1A,0x6E,0x97,0x5C,0xD8,0x64,0x96,0xE6,0x87,0xFA,0x19,0x93, - 0xA9,0x03,0x38,0x50,0x2F,0xBF,0x22,0x81,0x3C,0xA9,0x45,0xE9,0xF7,0x28,0x27,0x3A, - 0x4A,0xAD,0xE9,0x57,0xA6,0xD1,0xD2,0x66,0x05,0xFE,0xC8,0x92,0x40,0x24,0x06,0x29, - 0x3A,0xBC,0x97,0x8F,0x9D,0x74,0x61,0xE6,0xBB,0x8D,0x8F,0xE7,0xA2,0xDC,0x0C,0xFC, - 0xD1,0xD3,0x3B,0x89,0x60,0x0F,0xA6,0x83,0xDF,0xB1,0xEE,0xE7,0x9B,0xA4,0xF6,0x74, - 0x1C,0x8A,0x36,0x3D,0x70,0xEC,0xE3,0xF5,0x25,0xE7,0x1A,0xD9,0x65,0x20,0x9A,0x52, - 0x8A,0x01,0x00,0xE2,0x52,0x56,0x1D,0xDB,0x22,0xF0,0x5A,0xE7,0x63,0xE4,0x52,0xF2, - 0x0C,0xFA,0xA8,0x5C,0xA1,0xBC,0xF0,0xA7,0xDF,0x29,0x97,0x25,0x92,0xD8,0x38,0x37, - 0xAE,0xE0,0xA4,0xD9,0x03,0x74,0x69,0x88,0xF5,0x53,0xED,0x05,0xE2,0x6B,0x8A,0x89, - 0x75,0x25,0xCC,0x91,0x3C,0x09,0x37,0xCC,0xF6,0x6A,0x1C,0xDE,0x5C,0xCD,0x48,0x7E, - 0x23,0xD8,0xEC,0xEB,0x68,0x8C,0x40,0xF0,0x12,0xAD,0x79,0x53,0x68,0xB7,0xB4,0x31, - 0xF6,0x79,0xCE,0x90,0x9D,0x06,0xC5,0xD4,0x37,0x2A,0x4D,0xD9,0xF8,0x71,0xBA,0x8B, - 0x7B,0xEB,0xDE,0x3F,0xD5,0x63,0x1C,0x8C,0xFF,0xB6,0xA1,0xF6,0xCD,0xB1,0xEA,0x5E, - 0x65,0xCF,0xEE,0xDA,0x59,0x72,0x69,0x7A,0x67,0x99,0x80,0x31,0x7E,0x88,0xCA,0x1B, - 0x9E,0x6E,0x41,0xBE,0x52,0xFA,0xC3,0x46,0x6D,0x1C,0x2F,0xA1,0xF8,0xC3,0x0A,0xF8, - 0x5E,0x01,0x2E,0x75,0xFD,0xA5,0x34,0xA5,0xEF,0xD7,0xB6,0x5A,0x91,0xC0,0x48,0x9E, - 0xE1,0xA6,0x18,0xC4,0xAF,0x34,0xF7,0x5E,0xBD,0xC0,0x10,0x8D,0xC6,0x81,0x37,0x9F, - 0x5C,0xE9,0x26,0x86,0x31,0x25,0xB3,0x4C,0x1B,0x84,0xBB,0xB6,0xBC,0xF2,0x2E,0x64, - 0xD4,0x68,0x21,0xC1,0x1A,0x21,0x13,0xBC,0x07,0xD0,0x91,0xC3,0x8A,0x42,0x3F,0xFF, - 0x66,0xCE,0x55,0x2B,0x34,0x4F,0x17,0x7E,0xCF,0x00,0x5E,0x6E,0xD3,0xB0,0xDC,0x3F, - 0x6B,0x33,0xD9,0x3B,0x9C,0x5F,0x4E,0x3E,0xB2,0x5B,0x8C,0x72,0xC2,0xCE,0xFF,0xF0, - 0xC8,0xAC,0xB3,0x6D,0x49,0x8D,0x13,0x7C,0x71,0xA9,0x69,0x9C,0x23,0xA5,0x6C,0xC4, - 0xD9,0x36,0x67,0x31,0xE0,0x30,0x9A,0x0F,0x4E,0x57,0x0F,0x49,0x0B,0x34,0xEC,0x7C, - 0xDD,0xFE,0xCA,0x9A,0x6F,0x64,0xB7,0x8E,0xB7,0x8E,0xD8,0xE1,0x58,0xE5,0xBB,0x05, - 0x27,0x4F,0x4A,0x16,0xD7,0x7D,0x51,0x37,0x00,0x68,0xAB,0x6B,0x5C,0xF0,0x72,0xAD, - 0x4F,0x4F,0x8F,0x59,0x9A,0x47,0xC0,0xAF,0xB2,0x6D,0x5F,0x13,0x20,0x91,0xFB,0x77, - 0xC6,0x8B,0xB3,0xD2,0x69,0xAF,0x44,0xA5,0x5D,0x0C,0x46,0x62,0x00,0xEA,0x2D,0x8F, - 0x7B,0x87,0x9C,0xDC,0x45,0xFB,0xCC,0x03,0xD6,0xFF,0xC6,0x79,0x10,0x4D,0x77,0x41, - 0xBF,0xA8,0x79,0xE0,0xFC,0xB4,0xAF,0x8C,0x64,0xFE,0x13,0x92,0x04,0x55,0x99,0x56, - 0xFB,0x5D,0xEE,0x5A,0x35,0x77,0xB0,0x96,0xC0,0x61,0xA8,0xB2,0xCA,0x7D,0x6C,0x84, - 0x26,0x70,0x91,0xA9,0x6F,0xC5,0xBE,0x80,0xA8,0x43,0x21,0x74,0x59,0xF6,0xE5,0xAA, - 0xB4,0x4C,0xC3,0x4B,0xE3,0xEB,0xE1,0xA9,0xFF,0xE2,0x3B,0x5C,0x35,0xA5,0xCB,0xF6, - 0x24,0x6B,0x3F,0x0F,0xED,0x94,0x93,0xDE,0x08,0x55,0xAC,0x20,0x1A,0x28,0xEE,0xFE, - 0xD7,0x77,0x3F,0x62,0x88,0x1F,0x19,0x65,0x66,0x30,0x64,0xB0,0x90,0xDD,0x50,0x46, - 0x88,0xFA,0xE0,0x7F,0x10,0xC8,0x84,0xC3,0xA0,0xC0,0x15,0x5B,0x20,0xA7,0x93,0x1D, - 0xA2,0xA3,0xFF,0x05,0x9C,0xB2,0xE8,0x59,0x3B,0xFC,0x57,0xF8,0xD3,0xF9,0xDD,0xFD, - 0xD9,0xCA,0x65,0xC2,0xC7,0xDE,0xD8,0xB5,0x8C,0xE3,0x5B,0x20,0x22,0x4B,0xC9,0x3D, - 0xE5,0x38,0x0B,0xC5,0x6B,0x08,0x43,0x6B,0x49,0xFF,0xF0,0x08,0x09,0xE4,0x71,0x53, - 0x00,0xD4,0x13,0x39,0x18,0xED,0x40,0x64,0x22,0x05,0x2B,0x86,0x4E,0x3C,0xC0,0xD7, - 0x1C,0xC0,0x88,0x2E,0x98,0xEF,0xC3,0x9B,0xF3,0xB6,0x6D,0x69,0xDF,0x65,0x89,0x09, - 0xFA,0xA9,0x49,0xE9,0xF9,0x04,0x3F,0x79,0xCF,0x7B,0x4F,0x23,0xB7,0x53,0xD8,0xDE, - 0xDC,0xE7,0xAF,0xE3,0x8B,0x0C,0x68,0x3B,0x60,0xD8,0xC5,0xFA,0x6D,0x54,0x69,0x7B, - 0xDC,0x34,0x84,0x99,0x0B,0xB9,0x41,0xBB,0x30,0x76,0x78,0xD4,0x68,0x08,0x35,0x8A, - 0xA0,0x90,0xBF,0xC8,0xF0,0x74,0xA4,0xAD,0x8D,0xA5,0xB2,0xAA,0x29,0x2C,0xF4,0x20, - 0x12,0x06,0x09,0x9A,0xB7,0x82,0xB6,0xA2,0x5F,0x6D,0xAA,0x23,0x44,0xBB,0x19,0x7C, - 0x01,0x7D,0xCC,0xEE,0x9F,0x8F,0x4F,0x3D,0x81,0x05,0x38,0xFF,0xD5,0x1C,0xF2,0x0E, - 0xBC,0x0F,0x76,0x87,0x2B,0xD3,0xD0,0x5C,0x5D,0x38,0x7B,0x57,0x63,0xA1,0x81,0xB7, - 0xCF,0x45,0xE4,0xA8,0xE9,0x63,0x1F,0xDD,0xC7,0xCB,0xFD,0x31,0x85,0x88,0xD8,0x1C, - 0x94,0x10,0x47,0xD2,0x38,0x12,0xD8,0xEC,0xBB,0x92,0x29,0x93,0x2C,0xD0,0x08,0xB8, - 0x2B,0x3E,0x5C,0x8D,0x5B,0xF5,0x20,0x97,0xF5,0x31,0xA6,0x16,0x88,0xE4,0x62,0xE0, - 0xC7,0x13,0x2B,0x33,0xE5,0xD3,0xB5,0x1A,0xAF,0x56,0x02,0xE6,0xA4,0xDF,0x67,0xC5, - 0x44,0x65,0xBD,0x50,0xF0,0x16,0xE8,0x7E,0x6A,0x20,0x4E,0xC8,0x28,0xD6,0x76,0x01, - 0x83,0x84,0xDE,0xC1,0xA1,0xF5,0xE2,0x3F,0xA1,0x93,0x25,0x4F,0x6D,0x4D,0x87,0xE5, - 0xDB,0x7D,0x36,0x93,0xF1,0xC8,0x45,0x6A,0x2B,0x37,0x81,0x75,0x44,0x74,0xD2,0xD0, - 0xC0,0x29,0x2F,0xBD,0xB8,0xA3,0xB8,0x72,0x0E,0x90,0xDE,0xFF,0xF2,0x32,0x0A,0x9F, - 0xBD,0x55,0xA7,0xB5,0xFC,0xED,0x6A,0x8B,0x77,0xB2,0x84,0x54,0x21,0xF7,0xC7,0x55, - 0x61,0x68,0x44,0x2A,0x77,0x49,0xA2,0x50,0xE7,0xFB,0x88,0x5B,0x09,0xC6,0x3B,0x3F, - 0x5F,0x81,0x35,0x64,0x71,0x31,0xF6,0xAF,0xF2,0x8A,0x12,0xC6,0x3C,0xDA,0x78,0x6C, - 0xFC,0x36,0x23,0xAF,0x54,0xBD,0x66,0x5E,0x93,0xA9,0xA3,0xE9,0x68,0x95,0x39,0x42, - 0xE0,0xBD,0xC5,0x67,0xAE,0x98,0x2E,0x38,0x91,0x6E,0x34,0xFD,0x5D,0xBD,0xC1,0xCB, - 0xE0,0x92,0x1B,0xE1,0x5A,0x91,0x64,0x76,0xF1,0x3B,0x0B,0xD7,0x64,0x30,0x1D,0x07, - 0x7D,0x7B,0x6F,0xAE,0x72,0x1B,0x57,0xB0,0xD2,0x7E,0xC8,0xC7,0x78,0x0C,0xD7,0xB5, - 0xB5,0xCE,0x62,0x15,0xA1,0x1C,0x7C,0x18,0xB5,0xA9,0x07,0x7B,0xEC,0xEF,0x3F,0xF5, - 0xB0,0xDF,0x50,0xB4,0xA9,0x67,0xD3,0xCC,0xD8,0x9D,0x92,0xE0,0x64,0xE1,0xFD,0xF1, - 0x89,0x81,0xCD,0xE1,0x0A,0x89,0xAD,0x54,0xBD,0x74,0x54,0xE3,0x65,0x34,0x32,0x5D, - 0x6E,0xAC,0xB3,0x68,0x39,0xDA,0x6E,0xB2,0xD3,0xB8,0x5D,0xB6,0x7A,0xBA,0xE1,0x38, - 0x9A,0xBD,0xD0,0x06,0xF9,0xEA,0x7F,0xA3,0x18,0xB6,0xDD,0xDE,0xEC,0x1A,0x8E,0x70, - 0x85,0xA1,0xC5,0x35,0xE8,0x7E,0x06,0x7F,0xEE,0x62,0x65,0x92,0xAF,0xC2,0x44,0x2A, - 0xA4,0x41,0x3D,0xAD,0x1F,0x37,0x24,0xAC,0x4D,0x6A,0x6E,0x99,0x3D,0xAA,0x4B,0xE2, - 0x3A,0x7A,0x2C,0x28,0x53,0x18,0x84,0x32,0x30,0x02,0x0B,0x05,0xF9,0xEF,0xD5,0x25, - 0x6A,0xA5,0x1A,0x04,0x18,0xEB,0x1B,0xAF,0x12,0x15,0x01,0x8C,0x44,0x44,0xA5,0xB7, - 0x66,0xDE,0x59,0x41,0x1F,0x9A,0x2D,0x7D,0xEB,0xDF,0x17,0x81,0xC7,0x3A,0x20,0xA1, - 0x33,0xCB,0x57,0xC9,0x72,0xDD,0xB9,0x76,0x3A,0x90,0x05,0xDC,0x83,0xCF,0x04,0x39, - 0x1C,0x5E,0x13,0x58,0x70,0x32,0x66,0x0D,0x36,0xEE,0x75,0x42,0x4B,0xFF,0xE7,0x5D, - 0x1B,0x38,0x7D,0xD8,0x2A,0xFC,0x83,0xF4,0xD2,0x9B,0xF9,0x2C,0xE2,0x2E,0xF8,0x60, - 0x2C,0xAE,0xFC,0xF9,0x48,0x80,0xC0,0xC7,0x80,0xC6,0xCE,0xBA,0x12,0xDC,0xCD,0x14, - 0xD2,0xF6,0xB0,0x16,0x2F,0x4A,0xBB,0x30,0xDA,0x32,0xBF,0x01,0x6F,0x6E,0x8B,0x09, - 0x01,0xD2,0x28,0x9E,0xEA,0xF3,0xCA,0xB6,0xBC,0x5A,0x66,0x93,0xF0,0x62,0xA5,0x62, - 0x8F,0x20,0x63,0x06,0x42,0x06,0x1E,0xD0,0x97,0x6C,0x11,0xA0,0x36,0x0F,0xCB,0xC7, - 0xCA,0x15,0x88,0xE3,0x50,0x77,0xDC,0xAA,0x81,0x57,0xFD,0x70,0x88,0xF2,0x45,0x89, - 0x41,0x2F,0x6C,0x2F,0x92,0x03,0x31,0x29,0x93,0x17,0x51,0xFD,0x15,0x49,0xC4,0xEE, - 0xCA,0xC8,0x62,0xE1,0xCC,0x08,0x12,0x37,0x3E,0x84,0x11,0x66,0x01,0x7F,0xE5,0x21, - 0x92,0x79,0xF0,0x56,0xAA,0x2B,0xFA,0xAE,0x16,0xA0,0xAB,0xFC,0x97,0x8E,0x50,0xEE, - 0x49,0xDD,0x8E,0xC1,0x07,0x2B,0xEB,0x14,0x80,0xFF,0x0B,0x35,0x40,0xC9,0x5E,0x2F, - 0x98,0x0D,0xBA,0x72,0x3B,0x3B,0xB1,0x50,0x79,0x9F,0x88,0x2A,0x7D,0x35,0x7B,0xBF, - 0x9A,0x98,0xE1,0xFE,0xF0,0xFF,0x5D,0xE5,0xB0,0xB7,0x75,0x89,0xA4,0x05,0xDC,0xE2, - 0xD0,0xC3,0xCA,0xC1,0x08,0x80,0x0D,0x6F,0x0A,0xBB,0x72,0x8A,0x8D,0x01,0xEB,0x37, - 0x8E,0xA6,0x90,0x30,0x48,0xE6,0x52,0x54,0x8F,0xF4,0x5C,0x22,0xF8,0x58,0xEC,0xCC, - 0x45,0x40,0xDD,0x80,0x10,0xC5,0xB0,0x35,0xB4,0xFB,0x69,0xF9,0x36,0x29,0xFD,0x95, - 0xC4,0x5B,0xCB,0x13,0x8A,0x1D,0xD7,0xE9,0x76,0x08,0x69,0x73,0x63,0xF7,0xAE,0x1B, - 0x42,0x8C,0x0F,0xC1,0xA0,0x7A,0xEE,0x1D,0xC0,0xD6,0x32,0xC7,0x2E,0xDA,0xC4,0x6F, - 0x29,0x3B,0xB5,0xC8,0x47,0xDB,0x7D,0x7D,0xA9,0x36,0x4D,0x3B,0x89,0x09,0x05,0x60, - 0x1F,0x50,0xD7,0x52,0x99,0xEA,0x16,0x45,0x64,0xAE,0x49,0xF4,0xE4,0x76,0xB3,0xB5, - 0x50,0xFB,0x52,0x05,0x0F,0xA5,0x5B,0x7D,0x5A,0xC3,0x42,0x36,0xAD,0xCB,0x65,0xAE, - 0xBC,0x1E,0x46,0x8F,0xAB,0x14,0x3F,0x30,0x7A,0xA2,0x28,0x7C,0xA9,0x36,0xCE,0xAB, - 0x8F,0x62,0x6B,0xCC,0xD2,0x28,0x0C,0x78,0x9F,0x3C,0x01,0xCB,0x9B,0xBA,0x47,0xA7, - 0xF5,0x84,0x8C,0xE6,0xC0,0x00,0xFC,0x08,0x49,0x59,0x4B,0x17,0x33,0xB0,0xD3,0xBA, - 0xC3,0x0B,0xD8,0xCF,0x7B,0x70,0x7A,0xE3,0x6B,0xD8,0xCC,0xD5,0xFA,0xA6,0x99,0x3A, - 0x06,0xF5,0x86,0xE0,0xE6,0xA5,0x16,0x92,0x09,0x6E,0x6B,0xBA,0x59,0xD2,0x74,0x2A, - 0x5B,0x27,0x81,0x64,0x60,0x8D,0x9F,0x34,0xAC,0x23,0x4A,0x52,0xFF,0xEB,0x98,0x9A, - 0x88,0x06,0x6D,0xB7,0x23,0x05,0xE6,0xB6,0x4C,0x73,0x24,0x53,0x5E,0xB7,0xEF,0x87, - 0x00,0xB1,0xB6,0xE1,0x4E,0x41,0xB1,0x2C,0x1D,0xF2,0x68,0x54,0x55,0xA3,0xE8,0x52, - 0x9C,0x43,0x98,0x25,0x77,0x42,0xDD,0x8B,0x78,0x55,0x40,0x38,0x69,0xDB,0x2E,0xAE, - 0x3F,0xDC,0x5F,0xDE,0xEF,0x49,0x23,0xB3,0x05,0xE5,0x64,0x53,0x5A,0xA1,0xCD,0xD2, - 0xCC,0xDB,0x53,0x0A,0x98,0x99,0x01,0x06,0x48,0xFD,0x2F,0x97,0x44,0xED,0xEC,0x53, - 0xF5,0x16,0x44,0xAB,0xE2,0xC6,0x2E,0xF9,0x0B,0x84,0x40,0x0B,0xCC,0xAE,0x1A,0xA1, - 0x25,0xDC,0xC0,0xEA,0x1A,0x31,0x30,0x60,0x94,0x73,0x87,0xEA,0xE7,0x5F,0xCC,0x5F, - 0xF9,0x21,0xAB,0x65,0x0C,0xB5,0x02,0xF0,0x9B,0x9B,0xDA,0x06,0x40,0x91,0x7A,0xFD, - 0xED,0xBF,0xFB,0xD6,0x98,0xF7,0x97,0x6E,0x40,0xF9,0x83,0x33,0xF1,0xD4,0x50,0xAB, - 0x54,0x15,0x12,0x42,0x5C,0xDB,0x31,0x4E,0x6D,0x5C,0xA7,0x06,0x7C,0xD7,0xA6,0x40, - 0xF0,0xF4,0x14,0x8E,0xF3,0x0E,0x56,0x75,0x20,0x40,0x1C,0xA8,0xCF,0x75,0x46,0x83, - 0x8A,0xB4,0xF1,0xBA,0x5C,0x7D,0x7B,0x91,0x4F,0x1E,0xE8,0x88,0x84,0xC5,0x04,0x55, - 0x6B,0x82,0x35,0x03,0xD3,0x23,0x2F,0x9C,0x5C,0x55,0x13,0x83,0xD1,0x2C,0xB5,0x31, - 0x07,0x0D,0x6F,0x1E,0x11,0x24,0x3E,0x9F,0x45,0x34,0xB2,0xCB,0xAA,0x12,0xFD,0x06, - 0x2C,0x31,0x2A,0x8D,0x7E,0x02,0xE6,0xAF,0x3B,0x93,0x89,0x50,0x98,0xA3,0x01,0xD4, - 0x07,0x75,0x65,0x87,0x0B,0x5F,0xC6,0x83,0x47,0x5A,0x7A,0x87,0x0C,0xCC,0x37,0x10, - 0x27,0xF2,0x42,0xD8,0xBA,0x58,0x62,0xF8,0xBA,0x14,0x14,0xD3,0x41,0x20,0xB8,0x40, - 0xD3,0xB8,0x2E,0x1E,0x53,0x42,0xB4,0x40,0xD0,0x99,0xF4,0xAC,0xD8,0xF3,0x6C,0x85, - 0x27,0xE9,0x56,0xDA,0xF2,0x4E,0x9F,0xA4,0x3B,0xCE,0xA1,0x7A,0x2D,0x18,0x2D,0x1B, - 0x48,0x70,0xBE,0x17,0x10,0x47,0xB0,0x0F,0x89,0x8A,0x58,0xAB,0x75,0x5A,0xE8,0x4F, - 0xB3,0xAC,0x28,0x13,0x31,0x63,0x09,0x7D,0xE8,0xDB,0xF5,0x85,0xEE,0xC1,0x6F,0x08, - 0xD7,0x51,0x5C,0xD6,0xC6,0x4C,0x0A,0x40,0xEA,0x53,0x46,0x9B,0xE2,0x81,0xA9,0x9D, - 0x66,0x80,0x32,0x7A,0x83,0x5A,0x7C,0xCC,0xEE,0xAA,0x5F,0xA5,0x0C,0x35,0x3D,0x20, - 0xFC,0xD7,0x54,0xE9,0x58,0x19,0x81,0xFB,0xE0,0x47,0x30,0xA8,0x95,0xE1,0x74,0x37, - 0xFE,0x37,0xF0,0x63,0x7A,0x2E,0x74,0xF3,0x3A,0x77,0xE6,0xA1,0xCA,0x16,0x07,0xE8, - 0x94,0x9E,0xFE,0xA5,0x25,0x5D,0x08,0x02,0xEE,0x64,0x43,0x02,0x51,0xBB,0xD4,0xF2, - 0xD2,0xBF,0x80,0x65,0xA0,0xC5,0x55,0x23,0x1E,0xD5,0x2C,0x06,0x95,0x9A,0xFE,0xCD, - 0xDA,0x3B,0x9D,0x34,0xFB,0xF8,0xEF,0x78,0x7B,0xF4,0x46,0xEE,0xE5,0xC9,0xA8,0x90, - 0xA5,0x38,0xEC,0x21,0x46,0x95,0x8C,0xE7,0x54,0xE9,0x93,0xF4,0x44,0x38,0x04,0x6E, - 0x01,0x7D,0xB9,0xA1,0xBB,0x49,0x3B,0x11,0xDD,0x0D,0x54,0x90,0xCD,0x9C,0xBF,0xBE, - 0xC0,0x98,0x6A,0xC7,0x30,0x0B,0x30,0xD6,0x19,0x0C,0x02,0x1C,0x24,0xC4,0xAF,0x7C, - 0x10,0xF8,0x67,0x07,0x2E,0x84,0x7F,0x0A,0x25,0xE0,0x1C,0x5E,0x4F,0x51,0x9F,0x66, - 0x99,0x3C,0x93,0x55,0x3F,0x47,0x98,0x7A,0x99,0x2D,0x15,0x0C,0x22,0xD4,0x9A,0x82, - 0x4F,0x43,0x3B,0x49,0x6A,0x83,0x2A,0x36,0xEE,0xAD,0xDE,0xEE,0x75,0xEC,0xF5,0x7E, - 0xF4,0xA8,0xEB,0xD1,0x70,0x51,0x47,0xB6,0x4C,0xEA,0x66,0x88,0x82,0x02,0x19,0xF5, - 0x53,0xAF,0xC4,0x41,0xC1,0x89,0x72,0x42,0x2C,0xB2,0x32,0xCC,0x09,0x12,0x0B,0xA9, - 0x7F,0x8A,0x97,0x6C,0xB3,0x58,0xA5,0x2D,0xE4,0xE8,0x91,0xD6,0xFD,0xB7,0xC9,0x7E, - 0x32,0x3B,0x8A,0x9F,0x93,0xFA,0xBA,0x4A,0x26,0x2A,0x0E,0x83,0xDD,0x4E,0x55,0x12, - 0xA8,0xC7,0x73,0xCB,0xBC,0x78,0xD3,0xB5,0x7C,0x73,0x77,0x1F,0x6F,0x9E,0xB7,0xDA, - 0x7F,0xBA,0xD9,0x91,0xE9,0x52,0x63,0x1F,0x36,0xC5,0x5D,0x2C,0x18,0x7A,0x7E,0xF4, - 0x1A,0x16,0xBA,0x79,0xEF,0xE2,0x20,0x03,0xEA,0x20,0xED,0x65,0x73,0x90,0x11,0x2F, - 0xD7,0x92,0x90,0x7C,0xE4,0xA1,0xA8,0x6A,0x24,0x6D,0x66,0x6D,0xDC,0xB2,0x61,0xDC, - 0xCD,0xA5,0xB5,0xFF,0x2F,0x3A,0xF2,0xF0,0x22,0x02,0x2B,0x84,0xB1,0x49,0xA1,0xE7, - 0xC8,0x7C,0x85,0x28,0xB8,0xCD,0x00,0x17,0x22,0x3E,0x23,0x44,0x8E,0xCA,0xD3,0xDC, - 0x77,0x5A,0xA7,0x6D,0xDF,0x67,0xFB,0x41,0x33,0x92,0x11,0xB3,0x87,0x02,0xA4,0x89, - 0x09,0xF6,0xBF,0xE0,0x81,0x99,0x07,0xF9,0x3D,0x18,0x5A,0xE2,0x7C,0x5D,0xBD,0x16, - 0xE8,0xA4,0x92,0x2A,0xAC,0x3A,0xFE,0xB0,0x75,0x17,0xD5,0x48,0x9A,0xCA,0x81,0x9F, - 0x27,0x06,0x19,0x81,0xE3,0x6C,0xCA,0x12,0x0C,0x6D,0xC9,0x88,0xFF,0x10,0x55,0x77, - 0x1A,0x49,0xE7,0xEB,0xFB,0x6D,0xD8,0x6C,0x31,0x58,0x8D,0x13,0x7A,0xFE,0x3C,0x39, - 0x90,0x1D,0x59,0x51,0x62,0xBE,0xA2,0xEC,0xE9,0x05,0x65,0x95,0xF9,0xBC,0x2C,0x2B, - 0x8F,0xA6,0x98,0xA4,0x99,0x03,0xB9,0x7C,0xAC,0x50,0x69,0x3B,0x8D,0x3E,0x96,0x60, - 0x47,0xE9,0x2C,0x96,0xAB,0x35,0x68,0xBC,0xA0,0x1B,0xB1,0x1C,0x93,0x9A,0x8D,0xFE, - 0x9A,0x48,0x6B,0xC2,0x7C,0xA7,0xE9,0xC0,0x37,0x53,0xBA,0xCB,0xF2,0x3D,0x7C,0xC1, - 0xD6,0xAE,0xAD,0x66,0x69,0x96,0xB9,0x3B,0x7D,0x9F,0x72,0x11,0xC9,0xC0,0xA7,0x9C, - 0xCD,0xA1,0x06,0x71,0xB5,0x19,0x7D,0x76,0x3E,0xAD,0x87,0xDB,0x63,0xCD,0x00,0x86, - 0x6B,0x71,0x62,0x5E,0xB5,0x78,0xB6,0x1E,0x22,0xAA,0x2B,0x23,0x37,0xBF,0xCC,0xEC, - 0x90,0x08,0x9C,0xBE,0xBD,0x4B,0x8D,0xC3,0x58,0xF5,0xA6,0x6C,0x99,0xC0,0xCE,0x61, - 0x34,0xBE,0x6F,0xB1,0x47,0xA8,0x12,0x2A,0x67,0x6D,0x37,0x64,0x37,0xA2,0x0D,0xD7, - 0x40,0xF8,0x9B,0xC0,0xEA,0x94,0x45,0xD1,0xD6,0x88,0xFF,0xD9,0x0A,0x91,0xC3,0xE6, - 0xFF,0xD6,0xF6,0x4D,0x20,0xFD,0xFF,0x63,0x54,0xBC,0x3E,0x2C,0x09,0x04,0x4D,0xE3, - 0xC8,0xD7,0xCA,0x44,0x47,0x99,0x24,0x63,0xAB,0xFA,0x8D,0x3B,0xFF,0x3F,0xE2,0x91, - 0xC8,0xEA,0xF2,0xCC,0x25,0xF7,0xB2,0xEE,0xCB,0xD8,0x84,0x8A,0xA4,0xF9,0x16,0x6B, - 0xF7,0xC0,0xA7,0x0A,0xAD,0xD7,0x21,0x2C,0x99,0xB5,0x0D,0x3D,0xA3,0xEC,0x3C,0xB1, - 0xD9,0x27,0xC5,0x1E,0x09,0xB8,0xCB,0x3B,0x6E,0x6A,0xBF,0xCE,0xF3,0x8E,0x5C,0xBF, - 0xCC,0xBD,0xFB,0x8E,0x5B,0x0E,0xA3,0x23,0xED,0x91,0x40,0x03,0x47,0x75,0x7E,0xF3, - 0x54,0x8A,0x10,0xD7,0x91,0x2B,0x59,0x88,0x8B,0xF7,0x27,0xB2,0x07,0xFE,0x3C,0xB3, - 0x72,0xFA,0x56,0xE0,0x52,0x6B,0x4E,0x7E,0x5F,0xF8,0xCB,0x04,0x7D,0x16,0xA9,0x24, - 0x6F,0xDA,0x0B,0x20,0x39,0x4B,0x3E,0x63,0xF5,0xF7,0xDB,0xCA,0xF9,0xE9,0x1F,0xE7, - 0xB4,0xE1,0xAA,0xF6,0xD0,0x39,0x21,0x43,0x15,0x71,0x6D,0xB0,0x0D,0x74,0x8A,0xE4, - 0xCC,0xB2,0xCD,0x36,0x20,0x7C,0xF2,0x4E,0x22,0x0F,0xBF,0x79,0xD1,0x89,0x1A,0xC6, - 0x95,0x0E,0xA5,0xF4,0x37,0x51,0x9B,0xF2,0xCA,0xD6,0xDE,0x25,0xD8,0x24,0x57,0x1E, - 0xF4,0x2B,0xBE,0x68,0x7D,0xE4,0xB2,0xC7,0x61,0x0E,0x67,0xD4,0x8C,0x3B,0xD8,0x9D, - 0x24,0xAD,0x14,0x55,0xF8,0x4A,0x9B,0xB9,0x4A,0x7C,0x11,0xA5,0x6F,0x1B,0xB2,0x94, - 0x56,0x18,0xC7,0x1C,0xB2,0xF9,0xBA,0x36,0xDF,0xB6,0x3A,0x84,0xB0,0x7E,0xF0,0xAB, - 0x6D,0xFD,0x7C,0x60,0x62,0xEE,0x2A,0x0C,0x89,0xF8,0x5E,0xDE,0xA6,0xDF,0x86,0x75, - 0x18,0x03,0x84,0xDE,0x77,0x25,0x85,0x57,0xAE,0x11,0x88,0xE6,0xC3,0x18,0x0D,0xE2, - 0x9F,0x58,0x89,0x20,0xB5,0xAC,0x17,0xD6,0x67,0x36,0xE3,0x11,0x92,0xF8,0xA2,0xE2, - 0x78,0xDE,0x63,0x06,0x67,0x0D,0x24,0x4D,0x6F,0x84,0x10,0x79,0xBD,0x68,0x11,0x3D, - 0xA9,0xA7,0x20,0x5B,0x39,0xCE,0xEE,0xDF,0x80,0xDC,0xC8,0xB8,0xF1,0xFA,0x01,0xA2, - 0x62,0x01,0xB2,0x5D,0x1E,0xEF,0x07,0x00,0x0E,0xA3,0x3A,0x8F,0x69,0xDF,0x36,0xF8, - 0x1F,0x55,0x34,0x30,0x09,0x22,0x7E,0x7C,0x83,0xFC,0xDA,0x7A,0x36,0x1A,0xEF,0x70, - 0x33,0xC6,0xF5,0x00,0x0F,0x01,0x49,0x7E,0xA0,0xF9,0x26,0x9A,0xD9,0x6E,0x19,0xC6, - 0x16,0x3C,0xB0,0xC2,0x4C,0xBF,0xDA,0xAD,0xDC,0xE3,0x93,0x87,0x9D,0xE6,0x11,0x8A, - 0x86,0xCA,0x03,0x6A,0x83,0x4E,0x86,0x6F,0x00,0x76,0xE6,0x9D,0xCF,0xF3,0x24,0x5B, - 0x04,0xD8,0xCE,0xD5,0xF2,0x1A,0x49,0x66,0xB3,0xD0,0x9F,0x25,0x79,0x4B,0x2C,0xF5, - 0x36,0x85,0xAB,0x80,0x5F,0x27,0x36,0xBD,0x84,0xD0,0x19,0xA1,0xD2,0x92,0xB5,0x98, - 0x62,0x5F,0x9A,0x32,0xC8,0x2A,0xEC,0x6A,0x5D,0x72,0x75,0x73,0x56,0x99,0xE8,0x77, - 0x15,0x9C,0x7D,0xA0,0x7A,0x18,0x3D,0x55,0x1F,0x66,0xFC,0xA6,0x74,0x47,0xE6,0xA2, - 0x10,0xBD,0xC3,0xC3,0x8F,0x85,0xE1,0xFB,0xA8,0x0C,0x61,0x78,0xA3,0x53,0x4D,0xF7, - 0x75,0x3E,0xAB,0x8B,0x2D,0x3B,0x1B,0x2C,0x40,0xE6,0xB5,0xFC,0x3C,0x64,0x22,0xF6, - 0x3B,0xB8,0x65,0x93,0x5A,0xE9,0xD6,0x95,0xAD,0xCB,0xC6,0x8E,0xD5,0x27,0xBC,0xD3, - 0xEC,0x65,0x61,0xE8,0xF7,0x68,0x91,0x61,0x24,0xB2,0x22,0xF3,0x64,0xE4,0xF8,0x8C, - 0x24,0x0E,0xE4,0xC4,0x4A,0xAD,0xCC,0x6B,0x5D,0xA5,0x42,0x46,0x3E,0xDF,0x3D,0xEE, - 0x8D,0x2E,0x22,0xEC,0x41,0x52,0xAE,0xB1,0xFF,0xE4,0xF2,0xE7,0xF2,0xC4,0xCF,0x4D, - 0x3D,0x76,0x3A,0xF0,0xC5,0x89,0x7F,0xFF,0xCB,0xAC,0x7F,0xCD,0xB3,0x60,0x61,0x18, - 0xDF,0x0B,0x8B,0x45,0x05,0x89,0xB6,0x6A,0x4E,0x23,0x10,0xF4,0xD2,0x75,0xF0,0x25, - 0xB0,0x7F,0x4E,0xF2,0x68,0x44,0x7E,0x34,0x9C,0xE5,0x02,0xC4,0xA0,0xB2,0x65,0x65, - 0xA9,0xD5,0xD4,0xE9,0xAE,0xC4,0x84,0x07,0x4D,0x76,0x85,0x44,0xEF,0x75,0xD3,0xCF, - 0x8E,0x5A,0xF9,0x5B,0x71,0x9E,0x31,0xEC,0xBC,0xFE,0x7B,0xD8,0x7E,0x32,0xE0,0xB0, - 0x44,0x72,0x4A,0xFD,0x6D,0xFA,0xBE,0xAC,0x67,0x59,0x53,0x87,0xBF,0x43,0x71,0xCE, - 0x49,0x09,0xD9,0x0D,0x99,0xE4,0xE6,0xDC,0x55,0xFA,0xF4,0x43,0x9C,0x00,0x36,0x0D, - 0xF5,0xE4,0x28,0xD5,0x98,0x36,0x6A,0x20,0xB0,0x81,0x7C,0x39,0x6A,0x9F,0x09,0xBD, - 0x13,0xC0,0x3B,0x6A,0xD4,0xF8,0x79,0x3A,0x53,0x6F,0xBF,0xC9,0x1F,0xE5,0x3C,0x70, - 0x35,0xD1,0x31,0x61,0x5C,0xA8,0x99,0x62,0xA2,0x6B,0x83,0xB6,0x7B,0x01,0x93,0x88, - 0x65,0x4C,0x59,0x95,0xEB,0x68,0x45,0xCD,0xDC,0xEC,0x8F,0x6B,0x6A,0xF0,0x79,0xF4, - 0xC1,0xD8,0x68,0xE6,0x93,0x60,0xC0,0xA8,0xE8,0xE6,0xE0,0x12,0x51,0xDC,0x88,0xDF, - 0x1B,0xE8,0xE2,0xFB,0x19,0x91,0xD4,0xE1,0xB8,0x6F,0x27,0x17,0x84,0xB4,0x78,0x4E, - 0x9D,0x7A,0x0A,0x78,0x52,0x4A,0x4D,0x03,0x87,0xAF,0x94,0xF8,0xF8,0xA7,0x24,0x12, - 0xD7,0xF0,0xF2,0xA5,0x56,0xF0,0x24,0xC6,0x48,0x40,0x29,0x3A,0xE2,0x8F,0x0D,0x60, - 0x0A,0xA8,0x0D,0x23,0x74,0xC9,0x03,0x1B,0xD3,0x37,0x15,0x04,0x61,0xE8,0x2F,0x05, - 0x9F,0x29,0x22,0x6F,0x22,0xBB,0xB6,0x0C,0x11,0xB1,0xC0,0x43,0x68,0xC0,0x08,0x23, - 0xB2,0xCD,0x32,0xA2,0xBB,0xAE,0x6E,0x88,0xE5,0xDD,0x27,0xE5,0x78,0xEF,0x62,0x35, - 0x67,0x72,0x89,0xE3,0xB3,0xC3,0xF9,0xE8,0xA6,0x33,0x74,0x42,0x3D,0xB5,0x1F,0xAE, - 0x18,0xF5,0x1E,0xD4,0x9D,0x58,0x74,0xE9,0x0F,0x9A,0x62,0x25,0xFD,0x73,0x6F,0x9D, - 0x29,0x60,0x0A,0xB4,0xBA,0x06,0xFE,0x82,0x5A,0xA7,0x23,0x02,0x77,0x06,0x66,0x10, - 0x1C,0x36,0x10,0x37,0xAC,0x73,0x66,0x98,0x36,0x4A,0xCD,0x6F,0x15,0xA4,0x19,0xF7, - 0x4A,0xD7,0x03,0x38,0x9B,0xE4,0x61,0x1E,0x5D,0x79,0x87,0x2D,0xA2,0xA5,0xB1,0x2D, - 0xCE,0x91,0x2D,0xD0,0xAE,0x20,0xAB,0xA9,0x37,0x5F,0x22,0x0A,0x2C,0x34,0xEC,0xB3, - 0xE0,0xC7,0xD3,0xC4,0x68,0x49,0x42,0x1E,0x1C,0x2D,0xCD,0x54,0xEA,0x91,0xB0,0x6F, - 0x6D,0xC6,0x25,0x06,0x31,0x0C,0x76,0xA1,0x56,0x10,0x5E,0x77,0x57,0x80,0xEE,0x57, - 0x45,0x2A,0x00,0x22,0x6B,0x60,0xDD,0x8E,0xB8,0x06,0x8F,0x9F,0x03,0x64,0xC4,0x88, - 0x63,0xEF,0xCE,0x35,0x95,0xC1,0xA9,0x15,0xB1,0xC7,0x69,0xE2,0xD0,0x58,0xD5,0x57, - 0xE0,0x5E,0x87,0x51,0xFB,0x22,0xF4,0xFA,0x80,0xFF,0xA0,0x01,0x0C,0x3F,0x82,0xFB, - 0xC6,0x31,0x02,0xB0,0xBD,0xA3,0x78,0x59,0x32,0xC3,0x3E,0xC1,0x92,0xBD,0xE6,0x7C, - 0x1D,0xF9,0x5F,0x34,0x06,0x39,0xA0,0x11,0x91,0x19,0x16,0x39,0x10,0x90,0x56,0xE8, - 0xF2,0x99,0x03,0xDE,0x9F,0x7C,0x12,0x5C,0x11,0x66,0x25,0x23,0x44,0x81,0xB2,0x08, - 0xFB,0xC1,0x13,0x5B,0x76,0x64,0x91,0x93,0x2A,0x6A,0x2C,0x04,0xAD,0x5E,0x19,0xD4, - 0x33,0x4A,0x6D,0x2B,0x28,0x64,0xEE,0xA6,0xFD,0xFB,0x12,0xC8,0x99,0x75,0x42,0x09, - 0x35,0xC4,0xF7,0xDF,0x10,0x5D,0xBF,0xDB,0xBE,0xA6,0x72,0x14,0x82,0xF7,0xE4,0x92, - 0x18,0x10,0x5B,0x03,0xA3,0xDC,0x13,0x03,0x82,0x76,0x57,0x64,0x2D,0x20,0xAB,0xBB, - 0x3A,0x88,0xF5,0x53,0xC2,0x16,0x20,0xA3,0x31,0xEB,0xC2,0x4E,0xDC,0xA7,0xE4,0x38, - 0x4A,0x24,0xED,0x2F,0xCF,0x5E,0xF8,0x33,0xA2,0xA4,0x46,0x5A,0x5B,0x8A,0x6D,0xA7, - 0xB1,0xA6,0xD6,0x0E,0x02,0x11,0xB8,0xD6,0x7C,0x81,0xAE,0x72,0x22,0x60,0x35,0x09, - 0xAE,0x88,0xE5,0x4C,0x3D,0x08,0x70,0x7E,0x3C,0x8A,0x79,0xAD,0xFC,0xF3,0x73,0x2E, - 0x6B,0x10,0xA1,0x74,0xCC,0x4D,0x5D,0xAA,0x9C,0x73,0x67,0x7A,0xEA,0x8E,0x6F,0x9F, - 0x75,0x88,0xD8,0xB3,0x39,0xE2,0xF9,0x55,0x82,0xFA,0x30,0x7F,0x6F,0xA3,0x6F,0x94, - 0x0D,0x6E,0xBD,0xBF,0xA7,0x48,0x49,0x68,0x22,0x04,0x34,0x6C,0x5A,0xAD,0x4B,0x68, - 0x10,0x6B,0x5B,0xE1,0xD8,0x4A,0x45,0x4A,0x5F,0x1D,0xF6,0x49,0x2A,0xDA,0x87,0xC1, - 0x72,0x04,0x6F,0x34,0x2B,0x6E,0x22,0x97,0xBD,0xD4,0x52,0x76,0xF0,0x1D,0xEA,0x85, - 0x4B,0x39,0x55,0xE6,0x86,0xAA,0x40,0x42,0xC8,0xC7,0xAF,0x47,0x14,0xD1,0xC2,0x40, - 0xA2,0x1F,0xA7,0x58,0xEE,0xD9,0xFC,0x12,0xD8,0x47,0x99,0xEF,0xA1,0x5A,0xE0,0x23, - 0x1C,0xA4,0x3A,0x19,0x1A,0xCA,0x08,0xAA,0x04,0xF4,0x7D,0x16,0x8B,0xCA,0xD1,0x4A, - 0xF4,0x9D,0x8C,0x7A,0xBC,0x26,0x33,0x78,0xD4,0x5D,0x6F,0x7C,0xC9,0x69,0x7C,0x3E, - 0xB3,0xC6,0x18,0x05,0x3C,0xB7,0x3D,0x84,0xBB,0x0F,0xAB,0x0B,0xEA,0x85,0x6F,0xD7, - 0x4E,0x83,0x35,0x61,0x40,0x5A,0x14,0xD3,0x08,0x8B,0x36,0xE3,0xC4,0x81,0x84,0xA5, - 0x80,0x3E,0x92,0x6C,0x1E,0x64,0xB9,0xDD,0x3D,0xFF,0xFC,0xC6,0x82,0x14,0xA7,0x4C, - 0xB1,0x04,0xCA,0xCA,0x94,0xA0,0x5B,0x7A,0xBA,0x50,0xC1,0xA6,0x60,0x5B,0x67,0x71, - 0xBB,0xE1,0x5C,0xAA,0xB3,0x4D,0xA9,0x20,0x2F,0xE0,0x44,0x37,0x8D,0xFC,0xF4,0x5A, - 0xFE,0x14,0xDE,0xAD,0x6C,0x81,0x95,0x3A,0x3B,0x49,0xDC,0x40,0x28,0x8A,0x2D,0xC5, - 0x78,0x6A,0x03,0x51,0x3B,0xA8,0xA6,0x96,0x7D,0x34,0xE9,0x83,0x2B,0x65,0x85,0x98, - 0xBB,0x71,0x02,0xE0,0x95,0xC2,0x2E,0xCD,0x22,0xBB,0xE6,0xBD,0x58,0x97,0x57,0x81, - 0x57,0x38,0x24,0x49,0x84,0x20,0xC9,0x67,0xCC,0x27,0x4E,0xEF,0x15,0xE5,0xAD,0x49, - 0x12,0x23,0x4C,0x09,0x91,0x1C,0x85,0xB6,0x3D,0x30,0x68,0xCD,0xC3,0x08,0x49,0xD6, - 0x32,0x9F,0xD1,0xC3,0xC7,0x0E,0x41,0xEB,0xB7,0x83,0xAB,0x2A,0x2B,0xE3,0x96,0x87, - 0x01,0x5A,0xEA,0x67,0x03,0x4B,0x75,0x23,0x5A,0xD8,0x1F,0x07,0x29,0x38,0x0A,0xB4, - 0x27,0xD6,0xBA,0x8A,0xF3,0xE5,0xF1,0x73,0x62,0x24,0xA3,0xB2,0x99,0x96,0x8C,0xD3, - 0x10,0x06,0x1E,0x3A,0xED,0x51,0x83,0xD8,0xD4,0x71,0x48,0x64,0x4A,0x59,0x4A,0xBF, - 0xC3,0xB1,0x77,0x69,0xC2,0x85,0xFD,0xF4,0x78,0x44,0xA9,0x52,0xAF,0x70,0xF4,0x5B, - 0x0B,0x83,0x8F,0x4C,0x29,0x2C,0x08,0xE3,0x92,0xDE,0x38,0x05,0x25,0xEF,0x64,0x03, - 0x52,0xC1,0x40,0x50,0x94,0x75,0xF0,0xB1,0x3C,0xEE,0x3E,0x27,0x76,0x40,0x81,0x97, - 0x12,0xBC,0x9E,0x8E,0x55,0x1C,0x97,0xF2,0x3B,0xC7,0xDB,0xFB,0x12,0x38,0xA1,0xA8, - 0xE8,0xD0,0xAC,0x4F,0xBE,0x91,0x29,0x4B,0x06,0xC5,0x35,0xE7,0xA4,0x7B,0x1B,0x9C, - 0x8D,0xD5,0xD5,0x4B,0xA4,0x17,0xA2,0xF4,0x49,0xFC,0xCD,0x89,0xEB,0xA1,0xEA,0x95, - 0xBC,0xF6,0x85,0x45,0xF9,0x42,0x56,0x8B,0x4E,0x28,0x55,0xE6,0x3D,0x91,0xC6,0x66, - 0x1E,0x1A,0x85,0xF4,0x50,0xEA,0x77,0x28,0x66,0x9D,0x7E,0x20,0xFC,0x6E,0x5D,0x8A, - 0xF9,0xA4,0x95,0x52,0x89,0xF9,0x68,0x06,0x65,0x0E,0x37,0xD5,0xB0,0x0C,0x7D,0x6E, - 0x73,0x4A,0x6E,0xA0,0xA2,0x96,0xDD,0xE4,0xB2,0xA8,0x2D,0xFE,0xD0,0x55,0xF5,0x06, - 0x62,0x60,0x1E,0x0E,0xD7,0x83,0xB7,0xE1,0x36,0xFE,0x2C,0x1E,0x4D,0x84,0x15,0x6F, - 0xFC,0x80,0x9A,0x05,0xB9,0x1D,0xF7,0xFC,0x3F,0x2C,0x36,0x78,0x6E,0x62,0x03,0xA1, - 0x30,0xF4,0xA8,0xA9,0x79,0x4E,0xB7,0x09,0xC9,0x5E,0xEA,0x77,0x2C,0xFB,0x55,0xB2, - 0x2D,0x29,0x8E,0x0C,0x5A,0xF5,0x5C,0x00,0x3B,0x2E,0x89,0x01,0xAA,0xB2,0xE2,0x15, - 0x30,0x9B,0x45,0xA3,0x12,0xFA,0x88,0xA5,0x0D,0x61,0xC3,0xBC,0xB8,0xA1,0xC0,0x59, - 0x19,0x1B,0xA6,0xA9,0x91,0x5E,0x8D,0xC3,0x49,0x76,0xDE,0x1B,0x51,0x12,0xD2,0xB2, - 0x46,0x5B,0x2A,0xE6,0xD4,0x7C,0x9F,0xA1,0x50,0xA9,0xAE,0x92,0x8F,0x0B,0xFC,0xEB, - 0x0B,0xCB,0xE5,0xE6,0xAE,0xD4,0x7D,0xAB,0x60,0x2D,0x2A,0xAC,0x71,0x23,0xD1,0x91, - 0xB5,0x99,0xCF,0x34,0x2C,0xD3,0xC6,0xF0,0xED,0x38,0xA2,0x70,0x50,0xA3,0xDF,0xCD, - 0xA0,0x0F,0x28,0x41,0xB2,0x74,0x43,0x69,0x33,0x42,0xEB,0x43,0x3E,0x46,0x7C,0x1C, - 0x24,0xD0,0xCF,0x19,0xAF,0x86,0xB8,0xE4,0x1C,0x96,0x02,0xAF,0xEB,0xD1,0xCC,0x67, - 0x74,0x07,0x42,0xF7,0x8D,0x69,0x58,0x42,0x7D,0xDE,0x09,0x65,0x79,0xEE,0x86,0xC2, - 0x81,0x3D,0x96,0x3D,0x38,0xF0,0xB2,0x4C,0x29,0xB3,0xAB,0xA5,0x91,0x93,0x4C,0x9A, - 0xD7,0x78,0xCD,0xFA,0x7C,0x4E,0x4B,0x58,0x87,0x49,0x1D,0xED,0xC0,0x4E,0x48,0x63, - 0x01,0x0A,0xE0,0x68,0x9E,0xFB,0x50,0xCE,0xE4,0x16,0xCF,0xAC,0xAA,0x33,0x4E,0x5C, - 0xAC,0x57,0xE6,0xE2,0xFE,0x56,0x8E,0xFD,0xC4,0x5D,0x34,0x2F,0x3E,0x10,0x47,0xC6, - 0x47,0xF9,0xA8,0xDA,0xA2,0x13,0xF2,0x20,0x71,0x4C,0x2A,0x24,0x90,0x5D,0xC1,0x00, - 0xA4,0xB3,0x87,0x75,0xF2,0xF1,0x8A,0x2A,0x38,0x81,0xC6,0x6B,0x4D,0xEA,0xEE,0xAC, - 0x2E,0xEA,0xAE,0xF6,0x73,0x9B,0x59,0xF9,0xD1,0x0F,0x0C,0xF8,0x92,0x95,0xB8,0xAA, - 0xC3,0xAE,0x80,0x9A,0xD1,0x32,0x4A,0xC0,0x02,0xCD,0xA3,0xDE,0x4D,0xC5,0x2D,0x0E, - 0x9D,0x6C,0xE2,0x24,0x91,0x98,0x9D,0xE2,0x3B,0x8A,0x95,0xC7,0x33,0xC1,0xB1,0x46, - 0x62,0x12,0x12,0x64,0xC8,0x1E,0x39,0x01,0x5C,0x10,0x05,0x6F,0x37,0xE3,0xCC,0xC8, - 0xA3,0x38,0xD3,0xB9,0xE8,0xAD,0xD4,0x6C,0xCB,0x7A,0x1D,0x5A,0x9B,0x5C,0xB1,0x8F, - 0x04,0xAB,0xAE,0x82,0xA7,0xA2,0xC8,0x02,0x5D,0x82,0xF9,0xBC,0x70,0xF1,0x19,0x93, - 0x24,0xAD,0x14,0x33,0x92,0x0D,0x7E,0x14,0xDE,0xB1,0x1A,0x7B,0x64,0x85,0x5F,0x11, - 0xD0,0x90,0x7F,0xE3,0xB6,0xAE,0x1D,0x41,0xF4,0xC3,0x21,0x92,0x77,0x59,0xE5,0x95, - 0xDD,0xD5,0x53,0xB3,0x13,0x67,0x67,0xAC,0x59,0xB3,0x85,0x2A,0x01,0xB7,0xEA,0x21, - 0x8D,0x00,0xDB,0x14,0xE2,0x97,0x0B,0xB5,0x53,0x8A,0x9C,0x51,0x10,0x8A,0x11,0xE6, - 0xDA,0x78,0x8F,0xCD,0xFF,0x9D,0x4B,0x15,0x4F,0xC7,0x5C,0x6F,0x87,0x3C,0xDE,0x31, - 0x86,0xEA,0x21,0x6A,0xB0,0x67,0x19,0xF4,0xFD,0x45,0xF3,0x74,0x8D,0x4C,0x89,0x0E, - 0x21,0x24,0x35,0xD0,0x48,0xE8,0xD0,0x18,0x49,0xFC,0x99,0x02,0xB4,0xFC,0x5E,0x81, - 0x2E,0x53,0xD7,0xBF,0xD3,0x6A,0x3F,0x96,0x2D,0xB3,0x90,0x7B,0x50,0xAA,0xD6,0x86, - 0x1D,0x9D,0x33,0xA6,0x23,0xD6,0xBA,0xDF,0xA7,0x1B,0x12,0x91,0x24,0x29,0x56,0xC0, - 0xFD,0x4F,0x1B,0x7B,0xB3,0x81,0x9F,0x08,0x52,0xDC,0x48,0xDE,0x02,0x1E,0xEC,0xD6, - 0x3B,0xCC,0xB9,0x19,0x6C,0xC8,0x21,0x26,0x25,0xD1,0x29,0x55,0x4D,0xE1,0xD7,0xA0, - 0x6E,0x63,0x4A,0xB9,0xC7,0x71,0x2D,0x25,0xAF,0x8E,0x1E,0x20,0xC7,0xFA,0xA2,0xAE, - 0xC5,0x7F,0x84,0x04,0x30,0x9D,0x01,0x46,0xB7,0xAD,0x28,0x49,0x7C,0x75,0x5D,0x2F, - 0xAB,0x0F,0xB6,0x02,0x55,0x70,0x0F,0x8D,0xC0,0x84,0x52,0x87,0xDF,0xED,0xE4,0x85, - 0xC6,0xED,0x56,0x6E,0x50,0xE3,0xB7,0x95,0xFB,0xAA,0x03,0x4E,0x60,0x8E,0x02,0x2C, - 0x8E,0xEC,0x35,0x02,0x77,0xF9,0xCE,0xD1,0x27,0xA2,0x8A,0x00,0x6C,0x97,0xAA,0x7B, - 0xAD,0x7E,0x2D,0xBF,0xCB,0x99,0x54,0xCB,0xAD,0x3C,0x76,0xCA,0x01,0xA0,0x7F,0xF8, - 0xC1,0x93,0x91,0x1A,0xE7,0x5D,0xF5,0x3D,0x61,0x30,0x24,0x17,0x9B,0x5B,0xC2,0x59, - 0x7B,0xA1,0x4A,0x68,0x47,0xC0,0xD0,0x2C,0xDB,0xC1,0x5F,0x61,0x71,0xBE,0xAF,0x6E, - 0x8F,0xCB,0x5B,0xD0,0xAE,0xF1,0x75,0xE4,0x94,0x92,0xB0,0x9E,0x43,0xE8,0x1C,0x50, - 0xEE,0x31,0xA8,0xA2,0x5E,0xC1,0x44,0xF6,0x85,0x02,0x29,0x07,0x2B,0x9A,0x59,0xEA, - 0x94,0x55,0xC5,0xB6,0xB3,0x4F,0xF8,0xE3,0x97,0xF6,0x32,0x09,0x08,0x0D,0x84,0x1B, - 0xA6,0x01,0x8E,0xB0,0x66,0xA7,0xB2,0xE8,0x66,0xFA,0x5C,0x05,0x14,0x59,0xB4,0x31, - 0xC5,0xB7,0xF4,0xF4,0xFB,0xB1,0x93,0x3E,0xA7,0x81,0x56,0x95,0xD9,0x7D,0xDE,0x3E, - 0x04,0x16,0xD2,0x74,0x90,0x77,0x4E,0x79,0x36,0x3D,0x11,0xBE,0x3D,0xBC,0x81,0x1E, - 0xD6,0x39,0x05,0x87,0xB6,0x77,0xFD,0x12,0x27,0x47,0x25,0x24,0x78,0xB2,0xC7,0x88, - 0xA9,0xB0,0xBE,0x80,0x52,0xCF,0x0E,0x04,0xB7,0x0B,0xC3,0x9F,0x9E,0x4F,0xAC,0x06, - 0x16,0x63,0x04,0xD6,0x97,0xEE,0x26,0x94,0x94,0x54,0xB4,0x4B,0xE8,0x8D,0x6F,0x6C, - 0x37,0x60,0x45,0x27,0x23,0xF2,0x0E,0x9E,0x82,0x4E,0x7A,0x2A,0x6F,0xE0,0xF9,0xDE, - 0x0A,0xDA,0x44,0x39,0x2A,0x89,0x4A,0x14,0x53,0xFC,0xE4,0x3A,0xFD,0x27,0x5E,0x79, - 0x04,0x25,0x87,0xC0,0xD5,0x0A,0xBE,0xAC,0x3D,0x98,0xAA,0x90,0x08,0x12,0x39,0xEB, - 0x9B,0x88,0x89,0xE9,0xC2,0xB7,0xD4,0x84,0x05,0x73,0x6F,0xA1,0xC7,0x23,0x64,0x9E, - 0xD8,0xBA,0xFB,0xBF,0xD7,0xDA,0x2F,0x94,0xEE,0x2C,0xF5,0x16,0x4C,0xF0,0x1A,0xB9, - 0x96,0xAE,0xB5,0x52,0xA5,0xF3,0xBB,0x12,0x5E,0x43,0x03,0xC0,0xB8,0x70,0x54,0xDA, - 0xAA,0x6D,0x4F,0xDF,0x8B,0x42,0x6D,0xC4,0x3B,0x6E,0x9A,0xFE,0x8A,0x6F,0xE2,0x9D, - 0xB7,0x1D,0xFF,0xE5,0x10,0x96,0x0E,0xA9,0x68,0x6A,0xDA,0xAE,0x6C,0x95,0xF0,0xF2, - 0xC3,0xC0,0x8B,0x60,0xE4,0xF1,0xCF,0x39,0x2B,0x44,0xE7,0x92,0x08,0x09,0x24,0xD7, - 0x98,0x94,0x43,0x59,0x57,0x30,0x75,0xF5,0x10,0x38,0x51,0x7F,0x33,0x2B,0x01,0x97, - 0x9A,0x87,0x68,0x57,0x5A,0xB8,0xF6,0x8A,0xC2,0xEB,0xE4,0x6D,0x24,0x61,0x24,0x6B, - 0x12,0xEF,0xB6,0x82,0xC1,0x3F,0x5B,0x37,0xFC,0xBC,0x01,0x4D,0x8D,0x8A,0x25,0xA2, - 0xBA,0x1B,0x3C,0xD4,0x10,0xEF,0x72,0x5B,0xDD,0xAD,0xAB,0x57,0x50,0x00,0x8D,0x3A, - 0x34,0xCC,0xB7,0xF2,0xA6,0xA4,0x75,0x90,0x51,0x91,0xA9,0x28,0xE1,0x0B,0x8C,0xBC, - 0x8E,0xA9,0x9C,0x06,0x6E,0xDF,0x56,0xD0,0x25,0x09,0x0C,0x00,0x59,0x89,0xDF,0x56, - 0x41,0x09,0x96,0xC7,0xFA,0x1F,0x92,0x39,0x61,0x9C,0x62,0xF9,0x47,0x0E,0x89,0x9E, - 0xF4,0x72,0xC6,0x8C,0x8B,0xD5,0x40,0x94,0x32,0x98,0xEC,0xE8,0x52,0xBB,0xE6,0x32, - 0xA1,0x74,0xD0,0x2B,0xF1,0x39,0x37,0xF1,0x77,0x97,0x4D,0x1C,0x20,0xD2,0xA5,0x30, - 0x7C,0xA9,0x0D,0xD4,0x64,0x47,0xEB,0xD2,0x5D,0x09,0x0D,0x12,0x5D,0xA1,0x37,0xED, - 0xCC,0xB1,0x52,0x09,0x2E,0x64,0xED,0x90,0x4D,0xDA,0xCB,0xB7,0x7D,0xEC,0xEB,0xBC, - 0x8F,0xDB,0x19,0xA8,0xF0,0x13,0xE2,0x3D,0xE9,0x21,0xA1,0xCD,0x3A,0x80,0x79,0x44, - 0xC0,0x18,0x2F,0xC6,0x5C,0x57,0x6E,0x77,0x60,0x7B,0x89,0x71,0xFF,0x2C,0xEB,0x3D, - 0x40,0x68,0x9F,0x2E,0xF6,0x70,0xA5,0xD9,0x83,0x05,0x6A,0xF3,0xE3,0x4B,0x80,0x04, - 0xA4,0x88,0xCC,0x15,0x10,0x77,0xC9,0x6C,0xF4,0x7A,0x50,0x2C,0xB0,0x3A,0x6D,0x01, - 0x04,0x65,0x67,0x24,0x99,0xA5,0x08,0x34,0x5F,0xC1,0x53,0xA2,0x4C,0x5D,0x79,0xF7, - 0x62,0x1A,0xC2,0x04,0x28,0x0B,0x6D,0x67,0xD4,0xCF,0xC8,0xED,0xC8,0xCE,0x16,0x12, - 0x8E,0x0C,0xBF,0xF0,0x06,0xEE,0xBE,0x38,0xED,0x96,0xF5,0xED,0xC9,0x5D,0xD1,0xBB, - 0x8A,0xFC,0x2C,0x3C,0x5B,0xEA,0x80,0x5E,0xDC,0x11,0xA6,0x9A,0x24,0x16,0xB8,0x3E, - 0xD2,0x50,0x37,0x15,0xC7,0x68,0xB6,0x53,0xA3,0x31,0xE7,0xD3,0x3A,0x37,0xE9,0x3B, - 0x7E,0xAC,0x05,0x03,0x68,0x47,0x30,0x45,0x59,0x5A,0x59,0x2B,0xED,0xB1,0x66,0xE6, - 0x34,0x82,0x7D,0xD2,0x2C,0x1C,0x26,0xFB,0x89,0x8B,0x8A,0x31,0x3F,0x5D,0x6B,0x25, - 0xE4,0x21,0x5F,0xEB,0xC2,0x51,0x2A,0xD0,0xDF,0x41,0x2E,0x7E,0x42,0x16,0xAD,0x6A, - 0x86,0xB6,0x3D,0xC0,0x0D,0xF0,0x83,0x5B,0x17,0xA8,0x00,0x24,0xD7,0xD9,0x04,0x04, - 0xA3,0xAE,0x81,0xAA,0x20,0x30,0x2C,0xA3,0x84,0x2D,0x5A,0x1C,0x9D,0xA1,0x81,0x74, - 0x5C,0x79,0x3E,0x0B,0xE1,0xA9,0x69,0xE3,0x45,0xF6,0xAE,0x32,0x49,0x18,0xB2,0xCB, - 0x73,0x5E,0x27,0xA1,0x31,0x97,0x38,0x49,0xB1,0x7B,0x75,0x91,0xCC,0x92,0xD0,0xB5, - 0xA1,0xBB,0xDB,0x7C,0x89,0x51,0x38,0xAA,0xCC,0xCF,0x7F,0xCA,0xE7,0xA0,0x98,0x7B, - 0xA8,0xEE,0x58,0x36,0x23,0x2C,0x98,0xC4,0x42,0xAB,0x42,0x0F,0x09,0x42,0xDE,0xB2, - 0xFB,0x28,0x1D,0xCA,0x85,0xB6,0x31,0xA2,0xD3,0x19,0x53,0x3A,0xA3,0x0B,0xB6,0x13, - 0x64,0x46,0x14,0xD1,0x09,0xB5,0xFC,0x69,0x5B,0xD2,0x16,0x59,0xF0,0xCA,0x8F,0x33, - 0x1B,0x2E,0xA5,0xB6,0x2A,0x76,0xAD,0xB5,0x31,0x53,0xAD,0x12,0xF5,0xFE,0x5E,0x5C, - 0x58,0x93,0xFE,0x77,0x3B,0x92,0x25,0xF2,0x15,0x8D,0xE5,0xAF,0x21,0xAA,0x56,0x2E, - 0xF5,0x1A,0xF9,0x0D,0x49,0x4E,0x24,0xCF,0xD8,0x21,0xC6,0x30,0x96,0xBF,0xD5,0x0B, - 0x2D,0xCE,0xC2,0x76,0x35,0xBD,0x5D,0xF2,0x88,0x12,0x8F,0x2A,0xB6,0xDB,0xB1,0x8C, - 0x3C,0x07,0x95,0x9C,0x6D,0xA6,0x0E,0xF7,0x29,0x22,0x4A,0x26,0xF7,0x50,0x6A,0x2B, - 0x27,0x98,0x49,0xB1,0xED,0x22,0xF3,0x61,0xCE,0x10,0x1C,0x64,0x61,0x1B,0xDE,0x54, - 0xF7,0x20,0xAB,0x87,0x01,0x17,0xA4,0x52,0xC7,0xF6,0x8F,0x67,0xFD,0x12,0x51,0x4E, - 0x9F,0x6E,0xCD,0x7B,0xB9,0xCB,0x55,0xDC,0xFD,0xAB,0x59,0x96,0xCC,0xB8,0x98,0x3C, - 0x48,0xB0,0x47,0x2C,0xF1,0xC4,0xCF,0xC4,0xDC,0xED,0x4E,0x0C,0xF4,0x63,0xA9,0x7F, - 0x0B,0x83,0x39,0x50,0xD7,0xAD,0xB6,0x34,0x2F,0x31,0x57,0x93,0xCD,0xCE,0x68,0x4D, - 0x9B,0x92,0x12,0x4E,0xF9,0x76,0xB1,0xE7,0x32,0x95,0x66,0x1F,0xAD,0x3D,0x24,0x10, - 0x45,0xF7,0x3D,0xFC,0x01,0x66,0x71,0x35,0x43,0xDF,0x60,0xDE,0x57,0xBD,0x77,0x1E, - 0xD5,0x81,0x1C,0x6A,0xDE,0xCE,0x27,0xAC,0xCA,0x7F,0xD6,0x70,0x70,0xA5,0x83,0xBD, - 0xCF,0x24,0x72,0x99,0xE2,0x78,0x32,0x97,0x1A,0xCA,0x00,0xE3,0x45,0x28,0xC1,0x76, - 0xC9,0x65,0xE7,0x5E,0x20,0xC3,0x0B,0xE9,0x88,0x87,0x93,0x90,0x58,0x97,0x2F,0x00, - 0x7D,0x7C,0x42,0x45,0xE2,0x25,0xFA,0xAF,0x22,0x34,0x8B,0xBF,0x4E,0x68,0x6C,0x47, - 0xC0,0x20,0x00,0x4A,0x84,0xF9,0x6A,0xC0,0x75,0xF9,0x78,0x7A,0x41,0xAC,0x7A,0xFF, - 0xF6,0x03,0x4A,0x23,0xA5,0x02,0x9C,0x8F,0x7A,0x31,0xE5,0xC9,0x49,0xB3,0x62,0xCB, - 0xBA,0xC4,0x8B,0x57,0x0D,0x83,0xB0,0xA1,0x70,0x5E,0x84,0x44,0x7D,0x0C,0xD6,0x9D, - 0x12,0xEF,0x94,0xFF,0x08,0xED,0xFC,0xEF,0xD9,0x4B,0x19,0x4B,0x34,0xC8,0x71,0x34, - 0x67,0x73,0xA0,0x96,0xCC,0x8B,0x5D,0x1B,0x2A,0xA6,0x96,0x55,0xAE,0x28,0x18,0x3C, - 0x8A,0xCD,0x16,0x63,0xD7,0x4C,0x3E,0xF0,0xEC,0xAE,0x3A,0xFE,0x2C,0x34,0x5E,0xAD, - 0x3F,0xDE,0x18,0xAE,0xE2,0xEB,0x2C,0x6E,0xE4,0xCC,0x53,0xD6,0x50,0xD7,0xFE,0xCD, - 0x62,0x72,0x4D,0x9E,0x47,0x3B,0x29,0xF2,0x88,0x0E,0x1C,0x5D,0xD5,0xB6,0x9C,0x0F, - 0x43,0x27,0x8F,0x46,0x21,0x76,0xAC,0x1E,0x2A,0xE0,0xA5,0x71,0x24,0x91,0x2F,0xD9, - 0xD7,0x9B,0x37,0xB3,0x4F,0x92,0xC1,0x66,0x54,0x54,0x3F,0x38,0xD7,0xEE,0x75,0x54, - 0x12,0x9B,0x62,0x0D,0xFB,0x7D,0xD3,0x02,0x42,0x47,0x81,0x46,0x91,0x4D,0x8A,0xE5, - 0xF7,0xD0,0xFB,0xCC,0x0D,0x9D,0x2D,0xEF,0x6D,0x24,0x5F,0xC5,0x75,0x6C,0xB6,0xD4, - 0xF2,0xE1,0x90,0xBB,0xAD,0x90,0xC2,0x63,0xE7,0x93,0x21,0x76,0xFB,0xD5,0x9D,0x78, - 0x2F,0xD5,0xC3,0x08,0x9E,0xAE,0xB3,0xE7,0x21,0xCE,0x57,0x6F,0x12,0x57,0x01,0x44, - 0xB1,0x44,0x89,0x88,0x89,0x15,0xDB,0x66,0xD7,0x7F,0x8F,0x26,0x4D,0x7C,0x95,0xC3, - 0xEE,0xAE,0x79,0xED,0xD9,0xBE,0x82,0xC8,0xFA,0xEE,0x8A,0x9D,0x57,0xFC,0x11,0xCA, - 0xF0,0x94,0x95,0x76,0xDF,0x52,0x86,0x05,0xF4,0x6C,0x0E,0x2C,0xA0,0xF2,0xC6,0x72, - 0x39,0x2F,0xA9,0xF1,0x69,0x8D,0x2D,0xC9,0xC3,0xE2,0xBC,0x2B,0x36,0xFB,0xCB,0xD6, - 0xED,0x8D,0x2D,0xD6,0xFE,0x26,0x98,0xC9,0x87,0x95,0x63,0xDF,0xBE,0xD4,0x8B,0x4A, - 0x1F,0x9A,0x51,0x92,0x51,0x57,0xDB,0xFD,0x17,0x73,0xE5,0x6D,0x21,0x62,0x01,0xA2, - 0x94,0xEE,0xFF,0xCE,0x15,0xD8,0x68,0x62,0x31,0x56,0xD3,0x74,0x34,0xF1,0xC7,0x75, - 0x23,0xAC,0xE7,0x91,0x50,0x15,0x15,0x4E,0xE8,0xA8,0xD8,0xFE,0xE5,0x2A,0xCF,0x84, - 0x7E,0xB0,0x48,0x9F,0xF4,0xC0,0x86,0xA2,0x9D,0xD6,0x1F,0x90,0xCC,0x55,0x24,0x1E, - 0xDE,0x29,0x1E,0x91,0xCD,0xBF,0x62,0x00,0x86,0xF6,0xDB,0xB6,0x58,0x91,0x26,0x8C, - 0xD4,0xAA,0xF5,0xCE,0xC0,0x8B,0xED,0x70,0xF9,0x5F,0x47,0x7B,0x04,0xDE,0x8D,0x2E, - 0x3E,0x29,0x9D,0x55,0x8A,0x2A,0x3B,0x3E,0x99,0x51,0xE9,0xF2,0xC1,0xC3,0x77,0x55, - 0x36,0xC2,0x8C,0xD6,0x1F,0x58,0xB3,0x64,0xC9,0x83,0x53,0x76,0x20,0xC7,0x5D,0x3B, - 0xFA,0xE9,0x3D,0x8A,0xBA,0xDC,0x04,0x15,0x7C,0x21,0x6E,0x43,0x6B,0xD1,0xB9,0xAE, - 0xBF,0x6C,0x8B,0xCC,0xBF,0x83,0x2D,0x5F,0xD7,0x04,0x01,0x92,0x37,0xA1,0x09,0xF4, - 0xAD,0x11,0x8B,0x26,0x08,0x8D,0x8D,0x7F,0x13,0xA6,0x8E,0xE7,0xD4,0x36,0xB0,0x6A, - 0x71,0x92,0x18,0x6B,0x87,0x85,0x02,0x34,0x9B,0x63,0xF9,0xA2,0x65,0x15,0x4E,0xE6, - 0x8F,0xBB,0x54,0x22,0x91,0x81,0x0F,0x5C,0xA7,0xCE,0x02,0x26,0xA0,0x8D,0x11,0x1F, - 0x83,0x87,0xB3,0xEF,0x6A,0x03,0x49,0x02,0x13,0x32,0x25,0x55,0x43,0x8C,0xED,0x27, - 0x8D,0x13,0xD1,0x92,0x4F,0xBD,0x04,0xA2,0x0E,0x07,0x32,0x58,0x6F,0x46,0xC2,0xFA, - 0x37,0x1D,0xF1,0xC2,0x7C,0xE7,0x63,0xBC,0x92,0xB0,0x9A,0xCC,0x18,0x6E,0x7C,0xD9, - 0x36,0x2F,0x8B,0xF1,0xEB,0x8B,0x4E,0xDA,0x9E,0xC1,0x8D,0xE2,0x94,0xF0,0x7C,0xA4, - 0x1D,0x70,0xDB,0x87,0x2A,0xFC,0x0D,0xDE,0xC2,0xFF,0x00,0x3F,0x19,0x80,0xDA,0xFB, - 0x66,0xF0,0xB5,0xFD,0x22,0x76,0xE5,0xBD,0x36,0x15,0xBD,0xC7,0xCD,0x90,0xB7,0xC5, - 0x1B,0x01,0xCA,0xC8,0x9B,0x8E,0x83,0x4E,0xE6,0xA5,0x25,0xCE,0x56,0x18,0x3E,0xB1, - 0x4A,0xC2,0xC6,0x35,0xA1,0x4A,0x91,0x53,0x1E,0x92,0x25,0x6B,0x0E,0xD0,0x97,0x9C, - 0xCF,0xAA,0xA4,0x3C,0xAE,0xE8,0x74,0xB0,0xC8,0x43,0xFE,0xFA,0x04,0x11,0xA5,0xBB, - 0x23,0x15,0x4F,0x90,0x40,0x90,0xB6,0x67,0x26,0x5B,0x6A,0x4A,0x3A,0x2E,0xA9,0x8C, - 0x82,0x51,0x20,0x86,0x00,0x2B,0x61,0x38,0x53,0x35,0x0E,0xFC,0x59,0x3C,0xE1,0xA4, - 0x15,0xB6,0x6A,0xFE,0x2F,0x80,0xE6,0x6D,0xBC,0xD4,0xAB,0x34,0xAD,0x2B,0x35,0x99, - 0x62,0x66,0x35,0x5A,0xFF,0xE8,0x40,0x34,0xBE,0xDE,0x8A,0xB2,0x78,0x24,0x90,0x46, - 0x7F,0x27,0x00,0xE7,0x31,0x30,0x1C,0x5E,0x16,0x1E,0x78,0xE5,0x9F,0x80,0x66,0x97, - 0xEE,0xF3,0x49,0x24,0xD8,0x22,0x2C,0x8B,0x68,0xA5,0x38,0x37,0xA4,0x46,0x59,0x3A, - 0x51,0x7B,0xB4,0x77,0x91,0x72,0xDA,0x83,0x95,0xF5,0xC9,0xEB,0x40,0x70,0xA1,0xE6, - 0x8B,0x92,0xE7,0xEF,0x5E,0x80,0xB4,0x39,0xCC,0x47,0x28,0x98,0x12,0x81,0xEE,0x8E, - 0x8F,0xF6,0x76,0x5D,0xB7,0x25,0x4A,0x9C,0xE1,0x4B,0xD1,0xAA,0x0C,0xF0,0xC8,0x2B, - 0xE3,0x24,0xAB,0x58,0x7B,0x95,0x71,0x57,0x26,0xC4,0x1C,0x12,0x27,0x75,0x59,0x41, - 0xC5,0xF1,0x10,0xDE,0xEC,0x4F,0xE1,0x17,0xCA,0x38,0xB5,0x7D,0x17,0xC4,0x7C,0x0B, - 0xDF,0xEB,0x9F,0xF8,0xDB,0x34,0xE4,0xC6,0x6F,0x70,0x68,0xEF,0xA7,0x4B,0x11,0x33, - 0xEC,0xF8,0x01,0x91,0x35,0x0A,0x24,0x6F,0xB2,0x5A,0xED,0x67,0x70,0x4B,0x0F,0x11, - 0xE9,0x5E,0x66,0x47,0x51,0x2A,0xF6,0xED,0xB5,0xA6,0x7A,0x5E,0x24,0xB3,0xC9,0x18, - 0x46,0x1C,0x15,0x6D,0x2C,0x6B,0xE4,0x01,0x21,0x8D,0x36,0xDB,0x0A,0xDB,0x59,0xFB, - 0x5F,0x14,0x8B,0x3A,0x3E,0x59,0x8E,0x1D,0x9F,0x3C,0xAA,0x67,0x49,0x44,0xD7,0xA4, - 0x32,0x9E,0xE6,0x3D,0xCA,0x5B,0x59,0xEF,0xBB,0x0B,0xB5,0x14,0x97,0x9A,0x49,0x84, - 0x3D,0xC5,0xE0,0x3D,0xFB,0xEA,0xD2,0x03,0xC4,0xE7,0xC3,0x26,0x28,0xC5,0xCC,0x5E, - 0xAA,0x00,0xB8,0x66,0x38,0xF3,0x23,0xC4,0x00,0xD8,0x39,0x90,0xBF,0x16,0x72,0x85, - 0xFA,0xA9,0xEF,0x5C,0xD5,0x02,0x93,0x89,0xC4,0x3B,0x28,0x5A,0x8E,0xFC,0x36,0x32, - 0x46,0x2A,0x26,0x74,0x3D,0xD3,0x3D,0x42,0x3A,0x71,0x5D,0x2F,0x63,0x83,0xB6,0x57, - 0x4A,0x24,0xB6,0x0C,0x2F,0xFA,0xAD,0x25,0xFF,0x43,0xE4,0x68,0xDD,0x60,0xDF,0x1C, - 0x60,0xB1,0xC2,0x00,0xE4,0xD8,0xDC,0x7E,0xDC,0x0E,0x85,0xDA,0x1E,0x94,0xE6,0x8D, - 0x9A,0x38,0x35,0xE5,0x3C,0x5C,0x81,0x68,0x66,0x5E,0x6C,0x71,0x36,0xFE,0xD8,0x1B, - 0x38,0x96,0x60,0x05,0x5D,0x35,0x27,0x02,0x17,0x03,0x34,0x34,0x9D,0x85,0xB9,0xA0, - 0x11,0x9F,0x49,0xF3,0x7A,0xB5,0xF1,0x78,0xAD,0x3A,0xE3,0x58,0x2C,0x08,0x15,0xBD, - 0xCE,0xB9,0x54,0xFA,0x84,0xB2,0x25,0xD0,0x6F,0x5F,0x62,0xF7,0xE1,0xD6,0x2A,0x15, - 0x14,0x3D,0xFC,0xAF,0xD5,0xFD,0x9F,0x80,0xB8,0xF6,0x37,0x63,0x52,0xB1,0x35,0xAF, - 0x00,0x2F,0xE8,0xB2,0x5A,0xAF,0x03,0x4F,0xE4,0x14,0x28,0x94,0xA1,0xE8,0x63,0x7B, - 0xA5,0x80,0x9E,0x37,0x10,0x94,0x1C,0x1F,0x77,0x76,0x1C,0x09,0x13,0x87,0x43,0x2F, - 0x55,0xDD,0x45,0x24,0x0C,0x58,0x2E,0x38,0x34,0x2F,0x97,0x08,0x17,0xB4,0x79,0xBD, - 0x88,0x2A,0x07,0x84,0xEB,0x6E,0x18,0x7A,0x54,0xA3,0xBF,0x65,0x8E,0x3E,0xBE,0xEC, - 0x93,0xB7,0xAF,0xCF,0xA8,0x93,0x82,0x30,0x2C,0x62,0xC0,0x68,0xA5,0x8F,0x36,0xA0, - 0xB6,0x49,0x4D,0x52,0x7D,0x6E,0xC3,0x60,0x88,0x12,0x9B,0x94,0x46,0x7F,0xFA,0x00, - 0xE4,0x45,0x00,0xB8,0x14,0x3C,0x7F,0x54,0xA8,0x71,0x9E,0x01,0xE4,0x67,0x00,0x98, - 0xBC,0x86,0xCA,0x58,0x82,0xD5,0xBB,0x35,0x51,0x35,0x4D,0x3B,0xB2,0x43,0xFD,0xBA, - 0x7F,0xDA,0x68,0x2C,0x0D,0xDB,0xC9,0xC2,0x79,0x8F,0x43,0xED,0x7B,0x5A,0x45,0xA9, - 0x89,0xE3,0xA7,0x5F,0x62,0xD9,0x29,0x48,0x6F,0x97,0x6A,0x2B,0xB6,0x96,0x0E,0x2F, - 0x8E,0xB5,0x25,0xBB,0x63,0x1E,0xB1,0x2F,0x6D,0xF5,0x7A,0xE9,0x1A,0x58,0xF7,0xA9, - 0xC9,0x98,0x35,0xCB,0xD9,0x98,0x20,0xDB,0x35,0x67,0xD3,0x55,0xF3,0xA9,0x32,0x31, - 0xBE,0x69,0x9A,0x4E,0x43,0xD6,0x9E,0x95,0x0F,0xB8,0x66,0x70,0x83,0xD6,0xC7,0x31, - 0x86,0x96,0x0D,0xCD,0x09,0x07,0x48,0xAC,0x02,0x6F,0xE1,0x00,0x57,0xBF,0xCD,0x64, - 0x71,0x71,0xED,0x3F,0xDC,0x7F,0x0E,0x80,0x08,0x68,0xE3,0xE3,0xAC,0xEC,0x13,0x90, - 0x9C,0xEC,0x8D,0x87,0x92,0x37,0xAF,0xC2,0xB6,0xDF,0x45,0xBE,0xA1,0x99,0x1F,0x9F, - 0x09,0xF4,0xA9,0x72,0xEB,0x87,0x77,0x7C,0x77,0x0F,0x7A,0xE7,0xFD,0x7C,0xC5,0xEB, - 0x83,0xCC,0x1C,0x56,0xA2,0xD3,0x67,0x19,0x80,0xD8,0x22,0xE8,0xC4,0x8A,0x31,0x2C, - 0x86,0x15,0xCD,0x9C,0x58,0xED,0x02,0xD8,0x06,0x9B,0x0A,0xEB,0x67,0x66,0x5C,0x28, - 0x4F,0xFE,0xC4,0x68,0xCA,0xB5,0x6B,0xDB,0x2D,0x91,0x72,0x6F,0x86,0x66,0x12,0x2F, - 0xA5,0xF0,0x16,0x47,0x84,0x0C,0xCC,0x42,0xFA,0xF7,0x9A,0x3B,0x43,0xCC,0x73,0x41, - 0x92,0xB4,0xB5,0x6E,0x18,0xDE,0x6F,0x4D,0x37,0x8C,0xCC,0x4C,0x02,0x8B,0x08,0xFC, - 0x2A,0x6C,0x9F,0x2C,0x8D,0x3C,0xD4,0x29,0x31,0x53,0xE0,0x24,0x8D,0xD6,0xAC,0x8C, - 0xA6,0x6E,0xFE,0xD1,0xFC,0xE4,0x9B,0x7D,0xC6,0x6D,0xD1,0x63,0x61,0xB7,0x30,0xCC, - 0xCF,0x33,0xA3,0x6A,0x51,0x6A,0x4A,0x1C,0x98,0x42,0xF1,0x73,0x6D,0xAB,0x4C,0x7C, - 0x14,0x62,0x02,0xBC,0x90,0xF8,0x4B,0x9E,0x61,0x64,0x38,0x88,0x2D,0x61,0x76,0x0E, - 0xF1,0x9E,0x6A,0x8F,0x37,0xC2,0x5C,0xD4,0xAE,0x54,0x67,0xAD,0x4F,0xF4,0xF8,0x59, - 0x26,0xE6,0x58,0xE6,0xEE,0x2D,0x3A,0x83,0x18,0x6D,0xE0,0x0D,0x72,0x42,0x4B,0x6A, - 0x59,0xDA,0x25,0xB4,0x8A,0xA9,0xA4,0xA3,0x87,0xDF,0x50,0x8F,0xEF,0x35,0x18,0xC3, - 0x12,0xCA,0xFD,0xBE,0x82,0x78,0xA9,0xF6,0x8B,0xA1,0x31,0xF7,0xA9,0x3F,0x26,0x59, - 0x4F,0xAF,0x91,0xFB,0x11,0x81,0xDF,0x47,0x3D,0xC8,0xA5,0x12,0x19,0x60,0xEF,0xAA, - 0xD5,0xFB,0x93,0xA8,0x4B,0x95,0xD6,0x6A,0xED,0x17,0x57,0x26,0xE2,0x27,0x55,0xAA, - 0x33,0x2A,0x92,0x81,0xA0,0x14,0xAB,0x12,0x83,0xA4,0xA1,0xE2,0x85,0x15,0x74,0x38, - 0x9D,0x95,0xE6,0x18,0xD5,0xCD,0x5E,0xC0,0xB9,0x66,0x3C,0x62,0x3A,0xF6,0xCC,0xBB, - 0xB1,0x88,0x04,0x41,0xAE,0x18,0xCE,0x80,0x61,0xF9,0x5A,0x89,0x8F,0x24,0x0E,0xFC, - 0x0A,0xDC,0xC2,0x57,0xEB,0x17,0xAE,0x2F,0x51,0x17,0x1F,0xE0,0x95,0xFE,0x08,0x5C, - 0x05,0xE8,0x0A,0x7D,0x15,0x7A,0xED,0x2E,0xD2,0x3C,0x0D,0x9C,0x4C,0xF3,0x79,0x91, - 0x86,0x84,0xD3,0x58,0x86,0x9E,0x05,0x16,0x9B,0xA8,0x1B,0x0B,0x2A,0x2F,0x77,0xFC, - 0xF2,0x0F,0xA0,0xBF,0x40,0xBF,0x15,0xCE,0x2D,0x70,0xD7,0xA4,0xB2,0x1C,0x76,0x08, - 0x7C,0xF6,0x09,0x3B,0xFF,0x3D,0x2F,0x7B,0x67,0x63,0xCC,0x31,0x27,0xBA,0x82,0xBF, - 0x59,0xA1,0x57,0x7C,0xBD,0x8F,0x98,0xC5,0x55,0xCA,0xC2,0x0A,0x60,0x7A,0x1D,0x5A, - 0xC7,0xA5,0xE0,0xFE,0x08,0xB8,0xED,0xB0,0xAA,0xB8,0x2E,0xB1,0x66,0x3D,0xE4,0x32, - 0xCA,0xF8,0x80,0x21,0xB6,0x2F,0x80,0x55,0x61,0x85,0xA9,0x31,0x69,0x69,0x36,0xA8, - 0x16,0xE3,0xC5,0xB2,0xA3,0xBB,0x9E,0x16,0x3B,0x3C,0xDE,0xB0,0xE3,0x3D,0x35,0x95, - 0x70,0x61,0x55,0x2D,0x97,0x78,0xB3,0xA0,0x59,0x40,0x9A,0x7F,0x0A,0xED,0xB8,0x4F, - 0x2D,0xFC,0x77,0xA2,0x9E,0x58,0x53,0x7C,0xA0,0x9A,0x8F,0xAF,0x3E,0x72,0x1E,0x59, - 0x31,0xC1,0xF5,0x5D,0x70,0xD8,0xDF,0x7D,0xB2,0x67,0xB0,0x3E,0x5A,0x9B,0xE1,0x67, - 0x0B,0xC8,0x32,0xD8,0xDF,0xE2,0x02,0x11,0x65,0x57,0xB9,0x4A,0xE4,0x64,0x69,0x36, - 0x95,0xA6,0xE1,0x0B,0x3D,0x14,0x2C,0x4D,0x88,0x3A,0x6A,0x7E,0x01,0x8C,0x08,0x62, - 0x0F,0x84,0x0B,0x63,0xC0,0x41,0x0B,0x65,0x17,0x22,0xDE,0x2F,0xFD,0xD6,0xD2,0xFE, - 0xBA,0x4E,0x2F,0xAC,0x88,0x2B,0x2E,0x98,0x8E,0xD2,0x71,0x3D,0xB2,0x3C,0x19,0x68, - 0x98,0x54,0x6D,0xD9,0x4C,0xD3,0x0D,0x77,0xE4,0x2B,0xBA,0x4E,0xC0,0xB6,0xD5,0x6D, - 0x37,0x65,0x7F,0x58,0xF6,0x29,0xDD,0x99,0x35,0x93,0x15,0xBA,0xD1,0x0C,0x31,0x6F, - 0xEC,0x2B,0x3B,0xAD,0xA9,0xAD,0xD8,0x7F,0x7D,0x91,0x96,0x2A,0x97,0x43,0xF3,0xC4, - 0x74,0xF6,0x5C,0x8E,0x9A,0xC0,0xA4,0x2A,0x20,0xD0,0xF0,0x6C,0x0E,0x25,0xD9,0x41, - 0xE2,0x6F,0xA8,0x54,0x65,0xE6,0xF5,0x0E,0xCD,0x8E,0x28,0xB4,0x4B,0x41,0xF5,0x29, - 0x9C,0xB5,0x84,0xD5,0x2E,0x33,0x82,0xD3,0x71,0x9F,0x94,0x21,0x65,0x06,0x68,0x68, - 0xDC,0xC4,0x0F,0xA7,0x68,0xAC,0x8E,0x3C,0x7C,0xA0,0x0D,0x34,0xB7,0x8B,0xD3,0x5C, - 0x05,0x5D,0xC9,0xB9,0x53,0xF8,0x01,0xED,0x9B,0xDC,0x61,0x72,0x38,0xE8,0x4C,0x9A, - 0x5A,0x9E,0xF9,0x2B,0x86,0x4B,0xB0,0xE4,0x32,0x16,0xC1,0x28,0xD3,0x7C,0x66,0x4D, - 0x7C,0x49,0x7A,0x39,0x08,0xF3,0x97,0x30,0x38,0xDC,0x5F,0x86,0x18,0xBB,0xB7,0x1E, - 0xFF,0xB5,0x88,0xF1,0xFF,0x06,0x25,0x8F,0x7C,0xE3,0x27,0xE9,0xF1,0x7C,0x01,0x75, - 0xCF,0x3B,0x99,0xE3,0x20,0x95,0x81,0xEA,0x9D,0x5E,0xBF,0x55,0x5B,0x5C,0xEE,0x13, - 0x26,0x84,0x45,0xF1,0x85,0x49,0x3F,0x33,0xC5,0xA0,0x6B,0x03,0x0D,0x26,0xE8,0xCB, - 0x49,0xF5,0x48,0xF1,0x0A,0x53,0x4C,0x33,0x0D,0x2A,0xAA,0x02,0xB0,0x08,0x38,0xC3, - 0x6D,0xD8,0x7E,0x8D,0xC1,0xCC,0xF5,0x3B,0xB6,0x0B,0x7D,0x82,0xF0,0x43,0x17,0xDF, - 0x68,0x4E,0xED,0x10,0xC4,0x1D,0x64,0x05,0x40,0x5F,0xC9,0x26,0xDF,0xE9,0xAB,0x49, - 0x2E,0x74,0x8E,0x8D,0xF7,0x18,0xD7,0x26,0xEA,0x38,0x28,0x43,0x14,0x35,0x9F,0xCF, - 0x72,0x59,0x27,0x4F,0x53,0x5D,0x9A,0xB7,0x96,0x8F,0x40,0xD6,0xC4,0x0C,0xB5,0x87, - 0x42,0xEA,0xD1,0x18,0xEB,0x2E,0xD8,0x39,0xEF,0xD4,0xF0,0x3D,0x74,0x83,0x4B,0x44, - 0x5E,0xEE,0x2A,0xBC,0x9C,0x73,0x07,0xF2,0xC7,0xEC,0xA5,0xAA,0xBB,0x18,0x92,0xCF, - 0x0E,0xF4,0xA9,0xBC,0xC6,0xCC,0x47,0x53,0x09,0x35,0x03,0xC9,0xDE,0x82,0x5C,0xAE, - 0x0C,0x5F,0x06,0x08,0x0E,0x6B,0xEE,0xAD,0x94,0xDD,0x65,0x94,0x46,0x56,0xD2,0xEB, - 0x39,0xE9,0x71,0x12,0x61,0xE2,0x50,0x64,0x81,0xAF,0xC8,0x16,0x65,0x55,0xF4,0x2C, - 0x94,0x9F,0x34,0xCA,0xBD,0x51,0x3C,0x68,0x9B,0x08,0x55,0x77,0x8D,0xEB,0x4E,0x31, - 0x81,0x2D,0xAC,0xB9,0x20,0xF7,0x87,0x2E,0x37,0x1C,0xCD,0x57,0x50,0xEB,0x33,0x60, - 0xE2,0x03,0x83,0x52,0x47,0xAD,0x0E,0x3F,0xEA,0x3B,0x58,0x11,0x80,0xF4,0x4D,0xCD, - 0xA6,0x3E,0x8A,0xF1,0x31,0xDC,0x07,0x97,0x74,0x6C,0xBF,0x8F,0x3A,0x74,0xA3,0xB5, - 0xEE,0x1D,0x0E,0xAC,0x4F,0xEB,0x09,0xB3,0x38,0x8B,0xBA,0xE7,0x54,0x0E,0x6F,0xD4, - 0xE7,0x9D,0xF3,0x1D,0xB7,0xE1,0x7B,0x46,0x03,0x19,0x16,0x2C,0x4C,0x0D,0x5B,0x98, - 0x27,0x6D,0x5D,0xA0,0x72,0x07,0x8F,0x39,0xCB,0x48,0x23,0xA2,0x60,0xD0,0x2B,0xFF, - 0x7A,0x0F,0x0A,0xBE,0xE7,0xCB,0xAF,0xCF,0xDB,0x99,0xB8,0x23,0x07,0xB8,0xC8,0xE8, - 0xC1,0x08,0xEF,0xD5,0xE8,0xA7,0xC1,0xD0,0x2C,0x48,0x5C,0xEC,0xA7,0x21,0x58,0x01, - 0x67,0x48,0xE3,0xF0,0xCE,0x46,0xAF,0x01,0x3F,0x7A,0x81,0xD1,0x38,0x10,0xA3,0xDA, - 0xEC,0xCE,0x52,0xFD,0x54,0x75,0x67,0x83,0x5A,0x9B,0xC7,0x4F,0x8B,0x75,0x7B,0x97, - 0x47,0x71,0xE3,0x16,0xBC,0x49,0xF7,0x9F,0x4C,0xF2,0xAF,0xE2,0xA6,0x8D,0xBF,0x18, - 0xA1,0x2D,0x15,0x07,0xB1,0xD6,0xCF,0x79,0xF1,0x16,0x97,0x1E,0xE0,0x6B,0x49,0xA3, - 0x98,0x86,0x30,0x23,0x0B,0xD0,0xAB,0xD0,0x0E,0x69,0xC1,0xCA,0x1C,0x22,0xA1,0x27, - 0xB3,0xC3,0x9A,0xC9,0xD5,0xB9,0x27,0x62,0xBD,0xC9,0xB1,0x55,0x66,0xA2,0x3C,0xC1, - 0x49,0x65,0x68,0x91,0x87,0xBE,0x77,0x83,0x3B,0x40,0x24,0x6F,0x6F,0xF3,0x29,0x79, - 0xEA,0xCE,0x29,0xB7,0x0C,0x51,0xB8,0xB4,0xFF,0x12,0xB9,0x8C,0x38,0x7B,0x07,0xEB, - 0x6F,0x96,0xBB,0xC9,0x86,0x25,0x6B,0x07,0x06,0x73,0xDA,0xE8,0x29,0xCD,0xFE,0xD8, - 0xDB,0x2D,0xC9,0x6C,0xAE,0x78,0x35,0x30,0x32,0xC6,0x11,0x16,0x19,0xD1,0xF4,0x69, - 0x7E,0xFC,0x8C,0xA7,0x26,0x3A,0x2D,0x46,0xD6,0xB8,0x34,0xC4,0x4F,0x68,0x5A,0x8B, - 0xAB,0x89,0x3A,0x7A,0x8C,0xED,0xA8,0x54,0x64,0xE6,0x43,0xD0,0xA6,0x2C,0x55,0x82, - 0xC8,0xB4,0x78,0xC1,0x65,0x1B,0x8B,0xB4,0x74,0xF6,0x0A,0xCD,0xE0,0x04,0x0B,0x8E, - 0xBB,0xB7,0x6A,0x6A,0x10,0x81,0xCC,0xA1,0x50,0x94,0xFE,0xE7,0xF6,0x33,0xC2,0x06, - 0x72,0x2C,0x31,0x6A,0x30,0xD6,0x6D,0x15,0x78,0xCD,0xBB,0xAD,0x8E,0x6D,0x18,0xAB, - 0xCF,0x33,0x81,0xF6,0xF3,0xB5,0x92,0x5D,0xF9,0x95,0xEF,0x34,0xA3,0x09,0xD1,0x3A, - 0x76,0xF6,0x6E,0x41,0x52,0xAB,0x69,0x03,0x84,0xE7,0x6D,0xE5,0x62,0xC9,0xB7,0xD1, - 0xB6,0x3F,0xA3,0x82,0x8E,0x37,0x34,0x2C,0xC2,0x6F,0xAD,0x49,0x5C,0xCB,0x3C,0x5B, - 0x38,0x30,0x6A,0xBB,0xB6,0x6E,0x12,0x7F,0x13,0x63,0xA0,0x0A,0x1D,0xE3,0xC6,0xD4, - 0x77,0x92,0x75,0x28,0x2E,0x73,0xB7,0x02,0x09,0x09,0xFB,0x31,0x10,0x32,0x4E,0x28, - 0xDD,0x9B,0x5B,0x22,0x37,0x75,0xB5,0x96,0x66,0x5C,0x33,0xA8,0xF9,0x26,0x2B,0x86, - 0x8A,0x79,0x3F,0x56,0x1C,0x5E,0x38,0x5E,0x7E,0xEF,0x48,0xDC,0x0D,0x0A,0x88,0x6C, - 0x3F,0xCB,0x91,0x6A,0xE1,0x4F,0xFC,0x6C,0x2F,0x87,0x89,0x7A,0x9C,0xFE,0x1A,0x88, - 0xBC,0x12,0x04,0x04,0x35,0x55,0x29,0x99,0xE8,0x0B,0x65,0xD7,0xAE,0x27,0x7C,0x8E, - 0x19,0x7F,0xD0,0x82,0x73,0x68,0xCF,0x68,0xF3,0x8B,0xCB,0x52,0xEC,0xFB,0xC4,0xDC, - 0x26,0xC6,0xCA,0x7D,0x10,0x46,0x53,0x0F,0xAA,0x92,0xDA,0x72,0x5D,0xBB,0x15,0x5E, - 0xF5,0x56,0x7B,0xB8,0xA1,0x34,0xD9,0x65,0xA1,0xC5,0xB0,0x3D,0xD8,0xDA,0x9F,0x81, - 0xBF,0x33,0xAB,0x7D,0x16,0x95,0xC3,0xC4,0x70,0x7F,0x82,0xDC,0x6C,0x78,0x08,0xBE, - 0x49,0x81,0xAB,0x81,0x78,0x60,0xDD,0xA3,0x75,0x1C,0xDB,0x97,0xBE,0x4B,0xCB,0x54, - 0xFD,0xF1,0xB5,0xDD,0xAB,0x81,0x80,0xD0,0x08,0x2D,0x88,0x94,0x07,0x4F,0x3A,0xCB, - 0x66,0xD0,0xF6,0x2F,0x87,0xAD,0x25,0x81,0x70,0x29,0x13,0xA0,0x83,0x5F,0x5B,0xD1, - 0x9B,0x00,0x00,0x91,0xB2,0xD7,0x33,0xB6,0x10,0x3A,0xF0,0x9C,0x19,0x13,0xC9,0xB1, - 0x18,0x1A,0x87,0xF6,0x5A,0xB8,0x80,0x6F,0x48,0x7A,0xC5,0x8D,0x42,0xDD,0x28,0x4B, - 0xDA,0x32,0xDF,0xEE,0x8D,0x6D,0xD3,0x18,0x3D,0x8C,0x48,0x90,0x87,0xBC,0x3F,0x37, - 0xCD,0x8A,0xDE,0xCD,0x55,0x0C,0x11,0x5E,0x50,0x92,0xB1,0x85,0x1D,0xD0,0x0A,0xF5, - 0x20,0xB3,0xC6,0xD1,0xD1,0x26,0xD5,0x8B,0x12,0x3D,0x86,0x0B,0xFA,0x7E,0x4D,0xEF, - 0xAD,0x72,0x38,0x5B,0xBD,0x97,0x48,0xD4,0x1E,0xB2,0x00,0x5C,0x90,0xE6,0xCD,0xA7, - 0x5A,0xCA,0x77,0x74,0x54,0xD6,0x34,0x47,0x06,0x48,0xE9,0xBC,0x56,0x13,0x4E,0xE7, - 0x17,0x6A,0x46,0x38,0xC9,0xDE,0x51,0x4A,0xFB,0x3B,0x73,0xAD,0xCE,0x8E,0x13,0xC9, - 0x33,0x26,0x50,0xD6,0x66,0xF3,0xA7,0xA2,0xB8,0x60,0x5E,0x14,0x11,0x99,0x4C,0x4D, - 0x66,0x19,0x99,0xFE,0x59,0x77,0x5B,0xE0,0x20,0xAB,0x36,0xCD,0x91,0x6F,0xE9,0xF8, - 0x95,0x43,0x41,0x61,0x7D,0xF8,0xFB,0xAD,0x75,0x33,0xA5,0xD2,0xC4,0x67,0x95,0x97, - 0x97,0xB6,0x07,0xD4,0xB0,0x1A,0x7E,0x4E,0x6D,0xCD,0xA9,0x05,0x00,0x54,0x83,0x6D, - 0x52,0xA3,0x17,0xD6,0x5A,0xA0,0x83,0xC6,0xD9,0x78,0x29,0xEF,0xD2,0x08,0xA1,0x28, - 0xCA,0xEA,0x70,0xA1,0x05,0x84,0xB4,0x48,0xF9,0x00 -}; - diff --git a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/animation.c b/ANDROID_3.4.5/drivers/video/wmt/bootanimation/animation.c deleted file mode 100755 index de803ccd..00000000 --- a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/animation.c +++ /dev/null @@ -1,448 +0,0 @@ -/** - * Author: Aimar Ma <AimarMa@wondermedia.com.cn> - * - * Show animation during kernel boot stage - * - * - **/ - -#include <linux/mm.h> -#include <linux/timer.h> -#include <linux/wait.h> -#include <linux/sched.h> -#include <linux/delay.h> -#include <linux/kthread.h> -#include <linux/version.h> -#include <linux/module.h> -#include <asm/io.h> -#include <linux/proc_fs.h> -#include <linux/ioport.h> -#include "animation.h" -#include "buffer.h" -#include "LzmaDec.h" -#include "../memblock.h" - -#include "anim_data.h" - - -#define ANIM_STOP_PROC_FILE "kernel_animation" - -#define MAX_CLIP_COUNT 6 - -extern int wmt_getsyspara(char *varname, unsigned char *varval, int *varlen); -//extern void clear_animation_fb(void * p); -//extern void flip_animation_fb(int pingpong); - - - -#define THE_MB_USER "Boot-Animation" - -#define DEFAULT_BUF_IMAGES 4 //default buffered image count - -#undef THIS_DEBUG -//#define THIS_DEBUG - - - -#ifdef THIS_DEBUG -#define LOG_DBG(fmt,args...) printk(KERN_INFO "[Boot Animation] " fmt , ## args) -#define LOG_INFO(fmt,args...) printk(KERN_INFO "[Boot Animation] " fmt, ## args) -#define LOG_ERROR(fmt,args...) printk(KERN_ERR "[Boot Animation] " fmt , ## args) -#else -#define LOG_DBG(fmt,args...) -#define LOG_INFO(fmt,args...) printk(KERN_INFO "[Boot Animation] " fmt, ## args) -#define LOG_ERROR(fmt,args...) printk(KERN_ERR "[Boot Animation] " fmt , ## args) -#endif - - -// MUST match Windows PC tool. Don't change it. -struct animation_clip_header{ - int xres; - int yres; - int linesize; - unsigned char x_mode; - unsigned char y_mode; - short x_offset; - short y_offset; - unsigned char repeat; - unsigned char reserved; - int interval; - int image_count; - int data_len; -}; - -// MUST match Windows PC tool. Don't change it. -struct file_header { - int maigc; - unsigned short version; - unsigned char clip_count; - unsigned char color_format; - unsigned int file_len; -}; - - - -struct play_context { - struct animation_clip_header *clip; - int xpos; // top postion - int ypos; // left postion - - volatile int play_thread; - animation_buffer buf; -}; - - -// globe value to stop the animation loop -static volatile int g_logo_stop = 0; -static struct animation_fb_info fb; - -static void *SzAlloc(void *p, size_t size) -{ - void * add = (void *)mb_alloc(size); - LOG_DBG("alloc: size %d, add = %p \n", size, add); - return add; -} - -static void SzFree(void *p, void *address) { - if (address != 0) { - LOG_DBG("free: address = %p \n", address); - mb_free((int)address); - } -} - -static ISzAlloc g_Alloc = { SzAlloc, SzFree }; - - -static int show_frame(struct play_context *ctx, unsigned char *data) -{ - unsigned char * dest; - int linesize = fb.width * (fb.color_fmt + 1) * 2; - int i = 0; - struct animation_clip_header *clip = ctx->clip; - if (g_logo_stop) - return 0; - - dest = fb.addr; - -// printk(KERN_INFO "dest = 0x%p src = 0x%p\n", dest, data); - - if(data) { - LOG_DBG("dest %p, data %p (%d,%d) (%dx%d) linesize(%d,%d)", dest, data, - ctx->xpos, ctx->ypos, clip->xres, clip->yres, clip->linesize, linesize); - - dest += ctx->ypos * linesize; - dest += ctx->xpos * (fb.color_fmt + 1) * 2; - - for (i = 0; i < clip->yres; i++) { - memcpy(dest, data, clip->xres * (fb.color_fmt + 1) * 2); - dest += linesize; - data += clip->linesize; - } - } - - LOG_DBG("show_frame data %p, fb.addr %p\n", data, fb.addr); - return 0; -} - -static int decompress(struct play_context * ctx, unsigned char *src, unsigned int src_len) -{ - SRes res = 0; - CLzmaDec state; - size_t inPos = 0; - unsigned char * inBuf; - SizeT inProcessed; - - - // 1) read LZMA properties (5 bytes) and uncompressed size (8 bytes, little-endian) to header - UInt64 unpackSize = 0; - int i; - - unsigned char * header = src; - for (i = 0; i < 8; i++) - unpackSize += (UInt64)header[LZMA_PROPS_SIZE + i] << (i * 8); - - // 2) Allocate CLzmaDec structures (state + dictionary) using LZMA properties - - - LzmaDec_Construct(&state); - RINOK(LzmaDec_Allocate(&state, header, LZMA_PROPS_SIZE, &g_Alloc)); - if (res != SZ_OK) - return res; - - // 3) Init LzmaDec structure before any new LZMA stream. And call LzmaDec_DecodeToBuf in loop - LzmaDec_Init(&state); - - - inBuf = header + LZMA_PROPS_SIZE + 8; - - for (;;) - { - unsigned int outSize; - unsigned char * outBuf = animation_buffer_get_writable(&ctx->buf, &outSize); - - unsigned int frame_size = outSize; - unsigned int decoded = 0; - ELzmaFinishMode finishMode = LZMA_FINISH_ANY; - ELzmaStatus status; - while(1) { - inProcessed = src_len - LZMA_PROPS_SIZE - 8 - inPos; - - res = LzmaDec_DecodeToBuf(&state, outBuf + frame_size - outSize, &outSize, - inBuf + inPos, &inProcessed, finishMode, &status); - - inPos += inProcessed; - decoded += outSize; - unpackSize -= outSize; - outSize = frame_size - decoded; - - LOG_DBG("Decoded %d bytes, inPos = %d\n", decoded, inPos); - - if(res != SZ_OK) - break; - - if (outSize == 0) - break; - } - - animation_buffer_write_finish(&ctx->buf, outBuf); - - if (res != SZ_OK || unpackSize == 0 || g_logo_stop) - break; - } - - // 4) decompress finished, do clean job - LzmaDec_Free(&state, &g_Alloc); - return res; -} - -static int animation_play(void * arg) -{ - unsigned char * data; - static int not_first_play; - struct play_context *ctx = (struct play_context *)arg; - - LOG_DBG( "animation_play thread start...\n"); - - if(!not_first_play) { - msleep(500); // sleep a while to wait deocde few frames -// clear_animation_fb(fb.addr); - not_first_play = 1; - } - - - // try to get a valid frame and show it - while(!g_logo_stop) { - data = animation_buffer_get_readable(&ctx->buf); - if(data) { - show_frame(ctx, data); - animation_buffer_read_finish(&ctx->buf, data); - } - else { - if( ctx->buf.eof ) //no data and reach eof - break; - LOG_DBG("animation_buffer_get_readable return NULL\n"); - } - - if(g_logo_stop) - break; - - //else - msleep(ctx->clip->interval); - } - - LOG_DBG( "animation_play thread End\n"); - animation_buffer_stop(&ctx->buf); - ctx->play_thread = 0; - return 0; -} - - -static void decode_clip(struct animation_clip_header *clip, unsigned char * data, int index) -{ - // start timer for animation playback - struct play_context ctx; - int buf_images; - - LOG_DBG("Start playing clip %d, %dx%d, linesize %d, image %d, data_len %d\n", - index, clip->xres, clip->yres, clip->linesize, clip->image_count, clip->data_len); - - ctx.clip = clip; - - // init the decompress buffer - if (clip->repeat == 0) { - buf_images = DEFAULT_BUF_IMAGES; - if(buf_images > clip->image_count) - buf_images = clip->image_count; - } - else { - // for the repeat clip, alloc a big memory to store all the frames - buf_images = clip->image_count; - } - - if( 0 != animation_buffer_init(&ctx.buf, clip->linesize * clip->yres, buf_images, &g_Alloc)){ - LOG_ERROR("Can't init animation buffer %dx%d\n", clip->linesize * clip->yres, buf_images); - return; - } - - - ctx.xpos = clip->x_mode * (fb.width / 2 - clip->xres / 2) + clip->x_offset; - ctx.ypos = clip->y_mode * (fb.height / 2 - clip->yres / 2) + clip->y_offset; - - kthread_run(animation_play, &ctx, "wmt-boot-play"); - ctx.play_thread = 1; - - LOG_DBG("Start Decompressing ... \n"); - decompress(&ctx, data, clip->data_len); - - if (clip->repeat) { - while (!g_logo_stop) { - // Fake decompress for REPEAT mode. (Only decompress the clip once so we can save more CPU) - unsigned int outSize; - unsigned char * outBuf; - - outBuf = animation_buffer_get_writable(&ctx.buf, &outSize); - animation_buffer_write_finish(&ctx.buf, outBuf); - } - } - - LOG_DBG("Decompress finished!\n"); - ctx.buf.eof = 1; - //wait the play thread exit - while(ctx.play_thread) { - msleep(10); - } - - LOG_DBG("Play clip %d finished\n", index); - animation_buffer_release(&ctx.buf, &g_Alloc); -} - - -static int animation_main(void * arg) -{ - unsigned char * clip; - int i; - - struct file_header *header = (struct file_header *)arg; - int clip_count = header->clip_count; - struct animation_clip_header clip_headers[MAX_CLIP_COUNT]; - unsigned char * clip_datas[MAX_CLIP_COUNT]; - - if( clip_count > MAX_CLIP_COUNT) - clip_count = MAX_CLIP_COUNT; - LOG_DBG( "animation_main thread start, clip_cout = %d\n", clip_count); - - - clip = (unsigned char *)(header + 1); - for (i = 0; i< clip_count; i++){ - memcpy(&clip_headers[i], clip, sizeof(struct animation_clip_header)); - clip += sizeof(struct animation_clip_header); - clip_datas[i] = clip; - clip += clip_headers[i].data_len; - } - - LOG_DBG( "Found %d clip(s)\n", clip_count); - - for (i = 0; i < clip_count; i++) { - if (!g_logo_stop) - decode_clip(&clip_headers[i], clip_datas[i], i); - } - - - g_Alloc.Free(&g_Alloc, arg); - LOG_DBG( "animation_main thread finished \n"); - return 0; -} - - -static int stop_proc_write( struct file *file, - const char *buffer, - unsigned long count, - void *data ) -{ - /* - char value[20]; - int len = count; - if( len >= sizeof(value)) - len = sizeof(value) - 1; - - if(copy_from_user(value, buffer, len)) - return -EFAULT; - - value[len] = '\0'; - - LOG_DBG("procfile_write get %s\n", value); - */ - - //anything will stop the boot animation - animation_stop(); - - return count; // discard other chars -} - -struct proc_dir_entry *stop_proc_file; - -static struct proc_dir_entry * create_stop_proc_file(void) -{ - stop_proc_file = create_proc_entry(ANIM_STOP_PROC_FILE, 0644, NULL); - - if( stop_proc_file != NULL ) - stop_proc_file->write_proc = stop_proc_write; - else - LOG_ERROR("Can not create /proc/%s file", ANIM_STOP_PROC_FILE); - return stop_proc_file; -} - -int animation_start(struct animation_fb_info *info) -{ - struct file_header *header; - unsigned char * buffer; - - const void * animation_data = anim_data; - if (animation_data == NULL) - return -1; - - if( !create_stop_proc_file() ) - return -1; - - header = (struct file_header *)animation_data; - - if (header->maigc != 0x12344321) { - LOG_ERROR ("It's not a valid Animation file at 0x%p, first 4 bytes: 0x%x\n", animation_data, header->maigc); - return -1; - } - - buffer = g_Alloc.Alloc(&g_Alloc, header->file_len); - if(!buffer) { - LOG_ERROR ("Can't alloc enough memory, length %d\n", header->file_len); - return -1; - } - - memcpy(&fb, info, sizeof(fb)); - - //copy it to the new buffer and start the play thread - memcpy(buffer, header, header->file_len); - g_logo_stop = 0; - - - LOG_DBG("Start animation_main thread ...\n"); - kthread_run(animation_main, buffer, "wmt-boot-anim"); - return 0; -} - -int animation_stop(void) -{ - LOG_INFO("animation_stop\n"); - g_logo_stop = 1; - - if( stop_proc_file ) { - remove_proc_entry(ANIM_STOP_PROC_FILE,stop_proc_file); - stop_proc_file = NULL; - } - - return 0; -} - -EXPORT_SYMBOL(animation_start); -EXPORT_SYMBOL(animation_stop); - - diff --git a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/animation.h b/ANDROID_3.4.5/drivers/video/wmt/bootanimation/animation.h deleted file mode 100755 index e63686ec..00000000 --- a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/animation.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _BOOTANIMATION_H_ -#define _BOOTANIMATION_H_ - - -struct animation_fb_info { - unsigned char * addr; // frame buffer start address - unsigned int width; // width - unsigned int height; // height - unsigned int color_fmt; // color format, 0 -- rgb565, 1 -- rgb888 -}; - -int animation_start(struct animation_fb_info *info); -int animation_stop(void); - -#endif diff --git a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/buffer.c b/ANDROID_3.4.5/drivers/video/wmt/bootanimation/buffer.c deleted file mode 100755 index 6b6f1b89..00000000 --- a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/buffer.c +++ /dev/null @@ -1,85 +0,0 @@ - -#include "buffer.h" - -#define assert(int ) - -int animation_buffer_init(animation_buffer * buf, int size, int count, ISzAlloc *alloc) -{ - buf->buffer = buf->w_pos = buf->r_pos = alloc->Alloc(alloc, size * count); - if(!buf->buffer) - return -1; - - buf->frame_count = count; - buf->frame_size = size; - buf->eof = 0; - - sema_init(&buf->sem_writable, count); - sema_init(&buf->sem_readable, 0); - - return 0; -} - -int animation_buffer_release(animation_buffer * buf, ISzAlloc *alloc) -{ - if (buf->buffer) - alloc->Free(alloc, buf->buffer); - buf->buffer = buf->w_pos = buf->r_pos = NULL; - return 0; -} - -unsigned char * animation_buffer_get_writable(animation_buffer * buf, unsigned int * pSize) -{ - down_interruptible(&buf->sem_writable); - *pSize = buf->frame_size; - return buf->w_pos; -} - -int animation_buffer_stop(animation_buffer * buf) -{ - up(&buf->sem_readable); - /* up twice for safey*/ - up(&buf->sem_writable); - up(&buf->sem_writable); - return 0; -} - -void animation_buffer_write_finish(animation_buffer * buf, unsigned char * addr) -{ - assert(addr == buf->w_pos); - - // printk(KERN_INFO "add one buffer 0x%p\n", addr); - - buf->w_pos += buf->frame_size; - if (buf->w_pos - buf->buffer == buf->frame_size * buf->frame_count) - buf->w_pos = buf->buffer; - - up(&buf->sem_readable); - // printk(KERN_INFO "write <<<<<<<======\n"); - return; - -} - - -unsigned char * animation_buffer_get_readable(animation_buffer * buf) -{ - int ret = down_trylock(&buf->sem_readable); - if (ret == 0) { - return buf->r_pos; - } - else { - return NULL; - } -} - -void animation_buffer_read_finish(animation_buffer * buf, unsigned char * addr) -{ - // Integrity check - assert(addr == buf->r_pos); - // printk(KERN_INFO "read one buffer 0x%p\n", addr); - buf->r_pos += buf->frame_size; - if (buf->r_pos - buf->buffer == buf->frame_size * buf->frame_count) - buf->r_pos = buf->buffer; - - up(&buf->sem_writable); -} - diff --git a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/buffer.h b/ANDROID_3.4.5/drivers/video/wmt/bootanimation/buffer.h deleted file mode 100755 index 3ac79aa5..00000000 --- a/ANDROID_3.4.5/drivers/video/wmt/bootanimation/buffer.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef ANIMATION_BUFFER_H_INCLUDED -#define ANIMATION_BUFFER_H_INCLUDED - -#include "LzmaDec.h" -#include <linux/semaphore.h> - -typedef struct -{ - unsigned char *buffer; - unsigned char *w_pos; - unsigned char *r_pos; - int frame_count; - int frame_size; - struct semaphore sem_writable; - struct semaphore sem_readable; - int eof; -}animation_buffer; - - -int animation_buffer_init(animation_buffer * buf, int size, int count, ISzAlloc *alloc); - -int animation_buffer_stop(animation_buffer * buf); -int animation_buffer_release(animation_buffer * buf, ISzAlloc *alloc); - - -unsigned char * animation_buffer_get_writable(animation_buffer * buf, unsigned int * pSize); -void animation_buffer_write_finish(animation_buffer * buf, unsigned char * addr); - -unsigned char * animation_buffer_get_readable(animation_buffer * buf); -void animation_buffer_read_finish(animation_buffer * buf, unsigned char * addr); - - -#endif /* ANIMATION_BUFFER_H_INCLUDED */ - |